From 867254ea7c2b193fecf8cd36cc6e5dc53c290d92 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 29 Jun 2012 20:12:44 +0200 Subject: Imported Upstream version 0.9.5.95 --- Makefile.am | 3 +- Makefile.in | 14 +- NEWS | 20 + TODO | 55 - aclocal.m4 | 1 + callouts/Makefile.in | 11 +- callouts/nm-dispatcher-action.c | 6 +- callouts/tests/Makefile.in | 11 +- cli/Makefile.in | 11 +- cli/src/Makefile.in | 11 +- cli/src/common.c | 198 ++ cli/src/common.h | 4 + cli/src/connections.c | 260 ++- cli/src/devices.c | 723 ++++-- cli/src/network-manager.c | 158 +- cli/src/settings.c | 64 +- cli/src/settings.h | 2 + cli/src/utils.c | 38 +- cli/src/utils.h | 2 + configure | 372 +++- configure.ac | 27 +- data/Makefile.in | 11 +- docs/Makefile.in | 11 +- docs/api/Makefile.in | 11 +- docs/api/html/NetworkManager.devhelp2 | 28 +- docs/api/html/index.html | 32 +- docs/api/html/ix01.html | 2 +- docs/api/html/ref-migrating.html | 58 +- docs/api/html/ref-settings.html | 48 +- docs/api/html/spec.html | 95 +- docs/api/settings-spec.xml | 6 + docs/api/spec.html | 95 +- docs/api/version.xml | 2 +- docs/libnm-glib/Makefile.am | 1 + docs/libnm-glib/Makefile.in | 12 +- docs/libnm-glib/html/NMDevice.html | 212 +- docs/libnm-glib/html/NMDeviceBond.html | 287 +++ docs/libnm-glib/html/NMDeviceBt.html | 74 + docs/libnm-glib/html/NMDeviceEthernet.html | 68 + docs/libnm-glib/html/NMDeviceInfiniband.html | 293 +++ docs/libnm-glib/html/NMDeviceModem.html | 62 + docs/libnm-glib/html/NMDeviceOlpcMesh.html | 324 +++ docs/libnm-glib/html/NMDeviceVlan.html | 333 +++ docs/libnm-glib/html/NMDeviceWifi.html | 82 + docs/libnm-glib/html/NMDeviceWimax.html | 72 +- docs/libnm-glib/html/NMObject.html | 109 + docs/libnm-glib/html/NMRemoteConnection.html | 67 + docs/libnm-glib/html/NMSecretAgent.html | 42 +- docs/libnm-glib/html/NMWimaxNsp.html | 4 +- docs/libnm-glib/html/api-index-full.html | 539 +++-- docs/libnm-glib/html/ch02.html | 14 +- docs/libnm-glib/html/index.html | 14 +- docs/libnm-glib/html/index.sgml | 169 ++ docs/libnm-glib/html/libnm-glib-NMVPNPlugin.html | 52 +- docs/libnm-glib/html/libnm-glib.devhelp2 | 139 ++ docs/libnm-glib/html/object-tree.html | 8 +- docs/libnm-glib/libnm-glib-docs.xml | 4 + docs/libnm-glib/libnm-glib-sections.txt | 188 +- docs/libnm-glib/tmpl/nm-device-adsl.sgml | 93 + docs/libnm-glib/tmpl/nm-device-bond.sgml | 26 + docs/libnm-glib/tmpl/nm-device-bt.sgml | 28 + docs/libnm-glib/tmpl/nm-device-ethernet.sgml | 27 + .../tmpl/nm-device-infiniband-bindings.sgml | 29 - docs/libnm-glib/tmpl/nm-device-infiniband.sgml | 27 + docs/libnm-glib/tmpl/nm-device-modem.sgml | 26 + docs/libnm-glib/tmpl/nm-device-olpc-mesh.sgml | 25 + docs/libnm-glib/tmpl/nm-device-vlan.sgml | 27 + docs/libnm-glib/tmpl/nm-device-wifi.sgml | 29 + docs/libnm-glib/tmpl/nm-device-wimax.sgml | 27 + docs/libnm-glib/tmpl/nm-device.sgml | 83 + .../tmpl/nm-exported-connection-bindings.sgml | 213 -- .../tmpl/nm-exported-connection-glue.sgml | 247 --- docs/libnm-glib/tmpl/nm-object.sgml | 34 + docs/libnm-glib/tmpl/nm-secret-agent-glue.sgml | 240 -- docs/libnm-glib/tmpl/nm-secret-agent.sgml | 17 + .../tmpl/nm-settings-system-bindings.sgml | 120 - docs/libnm-glib/tmpl/nm-vpn-plugin.sgml | 22 +- docs/libnm-util/Makefile.in | 11 +- docs/libnm-util/html/NMConnection.html | 48 +- docs/libnm-util/html/NMSetting.html | 7 +- docs/libnm-util/html/NMSettingBond.html | 547 +++++ docs/libnm-util/html/NMSettingConnection.html | 4 +- docs/libnm-util/html/NMSettingInfiniband.html | 318 +++ docs/libnm-util/html/NMSettingOlpcMesh.html | 4 +- docs/libnm-util/html/NMSettingPPP.html | 288 ++- docs/libnm-util/html/NMSettingPPPOE.html | 34 +- docs/libnm-util/html/NMSettingVlan.html | 708 ++++++ docs/libnm-util/html/NMSettingWimax.html | 4 +- docs/libnm-util/html/NMSettingWireless.html | 43 + .../libnm-util/html/NMSettingWirelessSecurity.html | 8 + docs/libnm-util/html/api-index-full.html | 292 ++- docs/libnm-util/html/ch01.html | 11 +- docs/libnm-util/html/index.html | 9 + docs/libnm-util/html/index.sgml | 118 + docs/libnm-util/html/libnm-util-nm-utils.html | 37 + docs/libnm-util/html/libnm-util.devhelp2 | 95 + docs/libnm-util/html/object-tree.html | 18 +- docs/libnm-util/libnm-util-docs.sgml | 3 + docs/libnm-util/libnm-util-sections.txt | 44 + docs/libnm-util/libnm-util.types | 2 + docs/libnm-util/tmpl/libnm-util-unused.sgml | 260 --- docs/libnm-util/tmpl/nm-connection.sgml | 9 + docs/libnm-util/tmpl/nm-setting-wireless.sgml | 21 + examples/C/Makefile.in | 11 +- examples/C/glib/Makefile.in | 11 +- examples/C/qt/Makefile.in | 11 +- examples/Makefile.in | 11 +- examples/python/Makefile.am | 4 +- examples/python/Makefile.in | 15 +- examples/ruby/Makefile.in | 11 +- examples/shell/Makefile.in | 11 +- include/Makefile.in | 11 +- include/NetworkManager.h | 6 + include/NetworkManagerVPN.h | 91 +- include/nm-glib-compat.h | 10 + include/nm-settings-flags.h | 1 + include/nm-version.h | 2 +- initscript/Arch/Makefile.in | 11 +- initscript/Debian/Makefile.in | 11 +- initscript/Gentoo/Makefile.in | 11 +- initscript/Makefile.in | 11 +- initscript/Mandriva/Makefile.in | 11 +- initscript/RedHat/Makefile.in | 11 +- initscript/SUSE/Makefile.in | 11 +- initscript/Slackware/Makefile.in | 11 +- initscript/linexa/Makefile.in | 11 +- initscript/paldo/Makefile.in | 11 +- introspection/Makefile.am | 1 + introspection/Makefile.in | 12 +- introspection/all.xml.in | 1 + introspection/nm-device-adsl.xml | 21 + introspection/nm-device-wifi.xml | 13 + introspection/nm-device.xml | 23 + introspection/nm-secret-agent.xml | 8 + introspection/nm-vpn-plugin.xml | 50 +- libnm-glib/Makefile.am | 7 +- libnm-glib/Makefile.in | 38 +- libnm-glib/libnm-glib.ver | 11 + libnm-glib/nm-access-point.c | 14 +- libnm-glib/nm-access-point.h | 1 + libnm-glib/nm-active-connection.c | 14 +- libnm-glib/nm-client.c | 243 ++- libnm-glib/nm-device-adsl.c | 245 +++ libnm-glib/nm-device-adsl.h | 77 + libnm-glib/nm-device-bond.c | 9 +- libnm-glib/nm-device-bt.c | 14 +- libnm-glib/nm-device-ethernet.c | 15 +- libnm-glib/nm-device-infiniband.c | 9 +- libnm-glib/nm-device-modem.c | 15 +- libnm-glib/nm-device-olpc-mesh.c | 14 +- libnm-glib/nm-device-vlan.c | 9 +- libnm-glib/nm-device-wifi.c | 14 +- libnm-glib/nm-device-wimax.c | 21 +- libnm-glib/nm-device.c | 177 +- libnm-glib/nm-device.h | 7 + libnm-glib/nm-dhcp4-config.c | 2 + libnm-glib/nm-dhcp6-config.c | 2 + libnm-glib/nm-glib-enum-types.c | 41 + libnm-glib/nm-glib-enum-types.h | 4 + libnm-glib/nm-glib-marshal.c | 45 +- libnm-glib/nm-glib-marshal.h | 14 +- libnm-glib/nm-ip4-config.c | 2 + libnm-glib/nm-ip6-config.c | 2 + libnm-glib/nm-object-cache.c | 25 + libnm-glib/nm-object-cache.h | 1 + libnm-glib/nm-object.c | 112 +- libnm-glib/nm-object.h | 27 +- libnm-glib/nm-remote-connection.c | 11 +- libnm-glib/nm-remote-connection.h | 30 + libnm-glib/nm-remote-settings.c | 138 +- libnm-glib/nm-secret-agent.c | 42 +- libnm-glib/nm-secret-agent.h | 7 +- libnm-glib/nm-vpn-connection.c | 2 + libnm-glib/nm-vpn-plugin-ui-interface.h | 1 + libnm-glib/nm-vpn-plugin-utils.c | 3 +- libnm-glib/nm-vpn-plugin.c | 400 +++- libnm-glib/nm-vpn-plugin.h | 48 +- libnm-glib/nm-wimax-nsp.c | 14 +- libnm-glib/tests/Makefile.in | 11 +- libnm-util/Makefile.am | 5 +- libnm-util/Makefile.in | 28 +- libnm-util/libnm-util.ver | 13 + libnm-util/nm-connection.c | 25 +- libnm-util/nm-connection.h | 2 + libnm-util/nm-setting-adsl.c | 461 ++++ libnm-util/nm-setting-adsl.h | 100 + libnm-util/nm-setting-bluetooth.c | 2 +- libnm-util/nm-setting-bond.c | 14 +- libnm-util/nm-setting-ip6-config.c | 20 +- libnm-util/nm-setting-ppp.c | 36 +- libnm-util/nm-setting-pppoe.c | 4 +- libnm-util/nm-setting-vlan.c | 5 +- libnm-util/nm-setting-wireless-security.c | 2 +- libnm-util/nm-setting-wireless.c | 47 +- libnm-util/nm-setting-wireless.h | 4 +- libnm-util/nm-utils-enum-types.c | 21 + libnm-util/nm-utils-enum-types.h | 2 + libnm-util/nm-utils.c | 4 +- libnm-util/tests/Makefile.in | 11 +- libnm-util/tests/certs/Makefile.in | 11 +- libnm-util/tests/test-general.c | 2 +- m4/intltool.m4 | 73 +- m4/vapigen.m4 | 88 + man/Makefile.in | 11 +- man/nmcli.1 | 285 ++- man/nmcli.1.in | 285 ++- po/Makefile.in.in | 13 +- po/POTFILES.in | 1 + po/de.po | 1850 +++++++++++----- po/eo.po | 1774 +++++++++------ po/gl.po | 1689 +++++++++----- po/id.po | 2005 +++++++++++------ po/lt.po | 2197 ++++++++++++------- po/pl.po | 1656 +++++++------- po/sl.po | 1983 +++++++++-------- po/sv.po | 2294 +++++++++++++------- policy/Makefile.in | 11 +- policy/org.freedesktop.NetworkManager.policy | 12 + src/Makefile.am | 13 +- src/Makefile.in | 125 +- src/NetworkManagerUtils.c | 5 +- src/backends/Makefile.in | 11 +- src/backends/NetworkManagerRedHat.c | 6 +- src/bluez-manager/Makefile.in | 11 +- src/bluez-manager/nm-bluez-adapter.c | 80 +- src/bluez-manager/nm-bluez-adapter.h | 6 +- src/bluez-manager/nm-bluez-device.c | 223 +- src/bluez-manager/nm-bluez-device.h | 7 +- src/bluez-manager/nm-bluez-manager.c | 64 +- src/bluez-manager/nm-bluez-manager.h | 11 +- src/dhcp-manager/Makefile.am | 3 + src/dhcp-manager/Makefile.in | 16 +- src/dhcp-manager/nm-dhcp-client.c | 58 +- src/dhcp-manager/nm-dhcp-dhclient.c | 10 +- src/dhcp-manager/nm-dhcp-dhcpcd.c | 7 + src/dhcp-manager/tests/Makefile.in | 11 +- src/dns-manager/Makefile.am | 2 + src/dns-manager/Makefile.in | 14 +- src/dns-manager/nm-dns-manager.c | 161 +- src/dns-manager/nm-dns-manager.h | 4 + src/dns-manager/nm-dns-plugin.c | 9 +- src/dnsmasq-manager/Makefile.am | 2 + src/dnsmasq-manager/Makefile.in | 14 +- src/dnsmasq-manager/nm-dnsmasq-manager.c | 9 +- src/firewall-manager/Makefile.in | 11 +- src/generated/Makefile.in | 11 +- src/generated/nm-enum-types.c | 133 +- src/generated/nm-enum-types.h | 18 +- src/generated/nm-marshal.c | 142 +- src/generated/nm-marshal.h | 58 +- src/ip6-manager/Makefile.in | 11 +- src/ip6-manager/nm-ip6-manager.c | 592 +++-- src/logging/Makefile.in | 11 +- src/logging/nm-logging.c | 3 +- src/logging/nm-logging.h | 1 + src/main.c | 193 +- src/modem-manager/Makefile.in | 11 +- src/modem-manager/nm-modem.c | 12 +- src/nm-activation-request.c | 6 + src/nm-connection-provider.c | 112 + src/nm-connection-provider.h | 106 + src/nm-device-adsl.c | 841 +++++++ src/nm-device-adsl.h | 66 + src/nm-device-bt.c | 16 +- src/nm-device-ethernet.c | 5 +- src/nm-device-modem.c | 9 +- src/nm-device-olpc-mesh.c | 16 +- src/nm-device-private.h | 2 + src/nm-device-vlan.c | 4 +- src/nm-device-wifi.c | 234 +- src/nm-device-wifi.h | 1 + src/nm-device-wired.c | 38 +- src/nm-device.c | 427 +++- src/nm-device.h | 25 +- src/nm-ip4-config.c | 82 +- src/nm-ip4-config.h | 2 + src/nm-ip6-config.c | 106 +- src/nm-ip6-config.h | 5 + src/nm-manager.c | 427 ++-- src/nm-netlink-compat.c | 8 +- src/nm-netlink-utils.c | 4 +- src/nm-policy.c | 725 +++++-- src/nm-system.c | 268 ++- src/nm-system.h | 11 +- src/nm-udev-manager.c | 156 +- src/nm-wifi-ap.c | 19 +- src/org.freedesktop.NetworkManager.conf | 7 +- src/posix-signals/Makefile.am | 15 + src/posix-signals/Makefile.in | 640 ++++++ src/posix-signals/nm-posix-signals.c | 62 + src/posix-signals/nm-posix-signals.h | 36 + src/ppp-manager/Makefile.am | 4 +- src/ppp-manager/Makefile.in | 16 +- src/ppp-manager/nm-ppp-manager.c | 63 +- src/settings/Makefile.in | 11 +- src/settings/nm-settings-connection.c | 2 +- src/settings/nm-settings.c | 116 +- src/settings/plugins/Makefile.am | 2 +- src/settings/plugins/Makefile.in | 17 +- src/settings/plugins/example/Makefile.am | 40 + src/settings/plugins/example/Makefile.in | 712 ++++++ src/settings/plugins/example/README | 35 + src/settings/plugins/example/common.h | 56 + src/settings/plugins/example/errors.c | 40 + .../plugins/example/nm-example-connection.c | 191 ++ .../plugins/example/nm-example-connection.h | 55 + src/settings/plugins/example/plugin.c | 868 ++++++++ src/settings/plugins/example/plugin.h | 55 + src/settings/plugins/example/reader.c | 46 + src/settings/plugins/example/writer.c | 55 + src/settings/plugins/ifcfg-rh/Makefile.am | 2 + src/settings/plugins/ifcfg-rh/Makefile.in | 14 +- src/settings/plugins/ifcfg-rh/reader.c | 28 +- src/settings/plugins/ifcfg-rh/tests/Makefile.in | 11 +- .../ifcfg-rh/tests/network-scripts/Makefile.in | 11 +- .../tests/network-scripts/keys-test-wifi-wpa-psk-2 | 2 +- .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 4 +- src/settings/plugins/ifcfg-rh/utils.c | 2 +- src/settings/plugins/ifcfg-rh/writer.c | 1 + src/settings/plugins/ifcfg-suse/Makefile.in | 11 +- src/settings/plugins/ifnet/Makefile.am | 2 + src/settings/plugins/ifnet/Makefile.in | 14 +- src/settings/plugins/ifnet/net_parser.c | 46 +- src/settings/plugins/ifnet/net_utils.c | 10 +- src/settings/plugins/ifnet/tests/Makefile.am | 3 +- src/settings/plugins/ifnet/tests/Makefile.in | 17 +- src/settings/plugins/ifnet/tests/net | 2 + src/settings/plugins/ifnet/tests/test_all.c | 3 + src/settings/plugins/ifupdown/Makefile.in | 11 +- src/settings/plugins/ifupdown/tests/Makefile.am | 3 +- src/settings/plugins/ifupdown/tests/Makefile.in | 14 +- .../ifupdown/tests/test18-wired-static-verify-ip6 | 6 + src/settings/plugins/keyfile/Makefile.in | 11 +- src/settings/plugins/keyfile/reader.c | 3 +- src/settings/plugins/keyfile/tests/Makefile.in | 11 +- .../plugins/keyfile/tests/keyfiles/Makefile.in | 11 +- src/settings/tests/Makefile.in | 11 +- src/supplicant-manager/Makefile.in | 11 +- src/supplicant-manager/nm-supplicant-interface.c | 158 +- src/supplicant-manager/nm-supplicant-interface.h | 7 +- src/supplicant-manager/tests/Makefile.in | 11 +- src/tests/Makefile.in | 11 +- src/vpn-manager/Makefile.am | 2 + src/vpn-manager/Makefile.in | 14 +- src/vpn-manager/nm-vpn-connection.c | 851 ++++++-- src/vpn-manager/nm-vpn-connection.h | 10 +- src/vpn-manager/nm-vpn-manager.c | 17 +- src/vpn-manager/nm-vpn-manager.h | 6 +- src/vpn-manager/nm-vpn-service.c | 20 +- src/wifi/Makefile.in | 11 +- src/wifi/wifi-utils-nl80211.c | 42 +- src/wimax/Makefile.in | 11 +- test/Makefile.in | 11 +- tools/Makefile.in | 11 +- vapi/Makefile.am | 27 + vapi/Makefile.in | 611 ++++++ vapi/Makefile.vapigen | 60 + vapi/NMClient-1.0.metadata | 109 + vapi/NetworkManager-1.0.metadata | 152 ++ vapi/libnm-glib.deps | 3 + vapi/libnm-util.deps | 2 + 361 files changed, 30372 insertions(+), 10285 deletions(-) create mode 100644 docs/libnm-glib/html/NMDeviceBond.html create mode 100644 docs/libnm-glib/html/NMDeviceInfiniband.html create mode 100644 docs/libnm-glib/html/NMDeviceOlpcMesh.html create mode 100644 docs/libnm-glib/html/NMDeviceVlan.html create mode 100644 docs/libnm-glib/tmpl/nm-device-adsl.sgml delete mode 100644 docs/libnm-glib/tmpl/nm-device-infiniband-bindings.sgml delete mode 100644 docs/libnm-glib/tmpl/nm-exported-connection-bindings.sgml delete mode 100644 docs/libnm-glib/tmpl/nm-exported-connection-glue.sgml delete mode 100644 docs/libnm-glib/tmpl/nm-secret-agent-glue.sgml delete mode 100644 docs/libnm-glib/tmpl/nm-settings-system-bindings.sgml create mode 100644 docs/libnm-util/html/NMSettingBond.html create mode 100644 docs/libnm-util/html/NMSettingInfiniband.html create mode 100644 docs/libnm-util/html/NMSettingVlan.html create mode 100644 introspection/nm-device-adsl.xml create mode 100644 libnm-glib/nm-device-adsl.c create mode 100644 libnm-glib/nm-device-adsl.h create mode 100644 libnm-util/nm-setting-adsl.c create mode 100644 libnm-util/nm-setting-adsl.h create mode 100644 m4/vapigen.m4 create mode 100644 src/nm-connection-provider.c create mode 100644 src/nm-connection-provider.h create mode 100644 src/nm-device-adsl.c create mode 100644 src/nm-device-adsl.h create mode 100644 src/posix-signals/Makefile.am create mode 100644 src/posix-signals/Makefile.in create mode 100644 src/posix-signals/nm-posix-signals.c create mode 100644 src/posix-signals/nm-posix-signals.h create mode 100644 src/settings/plugins/example/Makefile.am create mode 100644 src/settings/plugins/example/Makefile.in create mode 100644 src/settings/plugins/example/README create mode 100644 src/settings/plugins/example/common.h create mode 100644 src/settings/plugins/example/errors.c create mode 100644 src/settings/plugins/example/nm-example-connection.c create mode 100644 src/settings/plugins/example/nm-example-connection.h create mode 100644 src/settings/plugins/example/plugin.c create mode 100644 src/settings/plugins/example/plugin.h create mode 100644 src/settings/plugins/example/reader.c create mode 100644 src/settings/plugins/example/writer.c create mode 100644 src/settings/plugins/ifupdown/tests/test18-wired-static-verify-ip6 create mode 100644 vapi/Makefile.am create mode 100644 vapi/Makefile.in create mode 100644 vapi/Makefile.vapigen create mode 100644 vapi/NMClient-1.0.metadata create mode 100644 vapi/NetworkManager-1.0.metadata create mode 100644 vapi/libnm-glib.deps create mode 100644 vapi/libnm-util.deps 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,3 +1,23 @@ +============================================== +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 #include #include +#include #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 #include +#include #include #if WITH_WIMAX #include @@ -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 #include #include +#include #include #include @@ -30,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" " wifi [list [iface ] [bssid ]]\n" + " wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] [iface ] [bssid ] [name ]\n" + " [--private] [--nowait] [--timeout ]\n" #if WITH_WIMAX " wimax [list [iface ] [nsp ]]\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 #include +#include #include #include #include @@ -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); @@ -136,6 +136,38 @@ nmc_ip6_address_as_string (const struct in6_addr *ip, GError **error) } } +/* + * Erase terminal line using ANSI escape sequences. + * It prints [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 */ @@ -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 . # @@ -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 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + 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 @@     
  

-

Version 0.9.4.0 +

Version 0.9.5.95

This section details the architectural and D-Bus API changes in NetworkManager 0.9.

-Elimination of the User Settings Service

+Elimination of the User Settings Service

Previously there were two "settings services", or D-Bus services that provided and saved network configuration information. NetworkManager @@ -103,7 +103,7 @@

-User Secret Agents

+User Secret Agents

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 @@

-Settings Service Interface Changes

+Settings Service Interface Changes

With the elimination of the user settings service, the old org.freedesktop.NetworkManagerUserSettings and @@ -190,7 +190,7 @@

-Connection Object Interface Changes

+Connection Object Interface Changes

Consistent with the interface changes to the Settings object, the Connection object's D-Bus interface has changed to @@ -224,7 +224,7 @@

-Permissions Methods Consolidation

+Permissions Methods Consolidation

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:

-

Table 20. 

+

Table 20. 

@@ -307,7 +307,7 @@

-AddConnection Returns Object Path of New Connection

+AddConnection Returns Object Path of New Connection

The org.freedesktop.NetworkManager.Settings.AddConnection @@ -325,7 +325,7 @@

-Support for WiMAX Devices

+Support for WiMAX Devices

NetworkManager now supports Intel WiMAX mobile broadband devices. A corresponding device type (NM_DEVICE_TYPE_WIMAX) and @@ -348,7 +348,7 @@

-New Device States

+New Device States

A few new device states have been added, and all device states have been renumbered for flexibility. @@ -363,7 +363,7 @@

-New Active Connection State

+New Active Connection State

Along with the new device states, an additional @@ -379,7 +379,7 @@

-Consolidated Modem Devices

+Consolidated Modem Devices

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 @@

-Secret Property Flags

+Secret Property Flags

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:

-

Table 21. 

+

Table 21. 

@@ -486,7 +486,7 @@

-Deprecated Methods Removed

+Deprecated Methods Removed

A few methods and signals of the org.freedesktop.NetworkManager interface deprecated in version 0.7 have been removed. All the @@ -496,7 +496,7 @@ their replacements:

-

Table 22. 

+

Table 22. 

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 @@

Network Configuration Setting Specification

@@ -35,11 +35,11 @@

-Configuration Settings

+Configuration Settings

-

Table 1. 802-1x setting

+

Table 1. 802-1x setting

@@ -246,7 +246,7 @@


-

Table 2. bluetooth setting

+

Table 2. bluetooth setting

@@ -285,7 +285,7 @@


-

Table 3. bond setting

+

Table 3. bond setting

@@ -324,7 +324,7 @@


-

Table 4. cdma setting

+

Table 4. cdma setting

@@ -375,7 +375,7 @@


-

Table 5. connection setting

+

Table 5. connection setting

@@ -462,7 +462,7 @@


-

Table 6. gsm setting

+

Table 6. gsm setting

@@ -555,7 +555,7 @@


-

Table 7. infiniband setting

+

Table 7. infiniband setting

@@ -600,7 +600,7 @@


-

Table 8. ipv4 setting

+

Table 8. ipv4 setting

@@ -699,7 +699,7 @@


-

Table 9. ipv6 setting

+

Table 9. ipv6 setting

@@ -786,7 +786,7 @@


-

Table 10. 802-11-olpc-mesh setting

+

Table 10. 802-11-olpc-mesh setting

@@ -831,7 +831,7 @@


-

Table 11. ppp setting

+

Table 11. ppp setting

@@ -966,7 +966,7 @@


-

Table 12. pppoe setting

+

Table 12. pppoe setting

@@ -1017,7 +1017,7 @@


-

Table 13. serial setting

+

Table 13. serial setting

@@ -1074,7 +1074,7 @@


-

Table 14. vlan setting

+

Table 14. vlan setting

@@ -1137,7 +1137,7 @@


-

Table 15. vpn setting

+

Table 15. vpn setting

@@ -1188,7 +1188,7 @@


-

Table 16. wimax setting

+

Table 16. wimax setting

@@ -1227,7 +1227,7 @@


-

Table 17. 802-3-ethernet setting

+

Table 17. 802-3-ethernet setting

@@ -1320,7 +1320,7 @@


-

Table 18. 802-11-wireless setting

+

Table 18. 802-11-wireless setting

@@ -1419,13 +1419,19 @@ + + + + + +
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.
hidden
boolean
FALSE
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.


-

Table 19. 802-11-wireless-security setting

+

Table 19. 802-11-wireless-security setting

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 @@ -NetworkManager D-Bus Interface Specification version 0.9.4.0

NetworkManager D-Bus Interface Specification

Version 0.9.4.0

Copyright (C) 2008 - 2011 Red Hat, Inc.
Copyright (C) 2008 - 2009 Novell, Inc.
+

NetworkManager D-Bus Interface Specification

Version 0.9.5.95

Copyright (C) 2008 - 2011 Red Hat, Inc.
Copyright (C) 2008 - 2009 Novell, Inc.

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.

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.

-

Interfaces

+

Interfaces

org.freedesktop.NetworkManager

Methods:

GetDevices ( ) → @@ -461,6 +461,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.s - (read)
The driver handling the device. +
DriverVersion - + s - + (read)
+ The version of the driver handling the device. +
FirmwareVersion - + s - + (read)
+ The firmware version for the device.
Capabilities - u - (read) @@ -512,6 +520,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.b - (read)
Whether or not this device is managed by NetworkManager. +
Autoconnect - + b - + (readwrite)
+ 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.
FirmwareMissing - b - (read)
@@ -673,6 +688,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50
A dependency of the connection failed. +
NM_DEVICE_STATE_REASON_BR2684_FAILED = 50
+ Problem with the RFC 2684 Ethernet over ADSL bridge.

Sets of flags:

NM_DEVICE_CAP

NM_DEVICE_CAP_NONE = 0x0
Null capability.
NM_DEVICE_CAP_NM_SUPPORTED = 0x1
The device is supported by NetworkManager.
NM_DEVICE_CAP_CARRIER_DETECT = 0x2
The device supports carrier detection.

Structure types:

NM_DEVICE_STATE_REASON_STRUCT - ( u: state, u: reason ) @@ -722,6 +739,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Returns

access_points - ao
List of access point object paths +

RequestScan ( + a{sv}: options + ) → + nothing

+ Request the device to scan +

Parameters

options - + a{sv}
+ Options of scan

Signals:

PropertiesChanged ( a{sv}: properties )

@@ -990,6 +1015,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +

org.freedesktop.NetworkManager.Device.Adsl

Interface has no methods.

Signals:

PropertiesChanged ( + a{sv}: properties + )

Parameters

properties - + a{sv} + (String_Variant_Map) +
+ A dictionary mapping property names to variant boxed values +

Properties:

Carrier - + b - + (read)
+ Indicates whether the physical carrier is found. +
+

org.freedesktop.NetworkManager.WiMax.Nsp

Interface has no methods.

Signals:

PropertiesChanged ( a{sv}: properties )

Parameters

properties - @@ -1384,6 +1422,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4
+ 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.
@@ -1488,7 +1531,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Disconnect the plugin. -

Possible errors

org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress
The request could not be processed because the VPN connection is already being stopped.(generic description)
org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped
The request could not be processed because the VPN connection was already stopped.(generic description)

Possible errors

org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress
The request could not be processed because the VPN connection is already being stopped.(generic description)
org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped
The request could not be processed because the VPN connection was already stopped.(generic description)

SetConfig ( + a{sv}: config + ) → + nothing

+ Set generic connection details on the connection. +

Parameters

config - + a{sv} + (String_Variant_Map) +
+ Generic configuration details for the connection. +

SetIp4Config ( a{sv}: config ) → nothing

@@ -1497,7 +1550,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.a{sv} (String_Variant_Map)
- Ip4Config details for the conneciton. + Ip4Config details for the connection. You must call + SetConfig() before calling this. +

SetIp6Config ( + a{sv}: config + ) → + nothing

+ Set IPv6 details on the connection. +

Parameters

config - + a{sv} + (String_Variant_Map) +
+ Ip6Config details for the connection. You must call + SetConfig() before calling this.

SetFailure ( s: reason ) → @@ -1515,6 +1580,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.NM_VPN_CONNECTION_STATE)
The new state of the plugin. +

Config ( + a{sv}: config + )

+ The plugin obtained generic configuration information. +

Parameters

config - + a{sv} + (String_Variant_Map) +
+ The configuration information.

Ip4Config ( a{sv}: ip4config )

@@ -1524,6 +1598,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.String_Variant_Map)
The IPv4 configuration. +

Ip6Config ( + a{sv}: ip6config + )

+ The plugin obtained an IPv6 configuration. +

Parameters

ip6config - + a{sv} + (String_Variant_Map) +
+ The IPv6 configuration.

LoginBanner ( s: banner )

@@ -1597,7 +1680,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.org.freedesktop.NetworkManager.VPN.Error.BadArgumentsInvalid arguments were passed with the request. FIXME: too general.

org.freedesktop.NetworkManager.VPN.Error.LaunchFailed

A binary providing the service failed to launch.

org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid

The request could not be processed because the VPN connection settings were invalid. -

Index

Index of interfaces

Index of types

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 @@ -NetworkManager D-Bus Interface Specification version 0.9.4.0

NetworkManager D-Bus Interface Specification

Version 0.9.4.0

Copyright (C) 2008 - 2011 Red Hat, Inc.
Copyright (C) 2008 - 2009 Novell, Inc.
+

NetworkManager D-Bus Interface Specification

Version 0.9.5.95

Copyright (C) 2008 - 2011 Red Hat, Inc.
Copyright (C) 2008 - 2009 Novell, Inc.

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.

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.

-

Interfaces

+

Interfaces

org.freedesktop.NetworkManager

Methods:

GetDevices ( ) → @@ -461,6 +461,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.s - (read)
The driver handling the device. +
DriverVersion - + s - + (read)
+ The version of the driver handling the device. +
FirmwareVersion - + s - + (read)
+ The firmware version for the device.
Capabilities - u - (read) @@ -512,6 +520,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.b - (read)
Whether or not this device is managed by NetworkManager. +
Autoconnect - + b - + (readwrite)
+ 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.
FirmwareMissing - b - (read)
@@ -673,6 +688,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50
A dependency of the connection failed. +
NM_DEVICE_STATE_REASON_BR2684_FAILED = 50
+ Problem with the RFC 2684 Ethernet over ADSL bridge.

Sets of flags:

NM_DEVICE_CAP

NM_DEVICE_CAP_NONE = 0x0
Null capability.
NM_DEVICE_CAP_NM_SUPPORTED = 0x1
The device is supported by NetworkManager.
NM_DEVICE_CAP_CARRIER_DETECT = 0x2
The device supports carrier detection.

Structure types:

NM_DEVICE_STATE_REASON_STRUCT - ( u: state, u: reason ) @@ -722,6 +739,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Returns

access_points - ao
List of access point object paths +

RequestScan ( + a{sv}: options + ) → + nothing

+ Request the device to scan +

Parameters

options - + a{sv}
+ Options of scan

Signals:

PropertiesChanged ( a{sv}: properties )

@@ -990,6 +1015,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +

org.freedesktop.NetworkManager.Device.Adsl

Interface has no methods.

Signals:

PropertiesChanged ( + a{sv}: properties + )

Parameters

properties - + a{sv} + (String_Variant_Map) +
+ A dictionary mapping property names to variant boxed values +

Properties:

Carrier - + b - + (read)
+ Indicates whether the physical carrier is found. +
+

org.freedesktop.NetworkManager.WiMax.Nsp

Interface has no methods.

Signals:

PropertiesChanged ( a{sv}: properties )

Parameters

properties - @@ -1384,6 +1422,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED = 0x4
+ 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.
@@ -1488,7 +1531,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Disconnect the plugin. -

Possible errors

org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress
The request could not be processed because the VPN connection is already being stopped.(generic description)
org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped
The request could not be processed because the VPN connection was already stopped.(generic description)

Possible errors

org.freedesktop.NetworkManager.VPN.Error.StoppingInProgress
The request could not be processed because the VPN connection is already being stopped.(generic description)
org.freedesktop.NetworkManager.VPN.Error.AlreadyStopped
The request could not be processed because the VPN connection was already stopped.(generic description)

SetConfig ( + a{sv}: config + ) → + nothing

+ Set generic connection details on the connection. +

Parameters

config - + a{sv} + (String_Variant_Map) +
+ Generic configuration details for the connection. +

SetIp4Config ( a{sv}: config ) → nothing

@@ -1497,7 +1550,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.a{sv} (String_Variant_Map)
- Ip4Config details for the conneciton. + Ip4Config details for the connection. You must call + SetConfig() before calling this. +

SetIp6Config ( + a{sv}: config + ) → + nothing

+ Set IPv6 details on the connection. +

Parameters

config - + a{sv} + (String_Variant_Map) +
+ Ip6Config details for the connection. You must call + SetConfig() before calling this.

SetFailure ( s: reason ) → @@ -1515,6 +1580,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.NM_VPN_CONNECTION_STATE)
The new state of the plugin. +

Config ( + a{sv}: config + )

+ The plugin obtained generic configuration information. +

Parameters

config - + a{sv} + (String_Variant_Map) +
+ The configuration information.

Ip4Config ( a{sv}: ip4config )

@@ -1524,6 +1598,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.String_Variant_Map)
The IPv4 configuration. +

Ip6Config ( + a{sv}: ip6config + )

+ The plugin obtained an IPv6 configuration. +

Parameters

ip6config - + a{sv} + (String_Variant_Map) +
+ The IPv6 configuration.

LoginBanner ( s: banner )

@@ -1597,7 +1680,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.org.freedesktop.NetworkManager.VPN.Error.BadArgumentsInvalid arguments were passed with the request. FIXME: too general.

org.freedesktop.NetworkManager.VPN.Error.LaunchFailed

A binary providing the service failed to launch.

org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid

The request could not be processed because the VPN connection settings were invalid. -

Index

Index of interfaces

Index of types

@@ -107,10 +118,10 @@ const char * NMDeviceModem +----NMDeviceBt +----NMDeviceWimax - +----NMDeviceOlpcMesh - +----NMDeviceInfiniband - +----NMDeviceBond - +----NMDeviceVlan + +----NMDeviceOlpcMesh + +----NMDeviceInfiniband + +----NMDeviceBond + +----NMDeviceVlan
@@ -123,12 +134,15 @@ NMDevice implements

Properties

   "active-connection"        NMActiveConnection*   : Read
+  "autoconnect"              gboolean              : Read / Write
   "capabilities"             guint                 : Read
   "device-type"              guint                 : Read
   "dhcp4-config"             NMDHCP4Config*        : Read
   "dhcp6-config"             NMDHCP6Config*        : Read
   "driver"                   gchar*                : Read
+  "driver-version"           gchar*                : Read
   "firmware-missing"         gboolean              : Read
+  "firmware-version"         gchar*                : Read
   "interface"                gchar*                : Read
   "ip-interface"             gchar*                : Read
   "ip4-config"               NMIP4Config*          : Read
@@ -207,6 +221,14 @@ NMDevice implements
 

+

NM_DEVICE_AUTOCONNECT

+
#define NM_DEVICE_AUTOCONNECT "autoconnect"
+
+

+

+
+
+

NM_DEVICE_CAPABILITIES

#define NM_DEVICE_CAPABILITIES "capabilities"
 
@@ -247,6 +269,14 @@ NMDevice implements

+

NM_DEVICE_DRIVER_VERSION

+
#define NM_DEVICE_DRIVER_VERSION "driver-version"
+
+

+

+
+
+

NM_DEVICE_FIRMWARE_MISSING

#define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
 
@@ -255,6 +285,14 @@ NMDevice implements

+

NM_DEVICE_FIRMWARE_VERSION

+
#define NM_DEVICE_FIRMWARE_VERSION "firmware-version"
+
+

+

+
+
+

NM_DEVICE_INTERFACE

#define NM_DEVICE_INTERFACE "interface"
 
@@ -335,6 +373,52 @@ NMDevice implements

+

nm_device_connection_compatible ()

+
gboolean            nm_device_connection_compatible     (NMDevice *device,
+                                                         NMConnection *connection,
+                                                         GError **error);
+

+Validates a given connection for a given NMDevice object and returns +whether the connection may be activated with the device. For example if +device 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. +

+

+This function does the same as nm_device_connection_valid(), i.e. checking +compatibility of the given device and connection. But, in addition, it sets +GError when FALSE is returned. +

+
++ + + + + + + + + + + + + + + + + + +

device :

an NMDevice to validate connection against

connection :

an NMConnection to validate against device +

error :

return location for a GError, or NULL +

Returns :

+TRUE if the connection may be activated with this device, FALSE +if is incompatible with the device's capabilities and characteristics.
+
+
+

nm_device_connection_valid ()

gboolean            nm_device_connection_valid          (NMDevice *device,
                                                          NMConnection *connection);
@@ -466,6 +550,29 @@ not part of an active connection. [ +

nm_device_get_autoconnect ()

+
gboolean            nm_device_get_autoconnect           (NMDevice *device);
+

+Whether the NMDevice can be autoconnected. +

+
++ + + + + + + + + + +

device :

a NMDevice +

Returns :

+TRUE if the device is allowed to be autoconnected
+
+
+

nm_device_get_capabilities ()

NMDeviceCapabilities nm_device_get_capabilities         (NMDevice *device);

@@ -581,6 +688,29 @@ device, and must not be modified.


+

nm_device_get_driver_version ()

+
const char *        nm_device_get_driver_version        (NMDevice *device);
+

+Gets the driver version of the NMDevice. +

+
++ + + + + + + + + + +

device :

a NMDevice +

Returns :

the version of the device driver. This is the internal string used by the +device, and must not be modified.
+
+
+

nm_device_get_firmware_missing ()

gboolean            nm_device_get_firmware_missing      (NMDevice *device);

@@ -606,6 +736,29 @@ to be missing.


+

nm_device_get_firmware_version ()

+
const char *        nm_device_get_firmware_version      (NMDevice *device);
+

+Gets the firmware version of the NMDevice. +

+
++ + + + + + + + + + +

device :

a NMDevice +

Returns :

the firmware version of the device. This is the internal string used by the +device, and must not be modified.
+
+
+

nm_device_get_iface ()

const char *        nm_device_get_iface                 (NMDevice *device);

@@ -869,6 +1022,30 @@ Creates a new

+
+
+

nm_device_set_autoconnect ()

+
void                nm_device_set_autoconnect           (NMDevice *device,
+                                                         gboolean autoconnect);
+

+Enables or disables automatic activation of the NMDevice. +

+
++ + + + + + + + + + +

device :

a NMDevice +

autoconnect :

+TRUE to enable autoconnecting
+

Property Details

@@ -881,6 +1058,15 @@ The
+

The "autoconnect" property

+
  "autoconnect"              gboolean              : Read / Write
+

+Whether the device can auto-activate a connection. +

+

Default value: TRUE

+
+
+

The "capabilities" property

  "capabilities"             guint                 : Read

@@ -924,6 +1110,15 @@ The driver of the device.


+

The "driver-version" property

+
  "driver-version"           gchar*                : Read
+

+The version of the device driver. +

+

Default value: NULL

+
+
+

The "firmware-missing" property

  "firmware-missing"         gboolean              : Read

@@ -934,6 +1129,15 @@ for its operation.


+

The "firmware-version" property

+
  "firmware-version"         gchar*                : Read
+

+The firmware version of the device. +

+

Default value: NULL

+
+
+

The "interface" property

  "interface"                gchar*                : Read

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 @@ + + + + +NMDeviceBond + + + + + + + + + + + + + + + + + + + +

+
+
+ + +
+

NMDeviceBond

+

NMDeviceBond

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMObject
+         +----NMDevice
+               +----NMDeviceBond
+
+
+
+

Implemented Interfaces

+

+NMDeviceBond implements + GInitable and GAsyncInitable.

+
+
+

Properties

+
+  "carrier"                  gboolean              : Read
+  "hw-address"               gchar*                : Read
+
+
+
+

Description

+

+

+
+
+

Details

+
+

NMDeviceBond

+
typedef struct _NMDeviceBond NMDeviceBond;
+

+

+
+
+
+

NMDeviceBondClass

+
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;
+
+

+

+
+
+
+

enum NMDeviceBondError

+
typedef enum {
+	NM_DEVICE_BOND_ERROR_UNKNOWN = 0,             /*< nick=UnknownError >*/
+	NM_DEVICE_BOND_ERROR_NOT_BOND_CONNECTION,     /*< nick=NotBondConnection >*/
+	NM_DEVICE_BOND_ERROR_INVALID_BOND_CONNECTION, /*< nick=InvalidBondConnection >*/
+	NM_DEVICE_BOND_ERROR_INTERFACE_MISMATCH,      /*< nick=InterfaceMismatch >*/
+} NMDeviceBondError;
+
+
++ + + + + + + + + + + + + + + + + + +

NM_DEVICE_BOND_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_BOND_ERROR_NOT_BOND_CONNECTION

the connection was not of bond type +

NM_DEVICE_BOND_ERROR_INVALID_BOND_CONNECTION

the bond connection was invalid +

NM_DEVICE_BOND_ERROR_INTERFACE_MISMATCH

the interfaces of the connection and the device mismatched +
+
+
+
+

NM_DEVICE_BOND_CARRIER

+
#define NM_DEVICE_BOND_CARRIER     "carrier"
+
+

+

+
+
+
+

NM_DEVICE_BOND_ERROR

+
#define NM_DEVICE_BOND_ERROR nm_device_bond_error_quark ()
+
+

+

+
+
+
+

NM_DEVICE_BOND_HW_ADDRESS

+
#define NM_DEVICE_BOND_HW_ADDRESS  "hw-address"
+
+

+

+
+
+
+

nm_device_bond_error_quark ()

+
GQuark              nm_device_bond_error_quark          (void);
+

+Registers an error quark for NMDeviceBond if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceBond errors.
+
+
+
+

nm_device_bond_get_carrier ()

+
gboolean            nm_device_bond_get_carrier          (NMDeviceBond *device);
+

+Whether the device has carrier. +

+
++ + + + + + + + + + +

device :

a NMDeviceBond +

Returns :

+TRUE if the device has carrier
+
+
+
+

nm_device_bond_get_hw_address ()

+
const char *        nm_device_bond_get_hw_address       (NMDeviceBond *device);
+

+Gets the hardware (MAC) address of the NMDeviceBond +

+
++ + + + + + + + + + +

device :

a NMDeviceBond +

Returns :

the hardware address. This is the internal string used by the +device, and must not be modified.
+
+
+
+

nm_device_bond_new ()

+
GObject *           nm_device_bond_new                  (DBusGConnection *connection,
+                                                         const char *path);
+

+Creates a new NMDeviceBond. +

+
++ + + + + + + + + + + + + + +

connection :

the DBusGConnection +

path :

the DBus object path of the device

Returns :

a new device. [transfer full] +
+
+
+
+

Property Details

+
+

The "carrier" property

+
  "carrier"                  gboolean              : Read
+

+Whether the device has carrier. +

+

Default value: FALSE

+
+
+
+

The "hw-address" property

+
  "hw-address"               gchar*                : Read
+

+The hardware (MAC) address of the device. +

+

Default value: NULL

+
+
+
+ + + \ 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 @@

Synopsis

                    NMDeviceBt;
                     NMDeviceBtClass;
+enum                NMDeviceBtError;
 #define             NM_DEVICE_BT_CAPABILITIES
+#define             NM_DEVICE_BT_ERROR
 #define             NM_DEVICE_BT_HW_ADDRESS
 #define             NM_DEVICE_BT_NAME
+GQuark              nm_device_bt_error_quark            (void);
 NMBluetoothCapabilities nm_device_bt_get_capabilities   (NMDeviceBt *device);
 const char *        nm_device_bt_get_hw_address         (NMDeviceBt *device);
 const char *        nm_device_bt_get_name               (NMDeviceBt *device);
@@ -111,6 +114,54 @@ NMDeviceBt implements
 

+

enum NMDeviceBtError

+
typedef enum {
+	NM_DEVICE_BT_ERROR_UNKNOWN = 0,           /*< nick=UnknownError >*/
+	NM_DEVICE_BT_ERROR_NOT_BT_CONNECTION,     /*< nick=NotBtConnection >*/
+	NM_DEVICE_BT_ERROR_INVALID_BT_CONNECTION, /*< nick=InvalidBtConnection >*/
+	NM_DEVICE_BT_ERROR_INVALID_DEVICE_MAC,    /*< nick=InvalidDeviceMac >*/
+	NM_DEVICE_BT_ERROR_MAC_MISMATCH,          /*< nick=MacMismatch >*/
+	NM_DEVICE_BT_ERROR_MISSING_DEVICE_CAPS,   /*< nick=MissingDeviceCaps >*/
+} NMDeviceBtError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + + + + + +

NM_DEVICE_BT_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_BT_ERROR_NOT_BT_CONNECTION

the connection was not of bluetooth type +

NM_DEVICE_BT_ERROR_INVALID_BT_CONNECTION

the bluetooth connection was invalid +

NM_DEVICE_BT_ERROR_INVALID_DEVICE_MAC

the device's MAC was invalid +

NM_DEVICE_BT_ERROR_MAC_MISMATCH

the MACs of the connection and the device mismatched +

NM_DEVICE_BT_ERROR_MISSING_DEVICE_CAPS

the device missed required capabilities +
+
+
+

NM_DEVICE_BT_CAPABILITIES

#define NM_DEVICE_BT_CAPABILITIES "bt-capabilities"
 
@@ -119,6 +170,14 @@ NMDeviceBt implements

+

NM_DEVICE_BT_ERROR

+
#define NM_DEVICE_BT_ERROR nm_device_bt_error_quark ()
+
+

+

+
+
+

NM_DEVICE_BT_HW_ADDRESS

#define NM_DEVICE_BT_HW_ADDRESS   "hw-address"
 
@@ -135,6 +194,21 @@ NMDeviceBt implements

+

nm_device_bt_error_quark ()

+
GQuark              nm_device_bt_error_quark            (void);
+

+Registers an error quark for NMDeviceBt if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceBt errors.
+
+
+

nm_device_bt_get_capabilities ()

NMBluetoothCapabilities nm_device_bt_get_capabilities   (NMDeviceBt *device);

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 @@

Synopsis

                    NMDeviceEthernet;
                     NMDeviceEthernetClass;
+enum                NMDeviceEthernetError;
 #define             NM_DEVICE_ETHERNET_CARRIER
+#define             NM_DEVICE_ETHERNET_ERROR
 #define             NM_DEVICE_ETHERNET_HW_ADDRESS
 #define             NM_DEVICE_ETHERNET_PERMANENT_HW_ADDRESS
 #define             NM_DEVICE_ETHERNET_SPEED
+GQuark              nm_device_ethernet_error_quark      (void);
 gboolean            nm_device_ethernet_get_carrier      (NMDeviceEthernet *device);
 const char *        nm_device_ethernet_get_hw_address   (NMDeviceEthernet *device);
 const char *        nm_device_ethernet_get_permanent_hw_address
@@ -115,6 +118,48 @@ NMDeviceEthernet implements
 

+

enum NMDeviceEthernetError

+
typedef enum {
+	NM_DEVICE_ETHERNET_ERROR_UNKNOWN = 0,                 /*< nick=UnknownError >*/
+	NM_DEVICE_ETHERNET_ERROR_NOT_ETHERNET_CONNECTION,     /*< nick=NotEthernetConnection >*/
+	NM_DEVICE_ETHERNET_ERROR_INVALID_ETHERNET_CONNECTION, /*< nick=InvalidEthernetConnection >*/
+	NM_DEVICE_ETHERNET_ERROR_INVALID_DEVICE_MAC,          /*< nick=InvalidDeviceMac >*/
+	NM_DEVICE_ETHERNET_ERROR_MAC_MISMATCH,                /*< nick=MacMismatch >*/
+} NMDeviceEthernetError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + +

NM_DEVICE_ETHERNET_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_ETHERNET_ERROR_NOT_ETHERNET_CONNECTION

the connection was not of ethernet or PPPoE type +

NM_DEVICE_ETHERNET_ERROR_INVALID_ETHERNET_CONNECTION

the ethernet connection was invalid +

NM_DEVICE_ETHERNET_ERROR_INVALID_DEVICE_MAC

the device's MAC was invalid +

NM_DEVICE_ETHERNET_ERROR_MAC_MISMATCH

the MACs of the connection and the device mismatched +
+
+
+

NM_DEVICE_ETHERNET_CARRIER

#define NM_DEVICE_ETHERNET_CARRIER     "carrier"
 
@@ -123,6 +168,14 @@ NMDeviceEthernet implements

+

NM_DEVICE_ETHERNET_ERROR

+
#define NM_DEVICE_ETHERNET_ERROR nm_device_ethernet_error_quark ()
+
+

+

+
+
+

NM_DEVICE_ETHERNET_HW_ADDRESS

#define NM_DEVICE_ETHERNET_HW_ADDRESS  "hw-address"
 
@@ -147,6 +200,21 @@ NMDeviceEthernet implements

+

nm_device_ethernet_error_quark ()

+
GQuark              nm_device_ethernet_error_quark      (void);
+

+Registers an error quark for NMDeviceEthernet if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceEthernet errors.
+
+
+

nm_device_ethernet_get_carrier ()

gboolean            nm_device_ethernet_get_carrier      (NMDeviceEthernet *device);

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 @@ + + + + +NMDeviceInfiniband + + + + + + + + + + + + + + + + + + + +

+
+
+ + +
+

NMDeviceInfiniband

+

NMDeviceInfiniband

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMObject
+         +----NMDevice
+               +----NMDeviceInfiniband
+
+
+
+

Implemented Interfaces

+

+NMDeviceInfiniband implements + GInitable and GAsyncInitable.

+
+
+

Properties

+
+  "carrier"                  gboolean              : Read
+  "hw-address"               gchar*                : Read
+
+
+
+

Description

+

+

+
+
+

Details

+
+

NMDeviceInfiniband

+
typedef struct _NMDeviceInfiniband NMDeviceInfiniband;
+

+

+
+
+
+

NMDeviceInfinibandClass

+
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;
+
+

+

+
+
+
+

enum NMDeviceInfinibandError

+
typedef enum {
+	NM_DEVICE_INFINIBAND_ERROR_UNKNOWN = 0,                   /*< nick=UnknownError >*/
+	NM_DEVICE_INFINIBAND_ERROR_NOT_INFINIBAND_CONNECTION,     /*< nick=NotInfinibandConnection >*/
+	NM_DEVICE_INFINIBAND_ERROR_INVALID_INFINIBAND_CONNECTION, /*< nick=InvalidInfinibandConnection >*/
+	NM_DEVICE_INFINIBAND_ERROR_INVALID_DEVICE_MAC,            /*< nick=InvalidDeviceMac >*/
+	NM_DEVICE_INFINIBAND_ERROR_MAC_MISMATCH,                  /*< nick=MacMismatch >*/
+} NMDeviceInfinibandError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + +

NM_DEVICE_INFINIBAND_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_INFINIBAND_ERROR_NOT_INFINIBAND_CONNECTION

the connection was not of InfiniBand type +

NM_DEVICE_INFINIBAND_ERROR_INVALID_INFINIBAND_CONNECTION

the InfiniBand connection was invalid +

NM_DEVICE_INFINIBAND_ERROR_INVALID_DEVICE_MAC

the device's MAC was invalid +

NM_DEVICE_INFINIBAND_ERROR_MAC_MISMATCH

the MACs of the connection and the device mismatched +
+
+
+
+

NM_DEVICE_INFINIBAND_CARRIER

+
#define NM_DEVICE_INFINIBAND_CARRIER     "carrier"
+
+

+

+
+
+
+

NM_DEVICE_INFINIBAND_ERROR

+
#define NM_DEVICE_INFINIBAND_ERROR nm_device_infiniband_error_quark ()
+
+

+

+
+
+
+

NM_DEVICE_INFINIBAND_HW_ADDRESS

+
#define NM_DEVICE_INFINIBAND_HW_ADDRESS  "hw-address"
+
+

+

+
+
+
+

nm_device_infiniband_error_quark ()

+
GQuark              nm_device_infiniband_error_quark    (void);
+

+Registers an error quark for NMDeviceInfiniband if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceInfiniband errors.
+
+
+
+

nm_device_infiniband_get_carrier ()

+
gboolean            nm_device_infiniband_get_carrier    (NMDeviceInfiniband *device);
+

+Whether the device has carrier. +

+
++ + + + + + + + + + +

device :

a NMDeviceInfiniband +

Returns :

+TRUE if the device has carrier
+
+
+
+

nm_device_infiniband_get_hw_address ()

+
const char *        nm_device_infiniband_get_hw_address (NMDeviceInfiniband *device);
+

+Gets the hardware (MAC) address of the NMDeviceInfiniband +

+
++ + + + + + + + + + +

device :

a NMDeviceInfiniband +

Returns :

the hardware address. This is the internal string used by the +device, and must not be modified.
+
+
+
+

nm_device_infiniband_new ()

+
GObject *           nm_device_infiniband_new            (DBusGConnection *connection,
+                                                         const char *path);
+

+Creates a new NMDeviceInfiniband. +

+
++ + + + + + + + + + + + + + +

connection :

the DBusGConnection +

path :

the DBus object path of the device

Returns :

a new device. [transfer full] +
+
+
+
+

Property Details

+
+

The "carrier" property

+
  "carrier"                  gboolean              : Read
+

+Whether the device has carrier. +

+

Default value: FALSE

+
+
+
+

The "hw-address" property

+
  "hw-address"               gchar*                : Read
+

+The hardware (MAC) address of the device. +

+

Default value: NULL

+
+
+
+ + + \ 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 @@

Synopsis

                    NMDeviceModem;
                     NMDeviceModemClass;
+enum                NMDeviceModemError;
 #define             NM_DEVICE_MODEM_CURRENT_CAPABILITIES
+#define             NM_DEVICE_MODEM_ERROR
 #define             NM_DEVICE_MODEM_MODEM_CAPABILITIES
+GQuark              nm_device_modem_error_quark         (void);
 NMDeviceModemCapabilities nm_device_modem_get_current_capabilities
                                                         (NMDeviceModem *self);
 NMDeviceModemCapabilities nm_device_modem_get_modem_capabilities
@@ -108,6 +111,42 @@ NMDeviceModem implements
 

+

enum NMDeviceModemError

+
typedef enum {
+	NM_DEVICE_MODEM_ERROR_UNKNOWN = 0,              /*< nick=UnknownError >*/
+	NM_DEVICE_MODEM_ERROR_NOT_MODEM_CONNECTION,     /*< nick=NotModemConnection >*/
+	NM_DEVICE_MODEM_ERROR_INVALID_MODEM_CONNECTION, /*< nick=InvalidModemConnection >*/
+	NM_DEVICE_MODEM_ERROR_MISSING_DEVICE_CAPS,      /*< nick=MissingDeviceCaps >*/
+} NMDeviceModemError;
+
+
++ + + + + + + + + + + + + + + + + + +

NM_DEVICE_MODEM_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_MODEM_ERROR_NOT_MODEM_CONNECTION

the connection was not of modem type +

NM_DEVICE_MODEM_ERROR_INVALID_MODEM_CONNECTION

the modem connection was invalid +

NM_DEVICE_MODEM_ERROR_MISSING_DEVICE_CAPS

the device missed required capabilities +
+
+
+

NM_DEVICE_MODEM_CURRENT_CAPABILITIES

#define NM_DEVICE_MODEM_CURRENT_CAPABILITIES "current-capabilities"
 
@@ -116,6 +155,14 @@ NMDeviceModem implements

+

NM_DEVICE_MODEM_ERROR

+
#define NM_DEVICE_MODEM_ERROR nm_device_modem_error_quark ()
+
+

+

+
+
+

NM_DEVICE_MODEM_MODEM_CAPABILITIES

#define NM_DEVICE_MODEM_MODEM_CAPABILITIES   "modem-capabilities"
 
@@ -124,6 +171,21 @@ NMDeviceModem implements

+

nm_device_modem_error_quark ()

+
GQuark              nm_device_modem_error_quark         (void);
+

+Registers an error quark for NMDeviceModem if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceModem errors.
+
+
+

nm_device_modem_get_current_capabilities ()

NMDeviceModemCapabilities nm_device_modem_get_current_capabilities
                                                         (NMDeviceModem *self);
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 @@ + + + + +NMDeviceOlpcMesh + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

NMDeviceOlpcMesh

+

NMDeviceOlpcMesh

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMObject
+         +----NMDevice
+               +----NMDeviceOlpcMesh
+
+
+
+

Implemented Interfaces

+

+NMDeviceOlpcMesh implements + GInitable and GAsyncInitable.

+
+
+

Properties

+
+  "active-channel"           guint                 : Read
+  "companion"                NMDeviceWifi*         : Read
+  "hw-address"               gchar*                : Read
+
+
+
+

Description

+

+

+
+
+

Details

+
+

NMDeviceOlpcMesh

+
typedef struct _NMDeviceOlpcMesh NMDeviceOlpcMesh;
+

+

+
+
+
+

NMDeviceOlpcMeshClass

+
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;
+
+

+

+
+
+
+

enum NMDeviceOlpcMeshError

+
typedef enum {
+	NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN = 0,                  /*< nick=UnknownError >*/
+	NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION,     /*< nick=NotOlpcMeshConnection >*/
+	NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION, /*< nick=InvalidOlpcMeshConnection >*/
+} NMDeviceOlpcMeshError;
+
+
++ + + + + + + + + + + + + + +

NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION

the connection was not of Olpc Mesh type +

NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION

the Olpc Mesh connection was invalid +
+
+
+
+

NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL

+
#define NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL "active-channel"
+
+

+

+
+
+
+

NM_DEVICE_OLPC_MESH_COMPANION

+
#define NM_DEVICE_OLPC_MESH_COMPANION      "companion"
+
+

+

+
+
+
+

NM_DEVICE_OLPC_MESH_ERROR

+
#define NM_DEVICE_OLPC_MESH_ERROR nm_device_olpc_mesh_error_quark ()
+
+

+

+
+
+
+

NM_DEVICE_OLPC_MESH_HW_ADDRESS

+
#define NM_DEVICE_OLPC_MESH_HW_ADDRESS     "hw-address"
+
+

+

+
+
+
+

nm_device_olpc_mesh_error_quark ()

+
GQuark              nm_device_olpc_mesh_error_quark     (void);
+

+Registers an error quark for NMDeviceOlpcMesh if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceOlpcMesh errors.
+
+
+
+

nm_device_olpc_mesh_get_active_channel ()

+
guint32             nm_device_olpc_mesh_get_active_channel
+                                                        (NMDeviceOlpcMesh *device);
+

+Returns the active channel of the NMDeviceOlpcMesh device. +

+
++ + + + + + + + + + +

device :

a NMDeviceOlpcMesh +

Returns :

active channel of the device
+
+
+
+

nm_device_olpc_mesh_get_companion ()

+
NMDeviceWifi *      nm_device_olpc_mesh_get_companion   (NMDeviceOlpcMesh *device);
+

+Gets the companion device of the NMDeviceOlpcMesh. +

+
++ + + + + + + + + + +

device :

a NMDeviceOlpcMesh +

Returns :

the companion of the device of NULL. [transfer none] +
+
+
+
+

nm_device_olpc_mesh_get_hw_address ()

+
const char *        nm_device_olpc_mesh_get_hw_address  (NMDeviceOlpcMesh *device);
+

+Gets the hardware (MAC) address of the NMDeviceOlpcMesh +

+
++ + + + + + + + + + +

device :

a NMDeviceOlpcMesh +

Returns :

the hardware address. This is the internal string used by the +device, and must not be modified.
+
+
+
+

nm_device_olpc_mesh_new ()

+
GObject *           nm_device_olpc_mesh_new             (DBusGConnection *connection,
+                                                         const char *path);
+

+Creates a new NMDeviceOlpcMesh. +

+
++ + + + + + + + + + + + + + +

connection :

the DBusGConnection +

path :

the DBus object path of the device

Returns :

a new OlpcMesh device. [transfer full] +
+
+
+
+

Property Details

+
+

The "active-channel" property

+
  "active-channel"           guint                 : Read
+

+The device's active channel. +

+

Default value: 0

+
+
+
+

The "companion" property

+
  "companion"                NMDeviceWifi*         : Read
+

+The companion device. +

+
+
+
+

The "hw-address" property

+
  "hw-address"               gchar*                : Read
+

+The hardware (MAC) address of the device. +

+

Default value: NULL

+
+
+
+ + + \ 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 @@ + + + + +NMDeviceVlan + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

NMDeviceVlan

+

NMDeviceVlan

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMObject
+         +----NMDevice
+               +----NMDeviceVlan
+
+
+
+

Implemented Interfaces

+

+NMDeviceVlan implements + GInitable and GAsyncInitable.

+
+
+

Properties

+
+  "carrier"                  gboolean              : Read
+  "hw-address"               gchar*                : Read
+  "vlan-id"                  guint                 : Read
+
+
+
+

Description

+

+

+
+
+

Details

+
+

NMDeviceVlan

+
typedef struct _NMDeviceVlan NMDeviceVlan;
+

+

+
+
+
+

NMDeviceVlanClass

+
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;
+
+

+

+
+
+
+

enum NMDeviceVlanError

+
typedef enum {
+	NM_DEVICE_VLAN_ERROR_UNKNOWN = 0,             /*< nick=UnknownError >*/
+	NM_DEVICE_VLAN_ERROR_NOT_VLAN_CONNECTION,     /*< nick=NotVlanConnection >*/
+	NM_DEVICE_VLAN_ERROR_INVALID_VLAN_CONNECTION, /*< nick=InvalidVlanConnection >*/
+	NM_DEVICE_VLAN_ERROR_ID_MISMATCH,             /*< nick=IdMismatch >*/
+	NM_DEVICE_VLAN_ERROR_INTERFACE_MISMATCH,      /*< nick=InterfaceMismatch >*/
+} NMDeviceVlanError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + +

NM_DEVICE_VLAN_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_VLAN_ERROR_NOT_VLAN_CONNECTION

the connection was not of VLAN type +

NM_DEVICE_VLAN_ERROR_INVALID_VLAN_CONNECTION

the VLAN connection was invalid +

NM_DEVICE_VLAN_ERROR_ID_MISMATCH

the VLAN identifiers of the connection and the device mismatched +

NM_DEVICE_VLAN_ERROR_INTERFACE_MISMATCH

the interfaces of the connection and the device mismatched +
+
+
+
+

NM_DEVICE_VLAN_CARRIER

+
#define NM_DEVICE_VLAN_CARRIER     "carrier"
+
+

+

+
+
+
+

NM_DEVICE_VLAN_ERROR

+
#define NM_DEVICE_VLAN_ERROR nm_device_vlan_error_quark ()
+
+

+

+
+
+
+

NM_DEVICE_VLAN_HW_ADDRESS

+
#define NM_DEVICE_VLAN_HW_ADDRESS  "hw-address"
+
+

+

+
+
+
+

NM_DEVICE_VLAN_VLAN_ID

+
#define NM_DEVICE_VLAN_VLAN_ID     "vlan-id"
+
+

+

+
+
+
+

nm_device_vlan_error_quark ()

+
GQuark              nm_device_vlan_error_quark          (void);
+

+Registers an error quark for NMDeviceVlan if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceVlan errors.
+
+
+
+

nm_device_vlan_get_carrier ()

+
gboolean            nm_device_vlan_get_carrier          (NMDeviceVlan *device);
+

+Whether the device has carrier. +

+
++ + + + + + + + + + +

device :

a NMDeviceVlan +

Returns :

+TRUE if the device has carrier
+
+
+
+

nm_device_vlan_get_hw_address ()

+
const char *        nm_device_vlan_get_hw_address       (NMDeviceVlan *device);
+

+Gets the hardware (MAC) address of the NMDeviceVlan +

+
++ + + + + + + + + + +

device :

a NMDeviceVlan +

Returns :

the hardware address. This is the internal string used by the +device, and must not be modified.
+
+
+
+

nm_device_vlan_get_vlan_id ()

+
guint               nm_device_vlan_get_vlan_id          (NMDeviceVlan *device);
+
++ + + + + + + + + + +

device :

a NMDeviceVlan +

Returns :

the device's VLAN ID
+
+
+
+

nm_device_vlan_new ()

+
GObject *           nm_device_vlan_new                  (DBusGConnection *connection,
+                                                         const char *path);
+

+Creates a new NMDeviceVlan. +

+
++ + + + + + + + + + + + + + +

connection :

the DBusGConnection +

path :

the DBus object path of the device

Returns :

a new device. [transfer full] +
+
+
+
+

Property Details

+
+

The "carrier" property

+
  "carrier"                  gboolean              : Read
+

+Whether the device has carrier. +

+

Default value: FALSE

+
+
+
+

The "hw-address" property

+
  "hw-address"               gchar*                : Read
+

+The hardware (MAC) address of the device. +

+

Default value: NULL

+
+
+
+

The "vlan-id" property

+
  "vlan-id"                  guint                 : Read
+

+The device's VLAN ID. +

+

Allowed values: <= 4095

+

Default value: 0

+
+
+
+ + + \ 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 @@

Synopsis

                    NMDeviceWifi;
                     NMDeviceWifiClass;
+enum                NMDeviceWifiError;
 #define             NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT
 #define             NM_DEVICE_WIFI_BITRATE
 #define             NM_DEVICE_WIFI_CAPABILITIES
+#define             NM_DEVICE_WIFI_ERROR
 #define             NM_DEVICE_WIFI_HW_ADDRESS
 #define             NM_DEVICE_WIFI_MODE
 #define             NM_DEVICE_WIFI_PERMANENT_HW_ADDRESS
+GQuark              nm_device_wifi_error_quark          (void);
 NMAccessPoint *     nm_device_wifi_get_access_point_by_path
                                                         (NMDeviceWifi *device,
                                                          const char *path);
@@ -140,6 +143,62 @@ NMDeviceWifi implements
 

+

enum NMDeviceWifiError

+
typedef enum {
+	NM_DEVICE_WIFI_ERROR_UNKNOWN = 0,             /*< nick=UnknownError >*/
+	NM_DEVICE_WIFI_ERROR_NOT_WIFI_CONNECTION,     /*< nick=NotWifiConnection >*/
+	NM_DEVICE_WIFI_ERROR_INVALID_WIFI_CONNECTION, /*< nick=InvalidWifiConnection >*/
+	NM_DEVICE_WIFI_ERROR_INVALID_DEVICE_MAC,      /*< nick=InvalidDeviceMac >*/
+	NM_DEVICE_WIFI_ERROR_MAC_MISMATCH,            /*< nick=MacMismatch >*/
+	NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_WPA_CAPS, /*< nick=MissingDeviceWpaCaps >*/
+	NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_RSN_CAPS, /*< nick=MissingDeviceRsnCaps >*/
+} NMDeviceWifiError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

NM_DEVICE_WIFI_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_WIFI_ERROR_NOT_WIFI_CONNECTION

the connection was not of Wi-Fi type +

NM_DEVICE_WIFI_ERROR_INVALID_WIFI_CONNECTION

the Wi-Fi connection was invalid +

NM_DEVICE_WIFI_ERROR_INVALID_DEVICE_MAC

the device's MAC was invalid +

NM_DEVICE_WIFI_ERROR_MAC_MISMATCH

the MACs of the connection and the device mismatched +

NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_WPA_CAPS

the device missed WPA capabilities +required by the connection +

NM_DEVICE_WIFI_ERROR_MISSING_DEVICE_RSN_CAPS

the device missed RSN capabilities +required by the connection +
+
+
+

NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT

#define NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT "active-access-point"
 
@@ -164,6 +223,14 @@ NMDeviceWifi implements

+

NM_DEVICE_WIFI_ERROR

+
#define NM_DEVICE_WIFI_ERROR nm_device_wifi_error_quark ()
+
+

+

+
+
+

NM_DEVICE_WIFI_HW_ADDRESS

#define NM_DEVICE_WIFI_HW_ADDRESS          "hw-address"
 
@@ -188,6 +255,21 @@ NMDeviceWifi implements

+

nm_device_wifi_error_quark ()

+
GQuark              nm_device_wifi_error_quark          (void);
+

+Registers an error quark for NMDeviceWifi if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceWifi errors.
+
+
+

nm_device_wifi_get_access_point_by_path ()

NMAccessPoint *     nm_device_wifi_get_access_point_by_path
                                                         (NMDeviceWifi *device,
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 @@
 
 
 
-
+
 
 
 
@@ -18,7 +18,7 @@
 Up
 Home
 libnm-glib Reference Manual
-Next
+Next
 
 
 Top
@@ -47,13 +47,16 @@
 

Synopsis

                    NMDeviceWimax;
                     NMDeviceWimaxClass;
+enum                NMDeviceWimaxError;
 #define             NM_DEVICE_WIMAX_ACTIVE_NSP
 #define             NM_DEVICE_WIMAX_BSID
 #define             NM_DEVICE_WIMAX_CENTER_FREQUENCY
 #define             NM_DEVICE_WIMAX_CINR
+#define             NM_DEVICE_WIMAX_ERROR
 #define             NM_DEVICE_WIMAX_HW_ADDRESS
 #define             NM_DEVICE_WIMAX_RSSI
 #define             NM_DEVICE_WIMAX_TX_POWER
+GQuark              nm_device_wimax_error_quark         (void);
 NMWimaxNsp *        nm_device_wimax_get_active_nsp      (NMDeviceWimax *wimax);
 const char *        nm_device_wimax_get_bsid            (NMDeviceWimax *self);
 guint               nm_device_wimax_get_center_frequency
@@ -132,6 +135,48 @@ NMDeviceWimax implements
 

+

enum NMDeviceWimaxError

+
typedef enum {
+	NM_DEVICE_WIMAX_ERROR_UNKNOWN = 0,              /*< nick=UnknownError >*/
+	NM_DEVICE_WIMAX_ERROR_NOT_WIMAX_CONNECTION,     /*< nick=NotWimaxConnection >*/
+	NM_DEVICE_WIMAX_ERROR_INVALID_WIMAX_CONNECTION, /*< nick=InvalidWimaxConnection >*/
+	NM_DEVICE_WIMAX_ERROR_INVALID_DEVICE_MAC,       /*< nick=InvalidDeviceMac >*/
+	NM_DEVICE_WIMAX_ERROR_MAC_MISMATCH,             /*< nick=MacMismatch >*/
+} NMDeviceWimaxError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + +

NM_DEVICE_WIMAX_ERROR_UNKNOWN

unknown or unclassified error +

NM_DEVICE_WIMAX_ERROR_NOT_WIMAX_CONNECTION

the connection was not of WiMax type +

NM_DEVICE_WIMAX_ERROR_INVALID_WIMAX_CONNECTION

the WiMax connection was invalid +

NM_DEVICE_WIMAX_ERROR_INVALID_DEVICE_MAC

the device's MAC was invalid +

NM_DEVICE_WIMAX_ERROR_MAC_MISMATCH

the MACs of the connection and the device mismatched +
+
+
+

NM_DEVICE_WIMAX_ACTIVE_NSP

#define NM_DEVICE_WIMAX_ACTIVE_NSP       "active-nsp"
 
@@ -164,6 +209,14 @@ NMDeviceWimax implements

+

NM_DEVICE_WIMAX_ERROR

+
#define NM_DEVICE_WIMAX_ERROR nm_device_wimax_error_quark ()
+
+

+

+
+
+

NM_DEVICE_WIMAX_HW_ADDRESS

#define NM_DEVICE_WIMAX_HW_ADDRESS       "hw-address"
 
@@ -188,6 +241,21 @@ NMDeviceWimax implements

+

nm_device_wimax_error_quark ()

+
GQuark              nm_device_wimax_error_quark         (void);
+

+Registers an error quark for NMDeviceWimax if necessary. +

+
++ + + + +

Returns :

the error quark used for NMDeviceWimax errors.
+
+
+

nm_device_wimax_get_active_nsp ()

NMWimaxNsp *        nm_device_wimax_get_active_nsp      (NMDeviceWimax *wimax);

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 @@ Implemented Interfaces  |  Properties +  |  + Signals

@@ -45,8 +47,11 @@

Synopsis

                    NMObject;
                     NMObjectClass;
+enum                NMObjectError;
 #define             NM_OBJECT_DBUS_CONNECTION
 #define             NM_OBJECT_DBUS_PATH
+#define             NM_OBJECT_ERROR
+GQuark              nm_object_error_quark               (void);
 DBusGConnection *   nm_object_get_connection            (NMObject *object);
 const char *        nm_object_get_path                  (NMObject *object);
 
@@ -81,6 +86,12 @@ NMObject implements
+

Signals

+
+  "object-creation-failed"                         : Run First
+
+
+

Description

@@ -99,6 +110,15 @@ NMObject implements
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
 

+

enum NMObjectError

+
typedef enum {
+	NM_OBJECT_ERROR_UNKNOWN = 0,
+	NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE,
+} NMObjectError;
+
+

+Describes errors that may result from operations involving a NMObject. +

+
++ + + + + + + + + + +

NM_OBJECT_ERROR_UNKNOWN

unknown or unclassified error +

NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE

an error ocured while creating an NMObject +
+
+
+

NM_OBJECT_DBUS_CONNECTION

#define NM_OBJECT_DBUS_CONNECTION "dbus-connection"
 
@@ -129,6 +176,29 @@ NMObject implements

+

NM_OBJECT_ERROR

+
#define NM_OBJECT_ERROR nm_object_error_quark ()
+
+

+

+
+
+
+

nm_object_error_quark ()

+
GQuark              nm_object_error_quark               (void);
+

+Registers an error quark for NMObject if necessary. +

+
++ + + + +

Returns :

the error quark used for NMObject errors.
+
+
+

nm_object_get_connection ()

DBusGConnection *   nm_object_get_connection            (NMObject *object);

@@ -189,6 +259,45 @@ device, and must not be modified.

Default value: NULL

+
+

Signal Details

+
+

The "object-creation-failed" signal

+
void                user_function                      (NMObject *master_object,
+                                                        gpointer  error,
+                                                        gpointer  failed_path,
+                                                        gpointer  user_data)          : Run First
+

+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. +

+
++ + + + + + + + + + + + + + + + + + +

master_object :

the object that received the signal

error :

the error that occured while creating object

failed_path :

object path of the failed object

user_data :

user data set when the signal handler was connected.
+
+

@@ -154,7 +174,27 @@ NMRemoteConnection implements GError *error, gpointer user_data);

+Called when NetworkManager has deleted a connection as a result of +nm_remote_connection_delete().

+
++ + + + + + + + + + + + + + +

connection :

the connection to be deleted

error :

on failure, a descriptive error

user_data :

user data passed to nm_remote_connection_delete() +

@@ -164,7 +204,34 @@ NMRemoteConnection implements GError *error, gpointer user_data);

+Called when NetworkManager returns secrets in response to a request for +secrets via nm_remote_connection_get_secrets().

+
++ + + + + + + + + + + + + + + + + + +

connection :

the connection for which secrets were requested

secrets :

on success, a hash table of +hash tables, with each inner hash mapping a setting property to a GValue +containing that property's value. [element-type utf8 GLib.HashTable] +

error :

on failure, a descriptive error

user_data :

user data passed to nm_remote_connection_get_secrets() +

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 NM_SECRET_AGENT_AUTO_REGISTER #define NM_SECRET_AGENT_ERROR #define NM_SECRET_AGENT_IDENTIFIER +#define NM_SECRET_AGENT_REGISTERED #define NM_SECRET_AGENT_REGISTRATION_RESULT void nm_secret_agent_delete_secrets (NMSecretAgent *self, NMConnection *connection, NMSecretAgentDeleteSecretsFunc callback, gpointer user_data); GQuark nm_secret_agent_error_quark (void); +gboolean nm_secret_agent_get_registered (NMSecretAgent *self); void nm_secret_agent_get_secrets (NMSecretAgent *self, NMConnection *connection, const char *setting_name, @@ -246,7 +248,8 @@ should be called.
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;
 

@@ -277,6 +280,14 @@ 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. + +
@@ -299,7 +310,7 @@ To easily create the hash table to return the WiFi PSK, you could do something like this:

-

Example 1. Creating a secrets hash

+

Example 1. Creating a secrets hash

@@ -437,6 +448,14 @@ should be called.
+

NM_SECRET_AGENT_REGISTERED

+
#define NM_SECRET_AGENT_REGISTERED          "registered"
+
+

+

+
+
+

NM_SECRET_AGENT_REGISTRATION_RESULT

#define NM_SECRET_AGENT_REGISTRATION_RESULT "registration-result"
 
@@ -492,6 +511,25 @@ VFunc: delete_secrets

+

nm_secret_agent_get_registered ()

+
gboolean            nm_secret_agent_get_registered      (NMSecretAgent *self);
+
++ + + + + + + + + + +

self :

a NMSecretAgent +

Returns :

a TRUE if the agent is registered, FALSE if it is not.
+
+
+

nm_secret_agent_get_secrets ()

void                nm_secret_agent_get_secrets         (NMSecretAgent *self,
                                                          NMConnection *connection,
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 @@
 
 
 
-
+
 
 
 
@@ -14,7 +14,7 @@
 
 
-
+
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 @@
                       | 
                    D
                       | 
-                   G
-                      | 
                    I
                       | 
                    O
@@ -525,299 +523,271 @@
 

D

-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection, macro in nm-exported-connection-bindings -
-
-
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_Connection_Secrets, macro in nm-exported-connection-bindings -
-
-
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManagerSettings_System, macro in nm-settings-system-bindings -
-
-
-DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManager_Device_Infiniband, macro in nm-device-infiniband-bindings -
-
-
-dbus_glib_marshal_nm_exported_connection_BOOLEAN__POINTER_POINTER, function in nm-exported-connection-glue -
-
-
-dbus_glib_marshal_nm_exported_connection_NONE__BOXED_POINTER, macro in nm-exported-connection-glue -
-
-
-dbus_glib_marshal_nm_exported_connection_NONE__POINTER, macro in nm-exported-connection-glue -
-
-
-dbus_glib_marshal_nm_exported_connection_NONE__STRING_BOXED_BOOLEAN_POINTER, macro in nm-exported-connection-glue +NMDevice, struct in NMDevice
-dbus_glib_marshal_nm_exported_connection_VOID__BOXED_POINTER, function in nm-exported-connection-glue +NMDevice::state-changed, object signal in NMDevice
-dbus_glib_marshal_nm_exported_connection_VOID__POINTER, macro in nm-exported-connection-glue +NMDevice:active-connection, object property in NMDevice
-dbus_glib_marshal_nm_exported_connection_VOID__STRING_BOXED_BOOLEAN_POINTER, function in nm-exported-connection-glue +NMDevice:autoconnect, object property in NMDevice
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_POINTER, macro in nm-secret-agent-glue +NMDevice:capabilities, object property in NMDevice
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_BOXED_STRING_BOXED_UINT_POINTER, macro in nm-secret-agent-glue +NMDevice:device-type, object property in NMDevice
-dbus_glib_marshal_nm_secret_agent_NONE__BOXED_STRING_POINTER, macro in nm-secret-agent-glue +NMDevice:dhcp4-config, object property in NMDevice
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_POINTER, function in nm-secret-agent-glue +NMDevice:dhcp6-config, object property in NMDevice
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_BOXED_STRING_BOXED_UINT_POINTER, function in nm-secret-agent-glue +NMDevice:driver, object property in NMDevice
-dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER, function in nm-secret-agent-glue +NMDevice:driver-version, object property in NMDevice
-dbus_glib_nm_exported_connection_object_info, variable in nm-exported-connection-glue +NMDevice:firmware-missing, object property in NMDevice
-dbus_glib_nm_secret_agent_object_info, variable in nm-secret-agent-glue +NMDevice:firmware-version, object property in NMDevice
-dbus_g_proxy_begin_call, function in nm-settings-system-bindings +NMDevice:interface, object property in NMDevice
-NMDevice, struct in NMDevice +NMDevice:ip-interface, object property in NMDevice
-NMDevice::state-changed, object signal in NMDevice +NMDevice:ip4-config, object property in NMDevice
-NMDevice:active-connection, object property in NMDevice +NMDevice:ip6-config, object property in NMDevice
-NMDevice:capabilities, object property in NMDevice +NMDevice:managed, object property in NMDevice
-NMDevice:device-type, object property in NMDevice +NMDevice:product, object property in NMDevice
-NMDevice:dhcp4-config, object property in NMDevice +NMDevice:state, object property in NMDevice
-NMDevice:dhcp6-config, object property in NMDevice +NMDevice:state-reason, object property in NMDevice
-NMDevice:driver, object property in NMDevice +NMDevice:udi, object property in NMDevice
-NMDevice:firmware-missing, object property in NMDevice +NMDevice:vendor, object property in NMDevice
-NMDevice:interface, object property in NMDevice +NMDeviceAdsl, struct in NMDeviceAdsl
-NMDevice:ip-interface, object property in NMDevice +NMDeviceAdslClass, struct in NMDeviceAdsl
-NMDevice:ip4-config, object property in NMDevice +NMDeviceAdslError, enum in NMDeviceAdsl
-NMDevice:ip6-config, object property in NMDevice +NMDeviceBond, struct in NMDeviceBond
-NMDevice:managed, object property in NMDevice +NMDeviceBond:carrier, object property in NMDeviceBond
-NMDevice:product, object property in NMDevice +NMDeviceBond:hw-address, object property in NMDeviceBond
-NMDevice:state, object property in NMDevice +NMDeviceBondClass, struct in NMDeviceBond
-NMDevice:state-reason, object property in NMDevice +NMDeviceBondError, enum in NMDeviceBond
-NMDevice:udi, object property in NMDevice +NMDeviceBt, struct in NMDeviceBt
-NMDevice:vendor, object property in NMDevice +NMDeviceBt:bt-capabilities, object property in NMDeviceBt
-NMDeviceBond, struct in NMDeviceBond +NMDeviceBt:hw-address, object property in NMDeviceBt
-NMDeviceBond:carrier, object property in NMDeviceBond +NMDeviceBt:name, object property in NMDeviceBt
-NMDeviceBond:hw-address, object property in NMDeviceBond +NMDeviceBtClass, struct in NMDeviceBt
-NMDeviceBondClass, struct in NMDeviceBond +NMDeviceBtError, enum in NMDeviceBt
-NMDeviceBt, struct in NMDeviceBt +NMDeviceClass, struct in NMDevice
-NMDeviceBt:bt-capabilities, object property in NMDeviceBt +NMDeviceDeactivateFn, user_function in NMDevice
-NMDeviceBt:hw-address, object property in NMDeviceBt +NMDeviceEthernet, struct in NMDeviceEthernet
-NMDeviceBt:name, object property in NMDeviceBt +NMDeviceEthernet:carrier, object property in NMDeviceEthernet
-NMDeviceBtClass, struct in NMDeviceBt +NMDeviceEthernet:hw-address, object property in NMDeviceEthernet
-NMDeviceClass, struct in NMDevice +NMDeviceEthernet:perm-hw-address, object property in NMDeviceEthernet
-NMDeviceDeactivateFn, user_function in NMDevice +NMDeviceEthernet:speed, object property in NMDeviceEthernet
-NMDeviceEthernet, struct in NMDeviceEthernet +NMDeviceEthernetClass, struct in NMDeviceEthernet
-NMDeviceEthernet:carrier, object property in NMDeviceEthernet +NMDeviceEthernetError, enum in NMDeviceEthernet
-NMDeviceEthernet:hw-address, object property in NMDeviceEthernet +NMDeviceInfiniband, struct in NMDeviceInfiniband
-NMDeviceEthernet:perm-hw-address, object property in NMDeviceEthernet +NMDeviceInfiniband:carrier, object property in NMDeviceInfiniband
-NMDeviceEthernet:speed, object property in NMDeviceEthernet +NMDeviceInfiniband:hw-address, object property in NMDeviceInfiniband
-NMDeviceEthernetClass, struct in NMDeviceEthernet +NMDeviceInfinibandClass, struct in NMDeviceInfiniband
-NMDeviceInfiniband, struct in NMDeviceInfiniband +NMDeviceInfinibandError, enum in NMDeviceInfiniband
-NMDeviceInfiniband:carrier, object property in NMDeviceInfiniband +NMDeviceModem, struct in NMDeviceModem
-NMDeviceInfiniband:hw-address, object property in NMDeviceInfiniband +NMDeviceModem:current-capabilities, object property in NMDeviceModem
-NMDeviceInfinibandClass, struct in NMDeviceInfiniband +NMDeviceModem:modem-capabilities, object property in NMDeviceModem
-NMDeviceModem, struct in NMDeviceModem +NMDeviceModemClass, struct in NMDeviceModem
-NMDeviceModem:current-capabilities, object property in NMDeviceModem +NMDeviceModemError, enum in NMDeviceModem
-NMDeviceModem:modem-capabilities, object property in NMDeviceModem +NMDeviceOlpcMesh, struct in NMDeviceOlpcMesh
-NMDeviceModemClass, struct in NMDeviceModem +NMDeviceOlpcMesh:active-channel, object property in NMDeviceOlpcMesh
-NMDeviceOlpcMesh, struct in NMDeviceOlpcMesh +NMDeviceOlpcMesh:companion, object property in NMDeviceOlpcMesh
-NMDeviceOlpcMesh:active-channel, object property in NMDeviceOlpcMesh +NMDeviceOlpcMesh:hw-address, object property in NMDeviceOlpcMesh
-NMDeviceOlpcMesh:companion, object property in NMDeviceOlpcMesh +NMDeviceOlpcMeshClass, struct in NMDeviceOlpcMesh
-NMDeviceOlpcMesh:hw-address, object property in NMDeviceOlpcMesh +NMDeviceOlpcMeshError, enum in NMDeviceOlpcMesh
-NMDeviceOlpcMeshClass, struct in NMDeviceOlpcMesh +NMDeviceVlan, struct in NMDeviceVlan
-NMDeviceVlan, struct in NMDeviceVlan +NMDeviceVlan:carrier, object property in NMDeviceVlan
-NMDeviceVlan:carrier, object property in NMDeviceVlan +NMDeviceVlan:hw-address, object property in NMDeviceVlan
-NMDeviceVlan:hw-address, object property in NMDeviceVlan +NMDeviceVlan:vlan-id, object property in NMDeviceVlan
-NMDeviceVlan:vlan-id, object property in NMDeviceVlan +NMDeviceVlanClass, struct in NMDeviceVlan
-NMDeviceVlanClass, struct in NMDeviceVlan +NMDeviceVlanError, enum in NMDeviceVlan
@@ -861,6 +831,10 @@ NMDeviceVlanClass, struct in NMDeviceVlan
+NMDeviceWifiError, enum in NMDeviceWifi +
+
+
NMDeviceWimax, struct in NMDeviceWimax
@@ -905,27 +879,63 @@ NMDeviceVlanClass, struct in NMDeviceVlan
+NMDeviceWimaxError, enum in NMDeviceWimax +
+
+
NM_DEVICE_ACTIVE_CONNECTION, macro in NMDevice
-NM_DEVICE_BOND_CARRIER, macro in NMDeviceBond +NM_DEVICE_ADSL_CARRIER, macro in NMDeviceAdsl +
+
+
+NM_DEVICE_ADSL_ERROR, macro in NMDeviceAdsl +
+
+
+nm_device_adsl_error_quark, function in NMDeviceAdsl +
+
+
+nm_device_adsl_get_carrier, function in NMDeviceAdsl
-nm_device_bond_get_carrier, function in NMDeviceBond +nm_device_adsl_new, function in NMDeviceAdsl
-nm_device_bond_get_hw_address, function in NMDeviceBond +NM_DEVICE_AUTOCONNECT, macro in NMDevice
-NM_DEVICE_BOND_HW_ADDRESS, macro in NMDeviceBond +NM_DEVICE_BOND_CARRIER, macro in NMDeviceBond
-nm_device_bond_new, function in NMDeviceBond +NM_DEVICE_BOND_ERROR, macro in NMDeviceBond +
+
+
+nm_device_bond_error_quark, function in NMDeviceBond +
+
+
+nm_device_bond_get_carrier, function in NMDeviceBond +
+
+
+nm_device_bond_get_hw_address, function in NMDeviceBond +
+
+
+NM_DEVICE_BOND_HW_ADDRESS, macro in NMDeviceBond +
+
+
+nm_device_bond_new, function in NMDeviceBond
@@ -933,6 +943,14 @@ nm_device_bond_new, function in NMDeviceBond
+NM_DEVICE_BT_ERROR, macro in NMDeviceBt +
+
+
+nm_device_bt_error_quark, function in NMDeviceBt +
+
+
nm_device_bt_get_capabilities, function in NMDeviceBt
@@ -961,6 +979,10 @@ nm_device_bond_new, function in NMDeviceBond
+nm_device_connection_compatible, function in NMDevice +
+
+
nm_device_connection_valid, function in NMDevice
@@ -985,10 +1007,22 @@ nm_device_bond_new, function in NMDeviceBond
+NM_DEVICE_DRIVER_VERSION, macro in NMDevice +
+
+
NM_DEVICE_ETHERNET_CARRIER, macro in NMDeviceEthernet
+NM_DEVICE_ETHERNET_ERROR, macro in NMDeviceEthernet +
+
+
+nm_device_ethernet_error_quark, function in NMDeviceEthernet +
+
+
nm_device_ethernet_get_carrier, function in NMDeviceEthernet
@@ -1029,10 +1063,18 @@ nm_device_bond_new, function in NMDeviceBond
+NM_DEVICE_FIRMWARE_VERSION, macro in NMDevice +
+
+
nm_device_get_active_connection, function in NMDevice
+nm_device_get_autoconnect, function in NMDevice +
+
+
nm_device_get_capabilities, function in NMDevice
@@ -1053,10 +1095,18 @@ nm_device_bond_new, function in NMDeviceBond
+nm_device_get_driver_version, function in NMDevice +
+
+
nm_device_get_firmware_missing, function in NMDevice
+nm_device_get_firmware_version, function in NMDevice +
+
+
nm_device_get_iface, function in NMDevice
@@ -1097,23 +1147,31 @@ nm_device_bond_new, function in NMDeviceBond
-NM_DEVICE_INFINIBAND_CARRIER, macro in NMDeviceInfiniband +NM_DEVICE_INFINIBAND_CARRIER, macro in NMDeviceInfiniband
-nm_device_infiniband_get_carrier, function in NMDeviceInfiniband +NM_DEVICE_INFINIBAND_ERROR, macro in NMDeviceInfiniband
-nm_device_infiniband_get_hw_address, function in NMDeviceInfiniband +nm_device_infiniband_error_quark, function in NMDeviceInfiniband
-NM_DEVICE_INFINIBAND_HW_ADDRESS, macro in NMDeviceInfiniband +nm_device_infiniband_get_carrier, function in NMDeviceInfiniband
-nm_device_infiniband_new, function in NMDeviceInfiniband +nm_device_infiniband_get_hw_address, function in NMDeviceInfiniband +
+
+
+NM_DEVICE_INFINIBAND_HW_ADDRESS, macro in NMDeviceInfiniband +
+
+
+nm_device_infiniband_new, function in NMDeviceInfiniband
@@ -1141,6 +1199,14 @@ nm_device_infiniband_new, function in NMDeviceInfiniband
+NM_DEVICE_MODEM_ERROR, macro in NMDeviceModem +
+
+
+nm_device_modem_error_quark, function in NMDeviceModem +
+
+
nm_device_modem_get_current_capabilities, function in NMDeviceModem
@@ -1157,31 +1223,39 @@ nm_device_infiniband_new, function in NMDeviceInfiniband
-NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL, macro in NMDeviceOlpcMesh +NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL, macro in NMDeviceOlpcMesh +
+
+
+NM_DEVICE_OLPC_MESH_COMPANION, macro in NMDeviceOlpcMesh +
+
+
+NM_DEVICE_OLPC_MESH_ERROR, macro in NMDeviceOlpcMesh
-NM_DEVICE_OLPC_MESH_COMPANION, macro in NMDeviceOlpcMesh +nm_device_olpc_mesh_error_quark, function in NMDeviceOlpcMesh
-nm_device_olpc_mesh_get_active_channel, function in NMDeviceOlpcMesh +nm_device_olpc_mesh_get_active_channel, function in NMDeviceOlpcMesh
-nm_device_olpc_mesh_get_companion, function in NMDeviceOlpcMesh +nm_device_olpc_mesh_get_companion, function in NMDeviceOlpcMesh
-nm_device_olpc_mesh_get_hw_address, function in NMDeviceOlpcMesh +nm_device_olpc_mesh_get_hw_address, function in NMDeviceOlpcMesh
-NM_DEVICE_OLPC_MESH_HW_ADDRESS, macro in NMDeviceOlpcMesh +NM_DEVICE_OLPC_MESH_HW_ADDRESS, macro in NMDeviceOlpcMesh
-nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh +nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh
@@ -1189,6 +1263,10 @@ nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh
+nm_device_set_autoconnect, function in NMDevice +
+
+
NM_DEVICE_STATE, macro in NMDevice
@@ -1205,31 +1283,39 @@ nm_device_olpc_mesh_new, function in NMDeviceOlpcMesh
-NM_DEVICE_VLAN_CARRIER, macro in NMDeviceVlan +NM_DEVICE_VLAN_CARRIER, macro in NMDeviceVlan
-nm_device_vlan_get_carrier, function in NMDeviceVlan +NM_DEVICE_VLAN_ERROR, macro in NMDeviceVlan
-nm_device_vlan_get_hw_address, function in NMDeviceVlan +nm_device_vlan_error_quark, function in NMDeviceVlan
-nm_device_vlan_get_vlan_id, function in NMDeviceVlan +nm_device_vlan_get_carrier, function in NMDeviceVlan
-NM_DEVICE_VLAN_HW_ADDRESS, macro in NMDeviceVlan +nm_device_vlan_get_hw_address, function in NMDeviceVlan
-nm_device_vlan_new, function in NMDeviceVlan +nm_device_vlan_get_vlan_id, function in NMDeviceVlan
-NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan +NM_DEVICE_VLAN_HW_ADDRESS, macro in NMDeviceVlan +
+
+
+nm_device_vlan_new, function in NMDeviceVlan +
+
+
+NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
@@ -1245,6 +1331,14 @@ NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
+NM_DEVICE_WIFI_ERROR, macro in NMDeviceWifi +
+
+
+nm_device_wifi_error_quark, function in NMDeviceWifi +
+
+
nm_device_wifi_get_access_points, function in NMDeviceWifi
@@ -1309,6 +1403,14 @@ NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan
+NM_DEVICE_WIMAX_ERROR, macro in NMDeviceWimax +
+
+
+nm_device_wimax_error_quark, function in NMDeviceWimax +
+
+
nm_device_wimax_get_active_nsp, function in NMDeviceWimax
@@ -1416,83 +1518,6 @@ NM_DEVICE_VLAN_VLAN_ID, macro in NMDeviceVlan NM_DHCP6_CONFIG_OPTIONS, macro in NMDHCP6Config
-

G

-
-g_marshal_value_peek_boolean, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_boxed, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_char, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_double, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_enum, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_flags, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_float, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_int, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_int64, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_long, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_object, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_param, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_pointer, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_string, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_uchar, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_uint, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_uint64, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_ulong, macro in nm-secret-agent-glue -
-
-
-g_marshal_value_peek_variant, macro in nm-secret-agent-glue -
-

I

NMIP4Config, struct in NMIP4Config @@ -1632,127 +1657,47 @@ g_marshal_value_peek_variant, macro in nm-secret-agent-glue
-NMObject:dbus-connection, object property in NMObject -
-
-
-NMObject:dbus-path, object property in NMObject -
-
-
-NMObjectClass, struct in NMObject -
-
-
-NM_OBJECT_DBUS_CONNECTION, macro in NMObject -
-
-
-NM_OBJECT_DBUS_PATH, macro in NMObject -
-
-
-nm_object_get_connection, function in NMObject -
-
-
-nm_object_get_path, function in NMObject -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_delete, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_delete_async, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_delete_async_callback, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_delete_reply, user_function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_get_settings, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_async, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_async_callback, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_get_settings_reply, user_function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_async_callback, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_Secrets_get_secrets_reply, user_function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_update, function in nm-exported-connection-bindings -
-
-
-org_freedesktop_NetworkManagerSettings_Connection_update_async, function in nm-exported-connection-bindings +NMObject::object-creation-failed, object signal in NMObject
-org_freedesktop_NetworkManagerSettings_Connection_update_async_callback, function in nm-exported-connection-bindings +NMObject:dbus-connection, object property in NMObject
-org_freedesktop_NetworkManagerSettings_Connection_update_reply, user_function in nm-exported-connection-bindings +NMObject:dbus-path, object property in NMObject
-org_freedesktop_NetworkManagerSettings_System_get_permissions, function in nm-settings-system-bindings +NMObjectClass, struct in NMObject
-org_freedesktop_NetworkManagerSettings_System_get_permissions_async, function in nm-settings-system-bindings +NMObjectError, enum in NMObject
-org_freedesktop_NetworkManagerSettings_System_get_permissions_async_callback, function in nm-settings-system-bindings +NM_OBJECT_DBUS_CONNECTION, macro in NMObject
-org_freedesktop_NetworkManagerSettings_System_get_permissions_reply, user_function in nm-settings-system-bindings +NM_OBJECT_DBUS_PATH, macro in NMObject
-org_freedesktop_NetworkManagerSettings_System_save_hostname, function in nm-settings-system-bindings +NM_OBJECT_ERROR, macro in NMObject
-org_freedesktop_NetworkManagerSettings_System_save_hostname_async, function in nm-settings-system-bindings +nm_object_error_quark, function in NMObject
-org_freedesktop_NetworkManagerSettings_System_save_hostname_async_callback, function in nm-settings-system-bindings +nm_object_get_connection, function in NMObject
-org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function in nm-settings-system-bindings +nm_object_get_path, function in NMObject

R

@@ -1986,6 +1931,10 @@ org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function
+nm_secret_agent_get_registered, function in NMSecretAgent +
+
+
nm_secret_agent_get_secrets, function in NMSecretAgent
@@ -1998,6 +1947,10 @@ org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function
+NM_SECRET_AGENT_REGISTERED, macro in NMSecretAgent +
+
+
NM_SECRET_AGENT_REGISTRATION_RESULT, macro in NMSecretAgent
@@ -2103,10 +2056,18 @@ org_freedesktop_NetworkManagerSettings_System_save_hostname_reply, user_function
+nm_vpn_plugin_set_config, function in NMVPNPlugin +
+
+
nm_vpn_plugin_set_ip4_config, function in NMVPNPlugin
+nm_vpn_plugin_set_ip6_config, function in NMVPNPlugin +
+
+
nm_vpn_plugin_set_login_banner, function in NMVPNPlugin
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 @@

-libnm-glib API Reference

+libnm-glib API Reference
NMClient @@ -48,6 +48,18 @@ NMDeviceWimax
+NMDeviceBond +
+
+NMDeviceInfiniband +
+
+NMDeviceVlan +
+
+NMDeviceOlpcMesh +
+
NMWimaxNsp
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 @@

-

+

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later @@ -89,6 +89,18 @@ NMDeviceWimax

+NMDeviceBond +
+
+NMDeviceInfiniband +
+
+NMDeviceVlan +
+
+NMDeviceOlpcMesh +
+
NMWimaxNsp
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 @@ + + + @@ -129,16 +132,20 @@ + + + + @@ -150,14 +157,18 @@ + + + + @@ -179,10 +190,18 @@ + + + + + + + + @@ -203,12 +222,22 @@ + + + + + + + + + + @@ -237,8 +266,15 @@ + + + + + + + @@ -253,9 +289,18 @@ + + + + + + + + + @@ -274,13 +319,21 @@ + + + + + + + + @@ -302,6 +355,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452,17 +608,25 @@ + + + + + + + + @@ -547,14 +711,17 @@ + + + @@ -599,7 +766,9 @@ + + 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 NMVPNPluginFailure reason); DBusGConnection * nm_vpn_plugin_get_connection (NMVPNPlugin *plugin); NMVPNServiceState nm_vpn_plugin_get_state (NMVPNPlugin *plugin); +void nm_vpn_plugin_set_config (NMVPNPlugin *plugin, + GHashTable *config); void nm_vpn_plugin_set_ip4_config (NMVPNPlugin *plugin, GHashTable *ip4_config); +void nm_vpn_plugin_set_ip6_config (NMVPNPlugin *plugin, + GHashTable *ip6_config); void nm_vpn_plugin_set_login_banner (NMVPNPlugin *plugin, const char *banner); void nm_vpn_plugin_set_state (NMVPNPlugin *plugin, @@ -80,40 +84,44 @@ enum +

nm_vpn_plugin_set_config ()

+
void                nm_vpn_plugin_set_config            (NMVPNPlugin *plugin,
+                                                         GHashTable *config);
+

+

+
+
+

nm_vpn_plugin_set_ip4_config ()

void                nm_vpn_plugin_set_ip4_config        (NMVPNPlugin *plugin,
                                                          GHashTable *ip4_config);
@@ -200,6 +216,14 @@ enum +

nm_vpn_plugin_set_ip6_config ()

+
void                nm_vpn_plugin_set_ip6_config        (NMVPNPlugin *plugin,
+                                                         GHashTable *ip6_config);
+

+

+
+
+

nm_vpn_plugin_set_login_banner ()

void                nm_vpn_plugin_set_login_banner      (NMVPNPlugin *plugin,
                                                          const char *banner);
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 @@ + + + + @@ -121,12 +125,15 @@ + + + @@ -137,16 +144,20 @@ + + + + @@ -158,13 +169,17 @@ + + + + @@ -178,10 +193,13 @@ + + + @@ -193,12 +211,15 @@ + + + @@ -218,17 +239,23 @@ + + + + + + @@ -238,13 +265,16 @@ + + + @@ -264,6 +294,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -363,12 +447,16 @@ + + + + @@ -421,9 +509,11 @@ + + @@ -452,7 +542,9 @@ + + @@ -477,11 +569,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ NMDeviceModem NMDeviceBt NMDeviceWimax - NMDeviceOlpcMesh - NMDeviceInfiniband - NMDeviceBond - NMDeviceVlan + NMDeviceOlpcMesh + NMDeviceInfiniband + NMDeviceBond + NMDeviceVlan NMWimaxNsp NMAccessPoint NMIP4Config 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 @@ + + + + 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 NM_DEVICE NM_DEVICE_CLASS @@ -183,13 +191,37 @@ NM_TYPE_DEVICE nm_device_get_type +
+nm-device-adsl +NMDeviceAdsl +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 + +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 +
+
nm-device-bond NMDeviceBond 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 NMDeviceBt 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 NMDeviceEthernet 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 NMDeviceInfiniband 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 @@ -269,18 +310,16 @@ NM_TYPE_DEVICE_INFINIBAND nm_device_infiniband_get_type
-
-nm-device-infiniband-bindings -DBUS_GLIB_CLIENT_WRAPPERS_org_freedesktop_NetworkManager_Device_Infiniband -
-
nm-device-modem NMDeviceModem 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 @@ -298,9 +337,12 @@ nm_device_modem_get_type NMDeviceOlpcMesh 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 NMDeviceVlan 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 NMDeviceWifi 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 NMDeviceWimax 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 @@ -435,71 +486,39 @@ NM_TYPE_DHCP6_CONFIG nm_dhcp6_config_get_type
-
-nm-exported-connection-bindings -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 -
- -
-nm-exported-connection-glue -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 -
-
nm-glib-enum-types 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 NMObject 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 @@ -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 @@ -668,50 +692,6 @@ NM_TYPE_SECRET_AGENT nm_secret_agent_get_type
-
-nm-secret-agent-glue -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 -
- -
-nm-settings-system-bindings -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 -
-
nm-types @@ -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 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 @@ + +NMDeviceAdsl + + + + + + + + + + + + + + + + + + + + + + + + + +@parent: + + + + + + +@parent: +@_reserved1: +@_reserved2: +@_reserved3: +@_reserved4: +@_reserved5: +@_reserved6: + + + + + + +@NM_DEVICE_ADSL_ERROR_UNKNOWN: +@NM_DEVICE_ADSL_ERROR_NOT_ADSL_CONNECTION: +@NM_DEVICE_ADSL_ERROR_INVALID_ADSL_CONNECTION: + + + + + + + + + + + + + + + + + + + + +@void: +@Returns: + + + + + + + +@device: +@Returns: + + + + + + + +@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: + + + + + +@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: + @@ -56,6 +66,13 @@ NMDeviceBond + + + + + + + @@ -63,6 +80,15 @@ NMDeviceBond + + + + + +@void: +@Returns: + + 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: + + + + + +@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: + @@ -61,6 +73,13 @@ NMDeviceBt + + + + + + + @@ -75,6 +94,15 @@ NMDeviceBt + + + + + +@void: +@Returns: + + 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: + + + + + +@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: + @@ -66,6 +77,13 @@ NMDeviceEthernet + + + + + + + @@ -87,6 +105,15 @@ NMDeviceEthernet + + + + + +@void: +@Returns: + + 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 @@ - -nm-device-infiniband-bindings - - - - - - - - - - - - - - - - - - - - - - - - - - - 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: + + + + + +@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: + @@ -56,6 +67,13 @@ NMDeviceInfiniband + + + + + + + @@ -63,6 +81,15 @@ NMDeviceInfiniband + + + + + +@void: +@Returns: + + 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: + + + + + +@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: + @@ -56,6 +66,13 @@ NMDeviceModem + + + + + + + @@ -63,6 +80,15 @@ NMDeviceModem + + + + + +@void: +@Returns: + + 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: + + + + + +@NM_DEVICE_OLPC_MESH_ERROR_UNKNOWN: +@NM_DEVICE_OLPC_MESH_ERROR_NOT_OLPC_MESH_CONNECTION: +@NM_DEVICE_OLPC_MESH_ERROR_INVALID_OLPC_MESH_CONNECTION: + @@ -68,6 +77,13 @@ NMDeviceOlpcMesh + + + + + + + @@ -75,6 +91,15 @@ NMDeviceOlpcMesh + + + + + +@void: +@Returns: + + 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: + + + + + +@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: + @@ -61,6 +72,13 @@ NMDeviceVlan + + + + + + + @@ -75,6 +93,15 @@ NMDeviceVlan + + + + + +@void: +@Returns: + + 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: + + + + + +@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: + @@ -108,6 +121,13 @@ NMDeviceWifi + + + + + + + @@ -129,6 +149,15 @@ NMDeviceWifi + + + + + +@void: +@Returns: + + 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: + + + + + +@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: + @@ -114,6 +125,13 @@ NMDeviceWimax + + + + + + + @@ -135,6 +153,15 @@ NMDeviceWimax + + + + + +@void: +@Returns: + + 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 + + + + + @@ -66,11 +71,21 @@ NMDevice + + + + + + + + + + @@ -153,6 +168,13 @@ NMDevice + + + + + + + @@ -188,6 +210,13 @@ NMDevice + + + + + + + @@ -195,6 +224,13 @@ NMDevice + + + + + + + @@ -265,6 +301,17 @@ NMDevice + + + + + +@device: +@connection: +@error: +@Returns: + + @@ -304,6 +351,15 @@ NMDevice @Returns: + + + + + +@device: +@Returns: + + @@ -349,6 +405,15 @@ NMDevice @Returns: + + + + + +@device: +@Returns: + + @@ -358,6 +423,15 @@ NMDevice @Returns: + + + + + +@device: +@Returns: + + @@ -459,3 +533,12 @@ NMDevice @Returns: + + + + + +@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 @@ - -nm-exported-connection-bindings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@Param1: -@Returns: - - - - - - - -@proxy: -@IN_setting_name: -@IN_hints: -@IN_request_new: -@OUT_secrets: -@Returns: - - - - - - - -@proxy: -@IN_setting_name: -@IN_hints: -@IN_request_new: -@callback: -@Returns: - - - - - - - -@proxy: -@call: -@user_data: - - - - - - - -@proxy: -@OUT_secrets: -@error: -@userdata: - - - - - - - -@proxy: -@Returns: - - - - - - - -@proxy: -@callback: -@Returns: - - - - - - - -@proxy: -@call: -@user_data: - - - - - - - -@proxy: -@error: -@userdata: - - - - - - - -@proxy: -@OUT_settings: -@Returns: - - - - - - - -@proxy: -@callback: -@Returns: - - - - - - - -@proxy: -@call: -@user_data: - - - - - - - -@proxy: -@OUT_settings: -@error: -@userdata: - - - - - - - -@proxy: -@IN_properties: -@Returns: - - - - - - - -@proxy: -@IN_properties: -@callback: -@Returns: - - - - - - - -@proxy: -@call: -@user_data: - - - - - - - -@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 @@ - -nm-exported-connection-glue - - - - - - - - - - - - - - - - - - - - - - - - - -@closure: -@return_value: -@n_param_values: -@param_values: -@invocation_hint: -@marshal_data: - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@closure: -@return_value: -@n_param_values: -@param_values: -@invocation_hint: -@marshal_data: - - - - - - - - - - - - - - -@closure: -@return_value: -@n_param_values: -@param_values: -@invocation_hint: -@marshal_data: - - - - - - - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@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 + + + + + +@nmobject: the object which received the signal. +@arg1: +@arg2: + @@ -42,6 +51,7 @@ NMObject @parent: +@object_creation_failed: @_reserved1: @_reserved2: @_reserved3: @@ -49,6 +59,14 @@ NMObject @_reserved5: @_reserved6: + + + + + +@NM_OBJECT_ERROR_UNKNOWN: +@NM_OBJECT_ERROR_OBJECT_CREATION_FAILURE: + @@ -63,6 +81,22 @@ NMObject + + + + + + + + + + + + +@void: +@Returns: + + 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 @@ - -nm-secret-agent-glue - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@closure: -@return_value: -@n_param_values: -@param_values: -@invocation_hint: -@marshal_data: - - - - - - - -@closure: -@return_value: -@n_param_values: -@param_values: -@invocation_hint: -@marshal_data: - - - - - - - -@closure: -@return_value: -@n_param_values: -@param_values: -@invocation_hint: -@marshal_data: - - - - - - - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@v: - - - - - - - -@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: @@ -143,6 +144,13 @@ NMSecretAgent + + + + + + + @@ -170,6 +178,15 @@ NMSecretAgent @Returns: + + + + + +@self: +@Returns: + + 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 @@ - -nm-settings-system-bindings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@Param1: -@Returns: - - - - - - - -@proxy: -@OUT_permissions: -@Returns: - - - - - - - -@proxy: -@callback: -@Returns: - - - - - - - -@proxy: -@call: -@user_data: - - - - - - - -@proxy: -@OUT_permissions: -@error: -@userdata: - - - - - - - -@proxy: -@IN_hostname: -@Returns: - - - - - - - -@proxy: -@IN_hostname: -@callback: -@Returns: - - - - - - - -@proxy: -@call: -@user_data: - - - - - - - -@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: @@ -123,6 +123,15 @@ NMVPNPlugin @Returns: + + + + + +@plugin: +@config: + + @@ -132,6 +141,15 @@ NMVPNPlugin @ip4_config: + + + + + +@plugin: +@ip6_config: + + 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 char * NMSetting * nm_connection_get_setting (NMConnection *connection, GType setting_type); NMSetting8021x * nm_connection_get_setting_802_1x (NMConnection *connection); +NMSettingAdsl * nm_connection_get_setting_adsl (NMConnection *connection); NMSettingBluetooth * nm_connection_get_setting_bluetooth (NMConnection *connection); -NMSettingBond * nm_connection_get_setting_bond (NMConnection *connection); +NMSettingBond * nm_connection_get_setting_bond (NMConnection *connection); NMSetting * nm_connection_get_setting_by_name (NMConnection *connection, const char *name); NMSettingCdma * nm_connection_get_setting_cdma (NMConnection *connection); NMSettingConnection * nm_connection_get_setting_connection (NMConnection *connection); NMSettingGsm * nm_connection_get_setting_gsm (NMConnection *connection); -NMSettingInfiniband * nm_connection_get_setting_infiniband +NMSettingInfiniband * nm_connection_get_setting_infiniband (NMConnection *connection); NMSettingIP4Config * nm_connection_get_setting_ip4_config (NMConnection *connection); @@ -97,7 +98,7 @@ const char * NMSettingPPP * nm_connection_get_setting_ppp (NMConnection *connection); NMSettingPPPOE * nm_connection_get_setting_pppoe (NMConnection *connection); NMSettingSerial * nm_connection_get_setting_serial (NMConnection *connection); -NMSettingVlan * nm_connection_get_setting_vlan (NMConnection *connection); +NMSettingVlan * nm_connection_get_setting_vlan (NMConnection *connection); NMSettingVPN * nm_connection_get_setting_vpn (NMConnection *connection); NMSettingWimax * nm_connection_get_setting_wimax (NMConnection *connection); NMSettingWired * nm_connection_get_setting_wired (NMConnection *connection); @@ -629,6 +630,29 @@ A shortcut to return any +

nm_connection_get_setting_adsl ()

+
NMSettingAdsl *     nm_connection_get_setting_adsl      (NMConnection *connection);
+

+A shortcut to return any NMSettingAdsl the connection might contain. +

+
++ + + + + + + + + + +

connection :

the NMConnection +

Returns :

an NMSettingAdsl if the connection contains one, otherwise NULL. [transfer none] +
+
+
+

nm_connection_get_setting_bluetooth ()

NMSettingBluetooth * nm_connection_get_setting_bluetooth
                                                         (NMConnection *connection);
@@ -654,9 +678,9 @@ A shortcut to return any

nm_connection_get_setting_bond ()

-
NMSettingBond *     nm_connection_get_setting_bond      (NMConnection *connection);
+
NMSettingBond *     nm_connection_get_setting_bond      (NMConnection *connection);

-A shortcut to return any NMSettingBond the connection might contain. +A shortcut to return any NMSettingBond the connection might contain.

@@ -668,7 +692,7 @@ A shortcut to return any NMSettingBond the connection - @@ -777,10 +801,10 @@ A shortcut to return any

nm_connection_get_setting_infiniband ()

-
NMSettingInfiniband * nm_connection_get_setting_infiniband
+
NMSettingInfiniband * nm_connection_get_setting_infiniband
                                                         (NMConnection *connection);

-A shortcut to return any NMSettingInfiniband the connection might contain. +A shortcut to return any NMSettingInfiniband the connection might contain.

Returns :

an NMSettingBond if the connection contains one, otherwise NULL. [transfer none] +an NMSettingBond if the connection contains one, otherwise NULL. [transfer none]
@@ -792,7 +816,7 @@ A shortcut to return any NMSettingInfiniband the conne - @@ -941,9 +965,9 @@ A shortcut to return any

nm_connection_get_setting_vlan ()

-
NMSettingVlan *     nm_connection_get_setting_vlan      (NMConnection *connection);
+
NMSettingVlan *     nm_connection_get_setting_vlan      (NMConnection *connection);

-A shortcut to return any NMSettingVlan the connection might contain. +A shortcut to return any NMSettingVlan the connection might contain.

Returns :

an NMSettingInfiniband if the connection contains one, otherwise NULL. [transfer none] +an NMSettingInfiniband if the connection contains one, otherwise NULL. [transfer none]
@@ -955,7 +979,7 @@ A shortcut to return any NMSettingVlan the connection - 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 char * GObject +----NMSetting +----NMSetting8021x + +----NMSettingAdsl +----NMSettingBluetooth - +----NMSettingBond + +----NMSettingBond +----NMSettingCdma +----NMSettingConnection +----NMSettingGsm - +----NMSettingInfiniband + +----NMSettingInfiniband +----NMSettingIP4Config +----NMSettingIP6Config +----NMSettingOlpcMesh +----NMSettingPPP +----NMSettingPPPOE +----NMSettingSerial - +----NMSettingVlan + +----NMSettingVlan +----NMSettingVPN +----NMSettingWimax +----NMSettingWired 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 @@ + + + + +NMSettingBond + + + + + + + + + +

Returns :

an NMSettingVlan if the connection contains one, otherwise NULL. [transfer none] +an NMSettingVlan if the connection contains one, otherwise NULL. [transfer none]
+ + + + + + + + + +
+
+
+ + +
+

NMSettingBond

+

NMSettingBond — Describes connection properties for bonds

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMSetting
+         +----NMSettingBond
+
+
+  GEnum
+   +----NMSettingBondError
+
+
+
+

Properties

+
+  "interface-name"           gchar*                : Read / Write
+  "options"                  GHashTable_gchararray+gchararray_*  : Read / Write
+
+
+
+

Description

+

+The NMSettingBond object is a NMSetting subclass that describes properties +necessary for bond connections. +

+
+
+

Details

+
+

NMSettingBond

+
typedef struct _NMSettingBond NMSettingBond;
+

+

+
+
+
+

NMSettingBondClass

+
typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingBondClass;
+
+

+

+
+
+
+

enum NMSettingBondError

+
typedef enum {
+	NM_SETTING_BOND_ERROR_UNKNOWN = 0,      /*< nick=UnknownError >*/
+	NM_SETTING_BOND_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/
+	NM_SETTING_BOND_ERROR_MISSING_PROPERTY, /*< nick=MissingProperty >*/
+	NM_SETTING_BOND_ERROR_INVALID_OPTION,   /*< nick=InvalidOption >*/
+	NM_SETTING_BOND_ERROR_MISSING_OPTION,   /*< nick=MissingOption >*/
+} NMSettingBondError;
+
+
++ + + + + + + + + + + + + + + + + + + + + + +

NM_SETTING_BOND_ERROR_UNKNOWN

unknown or unclassified error +

NM_SETTING_BOND_ERROR_INVALID_PROPERTY

the property was invalid +

NM_SETTING_BOND_ERROR_MISSING_PROPERTY

the property was missing and is +required +

NM_SETTING_BOND_ERROR_INVALID_OPTION

+

NM_SETTING_BOND_ERROR_MISSING_OPTION

+
+
+
+
+

NM_SETTING_BOND_ERROR

+
#define NM_SETTING_BOND_ERROR nm_setting_bond_error_quark ()
+
+

+

+
+
+
+

NM_SETTING_BOND_INTERFACE_NAME

+
#define NM_SETTING_BOND_INTERFACE_NAME "interface-name"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTIONS

+
#define NM_SETTING_BOND_OPTIONS "options"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTION_ARP_INTERVAL

+
#define NM_SETTING_BOND_OPTION_ARP_INTERVAL  "arp_interval"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTION_ARP_IP_TARGET

+
#define NM_SETTING_BOND_OPTION_ARP_IP_TARGET "arp_ip_target"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTION_DOWNDELAY

+
#define NM_SETTING_BOND_OPTION_DOWNDELAY     "downdelay"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTION_MIIMON

+
#define NM_SETTING_BOND_OPTION_MIIMON        "miimon"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTION_MODE

+
#define NM_SETTING_BOND_OPTION_MODE          "mode"
+
+

+

+
+
+
+

NM_SETTING_BOND_OPTION_UPDELAY

+
#define NM_SETTING_BOND_OPTION_UPDELAY       "updelay"
+
+

+

+
+
+
+

NM_SETTING_BOND_SETTING_NAME

+
#define NM_SETTING_BOND_SETTING_NAME "bond"
+
+

+

+
+
+
+

nm_setting_bond_add_option ()

+
gboolean            nm_setting_bond_add_option          (NMSettingBond *setting,
+                                                         const char *name,
+                                                         const char *value);
+

+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. +

+
++ + + + + + + + + + + + + + + + + + +

setting :

the NMSettingBond +

name :

name for the option

value :

value for the option

Returns :

+TRUE if the option was valid and was added to the internal option +list, FALSE if it was not.
+
+
+
+

nm_setting_bond_error_quark ()

+
GQuark              nm_setting_bond_error_quark         (void);
+

+Registers an error quark for NMSettingBond if necessary. +

+
++ + + + +

Returns :

the error quark used for NMSettingBond errors.
+
+
+
+

nm_setting_bond_get_interface_name ()

+
const char *        nm_setting_bond_get_interface_name  (NMSettingBond *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingBond +

Returns :

the "interface-name" property of the setting
+
+
+
+

nm_setting_bond_get_num_options ()

+
guint32             nm_setting_bond_get_num_options     (NMSettingBond *setting);
+

+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 nm_setting_bond_get_option(). +

+
++ + + + + + + + + + +

setting :

the NMSettingBond +

Returns :

the number of bonding options
+
+
+
+

nm_setting_bond_get_option ()

+
gboolean            nm_setting_bond_get_option          (NMSettingBond *setting,
+                                                         guint32 idx,
+                                                         const char **out_name,
+                                                         const char **out_value);
+

+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 +nm_setting_bond_add_option() and nm_setting_bond_remove_option(), +and should not be used to refer to options except for short periods of time +such as during option iteration. +

+
++ + + + + + + + + + + + + + + + + + + + + + +

setting :

the NMSettingBond +

idx :

index of the desired option, from 0 to +nm_setting_bond_get_num_options() - 1

out_name :

on return, the name of the bonding option; this +value is owned by the setting and should not be modified. [out] +

out_value :

on return, the value of the name of the bonding +option; this value is owned by the setting and should not be modified. [out] +

Returns :

+TRUE on success if the index was valid and an option was found, +FALSE if the index was invalid (ie, greater than the number of options +currently held by the setting)
+
+
+
+

nm_setting_bond_get_option_by_name ()

+
const char *        nm_setting_bond_get_option_by_name  (NMSettingBond *setting,
+                                                         const char *name);
+

+Returns the value associated with the bonding option specified by +name, if it exists. +

+
++ + + + + + + + + + + + + + +

setting :

the NMSettingBond +

name :

the option name for which to retrieve the value

Returns :

the value, or NULL if the key/value pair was never added to the +setting; the value is owned by the setting and must not be modified
+
+
+
+

nm_setting_bond_get_option_default ()

+
const char *        nm_setting_bond_get_option_default  (NMSettingBond *setting,
+                                                         const char *name);
+
++ + + + + + + + + + + + + + +

setting :

the NMSettingBond +

name :

the name of the option

Returns :

the value of the bond option if not overridden by an entry in +the "options" property.
+
+
+
+

nm_setting_bond_get_valid_options ()

+
const char **       nm_setting_bond_get_valid_options   (NMSettingBond *setting);
+

+Returns a list of valid bond options. +

+
++ + + + + + + + + + +

setting :

the NMSettingBond +

Returns :

a NULL-terminated array of strings of valid bond options. [transfer none] +
+
+
+
+

nm_setting_bond_new ()

+
NMSetting *         nm_setting_bond_new                 (void);
+

+Creates a new NMSettingBond object with default values. +

+
++ + + + +

Returns :

the new empty NMSettingBond object. [transfer full] +
+
+
+
+

nm_setting_bond_remove_option ()

+
gboolean            nm_setting_bond_remove_option       (NMSettingBond *setting,
+                                                         const char *name);
+

+Remove the bonding option referenced by name from the internal option +list. +

+
++ + + + + + + + + + + + + + +

setting :

the NMSettingBond +

name :

name of the option to remove

Returns :

+TRUE if the option was found and removed from the internal option +list, FALSE if it was not.
+
+
+
+

Property Details

+
+

The "interface-name" property

+
  "interface-name"           gchar*                : Read / Write
+

+The name of the virtual in-kernel bonding network interface +

+

Default value: NULL

+
+
+
+

The "options" property

+
  "options"                  GHashTable_gchararray+gchararray_*  : Read / Write
+

+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]). +

+
+
+
+ + + \ 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 type :

-the setting name (ie NM_SETTING_BOND_SETTING_NAME) to be matched +the setting name (ie
NM_SETTING_BOND_SETTING_NAME) to be matched against setting's slave type @@ -849,7 +849,7 @@ if the connection is read-only and cannot be modified.
  "slave-type"               gchar*                : Read / Write

Setting name describing the type of slave device (ie -NM_SETTING_BOND_SETTING_NAME) or NULL if this connection is not a slave. +NM_SETTING_BOND_SETTING_NAME) or NULL if this connection is not a slave.

Default value: NULL

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 @@ + + + + +NMSettingInfiniband + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

NMSettingInfiniband

+

NMSettingInfiniband — Describes connection properties for IP-over-InfiniBand networks

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMSetting
+         +----NMSettingInfiniband
+
+
+  GEnum
+   +----NMSettingInfinibandError
+
+
+
+

Properties

+
+  "mac-address"              GArray_guchar_*       : Read / Write
+  "mtu"                      guint                 : Read / Write / Construct
+  "transport-mode"           gchar*                : Read / Write / Construct
+
+
+
+

Description

+

+The NMSettingInfiniband object is a NMSetting subclass that describes properties +necessary for connection to IP-over-InfiniBand networks. +

+
+
+

Details

+
+

NMSettingInfiniband

+
typedef struct _NMSettingInfiniband NMSettingInfiniband;
+

+

+
+
+
+

NMSettingInfinibandClass

+
typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingInfinibandClass;
+
+

+

+
+
+
+

enum NMSettingInfinibandError

+
typedef enum {
+	NM_SETTING_INFINIBAND_ERROR_UNKNOWN = 0,      /*< nick=UnknownError >*/
+	NM_SETTING_INFINIBAND_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/
+	NM_SETTING_INFINIBAND_ERROR_MISSING_PROPERTY  /*< nick=MissingProperty >*/
+} NMSettingInfinibandError;
+
+
++ + + + + + + + + + + + + + +

NM_SETTING_INFINIBAND_ERROR_UNKNOWN

unknown or unclassified error +

NM_SETTING_INFINIBAND_ERROR_INVALID_PROPERTY

the property was invalid +

NM_SETTING_INFINIBAND_ERROR_MISSING_PROPERTY

the property was missing and is +required +
+
+
+
+

NM_SETTING_INFINIBAND_ERROR

+
#define NM_SETTING_INFINIBAND_ERROR nm_setting_infiniband_error_quark ()
+
+

+

+
+
+
+

NM_SETTING_INFINIBAND_MAC_ADDRESS

+
#define NM_SETTING_INFINIBAND_MAC_ADDRESS    "mac-address"
+
+

+

+
+
+
+

NM_SETTING_INFINIBAND_MTU

+
#define NM_SETTING_INFINIBAND_MTU            "mtu"
+
+

+

+
+
+
+

NM_SETTING_INFINIBAND_SETTING_NAME

+
#define NM_SETTING_INFINIBAND_SETTING_NAME "infiniband"
+
+

+

+
+
+
+

NM_SETTING_INFINIBAND_TRANSPORT_MODE

+
#define NM_SETTING_INFINIBAND_TRANSPORT_MODE "transport-mode"
+
+

+

+
+
+
+

nm_setting_infiniband_error_quark ()

+
GQuark              nm_setting_infiniband_error_quark   (void);
+

+Registers an error quark for NMSettingInfiniband if necessary. +

+
++ + + + +

Returns :

the error quark used for NMSettingInfiniband errors.
+
+
+
+

nm_setting_infiniband_get_mac_address ()

+
const GByteArray *  nm_setting_infiniband_get_mac_address
+                                                        (NMSettingInfiniband *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingInfiniband +

Returns :

the "mac-address" property of the setting
+
+
+
+

nm_setting_infiniband_get_mtu ()

+
guint32             nm_setting_infiniband_get_mtu       (NMSettingInfiniband *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingInfiniband +

Returns :

the "mtu" property of the setting
+
+
+
+

nm_setting_infiniband_get_transport_mode ()

+
const char *        nm_setting_infiniband_get_transport_mode
+                                                        (NMSettingInfiniband *setting);
+

+Returns the transport mode for this device. Either 'datagram' or +'connected'. +

+
++ + + + + + + + + + +

setting :

the NMSettingInfiniband +

Returns :

the IPoIB transport mode
+
+
+
+

nm_setting_infiniband_new ()

+
NMSetting *         nm_setting_infiniband_new           (void);
+

+Creates a new NMSettingInfiniband object with default values. +

+
++ + + + +

Returns :

the new empty NMSettingInfiniband object. [transfer full] +
+
+
+
+

Property Details

+
+

The "mac-address" property

+
  "mac-address"              GArray_guchar_*       : Read / Write
+

+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). +

+
+
+
+

The "mtu" property

+
  "mtu"                      guint                 : Read / Write / Construct
+

+If non-zero, only transmit packets of the specified size or smaller, +breaking larger packets up into multiple frames. +

+

Default value: 0

+
+
+
+

The "transport-mode" property

+
  "transport-mode"           gchar*                : Read / Write / Construct
+

+The IP-over-InfiniBand transport mode. Either 'datagram' or +'connected'. +

+

Default value: NULL

+
+
+
+ + + \ 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 @@ - + @@ -14,7 +14,7 @@ - + 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

nm_setting_ppp_get_baud ()

guint32             nm_setting_ppp_get_baud             (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "baud" property of the setting

nm_setting_ppp_get_crtscts ()

gboolean            nm_setting_ppp_get_crtscts          (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "crtscts" property of the setting

nm_setting_ppp_get_lcp_echo_failure ()

guint32             nm_setting_ppp_get_lcp_echo_failure (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "lcp-echo-failure" property of the setting

nm_setting_ppp_get_lcp_echo_interval ()

guint32             nm_setting_ppp_get_lcp_echo_interval
                                                         (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "lcp-echo-interval" property of the setting

nm_setting_ppp_get_mppe_stateful ()

gboolean            nm_setting_ppp_get_mppe_stateful    (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "mppe-stateful" property of the setting

nm_setting_ppp_get_mru ()

guint32             nm_setting_ppp_get_mru              (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "mru" property of the setting

nm_setting_ppp_get_mtu ()

guint32             nm_setting_ppp_get_mtu              (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "mtu" property of the setting

nm_setting_ppp_get_no_vj_comp ()

gboolean            nm_setting_ppp_get_no_vj_comp       (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "no-vj-comp" property of the setting

nm_setting_ppp_get_noauth ()

gboolean            nm_setting_ppp_get_noauth           (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "noauth" property of the setting

nm_setting_ppp_get_nobsdcomp ()

gboolean            nm_setting_ppp_get_nobsdcomp        (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "nobsdcomp" property of the setting

nm_setting_ppp_get_nodeflate ()

gboolean            nm_setting_ppp_get_nodeflate        (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "nodeflate" property of the setting

nm_setting_ppp_get_refuse_chap ()

gboolean            nm_setting_ppp_get_refuse_chap      (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "refuse-chap" property of the setting

nm_setting_ppp_get_refuse_eap ()

gboolean            nm_setting_ppp_get_refuse_eap       (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "refuse-eap" property of the setting

nm_setting_ppp_get_refuse_mschap ()

gboolean            nm_setting_ppp_get_refuse_mschap    (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "refuse-mschap" property of the setting

nm_setting_ppp_get_refuse_mschapv2 ()

gboolean            nm_setting_ppp_get_refuse_mschapv2  (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "refuse-mschapv2" property of the setting

nm_setting_ppp_get_refuse_pap ()

gboolean            nm_setting_ppp_get_refuse_pap       (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "refuse-pap" property of the setting

nm_setting_ppp_get_require_mppe ()

gboolean            nm_setting_ppp_get_require_mppe     (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "require-mppe" property of the setting

nm_setting_ppp_get_require_mppe_128 ()

gboolean            nm_setting_ppp_get_require_mppe_128 (NMSettingPPP *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPP +

Returns :

the "require-mppe-128" property of the setting

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

nm_setting_pppoe_get_password ()

const char *        nm_setting_pppoe_get_password       (NMSettingPPPOE *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPPOE +

Returns :

the "password" property of the setting

@@ -258,7 +270,7 @@ Registers an error quark for Returns :

-the
"password" property of the setting +the "service" property of the setting
@@ -267,8 +279,20 @@ Registers an error quark for

nm_setting_pppoe_get_username ()

const char *        nm_setting_pppoe_get_username       (NMSettingPPPOE *setting);
-

-

+
++ + + + + + + + + + +

setting :

the NMSettingPPPOE +

Returns :

the "username" property of the setting

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 @@ + + + + +NMSettingVlan + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+

NMSettingVlan

+

NMSettingVlan — Describes connection properties for VLAN interfaces

+
+ +
+

Object Hierarchy

+
+  GObject
+   +----NMSetting
+         +----NMSettingVlan
+
+
+  GEnum
+   +----NMSettingVlanError
+
+
+  GEnum
+   +----NMVlanFlags
+
+
+  GEnum
+   +----NMVlanPriorityMap
+
+
+
+

Properties

+
+  "egress-priority-map"      GSList_gchararray_*   : Read / Write
+  "flags"                    guint                 : Read / Write / Construct
+  "id"                       guint                 : Read / Write / Construct
+  "ingress-priority-map"     GSList_gchararray_*   : Read / Write
+  "interface-name"           gchar*                : Read / Write / Construct
+  "parent"                   gchar*                : Read / Write / Construct
+
+
+
+

Description

+

+The NMSettingVlan object is a NMSetting subclass that describes properties +necessary for connection to VLAN interfaces. +

+
+
+

Details

+
+

NMSettingVlan

+
typedef struct _NMSettingVlan NMSettingVlan;
+

+

+
+
+
+

NMSettingVlanClass

+
typedef struct {
+	NMSettingClass parent;
+
+	/* Padding for future expansion */
+	void (*_reserved1) (void);
+	void (*_reserved2) (void);
+	void (*_reserved3) (void);
+	void (*_reserved4) (void);
+} NMSettingVlanClass;
+
+

+

+
+
+
+

enum NMSettingVlanError

+
typedef enum {
+	NM_SETTING_VLAN_ERROR_UNKNOWN = 0,      /*< nick=Unknown >*/
+	NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/
+	NM_SETTING_VLAN_ERROR_MISSING_PROPERTY  /*< nick=MissingProperty >*/
+} NMSettingVlanError;
+
+
++ + + + + + + + + + + + + + +

NM_SETTING_VLAN_ERROR_UNKNOWN

unknown or unclassified error +

NM_SETTING_VLAN_ERROR_INVALID_PROPERTY

the property was invalid +

NM_SETTING_VLAN_ERROR_MISSING_PROPERTY

the property was missing and is +required +
+
+
+
+

enum NMVlanFlags

+
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;
+
+

+NMVlanFlags values control the behavior of the VLAN interface. +

+
++ + + + + + + + + + + + + + +

NM_VLAN_FLAG_REORDER_HEADERS

indicates that this interface should reorder + outgoing packet headers to look more like a non-VLAN ethernet interface +

NM_VLAN_FLAG_GVRP

indicates that this interface should use GVRP to register + itself with it's switch +

NM_VLAN_FLAG_LOOSE_BINDING

indicates that this interface's operating + state is tied to the underlying network interface but other details + (like routing) are not. +
+
+
+
+

enum NMVlanPriorityMap

+
typedef enum {
+	NM_VLAN_INGRESS_MAP,
+	NM_VLAN_EGRESS_MAP
+} NMVlanPriorityMap;
+
+

+A selector for traffic priority maps; these map Linux SKB priorities +to 802.1p priorities used in VLANs. +

+
++ + + + + + + + + + +

NM_VLAN_INGRESS_MAP

map for incoming data +

NM_VLAN_EGRESS_MAP

map for outgoing data +
+
+
+
+

NM_SETTING_VLAN_EGRESS_PRIORITY_MAP

+
#define NM_SETTING_VLAN_EGRESS_PRIORITY_MAP  "egress-priority-map"
+
+

+

+
+
+
+

NM_SETTING_VLAN_ERROR

+
#define NM_SETTING_VLAN_ERROR nm_setting_vlan_error_quark ()
+
+

+

+
+
+
+

NM_SETTING_VLAN_FLAGS

+
#define NM_SETTING_VLAN_FLAGS                "flags"
+
+

+

+
+
+
+

NM_SETTING_VLAN_ID

+
#define NM_SETTING_VLAN_ID                   "id"
+
+

+

+
+
+
+

NM_SETTING_VLAN_INGRESS_PRIORITY_MAP

+
#define NM_SETTING_VLAN_INGRESS_PRIORITY_MAP "ingress-priority-map"
+
+

+

+
+
+
+

NM_SETTING_VLAN_INTERFACE_NAME

+
#define NM_SETTING_VLAN_INTERFACE_NAME       "interface-name"
+
+

+

+
+
+
+

NM_SETTING_VLAN_PARENT

+
#define NM_SETTING_VLAN_PARENT               "parent"
+
+

+

+
+
+
+

NM_SETTING_VLAN_SETTING_NAME

+
#define NM_SETTING_VLAN_SETTING_NAME "vlan"
+
+

+

+
+
+
+

nm_setting_vlan_add_priority ()

+
gboolean            nm_setting_vlan_add_priority        (NMSettingVlan *setting,
+                                                         NMVlanPriorityMap map,
+                                                         guint32 from,
+                                                         guint32 to);
+

+Adds a priority mapping to the "ingress_priority_map" or +"egress_priority_map" properties of the setting. If from is +already in the given priority map, this function will overwrite the +existing entry with the new to. +

+

+If map is NM_VLAN_INGRESS_MAP then from is the incoming 802.1q VLAN +Priority Code Point (PCP) value, and to is the Linux SKB priority value. +

+

+If map is NM_VLAN_EGRESS_MAP then from is the Linux SKB priority value and +to is the outgoing 802.1q VLAN Priority Code Point (PCP) value. +

+
++ + + + + + + + + + + + + + + + + + + + + + +

setting :

the NMSettingVlan +

map :

the type of priority map

from :

the priority to map to to +

to :

the priority to map from to

Returns :

TRUE if the new priority mapping was successfully added to the +list, FALSE if error
+
+
+
+

nm_setting_vlan_add_priority_str ()

+
gboolean            nm_setting_vlan_add_priority_str    (NMSettingVlan *setting,
+                                                         NMVlanPriorityMap map,
+                                                         const char *str);
+

+Adds a priority map entry into either the "ingress_priority_map" +or the "egress_priority_map" properties. The priority map maps +the Linux SKB priorities to 802.1p priorities. +

+
++ + + + + + + + + + + + + + + + + + +

setting :

the NMSettingVlan +

map :

the type of priority map

str :

the string which contains a priority map, like "3:7"

Returns :

TRUE if the entry was successfully added to the list, or it +overwrote the old value, FALSE if error
+
+
+
+

nm_setting_vlan_clear_priorities ()

+
void                nm_setting_vlan_clear_priorities    (NMSettingVlan *setting,
+                                                         NMVlanPriorityMap map);
+

+Clear all the entires from "ingress_priority_map" or +"egress_priority_map" properties. +

+
++ + + + + + + + + + +

setting :

the NMSettingVlan +

map :

the type of priority map
+
+
+
+

nm_setting_vlan_error_quark ()

+
GQuark              nm_setting_vlan_error_quark         (void);
+

+Registers an error quark for NMSettingVlan if necessary. +

+
++ + + + +

Returns :

the error quark used for NMSettingVlan errors.
+
+
+
+

nm_setting_vlan_get_flags ()

+
guint32             nm_setting_vlan_get_flags           (NMSettingVlan *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingVlan +

Returns :

the "flags" property of the setting
+
+
+
+

nm_setting_vlan_get_id ()

+
guint32             nm_setting_vlan_get_id              (NMSettingVlan *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingVlan +

Returns :

the "id" property of the setting
+
+
+
+

nm_setting_vlan_get_interface_name ()

+
const char *        nm_setting_vlan_get_interface_name  (NMSettingVlan *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingVlan +

Returns :

the "interface_name" property of the setting
+
+
+
+

nm_setting_vlan_get_num_priorities ()

+
gint32              nm_setting_vlan_get_num_priorities  (NMSettingVlan *setting,
+                                                         NMVlanPriorityMap map);
+

+Returns the number of entires in the +"ingress_priority_map" or "egress_priority_map" +properties of this setting. +

+
++ + + + + + + + + + + + + + +

setting :

the NMSettingVlan +

map :

the type of priority map

Returns :

return the number of ingress/egress priority entries, -1 if error
+
+
+
+

nm_setting_vlan_get_parent ()

+
const char *        nm_setting_vlan_get_parent          (NMSettingVlan *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingVlan +

Returns :

the "parent" property of the setting
+
+
+
+

nm_setting_vlan_get_priority ()

+
gboolean            nm_setting_vlan_get_priority        (NMSettingVlan *setting,
+                                                         NMVlanPriorityMap map,
+                                                         guint32 idx,
+                                                         guint32 *out_from,
+                                                         guint32 *out_to);
+

+Retrieve one of the entries of the "ingress_priority_map" +or "egress_priority_map" properties of this setting. +

+
++ + + + + + + + + + + + + + + + + + + + + + + + + + +

setting :

the NMSettingVlan +

map :

the type of priority map

idx :

the zero-based index of the ingress/egress priority map entry

out_from :

on return the value of the priority map's 'from' item. [out] +

out_to :

on return the value of priority map's 'to' item. [out] +

Returns :

+TRUE if a priority map was returned, FALSE if error
+
+
+
+

nm_setting_vlan_new ()

+
NMSetting *         nm_setting_vlan_new                 (void);
+

+Creates a new NMSettingVlan object with default values. +

+
++ + + + +

Returns :

the new empty NMSettingVlan object. [transfer full] +
+
+
+
+

nm_setting_vlan_remove_priority ()

+
void                nm_setting_vlan_remove_priority     (NMSettingVlan *setting,
+                                                         NMVlanPriorityMap map,
+                                                         guint32 idx);
+

+Removes the priority map at index idx from the +"ingress_priority_map" or "egress_priority_map" +properties. +

+
++ + + + + + + + + + + + + + +

setting :

the NMSettingVlan +

map :

the type of priority map

idx :

the zero-based index of the priority map to remove
+
+
+
+

Property Details

+
+

The "egress-priority-map" property

+
  "egress-priority-map"      GSList_gchararray_*   : Read / Write
+

+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'. +

+
+
+
+

The "flags" property

+
  "flags"                    guint                 : Read / Write / Construct
+

+One or more of NMVlanFlags which control the behavior and features of +the VLAN interface. +

+

Default value: 0

+
+
+
+

The "id" property

+
  "id"                       guint                 : Read / Write / Construct
+

+The VLAN identifier the interface created by this connection should be +assigned. +

+

Allowed values: <= 4095

+

Default value: 0

+
+
+
+

The "ingress-priority-map" property

+
  "ingress-priority-map"     GSList_gchararray_*   : Read / Write
+

+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'. +

+
+
+
+

The "interface-name" property

+
  "interface-name"           gchar*                : Read / Write / Construct
+

+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 "id" , ex 'eth2.1'. The parent +interface may be given by the "parent" property or by a +hardware address property, eg "mac-address" or +"mac-address". +

+

Default value: NULL

+
+
+
+

The "parent" property

+
  "parent"                   gchar*                : Read / Write / Construct
+

+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 "mac-address" or +"mac-address". +

+

Default value: NULL

+
+
+
+ + + \ 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 @@ - + @@ -18,7 +18,7 @@ Up Home libnm-util Reference Manual -Next +Next Top 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 NM_SETTING_WIRELESS_CHANNEL #define NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS #define NM_SETTING_WIRELESS_ERROR +#define NM_SETTING_WIRELESS_HIDDEN #define NM_SETTING_WIRELESS_MAC_ADDRESS #define NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST #define NM_SETTING_WIRELESS_MODE @@ -79,6 +80,7 @@ const guint32 nm_setting_wireless_get_channel (NMSettingWireless *setting); const GByteArray * nm_setting_wireless_get_cloned_mac_address (NMSettingWireless *setting); +gboolean nm_setting_wireless_get_hidden (NMSettingWireless *setting); const GByteArray * nm_setting_wireless_get_mac_address (NMSettingWireless *setting); const GSList * nm_setting_wireless_get_mac_address_blacklist (NMSettingWireless *setting); @@ -114,6 +116,7 @@ const bssid" GArray_guchar_* : Read / Write "channel" guint : Read / Write / Construct "cloned-mac-address" GArray_guchar_* : Read / Write + "hidden" gboolean : Read / Write "mac-address" GArray_guchar_* : Read / Write "mac-address-blacklist" GSList_gchararray_* : Read / Write "mode" gchar* : Read / Write @@ -243,6 +246,14 @@ set to a value that requires the +

NM_SETTING_WIRELESS_HIDDEN

+
#define NM_SETTING_WIRELESS_HIDDEN      "hidden"
+
+

+

+
+
+

NM_SETTING_WIRELESS_MAC_ADDRESS

#define NM_SETTING_WIRELESS_MAC_ADDRESS "mac-address"
 
@@ -522,6 +533,25 @@ Registers an error quark for
+

nm_setting_wireless_get_hidden ()

+
gboolean            nm_setting_wireless_get_hidden      (NMSettingWireless *setting);
+
++ + + + + + + + + + +

setting :

the NMSettingWireless +

Returns :

the "hidden" property of the setting
+
+
+

nm_setting_wireless_get_mac_address ()

const GByteArray *  nm_setting_wireless_get_mac_address (NMSettingWireless *setting);
@@ -786,6 +816,19 @@ permanent MAC address. This is known as MAC cloning or spoofing.
+

The "hidden" property

+
  "hidden"                   gboolean              : Read / Write
+

+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. +

+

Default value: FALSE

+
+
+

The "mac-address" property

  "mac-address"              GArray_guchar_*       : Read / Write

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.

GQuark              nm_setting_wireless_security_error_quark
                                                         (void);

+Registers an error quark for NMSettingWired if necessary.

+
++ + + + +

Returns :

the error quark used for NMSettingWired errors.

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 @@
+nm_connection_get_setting_adsl, function in NMConnection +
+
+
nm_connection_get_setting_bluetooth, function in NMConnection
@@ -617,6 +621,46 @@
+NMSettingAdsl, struct in NMSettingAdsl +
+
+
+NMSettingAdsl:encapsulation, object property in NMSettingAdsl +
+
+
+NMSettingAdsl:password, object property in NMSettingAdsl +
+
+
+NMSettingAdsl:password-flags, object property in NMSettingAdsl +
+
+
+NMSettingAdsl:protocol, object property in NMSettingAdsl +
+
+
+NMSettingAdsl:username, object property in NMSettingAdsl +
+
+
+NMSettingAdsl:vci, object property in NMSettingAdsl +
+
+
+NMSettingAdsl:vpi, object property in NMSettingAdsl +
+
+
+NMSettingAdslClass, struct in NMSettingAdsl +
+
+
+NMSettingAdslError, enum in NMSettingAdsl +
+
+
NMSettingBluetooth, struct in NMSettingBluetooth
@@ -637,23 +681,23 @@
-NMSettingBond, struct in NMSettingBond +NMSettingBond, struct in NMSettingBond
-NMSettingBond:interface-name, object property in NMSettingBond +NMSettingBond:interface-name, object property in NMSettingBond
-NMSettingBond:options, object property in NMSettingBond +NMSettingBond:options, object property in NMSettingBond
-NMSettingBondClass, struct in NMSettingBond +NMSettingBondClass, struct in NMSettingBond
-NMSettingBondError, enum in NMSettingBond +NMSettingBondError, enum in NMSettingBond
@@ -825,27 +869,27 @@ NMSettingBondError, enum in NMSettingBond
-NMSettingInfiniband, struct in NMSettingInfiniband +NMSettingInfiniband, struct in NMSettingInfiniband
-NMSettingInfiniband:mac-address, object property in NMSettingInfiniband +NMSettingInfiniband:mac-address, object property in NMSettingInfiniband
-NMSettingInfiniband:mtu, object property in NMSettingInfiniband +NMSettingInfiniband:mtu, object property in NMSettingInfiniband
-NMSettingInfiniband:transport-mode, object property in NMSettingInfiniband +NMSettingInfiniband:transport-mode, object property in NMSettingInfiniband
-NMSettingInfinibandClass, struct in NMSettingInfiniband +NMSettingInfinibandClass, struct in NMSettingInfiniband
-NMSettingInfinibandError, enum in NMSettingInfiniband +NMSettingInfinibandError, enum in NMSettingInfiniband
@@ -1141,39 +1185,39 @@ NMSettingInfinibandError, enum in NMSettingInfiniband
-NMSettingVlan, struct in NMSettingVlan +NMSettingVlan, struct in NMSettingVlan
-NMSettingVlan:egress-priority-map, object property in NMSettingVlan +NMSettingVlan:egress-priority-map, object property in NMSettingVlan
-NMSettingVlan:flags, object property in NMSettingVlan +NMSettingVlan:flags, object property in NMSettingVlan
-NMSettingVlan:id, object property in NMSettingVlan +NMSettingVlan:id, object property in NMSettingVlan
-NMSettingVlan:ingress-priority-map, object property in NMSettingVlan +NMSettingVlan:ingress-priority-map, object property in NMSettingVlan
-NMSettingVlan:interface-name, object property in NMSettingVlan +NMSettingVlan:interface-name, object property in NMSettingVlan
-NMSettingVlan:parent, object property in NMSettingVlan +NMSettingVlan:parent, object property in NMSettingVlan
-NMSettingVlanClass, struct in NMSettingVlan +NMSettingVlanClass, struct in NMSettingVlan
-NMSettingVlanError, enum in NMSettingVlan +NMSettingVlanError, enum in NMSettingVlan
@@ -1301,6 +1345,10 @@ NMSettingVlanError, enum in NMSettingVlan
+NMSettingWireless:hidden, object property in NMSettingWireless +
+
+
NMSettingWireless:mac-address, object property in NMSettingWireless
@@ -1825,6 +1873,98 @@ NMSettingVlanError, enum in NMSettingVlan
+NM_SETTING_ADSL_ENCAPSULATION, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_ENCAPSULATION_LLC, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_ENCAPSULATION_VCMUX, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_ERROR, macro in NMSettingAdsl +
+
+
+nm_setting_adsl_error_quark, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_encapsulation, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_password, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_password_flags, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_protocol, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_username, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_vci, function in NMSettingAdsl +
+
+
+nm_setting_adsl_get_vpi, function in NMSettingAdsl +
+
+
+nm_setting_adsl_new, function in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_PASSWORD, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_PASSWORD_FLAGS, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_PROTOCOL, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_PROTOCOL_IPOATM, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_PROTOCOL_PPPOA, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_PROTOCOL_PPPOE, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_SETTING_NAME, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_USERNAME, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_VCI, macro in NMSettingAdsl +
+
+
+NM_SETTING_ADSL_VPI, macro in NMSettingAdsl +
+
+
NM_SETTING_BLUETOOTH_BDADDR, macro in NMSettingBluetooth
@@ -1865,83 +2005,83 @@ NMSettingVlanError, enum in NMSettingVlan
-nm_setting_bond_add_option, function in NMSettingBond +nm_setting_bond_add_option, function in NMSettingBond
-NM_SETTING_BOND_ERROR, macro in NMSettingBond +NM_SETTING_BOND_ERROR, macro in NMSettingBond
-nm_setting_bond_error_quark, function in NMSettingBond +nm_setting_bond_error_quark, function in NMSettingBond
-nm_setting_bond_get_interface_name, function in NMSettingBond +nm_setting_bond_get_interface_name, function in NMSettingBond
-nm_setting_bond_get_num_options, function in NMSettingBond +nm_setting_bond_get_num_options, function in NMSettingBond
-nm_setting_bond_get_option, function in NMSettingBond +nm_setting_bond_get_option, function in NMSettingBond
-nm_setting_bond_get_option_by_name, function in NMSettingBond +nm_setting_bond_get_option_by_name, function in NMSettingBond
-nm_setting_bond_get_option_default, function in NMSettingBond +nm_setting_bond_get_option_default, function in NMSettingBond
-nm_setting_bond_get_valid_options, function in NMSettingBond +nm_setting_bond_get_valid_options, function in NMSettingBond
-NM_SETTING_BOND_INTERFACE_NAME, macro in NMSettingBond +NM_SETTING_BOND_INTERFACE_NAME, macro in NMSettingBond
-nm_setting_bond_new, function in NMSettingBond +nm_setting_bond_new, function in NMSettingBond
-NM_SETTING_BOND_OPTIONS, macro in NMSettingBond +NM_SETTING_BOND_OPTIONS, macro in NMSettingBond
-NM_SETTING_BOND_OPTION_ARP_INTERVAL, macro in NMSettingBond +NM_SETTING_BOND_OPTION_ARP_INTERVAL, macro in NMSettingBond
-NM_SETTING_BOND_OPTION_ARP_IP_TARGET, macro in NMSettingBond +NM_SETTING_BOND_OPTION_ARP_IP_TARGET, macro in NMSettingBond
-NM_SETTING_BOND_OPTION_DOWNDELAY, macro in NMSettingBond +NM_SETTING_BOND_OPTION_DOWNDELAY, macro in NMSettingBond
-NM_SETTING_BOND_OPTION_MIIMON, macro in NMSettingBond +NM_SETTING_BOND_OPTION_MIIMON, macro in NMSettingBond
-NM_SETTING_BOND_OPTION_MODE, macro in NMSettingBond +NM_SETTING_BOND_OPTION_MODE, macro in NMSettingBond
-NM_SETTING_BOND_OPTION_UPDELAY, macro in NMSettingBond +NM_SETTING_BOND_OPTION_UPDELAY, macro in NMSettingBond
-nm_setting_bond_remove_option, function in NMSettingBond +nm_setting_bond_remove_option, function in NMSettingBond
-NM_SETTING_BOND_SETTING_NAME, macro in NMSettingBond +NM_SETTING_BOND_SETTING_NAME, macro in NMSettingBond
@@ -2277,43 +2417,43 @@ NM_SETTING_BOND_SETTING_NAME, macro in NMSettingBond
-NM_SETTING_INFINIBAND_ERROR, macro in NMSettingInfiniband +NM_SETTING_INFINIBAND_ERROR, macro in NMSettingInfiniband
-nm_setting_infiniband_error_quark, function in NMSettingInfiniband +nm_setting_infiniband_error_quark, function in NMSettingInfiniband
-nm_setting_infiniband_get_mac_address, function in NMSettingInfiniband +nm_setting_infiniband_get_mac_address, function in NMSettingInfiniband
-nm_setting_infiniband_get_mtu, function in NMSettingInfiniband +nm_setting_infiniband_get_mtu, function in NMSettingInfiniband
-nm_setting_infiniband_get_transport_mode, function in NMSettingInfiniband +nm_setting_infiniband_get_transport_mode, function in NMSettingInfiniband
-NM_SETTING_INFINIBAND_MAC_ADDRESS, macro in NMSettingInfiniband +NM_SETTING_INFINIBAND_MAC_ADDRESS, macro in NMSettingInfiniband
-NM_SETTING_INFINIBAND_MTU, macro in NMSettingInfiniband +NM_SETTING_INFINIBAND_MTU, macro in NMSettingInfiniband
-nm_setting_infiniband_new, function in NMSettingInfiniband +nm_setting_infiniband_new, function in NMSettingInfiniband
-NM_SETTING_INFINIBAND_SETTING_NAME, macro in NMSettingInfiniband +NM_SETTING_INFINIBAND_SETTING_NAME, macro in NMSettingInfiniband
-NM_SETTING_INFINIBAND_TRANSPORT_MODE, macro in NMSettingInfiniband +NM_SETTING_INFINIBAND_TRANSPORT_MODE, macro in NMSettingInfiniband
@@ -3053,83 +3193,83 @@ NM_SETTING_SECRET_FLAGS_ALL, macro in nm-setting-private
-nm_setting_vlan_add_priority, function in NMSettingVlan +nm_setting_vlan_add_priority, function in NMSettingVlan
-nm_setting_vlan_add_priority_str, function in NMSettingVlan +nm_setting_vlan_add_priority_str, function in NMSettingVlan
-nm_setting_vlan_clear_priorities, function in NMSettingVlan +nm_setting_vlan_clear_priorities, function in NMSettingVlan
-NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, macro in NMSettingVlan +NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, macro in NMSettingVlan
-NM_SETTING_VLAN_ERROR, macro in NMSettingVlan +NM_SETTING_VLAN_ERROR, macro in NMSettingVlan
-nm_setting_vlan_error_quark, function in NMSettingVlan +nm_setting_vlan_error_quark, function in NMSettingVlan
-NM_SETTING_VLAN_FLAGS, macro in NMSettingVlan +NM_SETTING_VLAN_FLAGS, macro in NMSettingVlan
-nm_setting_vlan_get_flags, function in NMSettingVlan +nm_setting_vlan_get_flags, function in NMSettingVlan
-nm_setting_vlan_get_id, function in NMSettingVlan +nm_setting_vlan_get_id, function in NMSettingVlan
-nm_setting_vlan_get_interface_name, function in NMSettingVlan +nm_setting_vlan_get_interface_name, function in NMSettingVlan
-nm_setting_vlan_get_num_priorities, function in NMSettingVlan +nm_setting_vlan_get_num_priorities, function in NMSettingVlan
-nm_setting_vlan_get_parent, function in NMSettingVlan +nm_setting_vlan_get_parent, function in NMSettingVlan
-nm_setting_vlan_get_priority, function in NMSettingVlan +nm_setting_vlan_get_priority, function in NMSettingVlan
-NM_SETTING_VLAN_ID, macro in NMSettingVlan +NM_SETTING_VLAN_ID, macro in NMSettingVlan
-NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, macro in NMSettingVlan +NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, macro in NMSettingVlan
-NM_SETTING_VLAN_INTERFACE_NAME, macro in NMSettingVlan +NM_SETTING_VLAN_INTERFACE_NAME, macro in NMSettingVlan
-nm_setting_vlan_new, function in NMSettingVlan +nm_setting_vlan_new, function in NMSettingVlan
-NM_SETTING_VLAN_PARENT, macro in NMSettingVlan +NM_SETTING_VLAN_PARENT, macro in NMSettingVlan
-nm_setting_vlan_remove_priority, function in NMSettingVlan +nm_setting_vlan_remove_priority, function in NMSettingVlan
-NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan +NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
@@ -3413,6 +3553,10 @@ NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
+nm_setting_wireless_get_hidden, function in NMSettingWireless +
+
+
nm_setting_wireless_get_mac_address, function in NMSettingWireless
@@ -3453,6 +3597,10 @@ NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan
+NM_SETTING_WIRELESS_HIDDEN, macro in NMSettingWireless +
+
+
NM_SETTING_WIRELESS_MAC_ADDRESS, macro in NMSettingWireless
@@ -3843,11 +3991,11 @@ NM_SETTING_VLAN_SETTING_NAME, macro in NMSettingVlan

V

-NMVlanFlags, enum in NMSettingVlan +NMVlanFlags, enum in NMSettingVlan
-NMVlanPriorityMap, enum in NMSettingVlan +NMVlanPriorityMap, enum in NMSettingVlan
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 @@

-libnm-util API Reference

+libnm-util API Reference
NMConnection — Describes a connection to specific network or provider @@ -59,6 +59,15 @@ serial communications NMSettingWimax — Describes 802.16e Mobile WiMAX connection properties
+NMSettingBond — Describes connection properties for bonds +
+
+NMSettingInfiniband — Describes connection properties for IP-over-InfiniBand networks +
+
+NMSettingVlan — Describes connection properties for VLAN interfaces +
+
NMSettingOlpcMesh
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 NMSettingWimax — Describes 802.16e Mobile WiMAX connection properties
+NMSettingBond — Describes connection properties for bonds +
+
+NMSettingInfiniband — Describes connection properties for IP-over-InfiniBand networks +
+
+NMSettingVlan — Describes connection properties for VLAN interfaces +
+
NMSettingOlpcMesh
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 @@ + @@ -268,6 +269,7 @@ + @@ -287,6 +289,7 @@ + @@ -303,6 +306,7 @@ + @@ -593,6 +597,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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

nm_utils_ip6_dns_from_gvalue ()

GSList *            nm_utils_ip6_dns_from_gvalue        (const GValue *value);

+Converts a GValue containing a GPtrArray of IP6 DNS, represented as +GByteArrays into a GSList of in6_addrs.

+
++ + + + + + + + + + +

value :

a GValue +

Returns :

a GSList of IP6 +addresses. [transfer full][element-type Posix.in6_addr] +

@@ -672,7 +690,26 @@ which should be unset by the caller (when no longer needed) with
void                nm_utils_ip6_dns_to_gvalue          (GSList *list,
                                                          GValue *value);

+Utility function to convert a GSList 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.

+
++ + + + + + + + + + +

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 +g_value_unset().

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 @@ + + + @@ -47,6 +50,7 @@ + @@ -215,6 +219,7 @@ + @@ -234,6 +239,7 @@ + @@ -249,6 +255,7 @@ + @@ -438,6 +445,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -996,6 +1075,22 @@ + + + + + + + + + + + + + + + + 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 @@ NMConnection NMSetting NMSetting8021x + NMSettingAdsl NMSettingBluetooth - NMSettingBond + NMSettingBond NMSettingCdma NMSettingConnection NMSettingGsm - NMSettingInfiniband + NMSettingInfiniband NMSettingIP4Config NMSettingIP6Config NMSettingOlpcMesh NMSettingPPP NMSettingPPPOE NMSettingSerial - NMSettingVlan + NMSettingVlan NMSettingVPN NMSettingWimax NMSettingWired @@ -50,8 +51,9 @@ NMSetting8021xCKFormat NMSetting8021xCKScheme NMSetting8021xError + NMSettingAdslError NMSettingBluetoothError - NMSettingBondError + NMSettingBondError NMSettingCdmaError NMSettingCompareFlags NMSettingConnectionError @@ -61,7 +63,7 @@ NMSettingGsmNetworkBand NMSettingGsmNetworkType NMSettingHashFlags - NMSettingInfinibandError + NMSettingInfinibandError NMSettingIP4ConfigError NMSettingIP6ConfigError NMSettingIP6ConfigPrivacy @@ -70,15 +72,15 @@ NMSettingPPPOEError NMSettingSecretFlags NMSettingSerialError - NMSettingVlanError + NMSettingVlanError NMSettingVpnError NMSettingWimaxError NMSettingWiredError NMSettingWirelessError NMSettingWirelessSecurityError NMUtilsSecurityType - NMVlanFlags - NMVlanPriorityMap + NMVlanFlags + NMVlanPriorityMap NMWepKeyType GBoxed NMIP4Address 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 @@ + + + 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 @@ -226,6 +227,45 @@ NM_TYPE_SETTING_802_1X nm_setting_802_1x_get_type +
+nm-setting-adsl +NMSettingAdsl +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 + +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 +
+
nm-setting-bluetooth 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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -NMSettingAdsl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@parent: -@_reserved1: -@_reserved2: -@_reserved3: -@_reserved4: - - - - - - -@NM_SETTING_ADSL_ERROR_UNKNOWN: -@NM_SETTING_ADSL_ERROR_INVALID_PROPERTY: -@NM_SETTING_ADSL_ERROR_MISSING_PROPERTY: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@connection: -@Returns: - - - - - - -@void: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@setting: -@Returns: - - - - - - -@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: + + + + + +@connection: +@Returns: + + 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 + + + + + @@ -148,6 +153,13 @@ NMSettingWireless + + + + + + + @@ -301,6 +313,15 @@ NMSettingWireless @Returns: + + + + + +@setting: +@Returns: + + 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. + 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 @@ + + + + + + + + + A dictionary mapping property names to variant boxed values + + + + + + + Indicates whether the physical carrier is found. + + + + + 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 @@ + + + + + + Options of scan + + + + Request the device to scan + + + 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. + + + The version of the driver handling the device. + + + + + The firmware version for the device. + + Flags describing the capabilities of the device. @@ -91,6 +101,14 @@ Whether or not this device is managed by NetworkManager. + + + 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. + + If TRUE, indicates the device is likely missing firmware necessary for @@ -526,6 +544,11 @@ A dependency of the connection failed. + + + Problem with the RFC 2684 Ethernet over ADSL bridge. + + 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. + + + 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. + + 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 @@ + + + Set generic connection details on the connection. + + + + + Generic configuration details for the connection. + + + + Set IPv4 details on the connection. @@ -62,7 +74,21 @@ - Ip4Config details for the conneciton. + Ip4Config details for the connection. You must call + SetConfig() before calling this. + + + + + + + Set IPv6 details on the connection. + + + + + Ip6Config details for the connection. You must call + SetConfig() before calling this. @@ -96,6 +122,17 @@ + + + The plugin obtained generic configuration information. + + + + The configuration information. + + + + The plugin obtained an IPv4 configuration. @@ -107,6 +144,17 @@ + + + The plugin obtained an IPv6 configuration. + + + + The IPv6 configuration. + + + + 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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include #include +#include #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 #NMActiveConnections. + * containing all the active #NMActiveConnections. * 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 + * 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 + +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 + */ + +#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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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 #include +#include "nm-glib-compat.h" + #include #include @@ -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; @@ -482,6 +499,32 @@ nm_device_class_init (NMDeviceClass *device_class) NULL, 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: * @@ -508,6 +551,19 @@ nm_device_class_init (NMDeviceClass *device_class) FALSE, 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: * @@ -892,6 +948,42 @@ nm_device_get_driver (NMDevice *device) return NM_DEVICE_GET_PRIVATE (device)->driver; } +/** + * 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 @@ -926,6 +1018,49 @@ nm_device_get_managed (NMDevice *device) return NM_DEVICE_GET_PRIVATE (device)->managed; } +/** + * 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" @@ -30,6 +31,25 @@ #include "nm-device-wimax.h" #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) { @@ -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 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 @@ -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 #include #include -#include #include +#include "nm-glib-compat.h" + +#include + #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 #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: @@ -318,23 +332,125 @@ nm_vpn_plugin_connect (NMVPNPlugin *plugin, return ret; } +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,25 +526,45 @@ 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); return TRUE; } +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 #include +#include "nm-glib-compat.h" + #include #include #include @@ -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, @@ -1624,6 +1630,23 @@ nm_connection_get_setting_wired (NMConnection *connection) return (NMSettingWired *) nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRED); } +/** + * 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 #include #include +#include #include #include #include @@ -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 + * Hicham HAOUARI + * Pantelis Koukousoulas + * + * 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 + +/** + * 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 + * Hicham HAOUARI + * Pantelis Koukousoulas + * + * 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 + +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 }; @@ -481,6 +483,20 @@ nm_setting_wireless_get_security (NMSettingWireless *setting) return NM_SETTING_WIRELESS_GET_PRIVATE (setting)->security; } +/** + * 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 @@ -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 ' '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 | 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 | uuid [iface ] [ap ] [\-\-nowait] [\-\-timeout ] +.B up id | uuid [iface ] [ap ] [nsp ] [\-\-nowait] [\-\-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 | uuid .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 | uuid .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 ] .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 [\-\-nowait] [\-\-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 ] [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 ] [wep\-key\-type key|phrase] [iface ] [bssid ] [name ] [\-\-private] [\-\-nowait] [\-\-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 \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 ' '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 | 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 | uuid [iface ] [ap ] [\-\-nowait] [\-\-timeout ] +.B up id | uuid [iface ] [ap ] [nsp ] [\-\-nowait] [\-\-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 | uuid .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 | uuid .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 ] .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 [\-\-nowait] [\-\-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 ] [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 ] [wep\-key\-type key|phrase] [iface ] [bssid ] [name ] [\-\-private] [\-\-nowait] [\-\-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 \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 , 2007. # Hauke Mehrtens , 2008. # Daniel Schury , 2010. -# Christian Kirbach , 2009, 2010, 2011. +# Christian Kirbach , 2009, 2010, 2011, 2012. +# Daniel Winzen , 2012. +# Mario Blättermann , 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 \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 \n" "Language-Team: Deutsch \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 | uuid ]\n" -" status\n" -" up id | uuid [iface ] [ap ] [nsp ] [--" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--" "nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " "]\n" " down id | uuid \n" +" delete id | uuid \n" msgstr "" "Aufruf: nmcli con { BEFEHL | help }\n" -" BEFEHL := { list | status | up | down }\n" +" BEFEHL := { list | status | up | down | delete }\n" "\n" " list [id | uuid ]\n" -" status\n" -" up id | uuid [iface ] [ap ] " -"[nsp ] [--nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp " +"] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--" "nowait] [--timeout ]\n" " down id | uuid \n" +" delete id | uuid \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,502 +858,541 @@ 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" "\n" " COMMAND := { status | list | disconnect | wifi | wimax }\n" -"\n" -" COMMAND := { status | list | disconnect | wifi }\n" -"\n" -" status\n" -" list [iface ]\n" -" disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" -" wimax [list [iface ] [nsp ]]\n" -"\n" -msgstr "" -"Aufruf: nmcli dev { BEFEHL | help }\n" -"\n" -" BEFEHL := { status | list | disconnect | wifi | wimax }\n" -"\n" -" BEFEHL := { status | list | disconnect | wifi }\n" -"\n" -" status\n" -" list [iface ]\n" -" disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" -" wimax [list [iface ] [nsp ]]\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" +"\n" +" COMMAND := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] " +"[iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\n" +"\n" +msgstr "" +"Aufruf: nmcli dev { BEFEHL | help }\n" +"\n" +" BEFEHL := { status | list | disconnect | wifi | wimax }\n" +"\n" +" BEFEHL := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] " +"[iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\n" +"\n" -#: ../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 , 2010, 2011. +# Kristjan SCHMIDT , 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 \n" -"Language-Team: Esperanto \n" +"Language-Team: Esperanto \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 | uuid ]\n" -" status\n" -" up id | uuid [iface ] [ap ] [nsp ] [--" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--" "nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " "]\n" " down id | uuid \n" +" delete id | uuid \n" msgstr "" "Uzo: nmcli con { KOMANDO | help }\n" " KOMANDO := { list | status | up | down }\n" @@ -123,570 +226,609 @@ msgstr "" "]\n" " down id | uuid \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" - -#. 0 -#: ../cli/src/devices.c:185 ../cli/src/devices.c:194 -msgid "DNS" -msgstr "DNS" +msgstr "BSID" #. 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,273 +839,479 @@ msgid "" " status\n" " list [iface ]\n" " disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [bssid ]]\n" +" wimax [list [iface ] [nsp ]]\n" +"\n" +msgstr "" +"Uzo: nmcli dev { KOMANDO | help }\n" +"\n" +" KOMANDO := { status | list | disconnect | wifi | wimax }\n" +"\n" +" KOMANDO := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" " wifi [list [iface ] [hwaddr ]]\n" " wimax [list [iface ] [nsp ]]\n" "\n" + +#: ../cli/src/devices.c:243 +msgid "unmanaged" +msgstr "nemastrumate" + +#: ../cli/src/devices.c:245 +msgid "unavailable" +msgstr "neatingeble" + +#: ../cli/src/devices.c:247 ../cli/src/network-manager.c:108 +msgid "disconnected" +msgstr "nekonektite" + +#: ../cli/src/devices.c:249 +msgid "connecting (prepare)" +msgstr "konektas (preparo)" + +#: ../cli/src/devices.c:251 +msgid "connecting (configuring)" +msgstr "konektas (agordado)" + +#: ../cli/src/devices.c:253 +msgid "connecting (need authentication)" +msgstr "konektas (bezonas aŭtentigon)" + +#: ../cli/src/devices.c:255 +msgid "connecting (getting IP configuration)" +msgstr "konektas (akiras IP-agordaron)" + +#: ../cli/src/devices.c:257 +msgid "connecting (checking IP connectivity)" +msgstr "" + +#: ../cli/src/devices.c:259 +msgid "connecting (starting secondary connections)" +msgstr "" + +#: ../cli/src/devices.c:261 ../cli/src/network-manager.c:104 +msgid "connected" +msgstr "konektite" + +#: ../cli/src/devices.c:265 +msgid "connection failed" +msgstr "konekto fiaskis" + +#: ../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 "" -"Uzo: nmcli dev { KOMANDO | help }\n" -"\n" -" KOMANDO := { status | list | disconnect | wifi | wimax }\n" -"\n" -" KOMANDO := { status | list | disconnect | wifi }\n" -"\n" -" status\n" -" list [iface ]\n" -" disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" -" wimax [list [iface ] [nsp ]]\n" -"\n" -#: ../cli/src/devices.c:284 -msgid "unmanaged" -msgstr "nemastrumate" +#: ../cli/src/devices.c:381 +msgid "Necessary firmware for the device may be missing" +msgstr "" -#: ../cli/src/devices.c:286 -msgid "unavailable" -msgstr "neatingeble" +#: ../cli/src/devices.c:384 +msgid "The device was removed" +msgstr "La aparato estas forigita" -#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115 -msgid "disconnected" -msgstr "nekonektite" +#: ../cli/src/devices.c:387 +msgid "NetworkManager went to sleep" +msgstr "" -#: ../cli/src/devices.c:290 -msgid "connecting (prepare)" -msgstr "konektas (preparo)" +#: ../cli/src/devices.c:390 +msgid "The device's active connection disappeared" +msgstr "" -#: ../cli/src/devices.c:292 -msgid "connecting (configuring)" -msgstr "konektas (agordado)" +#: ../cli/src/devices.c:393 +msgid "Device disconnected by user or client" +msgstr "" -#: ../cli/src/devices.c:294 -msgid "connecting (need authentication)" -msgstr "konektas (bezonas aŭtentigon)" +#: ../cli/src/devices.c:396 +msgid "Carrier/link changed" +msgstr "" -#: ../cli/src/devices.c:296 -msgid "connecting (getting IP configuration)" -msgstr "konektas (akiras IP-agordaron)" +#: ../cli/src/devices.c:399 +msgid "The device's existing connection was assumed" +msgstr "" -#: ../cli/src/devices.c:298 -msgid "connecting (checking IP connectivity)" +#: ../cli/src/devices.c:402 +msgid "The supplicant is now available" msgstr "" -#: ../cli/src/devices.c:300 -msgid "connecting (starting secondary connections)" +#: ../cli/src/devices.c:405 +msgid "The modem could not be found" msgstr "" -#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111 -msgid "connected" -msgstr "konektite" +#: ../cli/src/devices.c:408 +msgid "The Bluetooth connection failed or timed out" +msgstr "" -#: ../cli/src/devices.c:306 -msgid "connection failed" -msgstr "konekto fiaskis" +#: ../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:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501 -#: ../cli/src/devices.c:545 +#: ../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:530 +#: ../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: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 , 2007, 2008. # Miguel Anxo Bouzada , 2010. # Fran Diéguez , 2011. +# Fran Dieguez , 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 \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 \n" "Language-Team: Galician \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 | uuid | system | user]\n" +#| " list [id | uuid ]\n" #| " status\n" +#| " up id | uuid [iface ] [ap ] [nsp ] [--" +#| "nowait] [--timeout ]\n" #| " up id | uuid [iface ] [ap ] [--nowait] [--" #| "timeout ]\n" #| " down id | uuid \n" msgid "" "Usage: nmcli con { COMMAND | help }\n" -" COMMAND := { list | status | up | down }\n" +" COMMAND := { list | status | up | down | delete }\n" "\n" " list [id | uuid ]\n" -" status\n" -" up id | uuid [iface ] [ap ] [nsp ] [--" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--" "nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " "]\n" " down id | uuid \n" +" delete id | uuid \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 | uuid ]\n" -" status\n" -" up id | uuid [iface ] [ap ] [nsp ] [--" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--" "nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " "]\n" " down id | uuid \n" +" delete id | uuid \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 ]\n" #| " disconnect iface [--nowait] [--timeout ]\n" #| " wifi [list [iface ] [hwaddr ]]\n" +#| " wimax [list [iface ] [nsp ]]\n" #| "\n" msgid "" "Usage: nmcli dev { COMMAND | help }\n" @@ -719,278 +875,504 @@ msgid "" " status\n" " list [iface ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" " wimax [list [iface ] [nsp ]]\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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" " wimax [list [iface ] [nsp ]]\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] |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 , 2010, 2011. +# Andika Triwidada , 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 \n" "Language-Team: GNOME Indonesian Translation Team \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 | uuid | system | user]\n" -#| " status\n" -#| " up id | uuid [iface ] [ap ] [--nowait] [--" -#| "timeout ]\n" -#| " down id | uuid \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 | uuid ]\n" -" status\n" -" up id | uuid [iface ] [ap ] [nsp ] [--nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" " down id | uuid \n" +" delete id | uuid \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 | uuid \n" -" status\n" -" up id | uuid [iface ] [ap ] [nsp ][--nowait] [--timeout ]\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" +" list [id | uuid ]\n" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" " down id | uuid \n" +" delete id | uuid \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 -msgid "TX-POW" -msgstr "TX-POW" - -#. 4 -#: ../cli/src/devices.c:153 -#| msgid "BSSID" -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" +#: ../cli/src/devices.c:162 +msgid "TX-POW" +msgstr "TX-POW" -#. 0 -#: ../cli/src/devices.c:185 -#: ../cli/src/devices.c:194 -msgid "DNS" -msgstr "DNS" +#. 4 +#: ../cli/src/devices.c:163 +msgid "BSID" +msgstr "BSID" #. 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 ]\n" -#| " disconnect iface [--nowait] [--timeout ]\n" -#| " wifi [list [iface ] [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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] [iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" " wimax [list [iface ] [nsp ]]\n" "\n" msgstr "" @@ -825,276 +972,542 @@ msgstr "" " status\n" " list [iface ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" -" wimax [list [iface ] [nsp ]]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] [iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\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] |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: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:530 +#: ../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 , 2005-2006, 2008, 2010. # Aurimas Černius , 2010. # Rimas Kudelis , 2010. +# Algimantas Margevičius , 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 \n" -"Language-Team: Lithuanian \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 \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 | uuid | system | user]\n" -" status\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +" list [id | uuid ]\n" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--" +"nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " "]\n" " down id | uuid \n" +" delete id | uuid \n" msgstr "" "Naudojimas: nmcli con { KOMANDA | help }\n" -" KOMANDA := { list | status | up | down }\n" +" KOMANDA := { list | status | up | down | delete }\n" "\n" -" list [id | uuid | system | user]\n" -" status\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +" list [id | uuid ]\n" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--" +"nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " "]\n" " down id | uuid \n" +" delete id | uuid \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:466 ../cli/src/connections.c:517 -msgid "User connections" -msgstr "Naudotojo ryšiai" +#: ../cli/src/connections.c:542 +msgid "Connection list" +msgstr "Ryšių sąrašas" -#: ../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 -#, c-format -msgid "Error: Could not get user settings." -msgstr "Klaida: nepavyko gauti naudotojo nustatymų." - -#: ../cli/src/connections.c:1630 +#: ../cli/src/connections.c:1877 #, 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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" +" wimax [list [iface ] [nsp ]]\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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" +" wimax [list [iface ] [nsp ]]\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 -msgid "Unknown" -msgstr "Nežinoma" +#: ../cli/src/devices.c:276 +msgid "No reason given" +msgstr "Nenurodyta priežastis" -#: ../cli/src/devices.c:299 -msgid "(none)" -msgstr "(jokios)" +#: ../cli/src/devices.c:279 +msgid "Unknown error" +msgstr "Nežinoma klaida" -#: ../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:282 +msgid "Device is now managed" +msgstr "Įrenginys dabar yra valdomas" -#: ../cli/src/devices.c:393 -#, c-format -msgid "%u MHz" -msgstr "%u MHz" +#: ../cli/src/devices.c:285 +msgid "Device is now unmanaged" +msgstr "Įrenginys dabar yra nevaldomas" -#: ../cli/src/devices.c:394 -#, c-format -msgid "%u MB/s" -msgstr "%u MB/s" +#: ../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:403 -msgid "Encrypted: " -msgstr "Šifruota: " +#: ../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:500 +msgid "(none)" +msgstr "(jokios)" + +#: ../cli/src/devices.c:556 +#, c-format +msgid "%u MHz" +msgstr "%u MHz" + +#: ../cli/src/devices.c:557 +#, c-format +msgid "%u MB/s" +msgstr "%u MB/s" + +#: ../cli/src/devices.c:566 +msgid "Encrypted: " +msgstr "Šifruota: " + +#: ../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] |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] |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:317 +msgid "Failed to decode PKCS#8 private key." +msgstr "Nepavyko iššifruoti PKCS#8 asmeninio rakto." -#: ../libnm-util/crypto.c:294 +#: ../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.c:630 +#, c-format +msgid "Failed to decode certificate." +msgstr "Nepavyko iškoduoti liudijimo." -#: ../libnm-util/crypto_gnutls.c:49 +#: ../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" -#: ../src/nm-netlink-monitor.c:254 +#: ../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" + +#: ../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 \n" "Language-Team: Polish \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 | uuid \n" " delete id | uuid \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,711 +854,533 @@ 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 -msgid "REASON" -msgstr "PRZYCZYNA" - -#. 8 -#: ../cli/src/devices.c:109 -msgid "UDI" -msgstr "UDI" - -#. 9 -#: ../cli/src/devices.c:110 -msgid "IP-IFACE" -msgstr "INTERFEJS-IP" - -#. 10 -#: ../cli/src/devices.c:111 -msgid "NM-MANAGED" -msgstr "ZARZĄDZANE-PRZEZ-NM" - -#. 11 -#: ../cli/src/devices.c:112 -msgid "FIRMWARE-MISSING" -msgstr "BRAK-OPROGRAMOWANIA-SPRZĘTOWEGO" - -#. 12 -#: ../cli/src/devices.c:113 -msgid "CONNECTION" -msgstr "POŁĄCZENIE" - -#. 0 -#: ../cli/src/devices.c:122 -msgid "CARRIER-DETECT" -msgstr "WYKRYWANIE-OPERATORA" - -#. 1 -#: ../cli/src/devices.c:123 -msgid "SPEED" -msgstr "PRĘDKOŚĆ" - -#. 0 -#: ../cli/src/devices.c:132 -msgid "CARRIER" -msgstr "OPERATOR" - -#. 0 -#: ../cli/src/devices.c:142 -msgid "WEP" -msgstr "WEP" - -#. 1 -#: ../cli/src/devices.c:143 -msgid "WPA" -msgstr "WPA" - -#. 2 -#: ../cli/src/devices.c:144 -msgid "WPA2" -msgstr "WPA2" - -#. 3 -#: ../cli/src/devices.c:145 -msgid "TKIP" -msgstr "TKIP" - -#. 4 -#: ../cli/src/devices.c:146 -msgid "CCMP" -msgstr "CCMP" - -#. 0 -#: ../cli/src/devices.c:156 -msgid "CTR-FREQ" -msgstr "CZĘSTOTLIWOŚĆ-CTR" - -#. 1 -#: ../cli/src/devices.c:157 -msgid "RSSI" -msgstr "RSSI" - -#. 2 -#: ../cli/src/devices.c:158 -msgid "CINR" -msgstr "CINR" - -#. 3 -#: ../cli/src/devices.c:159 -msgid "TX-POW" -msgstr "TX-POW" - -#. 4 -#: ../cli/src/devices.c:160 -msgid "BSID" -msgstr "BSID" - -#. 0 -#: ../cli/src/devices.c:170 -msgid "SSID" -msgstr "SSID" - -#. 1 -#: ../cli/src/devices.c:171 -msgid "BSSID" -msgstr "BSSID" - -#. 2 -#: ../cli/src/devices.c:172 -msgid "MODE" -msgstr "TRYB" - -#. 3 -#: ../cli/src/devices.c:173 -msgid "FREQ" -msgstr "CZĘSTOTLIWOŚĆ" - -#. 4 -#: ../cli/src/devices.c:174 -msgid "RATE" -msgstr "OCENA" - -#. 5 -#. 1 -#: ../cli/src/devices.c:175 ../cli/src/devices.c:193 -msgid "SIGNAL" -msgstr "SYGNAŁ" - -#. 6 -#: ../cli/src/devices.c:176 -msgid "SECURITY" -msgstr "ZABEZPIECZENIA" - -#. 7 -#: ../cli/src/devices.c:177 -msgid "WPA-FLAGS" -msgstr "FLAGI-WPA" - -#. 8 -#: ../cli/src/devices.c:178 -msgid "RSN-FLAGS" -msgstr "FLAGI-RSN" - -#. 10 -#. 4 -#: ../cli/src/devices.c:180 ../cli/src/devices.c:196 -msgid "ACTIVE" -msgstr "AKTYWNOŚĆ" - -#: ../cli/src/devices.c:213 -#, 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 ]\n" -" disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [bssid ]]\n" -" wimax [list [iface ] [nsp ]]\n" -"\n" -msgstr "" -"Użycie: nmcli dev { POLECENIE | help }\n" -"\n" -" POLECENIE := { status | list | disconnect | wifi | wimax }\n" -"\n" -" POLECENIE := { status | list | disconnect | wifi }\n" -"\n" -" status\n" -" list [iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [bssid ]]\n" -" wimax [list [iface ] [nsp ]]\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" +#. 7 +#: ../cli/src/devices.c:111 +msgid "REASON" +msgstr "PRZYCZYNA" -#: ../cli/src/devices.c:340 -msgid "AutoIP service failed" -msgstr "Usługa AutoIP się nie powiodła" +#. 8 +#: ../cli/src/devices.c:112 +msgid "UDI" +msgstr "UDI" -#: ../cli/src/devices.c:343 -msgid "The line is busy" -msgstr "Linia jest zajęta" +#. 9 +#: ../cli/src/devices.c:113 +msgid "IP-IFACE" +msgstr "INTERFEJS-IP" -#: ../cli/src/devices.c:346 -msgid "No dial tone" -msgstr "Brak sygnału telefonicznego" +#. 10 +#: ../cli/src/devices.c:114 +msgid "NM-MANAGED" +msgstr "ZARZĄDZANE-PRZEZ-NM" -#: ../cli/src/devices.c:349 -msgid "No carrier could be established" -msgstr "Nie można ustanowić operatora" +#. 11 +#: ../cli/src/devices.c:115 +msgid "FIRMWARE-MISSING" +msgstr "BRAK-OPROGRAMOWANIA-SPRZĘTOWEGO" -#: ../cli/src/devices.c:352 -msgid "The dialing request timed out" -msgstr "Żądanie zadzwonienia przekroczyło czas oczekiwania" +#. 12 +#: ../cli/src/devices.c:116 +msgid "CONNECTION" +msgstr "POŁĄCZENIE" -#: ../cli/src/devices.c:355 -msgid "The dialing attempt failed" -msgstr "Próba zadzwonienia się nie powiodła" +#. 0 +#: ../cli/src/devices.c:125 +msgid "CARRIER-DETECT" +msgstr "WYKRYWANIE-OPERATORA" -#: ../cli/src/devices.c:358 -msgid "Modem initialization failed" -msgstr "Zainicjowanie modemu się nie powiodło" +#. 1 +#: ../cli/src/devices.c:126 +msgid "SPEED" +msgstr "PRĘDKOŚĆ" -#: ../cli/src/devices.c:361 -msgid "Failed to select the specified APN" -msgstr "Wybranie podanego APN się nie powiodło" +#. 0 +#: ../cli/src/devices.c:135 +msgid "CARRIER" +msgstr "OPERATOR" -#: ../cli/src/devices.c:364 -msgid "Not searching for networks" -msgstr "Sieci nie są wyszukiwane" +#. 0 +#: ../cli/src/devices.c:145 +msgid "WEP" +msgstr "WEP" -#: ../cli/src/devices.c:367 -msgid "Network registration denied" -msgstr "Odmówiono rejestracji sieci" +#. 1 +#: ../cli/src/devices.c:146 +msgid "WPA" +msgstr "WPA" -#: ../cli/src/devices.c:370 -msgid "Network registration timed out" -msgstr "Przekroczono czas oczekiwania rejestracji sieci" +#. 2 +#: ../cli/src/devices.c:147 +msgid "WPA2" +msgstr "WPA2" -#: ../cli/src/devices.c:373 -msgid "Failed to register with the requested network" -msgstr "Zarejestrowanie w żądanej sieci się nie powiodło" +#. 3 +#: ../cli/src/devices.c:148 +msgid "TKIP" +msgstr "TKIP" -#: ../cli/src/devices.c:376 -msgid "PIN check failed" -msgstr "Sprawdzenie kodu PIN się nie powiodło" +#. 4 +#: ../cli/src/devices.c:149 +msgid "CCMP" +msgstr "CCMP" -#: ../cli/src/devices.c:379 -msgid "Necessary firmware for the device may be missing" -msgstr "Brak wymaganego oprogramowania sprzętowego dla urządzenia" +#. 0 +#: ../cli/src/devices.c:159 +msgid "CTR-FREQ" +msgstr "CZĘSTOTLIWOŚĆ-CTR" -#: ../cli/src/devices.c:382 -msgid "The device was removed" -msgstr "Urządzenie zostało usunięte" +#. 1 +#: ../cli/src/devices.c:160 +msgid "RSSI" +msgstr "RSSI" -#: ../cli/src/devices.c:385 -msgid "NetworkManager went to sleep" -msgstr "Usługa NetworkManager została uśpiona" +#. 2 +#: ../cli/src/devices.c:161 +msgid "CINR" +msgstr "CINR" -#: ../cli/src/devices.c:388 -msgid "The device's active connection disappeared" -msgstr "Aktywne połączenie urządzenia zniknęło" +#. 3 +#: ../cli/src/devices.c:162 +msgid "TX-POW" +msgstr "TX-POW" -#: ../cli/src/devices.c:391 -msgid "Device disconnected by user or client" -msgstr "Urządzenie zostało rozłączone przez użytkownika lub klienta" +#. 4 +#: ../cli/src/devices.c:163 +msgid "BSID" +msgstr "BSID" -#: ../cli/src/devices.c:394 -msgid "Carrier/link changed" -msgstr "Zmieniono operatora/łącze" +#. 0 +#: ../cli/src/devices.c:173 +msgid "SSID" +msgstr "SSID" -#: ../cli/src/devices.c:397 -msgid "The device's existing connection was assumed" -msgstr "Przyjęto istniejące połączenie urządzenia" +#. 1 +#: ../cli/src/devices.c:174 +msgid "BSSID" +msgstr "BSSID" -#: ../cli/src/devices.c:400 -msgid "The supplicant is now available" -msgstr "Suplikant jest teraz dostępny" +#. 2 +#: ../cli/src/devices.c:175 +msgid "MODE" +msgstr "TRYB" -#: ../cli/src/devices.c:403 -msgid "The modem could not be found" -msgstr "Nie można odnaleźć modemu" +#. 3 +#: ../cli/src/devices.c:176 +msgid "FREQ" +msgstr "CZĘSTOTLIWOŚĆ" -#: ../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" +#. 4 +#: ../cli/src/devices.c:177 +msgid "RATE" +msgstr "OCENA" -#: ../cli/src/devices.c:409 -msgid "GSM Modem's SIM card not inserted" -msgstr "Karta SIM modemu GSM nie została włożona" +#. 5 +#. 1 +#: ../cli/src/devices.c:178 ../cli/src/devices.c:196 +msgid "SIGNAL" +msgstr "SYGNAŁ" -#: ../cli/src/devices.c:412 -msgid "GSM Modem's SIM PIN required" -msgstr "Wymagany jest kod PIN karty SIM modemu GSM" +#. 6 +#: ../cli/src/devices.c:179 +msgid "SECURITY" +msgstr "ZABEZPIECZENIA" -#: ../cli/src/devices.c:415 -msgid "GSM Modem's SIM PUK required" -msgstr "Wymagany jest kod PUK karty SIM modemu GSM" +#. 7 +#: ../cli/src/devices.c:180 +msgid "WPA-FLAGS" +msgstr "FLAGI-WPA" -#: ../cli/src/devices.c:418 -msgid "GSM Modem's SIM wrong" -msgstr "Karta SIM modemu GSM jest błędna" +#. 8 +#: ../cli/src/devices.c:181 +msgid "RSN-FLAGS" +msgstr "FLAGI-RSN" -#: ../cli/src/devices.c:421 -msgid "InfiniBand device does not support connected mode" -msgstr "Urządzenie InfiniBand nie obsługuje trybu połączonego" +#. 10 +#. 4 +#: ../cli/src/devices.c:183 ../cli/src/devices.c:199 +msgid "ACTIVE" +msgstr "AKTYWNOŚĆ" -#: ../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:218 +#, 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 ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] " +"[iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\n" +"\n" +msgstr "" +"Użycie: nmcli dev { POLECENIE | help }\n" +"\n" +" POLECENIE := { status | list | disconnect | wifi | wimax }\n" +"\n" +" POLECENIE := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] " +"[iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\n" -#: ../cli/src/devices.c:491 +#: ../cli/src/devices.c:316 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č \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 \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 | uuid \n" " delete id | uuid \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,723 +981,550 @@ 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 -msgid "HWADDR" -msgstr "HWADDR" - -#. 7 -#: ../cli/src/devices.c:108 -msgid "REASON" -msgstr "RAZLOG" - -#. 8 -#: ../cli/src/devices.c:109 -msgid "UDI" -msgstr "UDI" - -#. 9 -#: ../cli/src/devices.c:110 -msgid "IP-IFACE" -msgstr "IP-VMESNIK" - -#. 10 #: ../cli/src/devices.c:111 -msgid "NM-MANAGED" -msgstr "NM-UPRAVLJANO" - -#. 11 -#: ../cli/src/devices.c:112 -msgid "FIRMWARE-MISSING" -msgstr "MANJKA STROJNA PROGRAMSKA OPREMA" - -#. 12 -#: ../cli/src/devices.c:113 -msgid "CONNECTION" -msgstr "POVEZAVA" - -#. 0 -#: ../cli/src/devices.c:122 -msgid "CARRIER-DETECT" -msgstr "ZAZNAVA-OPERATERJA" - -#. 1 -#: ../cli/src/devices.c:123 -msgid "SPEED" -msgstr "HITROST" - -#. 0 -#: ../cli/src/devices.c:132 -msgid "CARRIER" -msgstr "OPERATER" - -#. 0 -#: ../cli/src/devices.c:142 -msgid "WEP" -msgstr "WEP" - -#. 1 -#: ../cli/src/devices.c:143 -msgid "WPA" -msgstr "WPA" - -#. 2 -#: ../cli/src/devices.c:144 -msgid "WPA2" -msgstr "WPA2" - -#. 3 -#: ../cli/src/devices.c:145 -msgid "TKIP" -msgstr "TKIP" - -#. 4 -#: ../cli/src/devices.c:146 -msgid "CCMP" -msgstr "CCMP" - -#. 0 -#: ../cli/src/devices.c:156 -msgid "CTR-FREQ" -msgstr "CTR-FREQ" - -#. 1 -#: ../cli/src/devices.c:157 -msgid "RSSI" -msgstr "RSSI" - -#. 2 -#: ../cli/src/devices.c:158 -msgid "CINR" -msgstr "CINR" - -#. 3 -#: ../cli/src/devices.c:159 -msgid "TX-POW" -msgstr "TX-POW" - -#. 4 -#: ../cli/src/devices.c:160 -msgid "BSID" -msgstr "BSID" - -#. 0 -#: ../cli/src/devices.c:170 -msgid "SSID" -msgstr "SSID" - -#. 1 -#: ../cli/src/devices.c:171 -msgid "BSSID" -msgstr "BSSID" - -#. 2 -#: ../cli/src/devices.c:172 -msgid "MODE" -msgstr "NAČIN" - -#. 3 -#: ../cli/src/devices.c:173 -msgid "FREQ" -msgstr "FREKVENCA" - -#. 4 -#: ../cli/src/devices.c:174 -msgid "RATE" -msgstr "HITROST" - -#. 5 -#. 1 -#: ../cli/src/devices.c:175 -#: ../cli/src/devices.c:193 -msgid "SIGNAL" -msgstr "SIGNAL" +#| msgid "VERSION" +msgid "DRIVER-VERSION" +msgstr "RAZLIČICA-GONILNIKA" #. 6 -#: ../cli/src/devices.c:176 -msgid "SECURITY" -msgstr "VARNOST" - -#. 7 -#: ../cli/src/devices.c:177 -msgid "WPA-FLAGS" -msgstr "WPA-ZASTAVICE" - -#. 8 -#: ../cli/src/devices.c:178 -msgid "RSN-FLAGS" -msgstr "RSN-ZASTAVICE" - -#. 10 -#. 4 -#: ../cli/src/devices.c:180 -#: ../cli/src/devices.c:196 -msgid "ACTIVE" -msgstr "DEJAVNO" - -#: ../cli/src/devices.c:213 -#, 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 ]\n" -" disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [bssid ]]\n" -" wimax [list [iface ] [nsp ]]\n" -"\n" -msgstr "" -"Uporaba: nmcli dev { UKAZ | help }\n" -"\n" -" UKAZ := { status | list | disconnect | wifi | wimax }\n" -"\n" -" UKAZ := { status | list | disconnect | wifi }\n" -"\n" -" status\n" -" list [iface ]\n" -" disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [bssid ]]\n" -" wimax [list [iface ] [nsp ]]\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:112 +#| msgid "FIRMWARE-MISSING" +msgid "FIRMWARE-VERSION" +msgstr "RAZLIČICA-STROJNEGA-PROGRAMA" -#: ../cli/src/devices.c:334 -msgid "AutoIP service failed to start" -msgstr "Začenjanje storitve AutoIP je spodletelo." +#. 7 +#: ../cli/src/devices.c:113 +msgid "HWADDR" +msgstr "HWADDR" -#: ../cli/src/devices.c:337 -msgid "AutoIP service error" -msgstr "Napaka storitve AutoIP" +#. 9 +#: ../cli/src/devices.c:115 +msgid "REASON" +msgstr "RAZLOG" -#: ../cli/src/devices.c:340 -msgid "AutoIP service failed" -msgstr "Storitev AutoIP je spodletela" +#. 10 +#: ../cli/src/devices.c:116 +msgid "UDI" +msgstr "UDI" -#: ../cli/src/devices.c:343 -msgid "The line is busy" -msgstr "Povezava je zasedena" +#. 11 +#: ../cli/src/devices.c:117 +msgid "IP-IFACE" +msgstr "IP-VMESNIK" -#: ../cli/src/devices.c:346 -msgid "No dial tone" -msgstr "Ni klicnega signala" +#. 12 +#: ../cli/src/devices.c:118 +msgid "NM-MANAGED" +msgstr "NM-UPRAVLJANO" -#: ../cli/src/devices.c:349 -msgid "No carrier could be established" -msgstr "Ni mogoče vzpostaviti signala povezave" +#. 14 +#: ../cli/src/devices.c:120 +msgid "FIRMWARE-MISSING" +msgstr "MANJKA-STROJNA-PROGRAMSKA-OPREMA" -#: ../cli/src/devices.c:352 -msgid "The dialing request timed out" -msgstr "Zahteva klicanja je časovno potekla" +#. 15 +#: ../cli/src/devices.c:121 +msgid "CONNECTION" +msgstr "POVEZAVA" -#: ../cli/src/devices.c:355 -msgid "The dialing attempt failed" -msgstr "Poskus klicanja je spodletel" +#. 0 +#: ../cli/src/devices.c:130 +msgid "CARRIER-DETECT" +msgstr "ZAZNAVA-OPERATERJA" -#: ../cli/src/devices.c:358 -msgid "Modem initialization failed" -msgstr "Začenjanje modema spodletelo" +#. 1 +#: ../cli/src/devices.c:131 +msgid "SPEED" +msgstr "HITROST" -#: ../cli/src/devices.c:361 -msgid "Failed to select the specified APN" -msgstr "Izbor določenega APN je spodletel" +#. 0 +#: ../cli/src/devices.c:140 +msgid "CARRIER" +msgstr "OPERATER" -#: ../cli/src/devices.c:364 -msgid "Not searching for networks" -msgstr "Iskanje omrežij ni dejavno" +#. 0 +#: ../cli/src/devices.c:150 +msgid "WEP" +msgstr "WEP" -#: ../cli/src/devices.c:367 -msgid "Network registration denied" -msgstr "Vpis omrežja je zavrnjen" +#. 1 +#: ../cli/src/devices.c:151 +msgid "WPA" +msgstr "WPA" -#: ../cli/src/devices.c:370 -msgid "Network registration timed out" -msgstr "Čas za vpis omrežja je potekel" +#. 2 +#: ../cli/src/devices.c:152 +msgid "WPA2" +msgstr "WPA2" -#: ../cli/src/devices.c:373 -msgid "Failed to register with the requested network" -msgstr "Vpis v zahtevano omrežje je spodletel" +#. 3 +#: ../cli/src/devices.c:153 +msgid "TKIP" +msgstr "TKIP" -#: ../cli/src/devices.c:376 -msgid "PIN check failed" -msgstr "Preverjanje PIN je spodletelo" +#. 4 +#: ../cli/src/devices.c:154 +msgid "CCMP" +msgstr "CCMP" -#: ../cli/src/devices.c:379 -msgid "Necessary firmware for the device may be missing" -msgstr "Morda napravi manjka zahtevana strojna programska oprema" +#. 0 +#: ../cli/src/devices.c:164 +msgid "CTR-FREQ" +msgstr "CTR-FREQ" -#: ../cli/src/devices.c:382 -msgid "The device was removed" -msgstr "Naprava je bila odstranjena" +#. 1 +#: ../cli/src/devices.c:165 +msgid "RSSI" +msgstr "RSSI" -#: ../cli/src/devices.c:385 -msgid "NetworkManager went to sleep" -msgstr "NetworkManager je prešel v pripravljenost" +#. 2 +#: ../cli/src/devices.c:166 +msgid "CINR" +msgstr "CINR" -#: ../cli/src/devices.c:388 -msgid "The device's active connection disappeared" -msgstr "Dejavna povezava naprave je izginila" +#. 3 +#: ../cli/src/devices.c:167 +msgid "TX-POW" +msgstr "TX-POW" -#: ../cli/src/devices.c:391 -msgid "Device disconnected by user or client" -msgstr "Uporabnik ali odjemalec je odklopil napravo" +#. 4 +#: ../cli/src/devices.c:168 +msgid "BSID" +msgstr "BSID" -#: ../cli/src/devices.c:394 -msgid "Carrier/link changed" -msgstr "Signal/Povezava se je spremenila" +#. 0 +#: ../cli/src/devices.c:178 +msgid "SSID" +msgstr "SSID" -#: ../cli/src/devices.c:397 -msgid "The device's existing connection was assumed" -msgstr "Predviden je bila obstoječa povezava naprave" +#. 1 +#: ../cli/src/devices.c:179 +msgid "BSSID" +msgstr "BSSID" -#: ../cli/src/devices.c:400 -msgid "The supplicant is now available" -msgstr "Prosilnik je zdaj na voljo" +#. 2 +#: ../cli/src/devices.c:180 +msgid "MODE" +msgstr "NAČIN" -#: ../cli/src/devices.c:403 -msgid "The modem could not be found" -msgstr "Modema ni mogoče najti." +#. 3 +#: ../cli/src/devices.c:181 +msgid "FREQ" +msgstr "FREKVENCA" -#: ../cli/src/devices.c:406 -msgid "The Bluetooth connection failed or timed out" -msgstr "Povezava Bluetooth je spodletela ali pa je časovno potekla" +#. 4 +#: ../cli/src/devices.c:182 +msgid "RATE" +msgstr "HITROST" -#: ../cli/src/devices.c:409 -msgid "GSM Modem's SIM card not inserted" -msgstr "Kartica SIM modema GSM ni vstavljena" +#. 5 +#. 1 +#: ../cli/src/devices.c:183 +#: ../cli/src/devices.c:201 +msgid "SIGNAL" +msgstr "SIGNAL" -#: ../cli/src/devices.c:412 -msgid "GSM Modem's SIM PIN required" -msgstr "Zahtevana je koda PIN kartice SIM modema GSM" +#. 6 +#: ../cli/src/devices.c:184 +msgid "SECURITY" +msgstr "VARNOST" -#: ../cli/src/devices.c:415 -msgid "GSM Modem's SIM PUK required" -msgstr "Zahtevana je koda PUK kartice SIM modema GSM" +#. 7 +#: ../cli/src/devices.c:185 +msgid "WPA-FLAGS" +msgstr "WPA-ZASTAVICE" -#: ../cli/src/devices.c:418 -msgid "GSM Modem's SIM wrong" -msgstr "Kartica SIM modema GSM ni ustrezna" +#. 8 +#: ../cli/src/devices.c:186 +msgid "RSN-FLAGS" +msgstr "RSN-ZASTAVICE" -#: ../cli/src/devices.c:421 -msgid "Infiniband device does not support connected mode" -msgstr "Naprava Infiniband ne podpira povezanega načina" +#. 10 +#. 4 +#: ../cli/src/devices.c:188 +#: ../cli/src/devices.c:204 +msgid "ACTIVE" +msgstr "DEJAVNO" -#: ../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:223 +#, 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 ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [bssid ]]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] [iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\n" +"\n" +msgstr "" +"Uporaba: nmcli dev { UKAZ | help }\n" +"\n" +" UKAZ := { status | list | disconnect | wifi | wimax }\n" +"\n" +" UKAZ := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] [iface ] [bssid ] [name ]\n" +" [--private] [--nowait] [--timeout ]\n" +" wimax [list [iface ] [nsp ]]\n" +"\n" -#: ../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 , 2004, 2005, 2006. -# Daniel Nylander , 2006, 2008, 2009, 2010. +# Daniel Nylander , 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 \n" "Language-Team: Swedish \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 | uuid | system | user]\n" -" status\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" +" list [id | uuid ]\n" +" status [id | uuid | path ]\n" +" up id | uuid [iface ] [ap ] [nsp ] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" " down id | uuid \n" +" delete id | uuid \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 | uuid | system | användare]\n" -" status\n" +" list [id | uuid ]\n" +" status [id | uuid | path ]\n" " up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" " down id | uuid \n" +" delete id | uuid \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 -#, c-format -msgid "Error: Could not get user settings." -msgstr "Fel: Kunde inte få användarinställningar." - -#: ../cli/src/connections.c:1630 +#: ../cli/src/connections.c:1877 #, 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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" +" wimax [list [iface ] [nsp ]]\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 ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] [hwaddr ]]\n" +" wifi [list [iface ] [bssid ]]\n" +" wimax [list [iface ] [nsp ]]\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] |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] |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: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:286 +#: ../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.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:49 +#: ../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" + +#: ../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" -#: ../src/nm-netlink-monitor.c:254 +#: ../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/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" -#: ../src/nm-netlink-monitor.c:629 -#: ../src/nm-netlink-monitor.c:642 +#. 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/nm-device-vlan.c:362 +#, c-format +#| msgid "PAN connection %d" +msgid "VLAN connection %d" +msgstr "VLAN-anslutning %d" + +#: ../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/settings/nm-default-wired-connection.c:157 +#: ../src/nm-netlink-monitor.c:330 +#: ../src/nm-netlink-monitor.c:390 #, c-format -msgid "Auto %s" -msgstr "Automatisk %s" +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" -#: ../system-settings/plugins/ifcfg-rh/reader.c:3412 -#: ../system-settings/plugins/ifnet/connection_parser.c:49 +#: ../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 @@ Aktifkan atau matikan perangkat broadband bergerak WiMAX Abilitare o disabilitare dispositivi WiMAX a banda larga mobile 와이맥스 모바일 광대역 장치 사용 여부 + Įjungti arba išjungti WiMAX mobiliojo plačiajuosčio ryšio įrenginius WiMAX മുബൈല്‍ ബ്രോഡ്ബാന്റ് ഡിവൈസുകള്‍ പ്രവര്‍ത്തനസജ്ജമാക്കുകയോ പ്രവര്‍ത്തനരഹിതമാക്കുകയോ ചെയ്യുക WiMAX मोबाईल ब्रॉडबँड साधने सुरू किंवा बंद करा Włączenie lub wyłączenie urządzeń komórkowych WiMAX Habilita ou desabilita dispositivos móveis WiMAX Включить или выключить устройства мобильных сетей WiMax Omogoči ali onemogoči mobilne širokopasovne naprave WiMAX + Aktivera eller inaktivera mobila WiMAX-bredbandsenheter WiMAX mobil genişbant aygıtlarını etkinleştir ya da etkisizleştir Увімкнути або вимкнути пристрої широкосмугових мобільних мереж WiMAX System policy prevents enabling or disabling WiMAX mobile broadband devices @@ -336,12 +338,14 @@ Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak WiMAX La politica di sistema impedisce di abilitare o disabilitare i dispositivi WiMAX a banda larga mobile 시스템 정책이 와이맥스 모바일 광대역 장치의 사용 여부 설정을 금지합니다 + Sistemos politika neleidžia įjungti arba išjungti WiMAX mobiliojo plačiajuosčio ryšio įrenginių iMAX മുബൈല്‍ ബ്രോഡ്ബാന്റ് ഡിവൈസുകള്‍ പ്രവര്‍ത്തനസജ്ജമാക്കുകയോ പ്രവര്‍ത്തനരഹിതമാക്കുകയോ ചെയ്യുന്നത് സിസ്റ്റം പോളിസി തടയുന്നു प्रणाली करार WiMAX मोबाईल ब्रॉडबँड साधनांना सुरू किंवा बंद होण्यापासून रोखते Polityka systemu powstrzymuje włączenie lub wyłączenie urządzeń komórkowych WiMAX Políticas de sistema previnem a habilitação ou desabilitação de dispositivos móveis de banda larga WiMAX Системная политика запрещает включение или выключение устройств мобильной связи WiMAX Sistemska določila preprečujejo omogočanje ali onemogočanje mobilnih širokopasovnih naprav WiMAX + Systemets policy förhindrar aktivering eller inaktivering av mobila WiMAX-bredbandsenheter Sistem kuralları, WiMAX mobil genişbant aygıtlarını etkinleştirmeyi ya da etkisizleştirmeyi engelliyor Правила системи забороняють вмикання або вимикання пристроїв широкосмугових мобільних мереж WiMAX @@ -620,12 +624,14 @@ Ubah koneksi jaringan personal Modificare le connessioni personali 개인 네트워크 연결을 수정합니다 + Keisti asmeninius tinklo ryšius സ്വന്തമായ നെറ്റ്​വര്‍ക്ക് കണക്ഷനുകളില്‍ മാറ്റം വരുത്തുക वैयक्तिक नेटवर्क जोडणी संपादित करा Modyfikacja osobistych połączeń sieciowych Modificar conexões pessoais de rede Редактировать личные настройки подключения Spremeni osebne omrežne povezave + Ändra personliga nätverksanslutningar Kişisel ağ bağlantılarını düzenle Змінити параметри особистих з’єднань з мережею System policy prevents modification of personal network settings @@ -639,12 +645,14 @@ Kebijakan sistem mencegah pengubahan tatanan jaringan pribadi La politica di sistema impedisce di modificare le impostazioni di rete personali 시스템 정책이 개인 네트워크 설정의 수정을 금지합니다 + Sistemos politika neleidžia keisti asmeninių tinklų nustatymų സ്വന്തമായ നെറ്റ്​വര്‍ക്ക് സജ്ജീകരണങ്ങള്‍ മാറ്റം വരുത്തുന്നതു് സിസ്റ്റം പോളിസി തടയുന്നു प्रणाली करार, व्यक्तिगत नेटवर्क सेटिंग्स् संपादीत करण्यापासून रोखते Polityka systemu powstrzymuje modyfikację osobistych ustawień systemowych Políticas de sistema previnem modificação das configurações pessoais de redes Системная политика запрещает изменение персональных настроек сети Sistemska določila preprečujejo spreminjanje osebnih omrežnih nastavitev + Systemets policy förhindrar ändring av personliga nätverksinställningar Sistem kuralları, kişisel ağ ayarlarının değiştirilmesine izin vermiyor Правила системи забороняють внесення змін до особистих параметрів мережі @@ -665,11 +673,13 @@ Ubah koneksi jaringan bagi semua pengguna Modifica le connessioni di sistema per tutti gli utenti 모든 사용자의 네트워크 연결을 수정합니다 + Keisti visų naudotojų tinklo ryšius सर्व वापरकर्त्यांकरीता नेटवर्क जोडणी संपादित करा Modyfikacja połączeń sieciowych dla wszystkich użytkowników Modificar conexões de rede para todos os usuários Изменить подключения доступные всем пользователям Spremeni omrežne povezave za vse uporabnike + Ändra nätverksanslutningar för alla användare Tüm kullanıcılar için ağ bağlantılarını düzenle Внести зміни до мережевих з’єднань всіх користувачів System policy prevents modification of network settings for all users @@ -683,11 +693,13 @@ Kebijakan sistem mencegah pengubahan tatanan sistem bagi semua pengguna La politica di sistema impedisce di modificare le impostazioni di rete per tutti gli utenti 시스템 정책이 모든 사용자의 네트워크 설정의 수정을 금지합니다 + Sistemos politika neleidžia keisti tinklo nustatymų, skirtų visiems naudotojams प्रणाली करार सर्व वापरकर्त्यांना नेटवर्क सेटिंग्स् संपादीत करण्यापासून रोखते Polityka systemu powstrzymuje modyfikację ustawień sieciowych dla wszystkich użytkowników Políticas de sistema previnem modificação das configurações de rede para todos os usuários Системная политика запрещает изменение настроек для всех пользователей Sistemska določila preprečujejo spreminjanje sistemskih nastavitev za vse uporabnike + Systemets policy förhindrar ändring av nätverksinställningar för alla användare Sistem kuralları, tüm kullanıcılar için ağ ayarlarının değiştirilmesine izin vermiyor Правила системи забороняють внесення змін до параметрів мережі для всіх користувачів 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 @@ -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 #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 #include +#include +#include #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); @@ -318,6 +442,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) { @@ -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 #include +#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 @@ -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); } } @@ -237,12 +239,6 @@ bluez_connect (NMBluezManager *self) query_default_adapter (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, @@ -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 #include +#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 - * 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 @@ -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 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 +#include #include +#include #include #include @@ -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 #include #include +#include #include #include #include @@ -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 +#include + +#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 + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#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 + * Copyright (C) 2009 - 2011 Red Hat Inc. + */ + +#ifndef NM_DEVICE_ADSL_H +#define NM_DEVICE_ADSL_H + +#include + +// 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) { @@ -1543,21 +1625,103 @@ check_scanning_allowed (NMDeviceWifi *self) return g_value_get_boolean (&retval); } +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 : ""); + 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 #include #include +#include +#include #include #include #include @@ -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; @@ -3912,6 +4083,22 @@ nm_device_class_init (NMDeviceClass *klass) NULL, 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, @@ -3999,6 +4186,14 @@ nm_device_class_init (NMDeviceClass *klass) FALSE, 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, @@ -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 -#include +#include #include #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); } @@ -236,6 +246,30 @@ void nm_ip6_config_reset_nameservers (NMIP6Config *config) g_array_remove_range (priv->nameservers, 0, priv->nameservers->len); } +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) { @@ -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); @@ -519,6 +512,96 @@ nm_system_set_ip6_route (int ifindex, return err; } +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) { @@ -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,14 +43,11 @@ send_interface="org.freedesktop.NetworkManager.Connection.Active"/> + send_interface="org.freedesktop.NetworkManager.Device.Modem"/> - - @@ -115,7 +112,5 @@ send_interface="org.freedesktop.NetworkManager" send_member="wake"/> - - 512 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 + +#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 +#include + +/* + * 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 @@ -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 #include #include +#include #include #include #include @@ -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, @@ -1659,6 +1763,13 @@ nm_settings_new (const char *config_file, return self; } +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) { @@ -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 + +#include + +/* 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, + * , + * "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 +#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 +#include +#include +#include +#include + +#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 + +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 +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#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 = ; + * + * 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 + +/* 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 +#include + +#include +#include + +#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 +#include + +#include + +#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 #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 #include #include + +#include +#include +#include + #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; @@ -132,6 +139,55 @@ ac_state_from_vpn_state (NMVPNConnectionState vpn_state) return NM_ACTIVE_CONNECTION_STATE_UNKNOWN; } +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, @@ -139,7 +195,6 @@ nm_vpn_connection_set_vpn_state (NMVPNConnection *connection, { 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 -- cgit 1.3.0-6-gf8a5