diff options
131 files changed, 2521 insertions, 2845 deletions
diff --git a/configure b/configure index 8ebbd40f..2788d1f1 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for NetworkManager 1.1.93. +# Generated by GNU Autoconf 2.69 for NetworkManager 1.1.94. # # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager>. # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='NetworkManager' PACKAGE_TARNAME='NetworkManager' -PACKAGE_VERSION='1.1.93' -PACKAGE_STRING='NetworkManager 1.1.93' +PACKAGE_VERSION='1.1.94' +PACKAGE_STRING='NetworkManager 1.1.94' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager' PACKAGE_URL='' @@ -1685,7 +1685,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures NetworkManager 1.1.93 to adapt to many kinds of systems. +\`configure' configures NetworkManager 1.1.94 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1755,7 +1755,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of NetworkManager 1.1.93:";; + short | recursive ) echo "Configuration of NetworkManager 1.1.94:";; esac cat <<\_ACEOF @@ -2062,7 +2062,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -NetworkManager configure 1.1.93 +NetworkManager configure 1.1.94 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2789,7 +2789,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by NetworkManager $as_me 1.1.93, which was +It was created by NetworkManager $as_me 1.1.94, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3659,7 +3659,7 @@ fi # Define the identity of the package. PACKAGE='NetworkManager' - VERSION='1.1.93' + VERSION='1.1.94' cat >>confdefs.h <<_ACEOF @@ -17540,9 +17540,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu NM_MAJOR_VERSION=1 NM_MINOR_VERSION=1 -NM_MICRO_VERSION=93 -NM_VERSION=1.1.93 -NM_GIT_SHA=aab24b4e10e6a9ad0b51d3e573b5da7ddafbf50b +NM_MICRO_VERSION=94 +NM_VERSION=1.1.94 +NM_GIT_SHA=304f676e6e355ac581eca20f4d987c627ec2458b @@ -27298,7 +27298,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by NetworkManager $as_me 1.1.93, which was +This file was extended by NetworkManager $as_me 1.1.94, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -27364,7 +27364,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -NetworkManager config.status 1.1.93 +NetworkManager config.status 1.1.94 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7ec52e36..3ef50261 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.63]) dnl The NM version number m4_define([nm_major_version], [1]) m4_define([nm_minor_version], [1]) -m4_define([nm_micro_version], [93]) +m4_define([nm_micro_version], [94]) m4_define([nm_version], [nm_major_version.nm_minor_version.nm_micro_version]) m4_define([nm_git_sha], [m4_esyscmd([ ( [ -d ./.git/ ] && [ "$(readlink -f ./.git/)" = "$(readlink -f "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null)" ] && git rev-parse --verify -q HEAD 2>/dev/null ) || true ])]) diff --git a/docs/api/html/NetworkManager.conf.html b/docs/api/html/NetworkManager.conf.html index 6823dddb..049fdd41 100644 --- a/docs/api/html/NetworkManager.conf.html +++ b/docs/api/html/NetworkManager.conf.html @@ -2,12 +2,12 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>NetworkManager.conf: NetworkManager D-Bus API Reference Manual</title> +<title>NetworkManager.conf: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> -<link rel="prev" href="NetworkManager.html" title="NetworkManager"> -<link rel="next" href="nmcli-examples.html" title="nmcli-examples"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> +<link rel="prev" href="nm-online.html" title="nm-online"> +<link rel="next" href="nm-settings.html" title="nm-settings"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -16,8 +16,8 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> -<td><a accesskey="p" href="NetworkManager.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="nmcli-examples.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="p" href="nm-online.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="n" href="nm-settings.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="NetworkManager.conf"></a><div class="titlepage"></div> @@ -37,7 +37,7 @@ </p> </div> <div class="refsect1"> -<a name="id-1.4.6.5"></a><h2>Description</h2> +<a name="id-1.2.5.5"></a><h2>Description</h2> <p><code class="literal">NetworkManager.conf</code> is the configuration file for NetworkManager. It is used to set up various aspects of NetworkManager's behavior. The location of the main file and configuration directories may be changed @@ -66,7 +66,7 @@ </p> </div> <div class="refsect1"> -<a name="id-1.4.6.6"></a><h2>File Format</h2> +<a name="id-1.2.5.6"></a><h2>File Format</h2> <p> The configuration file format is so-called key file (sort of ini-style format). It consists of sections (groups) of @@ -103,7 +103,7 @@ plugins-=remove-me </p> </div> <div class="refsect1"> -<a name="id-1.4.6.7"></a><h2> +<a name="id-1.2.5.7"></a><h2> <code class="literal">main</code> section</h2> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> @@ -340,7 +340,7 @@ no-auto-default=* </table></div> </div> <div class="refsect1"> -<a name="id-1.4.6.8"></a><h2> +<a name="id-1.2.5.8"></a><h2> <code class="literal">keyfile</code> section</h2> <p>This section contains keyfile-plugin-specific options, and is normally only used when you are not using any other @@ -363,7 +363,7 @@ no-auto-default=* <tr> <td><p><span class="term"><code class="varname">path</code></span></p></td> <td><p>The location where keyfiles are read and stored. - This defaults to "<code class="literal">/usr/local/etc/NetworkManager/conf.d</code>". + This defaults to "<code class="filename">${prefix}/etc/NetworkManager/conf.d</code>". </p></td> </tr> <tr> @@ -392,7 +392,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth </p> </div> <div class="refsect1"> -<a name="id-1.4.6.9"></a><h2> +<a name="id-1.2.5.9"></a><h2> <code class="literal">ifupdown</code> section</h2> <p>This section contains ifupdown-specific options and thus only has effect when using the <code class="literal">ifupdown</code> plugin.</p> @@ -426,7 +426,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth </p> </div> <div class="refsect1"> -<a name="id-1.4.6.10"></a><h2> +<a name="id-1.2.5.10"></a><h2> <code class="literal">logging</code> section</h2> <p>This section controls NetworkManager's logging. Any settings here are overridden by the <code class="option">--log-level</code> @@ -499,7 +499,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth </p> </div> <div class="refsect1"> -<a name="id-1.4.6.11"></a><h2> +<a name="id-1.2.5.11"></a><h2> <code class="literal">connection</code> section</h2> <p>Specify default values for connections. </p> @@ -513,7 +513,7 @@ ipv6.ip6-privacy=0 <p> </p> <div class="refsect2"> -<a name="id-1.4.6.11.4"></a><h3>Supported Properties</h3> +<a name="id-1.2.5.11.4"></a><h3>Supported Properties</h3> <p> Not all properties can be overwritten, only the following properties are supported to have their default values configured @@ -582,7 +582,7 @@ ipv6.ip6-privacy=0 </div> <hr> <div class="refsect2"> -<a name="id-1.4.6.11.5"></a><h3>Sections</h3> +<a name="id-1.2.5.11.5"></a><h3>Sections</h3> <p> You can configure multiple <code class="literal">connection</code> sections, by having different sections with a name that all start @@ -660,7 +660,7 @@ ipv6.ip6-privacy=1 </div> </div> <div class="refsect1"> -<a name="id-1.4.6.12"></a><h2> +<a name="id-1.2.5.12"></a><h2> <code class="literal">connectivity</code> section</h2> <p>This section controls NetworkManager's optional connectivity checking functionality. This allows NetworkManager to detect @@ -706,7 +706,7 @@ ipv6.ip6-privacy=1 </p> </div> <div class="refsect1"> -<a name="id-1.4.6.13"></a><h2> +<a name="id-1.2.5.13"></a><h2> <code class="literal">global-dns</code> section</h2> <p>This section specifies global DNS settings that override connection-specific configuration.</p> @@ -736,7 +736,7 @@ ipv6.ip6-privacy=1 </p> </div> <div class="refsect1"> -<a name="id-1.4.6.14"></a><h2> +<a name="id-1.2.5.14"></a><h2> <code class="literal">global-dns-domain</code> sections</h2> <p>Sections with a name starting with the "global-dns-domain-" prefix allow to define global DNS configuration for specific @@ -772,7 +772,7 @@ ipv6.ip6-privacy=1 </p> </div> <div class="refsect1"> -<a name="id-1.4.6.15"></a><h2> +<a name="id-1.2.5.15"></a><h2> <code class="literal">.config</code> sections</h2> <p>This is a special section that contains options which apply to the configuration file that contains the option. @@ -875,7 +875,7 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16 </p> </div> <div class="refsect1"> -<a name="id-1.4.6.16"></a><h2>Plugins</h2> +<a name="id-1.2.5.16"></a><h2>Plugins</h2> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -959,7 +959,7 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16 </table></div> </div> <div class="refsect1"> -<a name="id-1.4.6.17"></a><h2>Appendix</h2> +<a name="id-1.2.5.17"></a><h2>Appendix</h2> <div class="refsect2"> <a name="device-spec"></a><h3>Device List Format</h3> <p> @@ -1048,7 +1048,7 @@ interface-name:vboxnet*,except:interface-name:vboxnet2 </div> </div> <div class="refsect1"> -<a name="id-1.4.6.18"></a><h2>See Also</h2> +<a name="id-1.2.5.18"></a><h2>See Also</h2> <p> <span class="citerefentry"><span class="refentrytitle">NetworkManager</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">nmcli</span>(1)</span>, diff --git a/docs/api/html/NetworkManager.devhelp2 b/docs/api/html/NetworkManager.devhelp2 index d210c50e..2f5ab8cf 100644 --- a/docs/api/html/NetworkManager.devhelp2 +++ b/docs/api/html/NetworkManager.devhelp2 @@ -1,6 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="no"?> -<book xmlns="http://www.devhelp.net/book" title="NetworkManager D-Bus API Reference Manual" link="index.html" author="" name="NetworkManager" version="2" language="c"> +<book xmlns="http://www.devhelp.net/book" title="NetworkManager Reference Manual" link="index.html" author="" name="NetworkManager" version="2" language="c"> <chapters> + <sub name="Manual Pages" link="manpages.html"> + <sub name="nmcli" link="nmcli.html"/> + <sub name="nmtui" link="nmtui.html"/> + <sub name="nm-online" link="nm-online.html"/> + <sub name="NetworkManager.conf" link="NetworkManager.conf.html"/> + <sub name="nm-settings" link="nm-settings.html"/> + <sub name="nm-settings-keyfile" link="nm-settings-keyfile.html"/> + <sub name="nm-settings-ifcfg-rh" link="nm-settings-ifcfg-rh.html"/> + <sub name="nmcli-examples" link="nmcli-examples.html"/> + <sub name="NetworkManager" link="NetworkManager.html"/> + </sub> <sub name="D-Bus API Reference" link="spec.html"> <sub name="Interfaces" link="spec.html#dbus-interfaces"> <sub name="org.freedesktop.NetworkManager" link="gdbus-org.freedesktop.NetworkManager.html"/> @@ -39,20 +50,9 @@ </sub> </sub> <sub name="Network Configuration Setting Specification" link="ref-settings.html"> - <sub name="Configuration Settings" link="ref-settings.html#id-1.3.3"/> + <sub name="Configuration Settings" link="ref-settings.html#id-1.4.3"/> <sub name="Secret flag types" link="secrets-flags.html"/> </sub> - <sub name="UNIX Manual Pages" link="manpages.html"> - <sub name="nmcli" link="nmcli.html"/> - <sub name="nmtui" link="nmtui.html"/> - <sub name="nm-online" link="nm-online.html"/> - <sub name="NetworkManager" link="NetworkManager.html"/> - <sub name="NetworkManager.conf" link="NetworkManager.conf.html"/> - <sub name="nmcli-examples" link="nmcli-examples.html"/> - <sub name="nm-settings" link="nm-settings.html"/> - <sub name="nm-settings-keyfile" link="nm-settings-keyfile.html"/> - <sub name="nm-settings-ifcfg-rh" link="nm-settings-ifcfg-rh.html"/> - </sub> <sub name="Index" link="ix01.html"/> <sub name="License" link="license.html"/> </chapters> diff --git a/docs/api/html/NetworkManager.html b/docs/api/html/NetworkManager.html index 5f08219e..835a7e66 100644 --- a/docs/api/html/NetworkManager.html +++ b/docs/api/html/NetworkManager.html @@ -2,12 +2,12 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>NetworkManager: NetworkManager D-Bus API Reference Manual</title> +<title>NetworkManager: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> -<link rel="prev" href="nm-online.html" title="nm-online"> -<link rel="next" href="NetworkManager.conf.html" title="NetworkManager.conf"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> +<link rel="prev" href="nmcli-examples.html" title="nmcli-examples"> +<link rel="next" href="spec.html" title="D-Bus API Reference"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -16,8 +16,8 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> -<td><a accesskey="p" href="nm-online.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="NetworkManager.conf.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="p" href="nmcli-examples.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="n" href="spec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="NetworkManager"></a><div class="titlepage"></div> @@ -33,7 +33,7 @@ <div class="cmdsynopsis"><p><code class="command">NetworkManager [OPTIONS...]</code> </p></div> </div> <div class="refsect1"> -<a name="id-1.4.5.5"></a><h2>Description</h2> +<a name="id-1.2.10.5"></a><h2>Description</h2> <p> The NetworkManager daemon attempts to make networking configuration and operation as painless and automatic as @@ -48,7 +48,7 @@ </p> </div> <div class="refsect1"> -<a name="id-1.4.5.6"></a><h2>Dispatcher scripts</h2> +<a name="id-1.2.10.6"></a><h2>Dispatcher scripts</h2> <p> NetworkManager will execute scripts in the /etc/NetworkManager/dispatcher.d directory or subdirectories in @@ -296,7 +296,7 @@ </p> </div> <div class="refsect1"> -<a name="id-1.4.5.7"></a><h2>Options</h2> +<a name="id-1.2.10.7"></a><h2>Options</h2> <p>The following options are understood:</p> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> @@ -389,7 +389,7 @@ </table></div> </div> <div class="refsect1"> -<a name="id-1.4.5.8"></a><h2>UDEV PROPERTIES</h2> +<a name="id-1.2.10.8"></a><h2>UDEV PROPERTIES</h2> <p> <span class="citerefentry"><span class="refentrytitle">udev</span>(7)</span> device manager is used for the network device discovery. The following @@ -420,7 +420,7 @@ </table></div> </div> <div class="refsect1"> -<a name="id-1.4.5.9"></a><h2>SIGNALS</h2> +<a name="id-1.2.10.9"></a><h2>SIGNALS</h2> <p> NetworkManager process handles the following signals: </p> @@ -458,7 +458,7 @@ </p> </div> <div class="refsect1"> -<a name="id-1.4.5.10"></a><h2>DEBUGGING</h2> +<a name="id-1.2.10.10"></a><h2>DEBUGGING</h2> <p> The following environment variables are supported to help debugging. When used in conjunction with the @@ -475,7 +475,7 @@ </p> </div> <div class="refsect1"> -<a name="id-1.4.5.11"></a><h2>See Also</h2> +<a name="id-1.2.10.11"></a><h2>See Also</h2> <p> <span class="citerefentry"><span class="refentrytitle">NetworkManager.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">nmcli</span>(1)</span>, diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html index 6156a6f4..ccf36e84 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.AccessPoint: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.AccessPoint: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html" title="org.freedesktop.NetworkManager.AgentManager"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.PPP.html" title="org.freedesktop.NetworkManager.PPP"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.5.3"></a><h2>Signals</h2> +<a name="id-1.3.3.5.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-signal-org-freedesktop-NetworkManager-AccessPoint.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.5.4"></a><h2>Properties</h2> +<a name="id-1.3.3.5.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Flags" title='The "Flags" property'>Flags</a> readable u <a class="link" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.WpaFlags" title='The "WpaFlags" property'>WpaFlags</a> readable u diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html index c11ce86b..b32df401 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.AgentManager: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.AgentManager: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Settings.html" title="org.freedesktop.NetworkManager.Settings"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html" title="org.freedesktop.NetworkManager.AccessPoint"> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html index cb21000b..394b34fb 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Connection.Active: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Connection.Active: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html" title="org.freedesktop.NetworkManager.VPN.Connection"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.html" title="org.freedesktop.NetworkManager.Device"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.9.3"></a><h2>Signals</h2> +<a name="id-1.3.3.9.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-signal-org-freedesktop-NetworkManager-Connection-Active.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.9.4"></a><h2>Properties</h2> +<a name="id-1.3.3.9.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Connection" title='The "Connection" property'>Connection</a> readable o <a class="link" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.SpecificObject" title='The "SpecificObject" property'>SpecificObject</a> readable o diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html index ea8eaa80..8c99d193 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.DHCP4Config: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.DHCP4Config: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html" title="org.freedesktop.NetworkManager.Device.WiMax"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html" title="org.freedesktop.NetworkManager.DHCP6Config"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.29.3"></a><h2>Signals</h2> +<a name="id-1.3.3.29.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP4Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.29.4"></a><h2>Properties</h2> +<a name="id-1.3.3.29.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP4Config.Options" title='The "Options" property'>Options</a> readable a{sv} </pre> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html index 8634c505..916d8629 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.DHCP6Config: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.DHCP6Config: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html" title="org.freedesktop.NetworkManager.DHCP4Config"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html" title="org.freedesktop.NetworkManager.IP4Config"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.30.3"></a><h2>Signals</h2> +<a name="id-1.3.3.30.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP6Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.30.4"></a><h2>Properties</h2> +<a name="id-1.3.3.30.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP6Config.Options" title='The "Options" property'>Options</a> readable a{sv} </pre> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html index 85b8cca5..bc446feb 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Adsl: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Adsl: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.html" title="org.freedesktop.NetworkManager.Device"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html" title="org.freedesktop.NetworkManager.Device.Bond"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.11.3"></a><h2>Signals</h2> +<a name="id-1.3.3.11.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Adsl.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.11.4"></a><h2>Properties</h2> +<a name="id-1.3.3.11.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-property-org-freedesktop-NetworkManager-Device-Adsl.Carrier" title='The "Carrier" property'>Carrier</a> readable b </pre> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html index 8aee9d96..bf8d3abd 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Bluetooth: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Bluetooth: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html" title="org.freedesktop.NetworkManager.Device.Bridge"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html" title="org.freedesktop.NetworkManager.Device.Wired"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.14.3"></a><h2>Signals</h2> +<a name="id-1.3.3.14.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bluetooth.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.14.4"></a><h2>Properties</h2> +<a name="id-1.3.3.14.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.Name" title='The "Name" property'>Name</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html index bb8000a3..14383a24 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Bond: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Bond: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html" title="org.freedesktop.NetworkManager.Device.Adsl"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html" title="org.freedesktop.NetworkManager.Device.Bridge"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.12.3"></a><h2>Signals</h2> +<a name="id-1.3.3.12.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bond.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.12.4"></a><h2>Properties</h2> +<a name="id-1.3.3.12.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.Carrier" title='The "Carrier" property'>Carrier</a> readable b diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html index 8c3c0df6..fb550a69 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Bridge: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Bridge: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html" title="org.freedesktop.NetworkManager.Device.Bond"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html" title="org.freedesktop.NetworkManager.Device.Bluetooth"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.13.3"></a><h2>Signals</h2> +<a name="id-1.3.3.13.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bridge.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.13.4"></a><h2>Properties</h2> +<a name="id-1.3.3.13.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.Carrier" title='The "Carrier" property'>Carrier</a> readable b diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html index 0ca0acc6..d53d727d 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Generic: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Generic: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html" title="org.freedesktop.NetworkManager.Device.Wired"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html" title="org.freedesktop.NetworkManager.Device.Infiniband"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.16.3"></a><h2>Signals</h2> +<a name="id-1.3.3.16.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Generic.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.16.4"></a><h2>Properties</h2> +<a name="id-1.3.3.16.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.TypeDescription" title='The "TypeDescription" property'>TypeDescription</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html index 8fc079b3..d7e5dbfb 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.IPTunnel: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.IPTunnel: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html" title="org.freedesktop.NetworkManager.Device.Infiniband"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html" title="org.freedesktop.NetworkManager.Device.Macvlan"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.18.3"></a><h2>Signals</h2> +<a name="id-1.3.3.18.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-signal-org-freedesktop-NetworkManager-Device-IPTunnel.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.18.4"></a><h2>Properties</h2> +<a name="id-1.3.3.18.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Mode" title='The "Mode" property'>Mode</a> readable u <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Parent" title='The "Parent" property'>Parent</a> readable o diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html index 0be326c1..5f43e63c 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Infiniband: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Infiniband: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html" title="org.freedesktop.NetworkManager.Device.Generic"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html" title="org.freedesktop.NetworkManager.Device.IPTunnel"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.17.3"></a><h2>Signals</h2> +<a name="id-1.3.3.17.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Infiniband.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.17.4"></a><h2>Properties</h2> +<a name="id-1.3.3.17.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.Carrier" title='The "Carrier" property'>Carrier</a> readable b diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html index 1cd289ce..72b5df8d 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Macvlan: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Macvlan: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html" title="org.freedesktop.NetworkManager.Device.IPTunnel"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html" title="org.freedesktop.NetworkManager.Device.Modem"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.19.3"></a><h2>Signals</h2> +<a name="id-1.3.3.19.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Macvlan.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.19.4"></a><h2>Properties</h2> +<a name="id-1.3.3.19.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Parent" title='The "Parent" property'>Parent</a> readable o <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Mode" title='The "Mode" property'>Mode</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html index 554ac256..cc18c40f 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Modem: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Modem: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html" title="org.freedesktop.NetworkManager.Device.Macvlan"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html" title="org.freedesktop.NetworkManager.Device.OlpcMesh"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.20.3"></a><h2>Signals</h2> +<a name="id-1.3.3.20.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Modem.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.20.4"></a><h2>Properties</h2> +<a name="id-1.3.3.20.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.ModemCapabilities" title='The "ModemCapabilities" property'>ModemCapabilities</a> readable u <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.CurrentCapabilities" title='The "CurrentCapabilities" property'>CurrentCapabilities</a> readable u diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html index 24cd507e..c51bca47 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.OlpcMesh: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.OlpcMesh: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html" title="org.freedesktop.NetworkManager.Device.Modem"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html" title="org.freedesktop.NetworkManager.Device.Team"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.21.3"></a><h2>Signals</h2> +<a name="id-1.3.3.21.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-signal-org-freedesktop-NetworkManager-Device-OlpcMesh.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.21.4"></a><h2>Properties</h2> +<a name="id-1.3.3.21.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.Companion" title='The "Companion" property'>Companion</a> readable o diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html index 24f6d5c6..ffa7061a 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Team: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Team: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html" title="org.freedesktop.NetworkManager.Device.OlpcMesh"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html" title="org.freedesktop.NetworkManager.Device.Tun"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.22.3"></a><h2>Signals</h2> +<a name="id-1.3.3.22.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Team.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.22.4"></a><h2>Properties</h2> +<a name="id-1.3.3.22.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Carrier" title='The "Carrier" property'>Carrier</a> readable b diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html index fedfca40..67282411 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Tun: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Tun: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html" title="org.freedesktop.NetworkManager.Device.Team"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html" title="org.freedesktop.NetworkManager.Device.Veth"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.23.3"></a><h2>Signals</h2> +<a name="id-1.3.3.23.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Tun.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.23.4"></a><h2>Properties</h2> +<a name="id-1.3.3.23.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Owner" title='The "Owner" property'>Owner</a> readable x <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Group" title='The "Group" property'>Group</a> readable x diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html index c045a5ff..892e396b 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Veth: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Veth: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html" title="org.freedesktop.NetworkManager.Device.Tun"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html" title="org.freedesktop.NetworkManager.Device.Vlan"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.24.3"></a><h2>Signals</h2> +<a name="id-1.3.3.24.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Veth.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.24.4"></a><h2>Properties</h2> +<a name="id-1.3.3.24.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Veth.Peer" title='The "Peer" property'>Peer</a> readable o </pre> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html index 9b8fea75..bf54392a 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Vlan: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Vlan: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html" title="org.freedesktop.NetworkManager.Device.Veth"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html" title="org.freedesktop.NetworkManager.Device.Vxlan"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.25.3"></a><h2>Signals</h2> +<a name="id-1.3.3.25.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vlan.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.25.4"></a><h2>Properties</h2> +<a name="id-1.3.3.25.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.Carrier" title='The "Carrier" property'>Carrier</a> readable b diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html index 4d227329..97ca5850 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Vxlan: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Vxlan: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html" title="org.freedesktop.NetworkManager.Device.Vlan"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html" title="org.freedesktop.NetworkManager.Device.Wireless"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.26.3"></a><h2>Signals</h2> +<a name="id-1.3.3.26.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vxlan.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.26.4"></a><h2>Properties</h2> +<a name="id-1.3.3.26.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Parent" title='The "Parent" property'>Parent</a> readable o <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html index 2bd82f0a..345ec7e2 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.WiMax: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.WiMax: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html" title="org.freedesktop.NetworkManager.Device.Wireless"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html" title="org.freedesktop.NetworkManager.DHCP4Config"> @@ -40,7 +40,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.28.4"></a><h2>Signals</h2> +<a name="id-1.3.3.28.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspAdded" title='The "NspAdded" signal'>NspAdded</a> (o nsp); @@ -48,7 +48,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.28.5"></a><h2>Properties</h2> +<a name="id-1.3.3.28.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Nsps" title='The "Nsps" property'>Nsps</a> readable ao <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html index 498b1e9b..240ff74f 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Wired: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Wired: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html" title="org.freedesktop.NetworkManager.Device.Bluetooth"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html" title="org.freedesktop.NetworkManager.Device.Generic"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.15.3"></a><h2>Signals</h2> +<a name="id-1.3.3.15.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wired.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.15.4"></a><h2>Properties</h2> +<a name="id-1.3.3.15.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.PermHwAddress" title='The "PermHwAddress" property'>PermHwAddress</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html index 6992176a..b13c244c 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device.Wireless: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device.Wireless: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html" title="org.freedesktop.NetworkManager.Device.Vxlan"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html" title="org.freedesktop.NetworkManager.Device.WiMax"> @@ -42,7 +42,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.27.4"></a><h2>Signals</h2> +<a name="id-1.3.3.27.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.AccessPointAdded" title='The "AccessPointAdded" signal'>AccessPointAdded</a> (o access_point); @@ -50,7 +50,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.27.5"></a><h2>Properties</h2> +<a name="id-1.3.3.27.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.HwAddress" title='The "HwAddress" property'>HwAddress</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.PermHwAddress" title='The "PermHwAddress" property'>PermHwAddress</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html index 03f74ce4..3acd8a78 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Device: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Device: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html" title="org.freedesktop.NetworkManager.Connection.Active"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html" title="org.freedesktop.NetworkManager.Device.Adsl"> @@ -47,7 +47,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.10.4"></a><h2>Signals</h2> +<a name="id-1.3.3.10.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-signal-org-freedesktop-NetworkManager-Device.StateChanged" title='The "StateChanged" signal'>StateChanged</a> (u new_state, u old_state, @@ -55,7 +55,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.10.5"></a><h2>Properties</h2> +<a name="id-1.3.3.10.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Udi" title='The "Udi" property'>Udi</a> readable s <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Interface" title='The "Interface" property'>Interface</a> readable s @@ -494,7 +494,7 @@ Metered readable u <p> Whether the amount of traffic flowing through the device is subject to limitations, for example set by service providers. </p> -<p> Returns: NMMetered +<p> Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-dbus-interface.html#NMMetered">NMMetered</a> </p> </div> <hr> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html index 7405a23c..fd291730 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.IP4Config: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.IP4Config: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html" title="org.freedesktop.NetworkManager.DHCP6Config"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html" title="org.freedesktop.NetworkManager.IP6Config"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.31.3"></a><h2>Signals</h2> +<a name="id-1.3.3.31.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP4Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.31.4"></a><h2>Properties</h2> +<a name="id-1.3.3.31.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Addresses" title='The "Addresses" property'>Addresses</a> readable aau <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.AddressData" title='The "AddressData" property'>AddressData</a> readable aa{sv} diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html index fba5de80..9bd4562a 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.IP6Config: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.IP6Config: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html" title="org.freedesktop.NetworkManager.IP4Config"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html" title="org.freedesktop.NetworkManager.VPN.Plugin"> @@ -34,13 +34,13 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.32.3"></a><h2>Signals</h2> +<a name="id-1.3.3.32.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP6Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.32.4"></a><h2>Properties</h2> +<a name="id-1.3.3.32.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Addresses" title='The "Addresses" property'>Addresses</a> readable a(ayuay) <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.AddressData" title='The "AddressData" property'>AddressData</a> readable aa{sv} diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html index 40a183dc..0768f315 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.PPP: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.PPP: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html" title="org.freedesktop.NetworkManager.AccessPoint"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html" title="org.freedesktop.NetworkManager.Settings.Connection"> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html index 7899f99b..6022ef16 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.SecretAgent: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.SecretAgent: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html" title="org.freedesktop.NetworkManager.VPN.Plugin"> <link rel="next" href="ref-settings.html" title="Network Configuration Setting Specification"> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html index b985416f..6d33c280 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Settings.Connection: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Settings.Connection: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.PPP.html" title="org.freedesktop.NetworkManager.PPP"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html" title="org.freedesktop.NetworkManager.VPN.Connection"> @@ -47,7 +47,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.7.4"></a><h2>Signals</h2> +<a name="id-1.3.3.7.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Updated" title='The "Updated" signal'>Updated</a> (); <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Removed" title='The "Removed" signal'>Removed</a> (); @@ -55,7 +55,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.7.5"></a><h2>Properties</h2> +<a name="id-1.3.3.7.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved" title='The "Unsaved" property'>Unsaved</a> readable b </pre> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html index e2064236..5f601e51 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.Settings: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.Settings: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.html" title="org.freedesktop.NetworkManager"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html" title="org.freedesktop.NetworkManager.AgentManager"> @@ -51,7 +51,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.3.4"></a><h2>Signals</h2> +<a name="id-1.3.3.3.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.NewConnection" title='The "NewConnection" signal'>NewConnection</a> (o connection); @@ -59,7 +59,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.3.5"></a><h2>Properties</h2> +<a name="id-1.3.3.3.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Connections" title='The "Connections" property'>Connections</a> readable ao <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Hostname" title='The "Hostname" property'>Hostname</a> readable s diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html index 331d3a5e..ebaad8d8 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.VPN.Connection: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.VPN.Connection: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html" title="org.freedesktop.NetworkManager.Settings.Connection"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html" title="org.freedesktop.NetworkManager.Connection.Active"> @@ -34,7 +34,7 @@ <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="id-1.2.3.8.3"></a><h2>Signals</h2> +<a name="id-1.3.3.8.3"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties); <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.VpnStateChanged" title='The "VpnStateChanged" signal'>VpnStateChanged</a> (u state, @@ -42,7 +42,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.8.4"></a><h2>Properties</h2> +<a name="id-1.3.3.8.4"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.VpnState" title='The "VpnState" property'>VpnState</a> readable u <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.Banner" title='The "Banner" property'>Banner</a> readable s @@ -89,11 +89,11 @@ VpnStateChanged (u state, <tbody> <tr> <td><p><span class="term"><code class="literal">u <em class="parameter"><code>state</code></em></code>:</span></p></td> -<td><p>(NMVpnConnectionState) The new state of the VPN connection.</p></td> +<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnConnectionState">NMVpnConnectionState</a>) The new state of the VPN connection.</p></td> </tr> <tr> <td><p><span class="term"><code class="literal">u <em class="parameter"><code>reason</code></em></code>:</span></p></td> -<td><p>(NMVpnConnectionStateReason) Reason code describing the change to the new state.</p></td> +<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnConnectionStateReason">NMVpnConnectionStateReason</a>) Reason code describing the change to the new state.</p></td> </tr> </tbody> </table></div> @@ -108,7 +108,7 @@ VpnState readable u </pre> <p> The VPN-specific state of the connection. </p> -<p> Returns: NMVpnConnectionState +<p> Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnConnectionState">NMVpnConnectionState</a> </p> </div> <hr> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html index bc21c67c..a5dc49ec 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager.VPN.Plugin: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager.VPN.Plugin: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html" title="org.freedesktop.NetworkManager.IP6Config"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html" title="org.freedesktop.NetworkManager.SecretAgent"> @@ -50,7 +50,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.33.4"></a><h2>Signals</h2> +<a name="id-1.3.3.33.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.StateChanged" title='The "StateChanged" signal'>StateChanged</a> (u state); <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.SecretsRequired" title='The "SecretsRequired" signal'>SecretsRequired</a> (s message, @@ -63,7 +63,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.33.5"></a><h2>Properties</h2> +<a name="id-1.3.3.33.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Plugin.State" title='The "State" property'>State</a> readable u </pre> @@ -272,7 +272,7 @@ StateChanged (u state); </colgroup> <tbody><tr> <td><p><span class="term"><code class="literal">u <em class="parameter"><code>state</code></em></code>:</span></p></td> -<td><p>(NMVpnServiceState) The new state of the plugin.</p></td> +<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnServiceState">NMVpnServiceState</a>) The new state of the plugin.</p></td> </tr></tbody> </table></div> </div> @@ -395,7 +395,7 @@ Failure (u reason); </colgroup> <tbody><tr> <td><p><span class="term"><code class="literal">u <em class="parameter"><code>reason</code></em></code>:</span></p></td> -<td><p>(NMVpnPluginFailure) Reason code for the failure.</p></td> +<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnPluginFailure">NMVpnPluginFailure</a>) Reason code for the failure.</p></td> </tr></tbody> </table></div> </div> @@ -409,7 +409,7 @@ State readable u </pre> <p> The state of the plugin. </p> -<p> Returns: NMVpnServiceState +<p> Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnServiceState">NMVpnServiceState</a> </p> </div> </div> diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.html index d028c602..4fd2675c 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.html @@ -2,9 +2,9 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>org.freedesktop.NetworkManager: NetworkManager D-Bus API Reference Manual</title> +<title>org.freedesktop.NetworkManager: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces"> <link rel="prev" href="spec.html" title="D-Bus API Reference"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Settings.html" title="org.freedesktop.NetworkManager.Settings"> @@ -62,7 +62,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.2.4"></a><h2>Signals</h2> +<a name="id-1.3.3.2.4"></a><h2>Signals</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.CheckPermissions" title='The "CheckPermissions" signal'>CheckPermissions</a> (); <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.StateChanged" title='The "StateChanged" signal'>StateChanged</a> (u state); @@ -72,7 +72,7 @@ </pre> </div> <div class="refsect1"> -<a name="id-1.2.3.2.5"></a><h2>Properties</h2> +<a name="id-1.3.3.2.5"></a><h2>Properties</h2> <pre class="synopsis"> <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Devices" title='The "Devices" property'>Devices</a> readable ao <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.AllDevices" title='The "AllDevices" property'>AllDevices</a> readable ao @@ -643,7 +643,7 @@ Metered readable u <p> Indicates whether the connectivity is metered. This is equivalent to the metered property of the device associated with the primary connection. </p> -<p> Returns: NMMetered +<p> Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-dbus-interface.html#NMMetered">NMMetered</a> </p> </div> <hr> diff --git a/docs/api/html/index.html b/docs/api/html/index.html index 79677afb..c3c1b2dc 100644 --- a/docs/api/html/index.html +++ b/docs/api/html/index.html @@ -2,10 +2,10 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>NetworkManager D-Bus API Reference Manual: NetworkManager D-Bus API Reference Manual</title> +<title>NetworkManager Reference Manual: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="next" href="spec.html" title="D-Bus API Reference"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="next" href="manpages.html" title="Manual Pages"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -13,10 +13,10 @@ <div class="book"> <div class="titlepage"> <div> -<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">NetworkManager D-Bus API Reference Manual</p></th></tr></table></div> -<div><p class="releaseinfo">Version 1.1.93 +<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">NetworkManager Reference Manual</p></th></tr></table></div> +<div><p class="releaseinfo">Version 1.1.94 </p></div> -<div><p class="copyright">Copyright © 2012, 2016 The NetworkManager Authors</p></div> +<div><p class="copyright">Copyright © 2012, 2013, 2014, 2015, 2016 The NetworkManager Authors</p></div> <div><div class="legalnotice"> <a name="id-1.1.4"></a><p> Permission is granted to copy, distribute and/or modify this @@ -43,6 +43,36 @@ <hr> </div> <div class="toc"><dl class="toc"> +<dt><span class="chapter"><a href="manpages.html">Manual Pages</a></span></dt> +<dd><dl> +<dt> +<span class="refentrytitle"><a href="nmcli.html">nmcli</a></span><span class="refpurpose"> — command-line tool for controlling NetworkManager</span> +</dt> +<dt> +<span class="refentrytitle"><a href="nmtui.html">nmtui</a></span><span class="refpurpose"> — Text User Interface for controlling NetworkManager</span> +</dt> +<dt> +<span class="refentrytitle"><a href="nm-online.html">nm-online</a></span><span class="refpurpose"> — ask NetworkManager whether the network is connected</span> +</dt> +<dt> +<span class="refentrytitle"><a href="NetworkManager.conf.html">NetworkManager.conf</a></span><span class="refpurpose"> — NetworkManager configuration file</span> +</dt> +<dt> +<span class="refentrytitle"><a href="nm-settings.html">nm-settings</a></span><span class="refpurpose"> — Description of settings and properties of NetworkManager connection profiles</span> +</dt> +<dt> +<span class="refentrytitle"><a href="nm-settings-keyfile.html">nm-settings-keyfile</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>keyfile</em></span> settings plugin</span> +</dt> +<dt> +<span class="refentrytitle"><a href="nm-settings-ifcfg-rh.html">nm-settings-ifcfg-rh</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>ifcfg-rh</em></span> settings plugin</span> +</dt> +<dt> +<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span> +</dt> +<dt> +<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span> +</dt> +</dl></dd> <dt><span class="chapter"><a href="spec.html">D-Bus API Reference</a></span></dt> <dd><dl> <dt><span class="section"><a href="spec.html#dbus-interfaces">Interfaces</a></span></dt> @@ -150,39 +180,9 @@ </dl></dd> <dt><span class="chapter"><a href="ref-settings.html">Network Configuration Setting Specification</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-settings.html#id-1.3.3">Configuration Settings</a></span></dt> +<dt><span class="section"><a href="ref-settings.html#id-1.4.3">Configuration Settings</a></span></dt> <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt> </dl></dd> -<dt><span class="chapter"><a href="manpages.html">UNIX Manual Pages</a></span></dt> -<dd><dl> -<dt> -<span class="refentrytitle"><a href="nmcli.html">nmcli</a></span><span class="refpurpose"> — command-line tool for controlling NetworkManager</span> -</dt> -<dt> -<span class="refentrytitle"><a href="nmtui.html">nmtui</a></span><span class="refpurpose"> — Text User Interface for controlling NetworkManager</span> -</dt> -<dt> -<span class="refentrytitle"><a href="nm-online.html">nm-online</a></span><span class="refpurpose"> — ask NetworkManager whether the network is connected</span> -</dt> -<dt> -<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span> -</dt> -<dt> -<span class="refentrytitle"><a href="NetworkManager.conf.html">NetworkManager.conf</a></span><span class="refpurpose"> — NetworkManager configuration file</span> -</dt> -<dt> -<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span> -</dt> -<dt> -<span class="refentrytitle"><a href="nm-settings.html">nm-settings</a></span><span class="refpurpose"> — Description of settings and properties of NetworkManager connection profiles</span> -</dt> -<dt> -<span class="refentrytitle"><a href="nm-settings-keyfile.html">nm-settings-keyfile</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>keyfile</em></span> settings plugin</span> -</dt> -<dt> -<span class="refentrytitle"><a href="nm-settings-ifcfg-rh.html">nm-settings-ifcfg-rh</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>ifcfg-rh</em></span> settings plugin</span> -</dt> -</dl></dd> <dt><span class="index"><a href="ix01.html">Index</a></span></dt> <dt><span class="appendix"><a href="license.html">A. License</a></span></dt> </dl></div> diff --git a/docs/api/html/index.sgml b/docs/api/html/index.sgml index 583682f2..4b1a83ec 100644 --- a/docs/api/html/index.sgml +++ b/docs/api/html/index.sgml @@ -1,3 +1,55 @@ +<ANCHOR id="nmcli" href="NetworkManager/nmcli.html"> +<ANCHOR id="synopsis" href="NetworkManager/nmcli.html#synopsis"> +<ANCHOR id="description" href="NetworkManager/nmcli.html#description"> +<ANCHOR id="options" href="NetworkManager/nmcli.html#options"> +<ANCHOR id="general" href="NetworkManager/nmcli.html#general"> +<ANCHOR id="networking" href="NetworkManager/nmcli.html#networking"> +<ANCHOR id="radio" href="NetworkManager/nmcli.html#radio"> +<ANCHOR id="monitor" href="NetworkManager/nmcli.html#monitor"> +<ANCHOR id="connection" href="NetworkManager/nmcli.html#connection"> +<ANCHOR id="device" href="NetworkManager/nmcli.html#device"> +<ANCHOR id="agent" href="NetworkManager/nmcli.html#agent"> +<ANCHOR id="environment_variables" href="NetworkManager/nmcli.html#environment_variables"> +<ANCHOR id="internationalization_notes" href="NetworkManager/nmcli.html#internationalization_notes"> +<ANCHOR id="exit_status" href="NetworkManager/nmcli.html#exit_status"> +<ANCHOR id="examples" href="NetworkManager/nmcli.html#examples"> +<ANCHOR id="notes" href="NetworkManager/nmcli.html#notes"> +<ANCHOR id="bugs" href="NetworkManager/nmcli.html#bugs"> +<ANCHOR id="see_also" href="NetworkManager/nmcli.html#see_also"> +<ANCHOR id="nmtui" href="NetworkManager/nmtui.html"> +<ANCHOR id="synopsis" href="NetworkManager/nmtui.html#synopsis"> +<ANCHOR id="description" href="NetworkManager/nmtui.html#description"> +<ANCHOR id="see_also" href="NetworkManager/nmtui.html#see_also"> +<ANCHOR id="nm-online" href="NetworkManager/nm-online.html"> +<ANCHOR id="synopsis" href="NetworkManager/nm-online.html#synopsis"> +<ANCHOR id="description" href="NetworkManager/nm-online.html#description"> +<ANCHOR id="options" href="NetworkManager/nm-online.html#options"> +<ANCHOR id="exit_status" href="NetworkManager/nm-online.html#exit_status"> +<ANCHOR id="see_also" href="NetworkManager/nm-online.html#see_also"> +<ANCHOR id="NetworkManager.conf" href="NetworkManager/NetworkManager.conf.html"> +<ANCHOR id="device-spec" href="NetworkManager/NetworkManager.conf.html#device-spec"> +<ANCHOR id="nm-settings" href="NetworkManager/nm-settings.html"> +<ANCHOR id="description" href="NetworkManager/nm-settings.html#description"> +<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings.html#secrets-flags"> +<ANCHOR id="files" href="NetworkManager/nm-settings.html#files"> +<ANCHOR id="see_also" href="NetworkManager/nm-settings.html#see_also"> +<ANCHOR id="nm-settings-keyfile" href="NetworkManager/nm-settings-keyfile.html"> +<ANCHOR id="description" href="NetworkManager/nm-settings-keyfile.html#description"> +<ANCHOR id="file_format" href="NetworkManager/nm-settings-keyfile.html#file_format"> +<ANCHOR id="details" href="NetworkManager/nm-settings-keyfile.html#details"> +<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-keyfile.html#secrets-flags"> +<ANCHOR id="files" href="NetworkManager/nm-settings-keyfile.html#files"> +<ANCHOR id="see_also" href="NetworkManager/nm-settings-keyfile.html#see_also"> +<ANCHOR id="nm-settings-ifcfg-rh" href="NetworkManager/nm-settings-ifcfg-rh.html"> +<ANCHOR id="description" href="NetworkManager/nm-settings-ifcfg-rh.html#description"> +<ANCHOR id="file_format" href="NetworkManager/nm-settings-ifcfg-rh.html#file_format"> +<ANCHOR id="differences_against_initscripts" href="NetworkManager/nm-settings-ifcfg-rh.html#differences_against_initscripts"> +<ANCHOR id="details" href="NetworkManager/nm-settings-ifcfg-rh.html#details"> +<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-ifcfg-rh.html#secrets-flags"> +<ANCHOR id="files" href="NetworkManager/nm-settings-ifcfg-rh.html#files"> +<ANCHOR id="see_also" href="NetworkManager/nm-settings-ifcfg-rh.html#see_also"> +<ANCHOR id="nmcli-examples" href="NetworkManager/nmcli-examples.html"> +<ANCHOR id="NetworkManager" href="NetworkManager/NetworkManager.html"> <ANCHOR id="gdbus-org.freedesktop.NetworkManager" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.html"> <ANCHOR id="gdbus-interface-org-freedesktop-NetworkManager" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.html#gdbus-interface-org-freedesktop-NetworkManager"> <ANCHOR id="gdbus-methods-org.freedesktop.NetworkManager" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.html#gdbus-methods-org.freedesktop.NetworkManager"> @@ -422,55 +474,3 @@ <ANCHOR id="gdbus-method-org-freedesktop-NetworkManager-SecretAgent.CancelGetSecrets" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.CancelGetSecrets"> <ANCHOR id="gdbus-method-org-freedesktop-NetworkManager-SecretAgent.SaveSecrets" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.SaveSecrets"> <ANCHOR id="gdbus-method-org-freedesktop-NetworkManager-SecretAgent.DeleteSecrets" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.DeleteSecrets"> -<ANCHOR id="nmcli" href="NetworkManager/nmcli.html"> -<ANCHOR id="synopsis" href="NetworkManager/nmcli.html#synopsis"> -<ANCHOR id="description" href="NetworkManager/nmcli.html#description"> -<ANCHOR id="options" href="NetworkManager/nmcli.html#options"> -<ANCHOR id="general" href="NetworkManager/nmcli.html#general"> -<ANCHOR id="networking" href="NetworkManager/nmcli.html#networking"> -<ANCHOR id="radio" href="NetworkManager/nmcli.html#radio"> -<ANCHOR id="monitor" href="NetworkManager/nmcli.html#monitor"> -<ANCHOR id="connection" href="NetworkManager/nmcli.html#connection"> -<ANCHOR id="device" href="NetworkManager/nmcli.html#device"> -<ANCHOR id="agent" href="NetworkManager/nmcli.html#agent"> -<ANCHOR id="environment_variables" href="NetworkManager/nmcli.html#environment_variables"> -<ANCHOR id="internationalization_notes" href="NetworkManager/nmcli.html#internationalization_notes"> -<ANCHOR id="exit_status" href="NetworkManager/nmcli.html#exit_status"> -<ANCHOR id="examples" href="NetworkManager/nmcli.html#examples"> -<ANCHOR id="notes" href="NetworkManager/nmcli.html#notes"> -<ANCHOR id="bugs" href="NetworkManager/nmcli.html#bugs"> -<ANCHOR id="see_also" href="NetworkManager/nmcli.html#see_also"> -<ANCHOR id="nmtui" href="NetworkManager/nmtui.html"> -<ANCHOR id="synopsis" href="NetworkManager/nmtui.html#synopsis"> -<ANCHOR id="description" href="NetworkManager/nmtui.html#description"> -<ANCHOR id="see_also" href="NetworkManager/nmtui.html#see_also"> -<ANCHOR id="nm-online" href="NetworkManager/nm-online.html"> -<ANCHOR id="synopsis" href="NetworkManager/nm-online.html#synopsis"> -<ANCHOR id="description" href="NetworkManager/nm-online.html#description"> -<ANCHOR id="options" href="NetworkManager/nm-online.html#options"> -<ANCHOR id="exit_status" href="NetworkManager/nm-online.html#exit_status"> -<ANCHOR id="see_also" href="NetworkManager/nm-online.html#see_also"> -<ANCHOR id="NetworkManager" href="NetworkManager/NetworkManager.html"> -<ANCHOR id="NetworkManager.conf" href="NetworkManager/NetworkManager.conf.html"> -<ANCHOR id="device-spec" href="NetworkManager/NetworkManager.conf.html#device-spec"> -<ANCHOR id="nmcli-examples" href="NetworkManager/nmcli-examples.html"> -<ANCHOR id="nm-settings" href="NetworkManager/nm-settings.html"> -<ANCHOR id="description" href="NetworkManager/nm-settings.html#description"> -<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings.html#secrets-flags"> -<ANCHOR id="files" href="NetworkManager/nm-settings.html#files"> -<ANCHOR id="see_also" href="NetworkManager/nm-settings.html#see_also"> -<ANCHOR id="nm-settings-keyfile" href="NetworkManager/nm-settings-keyfile.html"> -<ANCHOR id="description" href="NetworkManager/nm-settings-keyfile.html#description"> -<ANCHOR id="file_format" href="NetworkManager/nm-settings-keyfile.html#file_format"> -<ANCHOR id="details" href="NetworkManager/nm-settings-keyfile.html#details"> -<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-keyfile.html#secrets-flags"> -<ANCHOR id="files" href="NetworkManager/nm-settings-keyfile.html#files"> -<ANCHOR id="see_also" href="NetworkManager/nm-settings-keyfile.html#see_also"> -<ANCHOR id="nm-settings-ifcfg-rh" href="NetworkManager/nm-settings-ifcfg-rh.html"> -<ANCHOR id="description" href="NetworkManager/nm-settings-ifcfg-rh.html#description"> -<ANCHOR id="file_format" href="NetworkManager/nm-settings-ifcfg-rh.html#file_format"> -<ANCHOR id="differences_against_initscripts" href="NetworkManager/nm-settings-ifcfg-rh.html#differences_against_initscripts"> -<ANCHOR id="details" href="NetworkManager/nm-settings-ifcfg-rh.html#details"> -<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-ifcfg-rh.html#secrets-flags"> -<ANCHOR id="files" href="NetworkManager/nm-settings-ifcfg-rh.html#files"> -<ANCHOR id="see_also" href="NetworkManager/nm-settings-ifcfg-rh.html#see_also"> diff --git a/docs/api/html/ix01.html b/docs/api/html/ix01.html index f8e1c9d6..1747da1c 100644 --- a/docs/api/html/ix01.html +++ b/docs/api/html/ix01.html @@ -2,11 +2,11 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>Index: NetworkManager D-Bus API Reference Manual</title> +<title>Index: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="prev" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="index.html" title="NetworkManager Reference Manual"> +<link rel="prev" href="secrets-flags.html" title="Secret flag types"> <link rel="next" href="license.html" title="Appendix A. License"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> @@ -16,7 +16,7 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> -<td><a accesskey="p" href="nm-settings-ifcfg-rh.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="secrets-flags.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="license.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="index"> diff --git a/docs/api/html/license.html b/docs/api/html/license.html index 85292624..d7ed9e1c 100644 --- a/docs/api/html/license.html +++ b/docs/api/html/license.html @@ -2,10 +2,10 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>Appendix A. License: NetworkManager D-Bus API Reference Manual</title> +<title>Appendix A. License: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="index.html" title="NetworkManager Reference Manual"> <link rel="prev" href="ix01.html" title="Index"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> diff --git a/docs/api/html/manpages.html b/docs/api/html/manpages.html index 36b8e931..a81ed762 100644 --- a/docs/api/html/manpages.html +++ b/docs/api/html/manpages.html @@ -2,11 +2,11 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>UNIX Manual Pages: NetworkManager D-Bus API Reference Manual</title> +<title>Manual Pages: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="prev" href="secrets-flags.html" title="Secret flag types"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="index.html" title="NetworkManager Reference Manual"> +<link rel="prev" href="index.html" title="NetworkManager Reference Manual"> <link rel="next" href="nmcli.html" title="nmcli"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> @@ -16,12 +16,12 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> -<td><a accesskey="p" href="secrets-flags.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="nmcli.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> <div class="titlepage"><div><div><h1 class="title"> -<a name="manpages"></a>UNIX Manual Pages</h1></div></div></div> +<a name="manpages"></a>Manual Pages</h1></div></div></div> <div class="toc"><dl class="toc"> <dt> <span class="refentrytitle"><a href="nmcli.html">nmcli</a></span><span class="refpurpose"> — command-line tool for controlling NetworkManager</span> @@ -33,15 +33,9 @@ <span class="refentrytitle"><a href="nm-online.html">nm-online</a></span><span class="refpurpose"> — ask NetworkManager whether the network is connected</span> </dt> <dt> -<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span> -</dt> -<dt> <span class="refentrytitle"><a href="NetworkManager.conf.html">NetworkManager.conf</a></span><span class="refpurpose"> — NetworkManager configuration file</span> </dt> <dt> -<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span> -</dt> -<dt> <span class="refentrytitle"><a href="nm-settings.html">nm-settings</a></span><span class="refpurpose"> — Description of settings and properties of NetworkManager connection profiles</span> </dt> <dt> @@ -50,6 +44,12 @@ <dt> <span class="refentrytitle"><a href="nm-settings-ifcfg-rh.html">nm-settings-ifcfg-rh</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>ifcfg-rh</em></span> settings plugin</span> </dt> +<dt> +<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span> +</dt> +<dt> +<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span> +</dt> </dl></div> </div> <div class="footer"> diff --git a/docs/api/html/nm-online.html b/docs/api/html/nm-online.html index 90d3ecb5..d2181325 100644 --- a/docs/api/html/nm-online.html +++ b/docs/api/html/nm-online.html @@ -2,12 +2,12 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nm-online: NetworkManager D-Bus API Reference Manual</title> +<title>nm-online: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> <link rel="prev" href="nmtui.html" title="nmtui"> -<link rel="next" href="NetworkManager.html" title="NetworkManager"> +<link rel="next" href="NetworkManager.conf.html" title="NetworkManager.conf"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -17,7 +17,7 @@ <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="nmtui.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="NetworkManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="NetworkManager.conf.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="nm-online"></a><div class="titlepage"></div> diff --git a/docs/api/html/nm-settings-ifcfg-rh.html b/docs/api/html/nm-settings-ifcfg-rh.html index 7323d808..338cd158 100644 --- a/docs/api/html/nm-settings-ifcfg-rh.html +++ b/docs/api/html/nm-settings-ifcfg-rh.html @@ -2,12 +2,12 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nm-settings-ifcfg-rh: NetworkManager D-Bus API Reference Manual</title> +<title>nm-settings-ifcfg-rh: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> <link rel="prev" href="nm-settings-keyfile.html" title="nm-settings-keyfile"> -<link rel="next" href="ix01.html" title="Index"> +<link rel="next" href="nmcli-examples.html" title="nmcli-examples"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -17,7 +17,7 @@ <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="nm-settings-keyfile.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="ix01.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="nmcli-examples.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="nm-settings-ifcfg-rh"></a><div class="titlepage"></div> @@ -249,7 +249,7 @@ DEVICETYPE=TeamPort are NetworkManager specific extensions not understood by traditional initscripts. </p> <div class="table"> -<a name="id-1.4.10.7.3"></a><p class="title"><b>Table 69. 802-1x setting</b></p> +<a name="id-1.2.8.7.3"></a><p class="title"><b>Table 39. 802-1x setting</b></p> <div class="table-contents"><table summary="802-1x setting" border="1"> <colgroup> <col> @@ -444,7 +444,7 @@ Example: </strong></span>IEEE_8021X_INNER_CLIENT_CERT=/home/joe/mycert.crt</td> <td align="left">IEEE_8021X_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span> </td> <td align="left"> </td> -<td align="left">Password flags for IEEE_8021X_PASSWORD password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td> +<td align="left">Password flags for IEEE_8021X_PASSWORD password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td> </tr> <tr> <td align="left">password-raw</td> @@ -479,7 +479,7 @@ Example: </strong></span>IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12</td> <td align="left">IEEE_8021X_PRIVATE_KEY_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span> </td> <td align="left"> </td> -<td align="left">Password flags for IEEE_8021X_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td> +<td align="left">Password flags for IEEE_8021X_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td> </tr> <tr> <td align="left">phase2-private-key</td> @@ -500,7 +500,7 @@ Example: </strong></span>IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12</td> <td align="left">IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span> </td> <td align="left"> </td> -<td align="left">Password flags for IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td> +<td align="left">Password flags for IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td> </tr> <tr> <td align="left">pin</td> @@ -524,7 +524,7 @@ Example: </strong></span>IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.4"></a><p class="title"><b>Table 70. bond setting</b></p> +<a name="id-1.2.8.7.4"></a><p class="title"><b>Table 40. bond setting</b></p> <div class="table-contents"><table summary="bond setting" border="1"> <colgroup> <col> @@ -549,7 +549,7 @@ Example: </strong></span>BONDING_OPTS="miimon=100 mode=broadcast"</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.5"></a><p class="title"><b>Table 71. bridge-port setting</b></p> +<a name="id-1.2.8.7.5"></a><p class="title"><b>Table 41. bridge-port setting</b></p> <div class="table-contents"><table summary="bridge-port setting" border="1"> <colgroup> <col> @@ -590,7 +590,7 @@ Allowed values: </strong></span>1 - 65535</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.6"></a><p class="title"><b>Table 72. bridge setting</b></p> +<a name="id-1.2.8.7.6"></a><p class="title"><b>Table 42. bridge setting</b></p> <div class="table-contents"><table summary="bridge setting" border="1"> <colgroup> <col> @@ -670,7 +670,7 @@ Allowed values: </strong></span>0 or 1</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.7"></a><p class="title"><b>Table 73. connection setting</b></p> +<a name="id-1.2.8.7.7"></a><p class="title"><b>Table 43. connection setting</b></p> <div class="table-contents"><table summary="connection setting" border="1"> <colgroup> <col> @@ -809,7 +809,7 @@ Allowed values: </strong></span>boolean value or 'rx'</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.8"></a><p class="title"><b>Table 74. dcb setting</b></p> +<a name="id-1.2.8.7.8"></a><p class="title"><b>Table 44. dcb setting</b></p> <div class="table-contents"><table summary="dcb setting" border="1"> <colgroup> <col> @@ -944,7 +944,7 @@ Example: </strong></span>DCB_PG_UP2TC=01623701</td> used explicitly to enable DCB so that the rest of the DCB_* variables can apply. </p> <div class="table"> -<a name="id-1.4.10.7.10"></a><p class="title"><b>Table 75. infiniband setting</b></p> +<a name="id-1.2.8.7.10"></a><p class="title"><b>Table 45. infiniband setting</b></p> <div class="table-contents"><table summary="infiniband setting" border="1"> <colgroup> <col> @@ -999,7 +999,7 @@ Example: </strong></span>PHYSDEV=ib0</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.11"></a><p class="title"><b>Table 76. ip-tunnel setting</b></p> +<a name="id-1.2.8.7.11"></a><p class="title"><b>Table 46. ip-tunnel setting</b></p> <div class="table-contents"><table summary="ip-tunnel setting" border="1"> <colgroup> <col> @@ -1017,7 +1017,7 @@ Example: </strong></span>PHYSDEV=ib0</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.12"></a><p class="title"><b>Table 77. ipv4 setting</b></p> +<a name="id-1.2.8.7.12"></a><p class="title"><b>Table 47. ipv4 setting</b></p> <div class="table-contents"><table summary="ipv4 setting" border="1"> <colgroup> <col> @@ -1160,7 +1160,7 @@ Example: </strong></span>DHCP_FQDN=foo.bar.com</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.13"></a><p class="title"><b>Table 78. ipv6 setting</b></p> +<a name="id-1.2.8.7.13"></a><p class="title"><b>Table 48. ipv6 setting</b></p> <div class="table-contents"><table summary="ipv6 setting" border="1"> <colgroup> <col> @@ -1280,7 +1280,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.14"></a><p class="title"><b>Table 79. macvlan setting</b></p> +<a name="id-1.2.8.7.14"></a><p class="title"><b>Table 49. macvlan setting</b></p> <div class="table-contents"><table summary="macvlan setting" border="1"> <colgroup> <col> @@ -1298,7 +1298,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.15"></a><p class="title"><b>Table 80. team-port setting</b></p> +<a name="id-1.2.8.7.15"></a><p class="title"><b>Table 50. team-port setting</b></p> <div class="table-contents"><table summary="team-port setting" border="1"> <colgroup> <col> @@ -1321,7 +1321,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.16"></a><p class="title"><b>Table 81. team setting</b></p> +<a name="id-1.2.8.7.16"></a><p class="title"><b>Table 51. team setting</b></p> <div class="table-contents"><table summary="team setting" border="1"> <colgroup> <col> @@ -1344,7 +1344,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.17"></a><p class="title"><b>Table 82. tun setting</b></p> +<a name="id-1.2.8.7.17"></a><p class="title"><b>Table 52. tun setting</b></p> <div class="table-contents"><table summary="tun setting" border="1"> <colgroup> <col> @@ -1362,7 +1362,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.18"></a><p class="title"><b>Table 83. vlan setting</b></p> +<a name="id-1.2.8.7.18"></a><p class="title"><b>Table 53. vlan setting</b></p> <div class="table-contents"><table summary="vlan setting" border="1"> <colgroup> <col> @@ -1425,7 +1425,7 @@ Example: </strong></span>PHYSDEV=eth0, VLAN_ID=12; or DEVICE=eth0.12</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.19"></a><p class="title"><b>Table 84. vxlan setting</b></p> +<a name="id-1.2.8.7.19"></a><p class="title"><b>Table 54. vxlan setting</b></p> <div class="table-contents"><table summary="vxlan setting" border="1"> <colgroup> <col> @@ -1443,7 +1443,7 @@ Example: </strong></span>PHYSDEV=eth0, VLAN_ID=12; or DEVICE=eth0.12</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.20"></a><p class="title"><b>Table 85. 802-3-ethernet setting</b></p> +<a name="id-1.2.8.7.20"></a><p class="title"><b>Table 55. 802-3-ethernet setting</b></p> <div class="table-contents"><table summary="802-3-ethernet setting" border="1"> <colgroup> <col> @@ -1537,7 +1537,7 @@ Allowed values: </strong></span>"qeth", "lcs" or "ctc"</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.21"></a><p class="title"><b>Table 86. 802-11-wireless-security setting</b></p> +<a name="id-1.2.8.7.21"></a><p class="title"><b>Table 56. 802-11-wireless-security setting</b></p> <div class="table-contents"><table summary="802-11-wireless-security setting" border="1"> <colgroup> <col> @@ -1645,7 +1645,7 @@ Allowed values: </strong></span>CCMP, TKIP, WEP40, WEP104</td> <td align="left">WEP_KEY_FLAGS<span class="emphasis"><em>(+)</em></span> </td> <td align="left"> </td> -<td align="left">Password flags for KEY<i>, KEY_PASSPHRASE<i> password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td> +<td align="left">Password flags for KEY<i>, KEY_PASSPHRASE<i> password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td> </tr> <tr> <td align="left">psk</td> @@ -1658,7 +1658,7 @@ Allowed values: </strong></span>CCMP, TKIP, WEP40, WEP104</td> <td align="left">WPA_PSK_FLAGS<span class="emphasis"><em>(+)</em></span> </td> <td align="left"> </td> -<td align="left">Password flags for WPA_PSK_FLAGS. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)<span class="bold"><strong> +<td align="left">Password flags for WPA_PSK_FLAGS. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)<span class="bold"><strong> Example: </strong></span>WPA_PSK_FLAGS=user</td> </tr> @@ -1674,7 +1674,7 @@ Example: </strong></span>WPA_PSK_FLAGS=user</td> <td align="left">IEEE_8021X_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span> </td> <td align="left"> </td> -<td align="left">Password flags for IEEE_8021X_PASSWORD_FLAGS. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td> +<td align="left">Password flags for IEEE_8021X_PASSWORD_FLAGS. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td> </tr> <tr> <td align="left">wep-key-type</td> @@ -1689,7 +1689,7 @@ Example: </strong></span>KEY1=s:ahoj, KEY1=0a1c45bc02, KEY_PASSPHRASE1=mysuperse </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.10.7.22"></a><p class="title"><b>Table 87. 802-11-wireless setting</b></p> +<a name="id-1.2.8.7.22"></a><p class="title"><b>Table 57. 802-11-wireless setting</b></p> <div class="table-contents"><table summary="802-11-wireless setting" border="1"> <colgroup> <col> diff --git a/docs/api/html/nm-settings-keyfile.html b/docs/api/html/nm-settings-keyfile.html index 428f8bd2..24188009 100644 --- a/docs/api/html/nm-settings-keyfile.html +++ b/docs/api/html/nm-settings-keyfile.html @@ -2,10 +2,10 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nm-settings-keyfile: NetworkManager D-Bus API Reference Manual</title> +<title>nm-settings-keyfile: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> <link rel="prev" href="nm-settings.html" title="nm-settings"> <link rel="next" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> @@ -188,7 +188,7 @@ id=4 <tr><td>802-11-wireless-security = wifi-security</td></tr> </table> <div class="table"> -<a name="id-1.4.9.6.4"></a><p class="title"><b>Table 61. bridge setting (section)</b></p> +<a name="id-1.2.7.6.4"></a><p class="title"><b>Table 31. bridge setting (section)</b></p> <div class="table-contents"><table summary="bridge setting (section)" border="1"> <colgroup> <col> @@ -213,7 +213,7 @@ Example: </strong></span>mac-address=00:22:68:12:79:A2 mac-address=0;34;104;18;1 </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.5"></a><p class="title"><b>Table 62. infiniband setting (section)</b></p> +<a name="id-1.2.7.6.5"></a><p class="title"><b>Table 32. infiniband setting (section)</b></p> <div class="table-contents"><table summary="infiniband setting (section)" border="1"> <colgroup> <col> @@ -238,7 +238,7 @@ Example: </strong></span>mac-address= 80:00:00:6d:fe:80:00:00:00:00:00:00:00:02: </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.6"></a><p class="title"><b>Table 63. ipv4 setting (section)</b></p> +<a name="id-1.2.7.6.6"></a><p class="title"><b>Table 33. ipv4 setting (section)</b></p> <div class="table-contents"><table summary="ipv4 setting (section)" border="1"> <colgroup> <col> @@ -289,7 +289,7 @@ Example: </strong></span>route1=8.8.8.0/24,10.1.1.1,77 route2=7.7.0.0/16</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.7"></a><p class="title"><b>Table 64. ipv6 setting (section)</b></p> +<a name="id-1.2.7.6.7"></a><p class="title"><b>Table 34. ipv6 setting (section)</b></p> <div class="table-contents"><table summary="ipv6 setting (section)" border="1"> <colgroup> <col> @@ -340,7 +340,7 @@ Example: </strong></span>route1=2001:4860:4860::/64,2620:52:0:2219:222:68ff:fe11 </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.8"></a><p class="title"><b>Table 65. serial setting (section)</b></p> +<a name="id-1.2.7.6.8"></a><p class="title"><b>Table 35. serial setting (section)</b></p> <div class="table-contents"><table summary="serial setting (section)" border="1"> <colgroup> <col> @@ -365,7 +365,7 @@ Example: </strong></span>parity=n</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.9"></a><p class="title"><b>Table 66. vpn setting (section)</b></p> +<a name="id-1.2.7.6.9"></a><p class="title"><b>Table 36. vpn setting (section)</b></p> <div class="table-contents"><table summary="vpn setting (section)" border="1"> <colgroup> <col> @@ -400,7 +400,7 @@ Example: </strong></span>password=Popocatepetl</td> </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.10"></a><p class="title"><b>Table 67. 802-3-ethernet setting (section)</b></p> +<a name="id-1.2.7.6.10"></a><p class="title"><b>Table 37. 802-3-ethernet setting (section)</b></p> <div class="table-contents"><table summary="802-3-ethernet setting (section)" border="1"> <colgroup> <col> @@ -439,7 +439,7 @@ Example: </strong></span>mac-address-blacklist= 00:22:68:12:79:A6;00:22:68:12:79 </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.9.6.11"></a><p class="title"><b>Table 68. 802-11-wireless setting (section)</b></p> +<a name="id-1.2.7.6.11"></a><p class="title"><b>Table 38. 802-11-wireless setting (section)</b></p> <div class="table-contents"><table summary="802-11-wireless setting (section)" border="1"> <colgroup> <col> diff --git a/docs/api/html/nm-settings.html b/docs/api/html/nm-settings.html index 3a540262..9077d8e3 100644 --- a/docs/api/html/nm-settings.html +++ b/docs/api/html/nm-settings.html @@ -2,11 +2,11 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nm-settings: NetworkManager D-Bus API Reference Manual</title> +<title>nm-settings: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> -<link rel="prev" href="nmcli-examples.html" title="nmcli-examples"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> +<link rel="prev" href="NetworkManager.conf.html" title="NetworkManager.conf"> <link rel="next" href="nm-settings-keyfile.html" title="nm-settings-keyfile"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> @@ -16,7 +16,7 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> -<td><a accesskey="p" href="nmcli-examples.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="NetworkManager.conf.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="nm-settings-keyfile.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> @@ -94,7 +94,7 @@ </table> </div> <div class="table"> -<a name="id-1.4.8.4.3"></a><p class="title"><b>Table 31. 802-1x setting</b></p> +<a name="id-1.2.6.4.3"></a><p class="title"><b>Table 1. 802-1x setting</b></p> <div class="table-contents"><table summary="802-1x setting" border="1"> <colgroup> <col> @@ -179,7 +179,7 @@ <td align="left">password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">password-raw</td> @@ -191,7 +191,7 @@ <td align="left">password-raw-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "password-raw" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "password-raw" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">phase1-fast-provisioning</td> @@ -269,7 +269,7 @@ <td align="left">phase2-private-key-password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "phase2-private-key-password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "phase2-private-key-password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">phase2-subject-match</td> @@ -287,7 +287,7 @@ <td align="left">pin-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">private-key</td> @@ -305,7 +305,7 @@ <td align="left">private-key-password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "private-key-password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "private-key-password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">subject-match</td> @@ -323,7 +323,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.4"></a><p class="title"><b>Table 32. adsl setting</b></p> +<a name="id-1.2.6.4.4"></a><p class="title"><b>Table 2. adsl setting</b></p> <div class="table-contents"><table summary="adsl setting" border="1"> <colgroup> <col> @@ -360,7 +360,7 @@ <td align="left">password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">protocol</td> @@ -390,7 +390,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.5"></a><p class="title"><b>Table 33. bluetooth setting</b></p> +<a name="id-1.2.6.4.5"></a><p class="title"><b>Table 3. bluetooth setting</b></p> <div class="table-contents"><table summary="bluetooth setting" border="1"> <colgroup> <col> @@ -427,7 +427,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.6"></a><p class="title"><b>Table 34. bond setting</b></p> +<a name="id-1.2.6.4.6"></a><p class="title"><b>Table 4. bond setting</b></p> <div class="table-contents"><table summary="bond setting" border="1"> <colgroup> <col> @@ -464,7 +464,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.7"></a><p class="title"><b>Table 35. bridge setting</b></p> +<a name="id-1.2.6.4.7"></a><p class="title"><b>Table 5. bridge setting</b></p> <div class="table-contents"><table summary="bridge setting" border="1"> <colgroup> <col> @@ -543,7 +543,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.8"></a><p class="title"><b>Table 36. bridge-port setting</b></p> +<a name="id-1.2.6.4.8"></a><p class="title"><b>Table 6. bridge-port setting</b></p> <div class="table-contents"><table summary="bridge-port setting" border="1"> <colgroup> <col> @@ -586,7 +586,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.9"></a><p class="title"><b>Table 37. cdma setting</b></p> +<a name="id-1.2.6.4.9"></a><p class="title"><b>Table 7. cdma setting</b></p> <div class="table-contents"><table summary="cdma setting" border="1"> <colgroup> <col> @@ -623,7 +623,7 @@ <td align="left">password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">username</td> @@ -635,7 +635,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.10"></a><p class="title"><b>Table 38. connection setting</b></p> +<a name="id-1.2.6.4.10"></a><p class="title"><b>Table 8. connection setting</b></p> <div class="table-contents"><table summary="connection setting" border="1"> <colgroup> <col> @@ -762,7 +762,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.11"></a><p class="title"><b>Table 39. dcb setting</b></p> +<a name="id-1.2.6.4.11"></a><p class="title"><b>Table 9. dcb setting</b></p> <div class="table-contents"><table summary="dcb setting" border="1"> <colgroup> <col> @@ -877,7 +877,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.12"></a><p class="title"><b>Table 40. generic setting</b></p> +<a name="id-1.2.6.4.12"></a><p class="title"><b>Table 10. generic setting</b></p> <div class="table-contents"><table summary="generic setting" border="1"> <colgroup> <col> @@ -900,7 +900,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.13"></a><p class="title"><b>Table 41. gsm setting</b></p> +<a name="id-1.2.6.4.13"></a><p class="title"><b>Table 11. gsm setting</b></p> <div class="table-contents"><table summary="gsm setting" border="1"> <colgroup> <col> @@ -961,7 +961,7 @@ <td align="left">password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">pin</td> @@ -973,7 +973,7 @@ <td align="left">pin-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">sim-id</td> @@ -997,7 +997,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.14"></a><p class="title"><b>Table 42. infiniband setting</b></p> +<a name="id-1.2.6.4.14"></a><p class="title"><b>Table 12. infiniband setting</b></p> <div class="table-contents"><table summary="infiniband setting" border="1"> <colgroup> <col> @@ -1052,7 +1052,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.15"></a><p class="title"><b>Table 43. ipv4 setting</b></p> +<a name="id-1.2.6.4.15"></a><p class="title"><b>Table 13. ipv4 setting</b></p> <div class="table-contents"><table summary="ipv4 setting" border="1"> <colgroup> <col> @@ -1197,7 +1197,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.16"></a><p class="title"><b>Table 44. ipv6 setting</b></p> +<a name="id-1.2.6.4.16"></a><p class="title"><b>Table 14. ipv6 setting</b></p> <div class="table-contents"><table summary="ipv6 setting" border="1"> <colgroup> <col> @@ -1342,7 +1342,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.17"></a><p class="title"><b>Table 45. ip-tunnel setting</b></p> +<a name="id-1.2.6.4.17"></a><p class="title"><b>Table 15. ip-tunnel setting</b></p> <div class="table-contents"><table summary="ip-tunnel setting" border="1"> <colgroup> <col> @@ -1439,7 +1439,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.18"></a><p class="title"><b>Table 46. macvlan setting</b></p> +<a name="id-1.2.6.4.18"></a><p class="title"><b>Table 16. macvlan setting</b></p> <div class="table-contents"><table summary="macvlan setting" border="1"> <colgroup> <col> @@ -1488,7 +1488,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.19"></a><p class="title"><b>Table 47. 802-11-olpc-mesh setting</b></p> +<a name="id-1.2.6.4.19"></a><p class="title"><b>Table 17. 802-11-olpc-mesh setting</b></p> <div class="table-contents"><table summary="802-11-olpc-mesh setting" border="1"> <colgroup> <col> @@ -1531,7 +1531,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.20"></a><p class="title"><b>Table 48. ppp setting</b></p> +<a name="id-1.2.6.4.20"></a><p class="title"><b>Table 18. ppp setting</b></p> <div class="table-contents"><table summary="ppp setting" border="1"> <colgroup> <col> @@ -1664,7 +1664,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.21"></a><p class="title"><b>Table 49. pppoe setting</b></p> +<a name="id-1.2.6.4.21"></a><p class="title"><b>Table 19. pppoe setting</b></p> <div class="table-contents"><table summary="pppoe setting" border="1"> <colgroup> <col> @@ -1695,7 +1695,7 @@ <td align="left">password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">service</td> @@ -1713,7 +1713,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.22"></a><p class="title"><b>Table 50. serial setting</b></p> +<a name="id-1.2.6.4.22"></a><p class="title"><b>Table 20. serial setting</b></p> <div class="table-contents"><table summary="serial setting" border="1"> <colgroup> <col> @@ -1768,7 +1768,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.23"></a><p class="title"><b>Table 51. team setting</b></p> +<a name="id-1.2.6.4.23"></a><p class="title"><b>Table 21. team setting</b></p> <div class="table-contents"><table summary="team setting" border="1"> <colgroup> <col> @@ -1805,7 +1805,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.24"></a><p class="title"><b>Table 52. team-port setting</b></p> +<a name="id-1.2.6.4.24"></a><p class="title"><b>Table 22. team-port setting</b></p> <div class="table-contents"><table summary="team-port setting" border="1"> <colgroup> <col> @@ -1836,7 +1836,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.25"></a><p class="title"><b>Table 53. tun setting</b></p> +<a name="id-1.2.6.4.25"></a><p class="title"><b>Table 23. tun setting</b></p> <div class="table-contents"><table summary="tun setting" border="1"> <colgroup> <col> @@ -1897,7 +1897,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.26"></a><p class="title"><b>Table 54. vlan setting</b></p> +<a name="id-1.2.6.4.26"></a><p class="title"><b>Table 24. vlan setting</b></p> <div class="table-contents"><table summary="vlan setting" border="1"> <colgroup> <col> @@ -1958,7 +1958,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.27"></a><p class="title"><b>Table 55. vpn setting</b></p> +<a name="id-1.2.6.4.27"></a><p class="title"><b>Table 25. vpn setting</b></p> <div class="table-contents"><table summary="vpn setting" border="1"> <colgroup> <col> @@ -2019,7 +2019,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.28"></a><p class="title"><b>Table 56. vxlan setting</b></p> +<a name="id-1.2.6.4.28"></a><p class="title"><b>Table 26. vxlan setting</b></p> <div class="table-contents"><table summary="vxlan setting" border="1"> <colgroup> <col> @@ -2140,7 +2140,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.29"></a><p class="title"><b>Table 57. wimax setting</b></p> +<a name="id-1.2.6.4.29"></a><p class="title"><b>Table 27. wimax setting</b></p> <div class="table-contents"><table summary="wimax setting" border="1"> <colgroup> <col> @@ -2177,7 +2177,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.30"></a><p class="title"><b>Table 58. 802-3-ethernet setting</b></p> +<a name="id-1.2.6.4.30"></a><p class="title"><b>Table 28. 802-3-ethernet setting</b></p> <div class="table-contents"><table summary="802-3-ethernet setting" border="1"> <colgroup> <col> @@ -2280,7 +2280,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.31"></a><p class="title"><b>Table 59. 802-11-wireless setting</b></p> +<a name="id-1.2.6.4.31"></a><p class="title"><b>Table 29. 802-11-wireless setting</b></p> <div class="table-contents"><table summary="802-11-wireless setting" border="1"> <colgroup> <col> @@ -2401,7 +2401,7 @@ </table></div> </div> <br class="table-break"><div class="table"> -<a name="id-1.4.8.4.32"></a><p class="title"><b>Table 60. 802-11-wireless-security setting</b></p> +<a name="id-1.2.6.4.32"></a><p class="title"><b>Table 30. 802-11-wireless-security setting</b></p> <div class="table-contents"><table summary="802-11-wireless-security setting" border="1"> <colgroup> <col> @@ -2444,7 +2444,7 @@ <td align="left">leap-password-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "leap-password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "leap-password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">leap-username</td> @@ -2480,13 +2480,13 @@ <td align="left">psk-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "psk" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "psk" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">wep-key-flags</td> <td align="left">NMSettingSecretFlags (uint32)</td> <td align="left"> </td> -<td>Flags indicating how to handle the "wep-key0", "wep-key1", "wep-key2", and "wep-key3" properties. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td> +<td>Flags indicating how to handle the "wep-key0", "wep-key1", "wep-key2", and "wep-key3" properties. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td> </tr> <tr> <td align="left">wep-key-type</td> diff --git a/docs/api/html/nmcli-examples.html b/docs/api/html/nmcli-examples.html index e903cd68..3e9d0b52 100644 --- a/docs/api/html/nmcli-examples.html +++ b/docs/api/html/nmcli-examples.html @@ -2,12 +2,12 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nmcli-examples: NetworkManager D-Bus API Reference Manual</title> +<title>nmcli-examples: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> -<link rel="prev" href="NetworkManager.conf.html" title="NetworkManager.conf"> -<link rel="next" href="nm-settings.html" title="nm-settings"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> +<link rel="prev" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh"> +<link rel="next" href="NetworkManager.html" title="NetworkManager"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -16,8 +16,8 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> -<td><a accesskey="p" href="NetworkManager.conf.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="nm-settings.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="p" href="nm-settings-ifcfg-rh.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="n" href="NetworkManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="nmcli-examples"></a><div class="titlepage"></div> @@ -30,10 +30,10 @@ </tr></table></div> <div class="refsynopsisdiv"> <h2>Synopsis</h2> -<div class="cmdsynopsis"><p><code class="command">nmcli [OPTIONS...]</code> </p></div> +<div class="cmdsynopsis"><p><code class="command">nmcli</code> [OPTIONS...]</p></div> </div> <div class="refsect1"> -<a name="id-1.4.7.5"></a><h2>Description</h2> +<a name="id-1.2.9.5"></a><h2>Description</h2> <p> <span class="emphasis"><em>nmcli</em></span> is a command-line client for NetworkManager. It allows controlling NetworkManager and reporting its status. For more information @@ -44,14 +44,13 @@ The purpose of this manual page is to provide you with various examples and usage scenarios of <span class="emphasis"><em>nmcli</em></span>. </p> -<p>Note: this page has "work-in-progress" status.</p> </div> <div class="refsect1"> -<a name="id-1.4.7.6"></a><h2>Examples</h2> +<a name="id-1.2.9.6"></a><h2>Examples</h2> <div class="example"> -<a name="id-1.4.7.6.2"></a><p class="title"><b>Example 1. Listing available Wi-Fi APs</b></p> +<a name="id-1.2.9.6.2"></a><p class="title"><b>Example 1. Listing available Wi-Fi APs</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli device wifi list</code></strong> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli device wifi list</code></strong> * SSID MODE CHAN RATE SIGNAL BARS SECURITY netdatacomm_local Infra 6 54 Mbit/s 37 ▂▄__ WEP * F1 Infra 11 54 Mbit/s 98 ▂▄▆█ WPA1 @@ -72,9 +71,9 @@ </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.3"></a><p class="title"><b>Example 2. Showing general information and properties for a Wi-Fi interface</b></p> +<a name="id-1.2.9.6.3"></a><p class="title"><b>Example 2. Showing general information and properties for a Wi-Fi interface</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli -p -f general,wifi-properties device show wlan0</code></strong> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli -p -f general,wifi-properties device show wlan0</code></strong> =========================================================================== Device details (wlan0) =========================================================================== @@ -114,9 +113,9 @@ WIFI-PROPERTIES.ADHOC: yes </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.4"></a><p class="title"><b>Example 3. Listing NetworkManager polkit permissions</b></p> +<a name="id-1.2.9.6.4"></a><p class="title"><b>Example 3. Listing NetworkManager polkit permissions</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli general permissions</code></strong> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli general permissions</code></strong> PERMISSION VALUE org.freedesktop.NetworkManager.enable-disable-network yes org.freedesktop.NetworkManager.enable-disable-wifi yes @@ -145,9 +144,9 @@ org.freedesktop.NetworkManager.settings.modify.hostname auth</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.5"></a><p class="title"><b>Example 4. Listing NetworkManager log level and domains</b></p> +<a name="id-1.2.9.6.5"></a><p class="title"><b>Example 4. Listing NetworkManager log level and domains</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli general logging</code></strong> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli general logging</code></strong> LEVEL DOMAINS INFO PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC, @@ -159,10 +158,10 @@ B,DISPATCH</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.6"></a><p class="title"><b>Example 5. Changing NetworkManager logging</b></p> +<a name="id-1.2.9.6.6"></a><p class="title"><b>Example 5. Changing NetworkManager logging</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli g log level DEBUG domains CORE,ETHER,IP</code></strong> -<strong class="userinput"><code>$ nmcli g log level INFO domains DEFAULT</code></strong></pre> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli g log level DEBUG domains CORE,ETHER,IP</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli g log level INFO domains DEFAULT</code></strong></pre> <p> The first command makes NetworkManager log in DEBUG level, and only for CORE, ETHER and IP domains. The second command restores the default logging state. Please refer to the @@ -172,11 +171,11 @@ B,DISPATCH</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.7"></a><p class="title"><b>Example 6. Adding a bonding master and two slave connection profiles</b></p> +<a name="id-1.2.9.6.7"></a><p class="title"><b>Example 6. Adding a bonding master and two slave connection profiles</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli con add type bond ifname mybond0 mode active-backup</code></strong> -<strong class="userinput"><code>$ nmcli con add type ethernet ifname eth1 master mybond0</code></strong> -<strong class="userinput"><code>$ nmcli con add type ethernet ifname eth2 master mybond0</code></strong></pre> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type bond ifname mybond0 mode active-backup</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet ifname eth1 master mybond0</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet ifname eth2 master mybond0</code></strong></pre> <p> This example demonstrates adding a bond master connection and two slaves. The first command adds a master bond connection, naming the bonding interface @@ -188,11 +187,11 @@ B,DISPATCH</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.8"></a><p class="title"><b>Example 7. Adding a team master and two slave connection profiles</b></p> +<a name="id-1.2.9.6.8"></a><p class="title"><b>Example 7. Adding a team master and two slave connection profiles</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</code></strong> -<strong class="userinput"><code>$ nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</code></strong> -<strong class="userinput"><code>$ nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</code></strong></pre> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</code></strong></pre> <p> This example demonstrates adding a team master connection profile and two slaves. It is very similar to the bonding example. The first command adds a master team profile, naming @@ -206,8 +205,8 @@ B,DISPATCH</pre> <span class="emphasis"><em>teamd</em></span> will use its default configuration. You will activate the whole setup by activating both slaves: </p> -<pre class="screen"> <strong class="userinput"><code>$ nmcli con up Team1-slave1</code></strong> - <strong class="userinput"><code>$ nmcli con up Team1-slave2</code></strong></pre> +<pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>nmcli con up Team1-slave1</code></strong> + <code class="prompt">$ </code><strong class="userinput"><code>nmcli con up Team1-slave2</code></strong></pre> <p> By default, the created profiles are marked for auto-activation. But if another connection has been activated on the device, the new profile won't activate @@ -216,12 +215,12 @@ B,DISPATCH</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.9"></a><p class="title"><b>Example 8. Adding a bridge and two slave profiles</b></p> +<a name="id-1.2.9.6.9"></a><p class="title"><b>Example 8. Adding a bridge and two slave profiles</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli con add type bridge con-name TowerBridge ifname TowerBridge</code></strong> -<strong class="userinput"><code>$ nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</code></strong> -<strong class="userinput"><code>$ nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</code></strong> -<strong class="userinput"><code>$ nmcli con modify TowerBridge bridge.stp no</code></strong></pre> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type bridge con-name TowerBridge ifname TowerBridge</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con modify TowerBridge bridge.stp no</code></strong></pre> <p> This example demonstrates adding a bridge master connection and two slaves. The first command adds a master bridge connection, naming the bridge interface and @@ -235,14 +234,14 @@ B,DISPATCH</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.10"></a><p class="title"><b>Example 9. Adding an ethernet connection profile with manual IP configuration</b></p> +<a name="id-1.2.9.6.10"></a><p class="title"><b>Example 9. Adding an ethernet connection profile with manual IP configuration</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli con add con-name my-con-em1 ifname em1 type ethernet \ +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add con-name my-con-em1 ifname em1 type ethernet \ ip4 192.168.100.100/24 gw4 192.168.100.1 ip4 1.2.3.4 ip6 abbe::cafe</code></strong> -<strong class="userinput"><code>$ nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</code></strong> -<strong class="userinput"><code>$ nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</code></strong> -<strong class="userinput"><code>$ nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</code></strong> -<strong class="userinput"><code>$ nmcli -p con show my-con-em1</code></strong></pre> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</code></strong> +<code class="prompt">$ </code><strong class="userinput"><code>nmcli -p con show my-con-em1</code></strong></pre> <p> The first command adds an Ethernet connection profile named <span class="emphasis"><em>my-con-em1</em></span> that is bound to interface name <span class="emphasis"><em>em1</em></span>. The profile is configured @@ -258,9 +257,9 @@ B,DISPATCH</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.11"></a><p class="title"><b>Example 10. Escaping colon characters in tabular mode</b></p> +<a name="id-1.2.9.6.11"></a><p class="title"><b>Example 10. Escaping colon characters in tabular mode</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli -t -f general -e yes -m tab dev show eth0</code></strong> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli -t -f general -e yes -m tab dev show eth0</code></strong> GENERAL:eth0:ethernet:Intel Corporation:82567LM Gigabit Network Connection: e1000e:2.1.4-k:1.8-3:00\:22\:68\:15\:29\:21:1500:100 (connected):0 (No reas on given):/sys/devices/pci0000\:00/0000\:00\:19.0/net/eth0:eth0:yes:yes:no: @@ -273,7 +272,7 @@ nager/ActiveConnection/9</pre> </div> </div> <br class="example-break"><div class="example"> -<a name="id-1.4.7.6.12"></a><p class="title"><b>Example 11. nmcli usage in a NetworkManager dispatcher script to make Ethernet and Wi-Fi mutually exclusive</b></p> +<a name="id-1.2.9.6.12"></a><p class="title"><b>Example 11. nmcli usage in a NetworkManager dispatcher script to make Ethernet and Wi-Fi mutually exclusive</b></p> <div class="example-contents"> <pre class="programlisting"> #!/bin/bash @@ -311,9 +310,9 @@ fi </div> <br class="example-break"><p><span class="bold"><strong>Example sessions of interactive connection editor</strong></span></p> <div class="example"> -<a name="id-1.4.7.6.14"></a><p class="title"><b>Example 12. Adding an ethernet connection profile in interactive editor (a)</b></p> +<a name="id-1.2.9.6.14"></a><p class="title"><b>Example 12. Adding an ethernet connection profile in interactive editor (a)</b></p> <div class="example-contents"> -<pre class="screen"><strong class="userinput"><code>$ nmcli connection edit type ethernet</code></strong> +<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli connection edit type ethernet</code></strong> ===| nmcli interactive connection editor |=== @@ -324,7 +323,7 @@ Type 'describe [<setting>.<prop>]' for detailed property description You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb -nmcli> <strong class="userinput"><code>print</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>print</code></strong> =========================================================================== Connection details =========================================================================== @@ -384,13 +383,13 @@ ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- --------------------------------------------------------------------------- -nmcli> <strong class="userinput"><code>goto ethernet</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>goto ethernet</code></strong> You may edit the following properties: port, speed, duplex, auto-negotiate, mac-address, cloned-mac-address, mac-address-blacklist, mtu, s390-subchann els, s390-nettype, s390-options nmcli 802-3-ethernet> set mtu 1492 nmcli 802-3-ethernet> b -nmcli> <strong class="userinput"><code>goto ipv4.addresses</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>goto ipv4.addresses</code></strong> nmcli ipv4.addresses> desc === [addresses] === @@ -411,10 +410,10 @@ nmcli ipv4.addresses> print addresses: 192.168.1.100/24 nmcli ipv4.addresses> back nmcli ipv4> b -nmcli> <strong class="userinput"><code>set ipv4.gateway 192.168.1.1</code></strong> -nmcli> <strong class="userinput"><code>verify</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>set ipv4.gateway 192.168.1.1</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>verify</code></strong> Verify connection: OK -nmcli> <strong class="userinput"><code>print</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>print</code></strong> =========================================================================== Connection details =========================================================================== @@ -473,8 +472,8 @@ ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- --------------------------------------------------------------------------- -nmcli> <strong class="userinput"><code>set ipv4.dns 8.8.8.8 8.8.4.4</code></strong> -nmcli> <strong class="userinput"><code>print</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>set ipv4.dns 8.8.8.8 8.8.4.4</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>print</code></strong> =========================================================================== Connection details =========================================================================== @@ -534,12 +533,12 @@ ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- --------------------------------------------------------------------------- -nmcli> <strong class="userinput"><code>verify</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>verify</code></strong> Verify connection: OK -nmcli> <strong class="userinput"><code>save</code></strong> +<code class="prompt">nmcli> </code><strong class="userinput"><code>save</code></strong> Connection 'ethernet-4' (de89cdeb-a3e1-4d53-8fa0-c22546c775f4) successfully saved. -nmcli> <strong class="userinput"><code>quit</code></strong></pre> +<code class="prompt">nmcli> </code><strong class="userinput"><code>quit</code></strong></pre> <p> Example session in the nmcli interactive connection editor. The scenario creates an Ethernet connection profile with static addressing (IPs and DNS). @@ -549,7 +548,7 @@ nmcli> <strong class="userinput"><code>quit</code></strong></pre> <br class="example-break"> </div> <div class="refsect1"> -<a name="id-1.4.7.7"></a><h2>See Also</h2> +<a name="id-1.2.9.7"></a><h2>See Also</h2> <p> <span class="citerefentry"><span class="refentrytitle">nmcli</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">NetworkManager</span>(8)</span>, diff --git a/docs/api/html/nmcli.html b/docs/api/html/nmcli.html index ef756f49..91d1e2b5 100644 --- a/docs/api/html/nmcli.html +++ b/docs/api/html/nmcli.html @@ -2,11 +2,11 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nmcli: NetworkManager D-Bus API Reference Manual</title> +<title>nmcli: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> -<link rel="prev" href="manpages.html" title="UNIX Manual Pages"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> +<link rel="prev" href="manpages.html" title="Manual Pages"> <link rel="next" href="nmtui.html" title="nmtui"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> diff --git a/docs/api/html/nmtui.html b/docs/api/html/nmtui.html index ca11c834..80e5c700 100644 --- a/docs/api/html/nmtui.html +++ b/docs/api/html/nmtui.html @@ -2,10 +2,10 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>nmtui: NetworkManager D-Bus API Reference Manual</title> +<title>nmtui: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="manpages.html" title="UNIX Manual Pages"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="manpages.html" title="Manual Pages"> <link rel="prev" href="nmcli.html" title="nmcli"> <link rel="next" href="nm-online.html" title="nm-online"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> diff --git a/docs/api/html/ref-settings.html b/docs/api/html/ref-settings.html index e8de233c..e66100c7 100644 --- a/docs/api/html/ref-settings.html +++ b/docs/api/html/ref-settings.html @@ -2,10 +2,10 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>Network Configuration Setting Specification: NetworkManager D-Bus API Reference Manual</title> +<title>Network Configuration Setting Specification: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="index.html" title="NetworkManager Reference Manual"> <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html" title="org.freedesktop.NetworkManager.SecretAgent"> <link rel="next" href="secrets-flags.html" title="Secret flag types"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> @@ -23,7 +23,7 @@ <div class="titlepage"><div><div><h1 class="title"> <a name="ref-settings"></a>Network Configuration Setting Specification</h1></div></div></div> <div class="toc"><dl class="toc"> -<dt><span class="section"><a href="ref-settings.html#id-1.3.3">Configuration Settings</a></span></dt> +<dt><span class="section"><a href="ref-settings.html#id-1.4.3">Configuration Settings</a></span></dt> <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt> </dl></div> <p> @@ -35,9 +35,9 @@ </p> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id-1.3.3"></a>Configuration Settings</h2></div></div></div> +<a name="id-1.4.3"></a>Configuration Settings</h2></div></div></div> <div class="table"> -<a name="id-1.3.3.2.1"></a><p class="title"><b>Table 1. 802-1x setting</b></p> +<a name="id-1.4.3.2.1"></a><p class="title"><b>Table 58. 802-1x setting</b></p> <div class="table-contents"><table summary="802-1x setting" border="1"> <colgroup> <col> @@ -267,7 +267,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.3.1"></a><p class="title"><b>Table 2. adsl setting</b></p> +<a name="id-1.4.3.3.1"></a><p class="title"><b>Table 59. adsl setting</b></p> <div class="table-contents"><table summary="adsl setting" border="1"> <colgroup> <col> @@ -335,7 +335,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.4.1"></a><p class="title"><b>Table 3. bluetooth setting</b></p> +<a name="id-1.4.3.4.1"></a><p class="title"><b>Table 60. bluetooth setting</b></p> <div class="table-contents"><table summary="bluetooth setting" border="1"> <colgroup> <col> @@ -373,7 +373,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.5.1"></a><p class="title"><b>Table 4. bond setting</b></p> +<a name="id-1.4.3.5.1"></a><p class="title"><b>Table 61. bond setting</b></p> <div class="table-contents"><table summary="bond setting" border="1"> <colgroup> <col> @@ -411,7 +411,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.6.1"></a><p class="title"><b>Table 5. bridge setting</b></p> +<a name="id-1.4.3.6.1"></a><p class="title"><b>Table 62. bridge setting</b></p> <div class="table-contents"><table summary="bridge setting" border="1"> <colgroup> <col> @@ -491,7 +491,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.7.1"></a><p class="title"><b>Table 6. bridge-port setting</b></p> +<a name="id-1.4.3.7.1"></a><p class="title"><b>Table 63. bridge-port setting</b></p> <div class="table-contents"><table summary="bridge-port setting" border="1"> <colgroup> <col> @@ -535,7 +535,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.8.1"></a><p class="title"><b>Table 7. cdma setting</b></p> +<a name="id-1.4.3.8.1"></a><p class="title"><b>Table 64. cdma setting</b></p> <div class="table-contents"><table summary="cdma setting" border="1"> <colgroup> <col> @@ -585,7 +585,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.9.1"></a><p class="title"><b>Table 8. connection setting</b></p> +<a name="id-1.4.3.9.1"></a><p class="title"><b>Table 65. connection setting</b></p> <div class="table-contents"><table summary="connection setting" border="1"> <colgroup> <col> @@ -713,7 +713,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.10.1"></a><p class="title"><b>Table 9. dcb setting</b></p> +<a name="id-1.4.3.10.1"></a><p class="title"><b>Table 66. dcb setting</b></p> <div class="table-contents"><table summary="dcb setting" border="1"> <colgroup> <col> @@ -829,7 +829,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.11.1"></a><p class="title"><b>Table 10. generic setting</b></p> +<a name="id-1.4.3.11.1"></a><p class="title"><b>Table 67. generic setting</b></p> <div class="table-contents"><table summary="generic setting" border="1"> <colgroup> <col> @@ -853,7 +853,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.12.1"></a><p class="title"><b>Table 11. gsm setting</b></p> +<a name="id-1.4.3.12.1"></a><p class="title"><b>Table 68. gsm setting</b></p> <div class="table-contents"><table summary="gsm setting" border="1"> <colgroup> <col> @@ -951,7 +951,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.13.1"></a><p class="title"><b>Table 12. infiniband setting</b></p> +<a name="id-1.4.3.13.1"></a><p class="title"><b>Table 69. infiniband setting</b></p> <div class="table-contents"><table summary="infiniband setting" border="1"> <colgroup> <col> @@ -1007,7 +1007,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.14.1"></a><p class="title"><b>Table 13. ipv4 setting</b></p> +<a name="id-1.4.3.14.1"></a><p class="title"><b>Table 70. ipv4 setting</b></p> <div class="table-contents"><table summary="ipv4 setting" border="1"> <colgroup> <col> @@ -1153,7 +1153,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.15.1"></a><p class="title"><b>Table 14. ipv6 setting</b></p> +<a name="id-1.4.3.15.1"></a><p class="title"><b>Table 71. ipv6 setting</b></p> <div class="table-contents"><table summary="ipv6 setting" border="1"> <colgroup> <col> @@ -1299,7 +1299,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.16.1"></a><p class="title"><b>Table 15. ip-tunnel setting</b></p> +<a name="id-1.4.3.16.1"></a><p class="title"><b>Table 72. ip-tunnel setting</b></p> <div class="table-contents"><table summary="ip-tunnel setting" border="1"> <colgroup> <col> @@ -1397,7 +1397,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.17.1"></a><p class="title"><b>Table 16. macvlan setting</b></p> +<a name="id-1.4.3.17.1"></a><p class="title"><b>Table 73. macvlan setting</b></p> <div class="table-contents"><table summary="macvlan setting" border="1"> <colgroup> <col> @@ -1447,7 +1447,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.18.1"></a><p class="title"><b>Table 17. 802-11-olpc-mesh setting</b></p> +<a name="id-1.4.3.18.1"></a><p class="title"><b>Table 74. 802-11-olpc-mesh setting</b></p> <div class="table-contents"><table summary="802-11-olpc-mesh setting" border="1"> <colgroup> <col> @@ -1491,7 +1491,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.19.1"></a><p class="title"><b>Table 18. ppp setting</b></p> +<a name="id-1.4.3.19.1"></a><p class="title"><b>Table 75. ppp setting</b></p> <div class="table-contents"><table summary="ppp setting" border="1"> <colgroup> <col> @@ -1625,7 +1625,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.20.1"></a><p class="title"><b>Table 19. pppoe setting</b></p> +<a name="id-1.4.3.20.1"></a><p class="title"><b>Table 76. pppoe setting</b></p> <div class="table-contents"><table summary="pppoe setting" border="1"> <colgroup> <col> @@ -1675,7 +1675,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.21.1"></a><p class="title"><b>Table 20. serial setting</b></p> +<a name="id-1.4.3.21.1"></a><p class="title"><b>Table 77. serial setting</b></p> <div class="table-contents"><table summary="serial setting" border="1"> <colgroup> <col> @@ -1731,7 +1731,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.22.1"></a><p class="title"><b>Table 21. team setting</b></p> +<a name="id-1.4.3.22.1"></a><p class="title"><b>Table 78. team setting</b></p> <div class="table-contents"><table summary="team setting" border="1"> <colgroup> <col> @@ -1769,7 +1769,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.23.1"></a><p class="title"><b>Table 22. team-port setting</b></p> +<a name="id-1.4.3.23.1"></a><p class="title"><b>Table 79. team-port setting</b></p> <div class="table-contents"><table summary="team-port setting" border="1"> <colgroup> <col> @@ -1801,7 +1801,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.24.1"></a><p class="title"><b>Table 23. tun setting</b></p> +<a name="id-1.4.3.24.1"></a><p class="title"><b>Table 80. tun setting</b></p> <div class="table-contents"><table summary="tun setting" border="1"> <colgroup> <col> @@ -1863,7 +1863,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.25.1"></a><p class="title"><b>Table 24. vlan setting</b></p> +<a name="id-1.4.3.25.1"></a><p class="title"><b>Table 81. vlan setting</b></p> <div class="table-contents"><table summary="vlan setting" border="1"> <colgroup> <col> @@ -1925,7 +1925,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.26.1"></a><p class="title"><b>Table 25. vpn setting</b></p> +<a name="id-1.4.3.26.1"></a><p class="title"><b>Table 82. vpn setting</b></p> <div class="table-contents"><table summary="vpn setting" border="1"> <colgroup> <col> @@ -1987,7 +1987,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.27.1"></a><p class="title"><b>Table 26. vxlan setting</b></p> +<a name="id-1.4.3.27.1"></a><p class="title"><b>Table 83. vxlan setting</b></p> <div class="table-contents"><table summary="vxlan setting" border="1"> <colgroup> <col> @@ -2109,7 +2109,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.28.1"></a><p class="title"><b>Table 27. wimax setting</b></p> +<a name="id-1.4.3.28.1"></a><p class="title"><b>Table 84. wimax setting</b></p> <div class="table-contents"><table summary="wimax setting" border="1"> <colgroup> <col> @@ -2147,7 +2147,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.29.1"></a><p class="title"><b>Table 28. 802-3-ethernet setting</b></p> +<a name="id-1.4.3.29.1"></a><p class="title"><b>Table 85. 802-3-ethernet setting</b></p> <div class="table-contents"><table summary="802-3-ethernet setting" border="1"> <colgroup> <col> @@ -2251,7 +2251,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.30.1"></a><p class="title"><b>Table 29. 802-11-wireless setting</b></p> +<a name="id-1.4.3.30.1"></a><p class="title"><b>Table 86. 802-11-wireless setting</b></p> <div class="table-contents"><table summary="802-11-wireless setting" border="1"> <colgroup> <col> @@ -2373,7 +2373,7 @@ </div> <p><br class="table-break"></p> <div class="table"> -<a name="id-1.3.3.31.1"></a><p class="title"><b>Table 30. 802-11-wireless-security setting</b></p> +<a name="id-1.4.3.31.1"></a><p class="title"><b>Table 87. 802-11-wireless-security setting</b></p> <div class="table-contents"><table summary="802-11-wireless-security setting" border="1"> <colgroup> <col> diff --git a/docs/api/html/secrets-flags.html b/docs/api/html/secrets-flags.html index 89e2ca77..fcaba3b3 100644 --- a/docs/api/html/secrets-flags.html +++ b/docs/api/html/secrets-flags.html @@ -2,12 +2,12 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>Secret flag types: NetworkManager D-Bus API Reference Manual</title> +<title>Secret flag types: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> <link rel="up" href="ref-settings.html" title="Network Configuration Setting Specification"> <link rel="prev" href="ref-settings.html" title="Network Configuration Setting Specification"> -<link rel="next" href="manpages.html" title="UNIX Manual Pages"> +<link rel="next" href="ix01.html" title="Index"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -17,7 +17,7 @@ <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="ref-settings.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="ref-settings.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> -<td><a accesskey="n" href="manpages.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="ix01.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> diff --git a/docs/api/html/spec.html b/docs/api/html/spec.html index 45b98a21..8259f088 100644 --- a/docs/api/html/spec.html +++ b/docs/api/html/spec.html @@ -2,11 +2,11 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>D-Bus API Reference: NetworkManager D-Bus API Reference Manual</title> +<title>D-Bus API Reference: NetworkManager Reference Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> -<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual"> -<link rel="prev" href="index.html" title="NetworkManager D-Bus API Reference Manual"> +<link rel="home" href="index.html" title="NetworkManager Reference Manual"> +<link rel="up" href="index.html" title="NetworkManager Reference Manual"> +<link rel="prev" href="NetworkManager.html" title="NetworkManager"> <link rel="next" href="gdbus-org.freedesktop.NetworkManager.html" title="org.freedesktop.NetworkManager"> <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> @@ -16,7 +16,7 @@ <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><img src="up-insensitive.png" width="16" height="16" border="0"></td> -<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="NetworkManager.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="gdbus-org.freedesktop.NetworkManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> diff --git a/docs/api/network-manager-docs.xml b/docs/api/network-manager-docs.xml index 3cf2c9ed..ff1cb82d 100644 --- a/docs/api/network-manager-docs.xml +++ b/docs/api/network-manager-docs.xml @@ -5,11 +5,14 @@ ]> <book id="index" xmlns:xi="http://www.w3.org/2003/XInclude"> <bookinfo> - <title>NetworkManager D-Bus API Reference Manual</title> + <title>NetworkManager Reference Manual</title> <releaseinfo>Version &version;</releaseinfo> <copyright> <year>2012</year> + <year>2013</year> + <year>2014</year> + <year>2015</year> <year>2016</year> <holder>The NetworkManager Authors</holder> </copyright> @@ -37,6 +40,19 @@ </legalnotice> </bookinfo> + <chapter id="manpages"> + <title>Manual Pages</title> + <xi:include href="../../man/nmcli.xml"/> + <xi:include href="../../man/nmtui.xml"/> + <xi:include href="../../man/nm-online.xml"/> + <xi:include href="../../man/NetworkManager.conf.xml"/> + <xi:include href="../../man/nm-settings.xml"><xi:fallback /></xi:include> + <xi:include href="../../man/nm-settings-keyfile.xml"><xi:fallback /></xi:include> + <xi:include href="../../man/nm-settings-ifcfg-rh.xml"><xi:fallback /></xi:include> + <xi:include href="../../man/nmcli-examples.xml"/> + <xi:include href="../../man/NetworkManager.xml"/> + </chapter> + <chapter id="spec"> <title>D-Bus API Reference</title> @@ -142,20 +158,6 @@ </section> </chapter> - <chapter id="manpages"> - <title>UNIX Manual Pages</title> - <xi:include href="../../man/nmcli.xml"/> - <xi:include href="../../man/nmtui.xml"/> - <xi:include href="../../man/nm-online.xml"/> - <xi:include href="../../man/NetworkManager.xml"/> - <xi:include href="../../man/NetworkManager.conf.xml"/> - <xi:include href="../../man/nmcli-examples.xml"/> - <xi:include href="../../man/nm-settings.xml"><xi:fallback /></xi:include> - <xi:include href="../../man/nm-settings-keyfile.xml"><xi:fallback /></xi:include> - <xi:include href="../../man/nm-settings-ifcfg-rh.xml"><xi:fallback /></xi:include> - </chapter> - - <index> <title>Index</title> </index> diff --git a/docs/api/version.xml b/docs/api/version.xml index 9a03ea63..ead65f0a 100644 --- a/docs/api/version.xml +++ b/docs/api/version.xml @@ -1 +1 @@ -1.1.93 +1.1.94 diff --git a/docs/libnm-glib/html/NMRemoteSettings.html b/docs/libnm-glib/html/NMRemoteSettings.html index 10d37ade..ebc67526 100644 --- a/docs/libnm-glib/html/NMRemoteSettings.html +++ b/docs/libnm-glib/html/NMRemoteSettings.html @@ -377,13 +377,13 @@ the stored object known to NetworkManager.</p> <span class="keyword">static</span><span class="normal"> gboolean</span> <span class="function">add_wired_connection</span><span class="normal"> </span><span class="symbol">(</span><span class="keyword">const</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">human_name</span><span class="symbol">)</span> <span class="cbracket">{</span> -<span class="normal"> </span><span class="usertype">NMConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">;</span> +<span class="normal"> </span><span class="usertype">NMConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">NMSettingConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">s_con</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">NMSettingWired</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">s_wired</span><span class="symbol">;</span> <span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">uuid</span><span class="symbol">;</span> <span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> success</span><span class="symbol">;</span> -<span class="normal"> connection </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-new">nm_connection_new</a></span><span class="normal"> </span><span class="symbol">();</span> +<span class="normal"> <a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a> </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-new">nm_connection_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="comment">/* Build up the 'connection' setting */</span> <span class="normal"> s_con </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingConnection.html">NMSettingConnection</a> </span><span class="symbol">*)</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingConnection.html#nm-setting-connection-new">nm_setting_connection_new</a></span><span class="normal"> </span><span class="symbol">();</span> @@ -394,24 +394,24 @@ the stored object known to NetworkManager.</p> <span class="normal"> <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingConnection.html#NM-SETTING-CONNECTION-TYPE:CAPS">NM_SETTING_CONNECTION_TYPE</a></span><span class="symbol">,</span><span class="normal"> <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingWired.html#NM-SETTING-WIRED-SETTING-NAME:CAPS">NM_SETTING_WIRED_SETTING_NAME</a></span><span class="symbol">,</span> <span class="normal"> NULL</span><span class="symbol">);</span> <span class="normal"> </span><span class="function">g_free</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">uuid</span><span class="symbol">);</span> -<span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_con</span><span class="symbol">));</span> +<span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_con</span><span class="symbol">));</span> <span class="normal"> </span><span class="comment">/* Add the required 'wired' setting as this is a wired connection */</span> -<span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingWired.html#nm-setting-wired-new">nm_setting_wired_new</a></span><span class="normal"> </span><span class="symbol">());</span> +<span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingWired.html#nm-setting-wired-new">nm_setting_wired_new</a></span><span class="normal"> </span><span class="symbol">());</span> <span class="normal"> </span><span class="comment">/* Add an 'ipv4' setting using AUTO configuration (eg DHCP) */</span> <span class="normal"> s_ip4 </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html">NMSettingIP4Config</a> </span><span class="symbol">*)</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html#nm-setting-ip4-config-new">nm_setting_ip4_config_new</a></span><span class="normal"> </span><span class="symbol">();</span> <span class="normal"> </span><span class="function">g_object_set</span><span class="normal"> </span><span class="symbol">(</span><span class="function">G_OBJECT</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_ip4</span><span class="symbol">),</span> <span class="normal"> <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html#NM-SETTING-IP4-CONFIG-METHOD:CAPS">NM_SETTING_IP4_CONFIG_METHOD</a></span><span class="symbol">,</span><span class="normal"> <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html#NM-SETTING-IP4-CONFIG-METHOD-AUTO:CAPS">NM_SETTING_IP4_CONFIG_METHOD_AUTO</a></span><span class="symbol">,</span> <span class="normal"> NULL</span><span class="symbol">);</span> -<span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_ip4</span><span class="symbol">));</span> +<span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_ip4</span><span class="symbol">));</span> <span class="normal"> </span><span class="comment">/* Ask NetworkManager to store the connection */</span> -<span class="normal"> success </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="NMRemoteSettings.html#nm-remote-settings-add-connection">nm_remote_settings_add_connection</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">settings</span><span class="symbol">,</span><span class="normal"> connection</span><span class="symbol">,</span><span class="normal"> added_cb</span><span class="symbol">,</span><span class="normal"> loop</span><span class="symbol">);</span> +<span class="normal"> success </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="NMRemoteSettings.html#nm-remote-settings-add-connection">nm_remote_settings_add_connection</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">settings</span><span class="symbol">,</span><span class="normal"> <a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> added_cb</span><span class="symbol">,</span><span class="normal"> loop</span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* Release the template connection; the actual stored connection will</span> <span class="comment"> * be returned in added_cb() */</span> -<span class="normal"> </span><span class="function">g_object_unref</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">);</span> +<span class="normal"> </span><span class="function">g_object_unref</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">);</span> <span class="normal"> </span><span class="comment">/* Let glib event loop run and added_cb() will be called when NetworkManager</span> <span class="comment"> * is done adding the new connection. */</span> diff --git a/docs/libnm-glib/html/index.html b/docs/libnm-glib/html/index.html index 5cc5b13c..5df1127b 100644 --- a/docs/libnm-glib/html/index.html +++ b/docs/libnm-glib/html/index.html @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm-glib Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for libnm-glib 1.1.93 + for libnm-glib 1.1.94 The latest version of this documentation can be found on-line at <a class="ulink" href="https://developer.gnome.org/libnm-glib/0.9/" target="_top">https://developer.gnome.org/libnm-glib/0.9/</a>. diff --git a/docs/libnm-glib/version.xml b/docs/libnm-glib/version.xml index 9a03ea63..ead65f0a 100644 --- a/docs/libnm-glib/version.xml +++ b/docs/libnm-glib/version.xml @@ -1 +1 @@ -1.1.93 +1.1.94 diff --git a/docs/libnm-util/html/index.html b/docs/libnm-util/html/index.html index b8dfdf90..b50fbdbd 100644 --- a/docs/libnm-util/html/index.html +++ b/docs/libnm-util/html/index.html @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm-util Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for libnm-util 1.1.93 + for libnm-util 1.1.94 The latest version of this documentation can be found on-line at <a class="ulink" href="https://developer.gnome.org/libnm-util/0.9/" target="_top">https://developer.gnome.org/libnm-util/0.9/</a>. diff --git a/docs/libnm-util/version.xml b/docs/libnm-util/version.xml index 9a03ea63..ead65f0a 100644 --- a/docs/libnm-util/version.xml +++ b/docs/libnm-util/version.xml @@ -1 +1 @@ -1.1.93 +1.1.94 diff --git a/docs/libnm/html/index.html b/docs/libnm/html/index.html index e004f345..1267d387 100644 --- a/docs/libnm/html/index.html +++ b/docs/libnm/html/index.html @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for libnm 1.1.93 + for libnm 1.1.94 The latest version of this documentation can be found on-line at <a class="ulink" href="https://developer.gnome.org/libnm/1.0/" target="_top">https://developer.gnome.org/libnm/1.0/</a>. diff --git a/docs/libnm/version.xml b/docs/libnm/version.xml index 9a03ea63..ead65f0a 100644 --- a/docs/libnm/version.xml +++ b/docs/libnm/version.xml @@ -1 +1 @@ -1.1.93 +1.1.94 diff --git a/libnm-core/nm-setting-ip-config.c b/libnm-core/nm-setting-ip-config.c index 4e3088a9..3e7f93b0 100644 --- a/libnm-core/nm-setting-ip-config.c +++ b/libnm-core/nm-setting-ip-config.c @@ -143,18 +143,16 @@ valid_ip (int family, const char *ip, GError **error) } static gboolean -valid_prefix (int family, guint prefix, GError **error, gboolean allow_zero_prefix) +valid_prefix (int family, guint prefix, GError **error) { - if ( (family == AF_INET && prefix > 32) - || (family == AF_INET6 && prefix > 128) - || (!allow_zero_prefix && prefix == 0)) { - g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_FAILED, - family == AF_INET ? _("Invalid IPv4 address prefix '%u'") : _("Invalid IPv6 address prefix '%u'"), - prefix); - return FALSE; - } + if ( (family == AF_INET && prefix <= 32) + || (family == AF_INET6 && prefix <= 128)) + return TRUE; - return TRUE; + g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_FAILED, + family == AF_INET ? _("Invalid IPv4 address prefix '%u'") : _("Invalid IPv6 address prefix '%u'"), + prefix); + return FALSE; } static gboolean @@ -175,6 +173,9 @@ valid_metric (gint64 metric, GError **error) return TRUE; } +/***************************************************************************** + * NMIPAddress + *****************************************************************************/ G_DEFINE_BOXED_TYPE (NMIPAddress, nm_ip_address, nm_ip_address_dup, nm_ip_address_unref) @@ -211,7 +212,7 @@ nm_ip_address_new (int family, if (!valid_ip (family, addr, error)) return NULL; - if (!valid_prefix (family, prefix, error, FALSE)) + if (!valid_prefix (family, prefix, error)) return NULL; address = g_slice_new0 (NMIPAddress); @@ -248,7 +249,7 @@ nm_ip_address_new_binary (int family, g_return_val_if_fail (family == AF_INET || family == AF_INET6, NULL); g_return_val_if_fail (addr != NULL, NULL); - if (!valid_prefix (family, prefix, error, FALSE)) + if (!valid_prefix (family, prefix, error)) return NULL; address = g_slice_new0 (NMIPAddress); @@ -484,7 +485,7 @@ nm_ip_address_set_prefix (NMIPAddress *address, guint prefix) { g_return_if_fail (address != NULL); - g_return_if_fail (valid_prefix (address->family, prefix, NULL, FALSE)); + g_return_if_fail (valid_prefix (address->family, prefix, NULL)); address->prefix = prefix; } @@ -566,6 +567,9 @@ nm_ip_address_set_attribute (NMIPAddress *address, const char *name, GVariant *v g_hash_table_remove (address->attributes, name); } +/***************************************************************************** + * NMIPRoute + *****************************************************************************/ G_DEFINE_BOXED_TYPE (NMIPRoute, nm_ip_route, nm_ip_route_dup, nm_ip_route_unref) @@ -610,7 +614,7 @@ nm_ip_route_new (int family, if (!valid_ip (family, dest, error)) return NULL; - if (!valid_prefix (family, prefix, error, TRUE)) + if (!valid_prefix (family, prefix, error)) return NULL; if (next_hop && !valid_ip (family, next_hop, error)) return NULL; @@ -657,7 +661,7 @@ nm_ip_route_new_binary (int family, g_return_val_if_fail (family == AF_INET || family == AF_INET6, NULL); g_return_val_if_fail (dest, NULL); - if (!valid_prefix (family, prefix, error, TRUE)) + if (!valid_prefix (family, prefix, error)) return NULL; if (!valid_metric (metric, error)) return NULL; @@ -898,7 +902,7 @@ nm_ip_route_set_prefix (NMIPRoute *route, guint prefix) { g_return_if_fail (route != NULL); - g_return_if_fail (valid_prefix (route->family, prefix, NULL, TRUE)); + g_return_if_fail (valid_prefix (route->family, prefix, NULL)); route->prefix = prefix; } @@ -1105,6 +1109,7 @@ nm_ip_route_set_attribute (NMIPRoute *route, const char *name, GVariant *value) g_hash_table_remove (route->attributes, name); } +/*****************************************************************************/ G_DEFINE_ABSTRACT_TYPE (NMSettingIPConfig, nm_setting_ip_config, NM_TYPE_SETTING) diff --git a/man/Makefile.am b/man/Makefile.am index ce84194c..9338edbb 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -31,16 +31,6 @@ if ENABLE_GTK_DOC endif -CLEANFILES += NetworkManager.conf.xml -EXTRA_DIST += NetworkManager.conf.xml.in -NetworkManager.conf.xml: $(srcdir)/NetworkManager.conf.xml.in - $(AM_V_GEN) sed \ - -e 's|[@]NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT[@]|$(NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT)|g' \ - -e 's|[@]NM_CONFIG_KEYFILE_PATH_DEFAULT[@]|$(nmconfdir)/conf.d|g' \ - -e 's|[@]NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT[@]|$(NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT)|g' \ - -e 's|[@]NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT[@]|$(NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT)|g' \ - $< >$@ - if BUILD_SETTING_DOCS nm-settings.xml: nm-settings.xsl $(top_builddir)/libnm/nm-setting-docs.xml diff --git a/man/Makefile.in b/man/Makefile.in index 551f1a90..c7da7504 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -445,13 +445,12 @@ with_netconfig = @with_netconfig@ with_resolvconf = @with_resolvconf@ with_valgrind = @with_valgrind@ man_MANS = $(am__append_4) $(am__append_6) $(am__append_8) -CLEANFILES = NetworkManager.conf.xml $(am__append_1) $(am__append_5) \ - $(am__append_7) -EXTRA_DIST = NetworkManager.conf.xml.in $(am__append_3) \ - nm-settings.xml nm-settings.xsl nm-settings-keyfile.xml \ - nm-settings-keyfile.xsl nm-settings-ifcfg-rh.xml \ - nm-settings-ifcfg-rh.xsl $(addsuffix .xml,$(basename \ - $(man_pages))) $(man_pages) $(autogenerated_man_pages) +CLEANFILES = $(am__append_1) $(am__append_5) $(am__append_7) +EXTRA_DIST = $(am__append_3) nm-settings.xml nm-settings.xsl \ + nm-settings-keyfile.xml nm-settings-keyfile.xsl \ + nm-settings-ifcfg-rh.xml nm-settings-ifcfg-rh.xsl $(addsuffix \ + .xml,$(basename $(man_pages))) $(man_pages) \ + $(autogenerated_man_pages) XSLTPROC = xsltproc XSLTPROC_FLAGS = --xinclude --nonet XSLTPROC_MAN_FLAGS = \ @@ -868,13 +867,6 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man7 \ @ENABLE_GTK_DOC_TRUE@%.8: %.xml common.ent @ENABLE_GTK_DOC_TRUE@ $(AM_V_GEN) xsltproc $(XSLTPROC_MAN_FLAGS) $< -NetworkManager.conf.xml: $(srcdir)/NetworkManager.conf.xml.in - $(AM_V_GEN) sed \ - -e 's|[@]NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT[@]|$(NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT)|g' \ - -e 's|[@]NM_CONFIG_KEYFILE_PATH_DEFAULT[@]|$(nmconfdir)/conf.d|g' \ - -e 's|[@]NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT[@]|$(NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT)|g' \ - -e 's|[@]NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT[@]|$(NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT)|g' \ - $< >$@ @BUILD_SETTING_DOCS_TRUE@nm-settings.xml: nm-settings.xsl $(top_builddir)/libnm/nm-setting-docs.xml @BUILD_SETTING_DOCS_TRUE@ $(AM_V_GEN) xsltproc --output $@ $^ diff --git a/man/NetworkManager.8 b/man/NetworkManager.8 index 35594cfe..4c06ffa3 100644 --- a/man/NetworkManager.8 +++ b/man/NetworkManager.8 @@ -2,12 +2,12 @@ .\" Title: NetworkManager .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: Network management daemons -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.1\&.93" "Network management daemons" +.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.1\&.94" "Network management daemons" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5 index 72fbf38f..95e36983 100644 --- a/man/NetworkManager.conf.5 +++ b/man/NetworkManager.conf.5 @@ -2,12 +2,12 @@ .\" Title: NetworkManager.conf .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: Configuration -.\" Source: NetworkManager 1.2 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NETWORKMANAGER\&.CON" "5" "" "NetworkManager 1\&.2" "Configuration" +.TH "NETWORKMANAGER\&.CON" "5" "" "NetworkManager 1\&.1\&.94" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -254,7 +254,7 @@ This key is deprecated and has no effect since the hostname is now stored in /et .PP \fIpath\fR .RS 4 -The location where keyfiles are read and stored\&. This defaults to "/usr/local/etc/NetworkManager/conf\&.d"\&. +The location where keyfiles are read and stored\&. This defaults to "${prefix}/etc/NetworkManager/conf\&.d"\&. .RE .PP \fIunmanaged\-devices\fR diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml index 3427cd64..2ae26f50 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -1,9 +1,26 @@ <?xml version='1.0'?> <!--*-nxml-*--> +<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?> <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" -"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ +<!ENTITY % entities SYSTEM "common.ent" > +%entities; +]> <!-- -Copyright 2010 - 2014 Red Hat, Inc. + NetworkManager.conf(5) manual page + + Copyright 2010 - 2016 Red Hat, Inc. + + 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 version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. You may obtain a copy of the GNU Free Documentation License + from the Free Software Foundation by visiting their Web site or by + writing to: + + Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <refentry id="NetworkManager.conf"> @@ -17,7 +34,7 @@ Copyright 2010 - 2014 Red Hat, Inc. <manvolnum>5</manvolnum> <refmiscinfo class="source">NetworkManager</refmiscinfo> <refmiscinfo class="manual">Configuration</refmiscinfo> - <refmiscinfo class="version">1.2</refmiscinfo> + <refmiscinfo class="version">&NM_VERSION;</refmiscinfo> </refmeta> <refnamediv> @@ -151,7 +168,7 @@ plugins-=remove-me <listitem><para>Whether the system uses PolicyKit for authorization. If <literal>false</literal>, all requests will be allowed. If <literal>true</literal>, non-root requests are authorized using PolicyKit. - The default value is <literal>true</literal>. + The default value is <literal>&NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT;</literal>. </para></listitem> </varlistentry> <varlistentry> @@ -349,7 +366,7 @@ no-auto-default=* <term><varname>path</varname></term> <listitem> <para>The location where keyfiles are read and stored. - This defaults to "<literal>/usr/local/etc/NetworkManager/conf.d</literal>". + This defaults to "<filename>&sysconfdir;/NetworkManager/conf.d</filename>". </para> </listitem> </varlistentry> @@ -496,7 +513,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth "<literal>debug</literal>" uses syslog and logs to standard error. If NetworkManager is started in debug mode (<literal>--debug</literal>) this option is ignored and "<literal>debug</literal>" is always used. - Otherwise, the default is "<literal>journal</literal>". + Otherwise, the default is "<literal>&NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT;</literal>". </para></listitem> </varlistentry> <varlistentry> @@ -505,7 +522,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth auditd, the audit daemon. If <literal>false</literal>, audit records will be sent only to the NetworkManager logging system. If set to <literal>true</literal>, they will be also - sent to auditd. The default value is <literal>true</literal>. + sent to auditd. The default value is <literal>&NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT;</literal>. </para></listitem> </varlistentry> </variablelist> diff --git a/man/NetworkManager.conf.xml.in b/man/NetworkManager.conf.xml.in deleted file mode 100644 index 2736065e..00000000 --- a/man/NetworkManager.conf.xml.in +++ /dev/null @@ -1,1020 +0,0 @@ -<?xml version='1.0'?> <!--*-nxml-*--> -<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" -"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> - -<!-- -Copyright 2010 - 2014 Red Hat, Inc. ---> - -<refentry id="NetworkManager.conf"> - <refentryinfo> - <title>NetworkManager.conf</title> - <author>NetworkManager developers</author> - </refentryinfo> - - <refmeta> - <refentrytitle>NetworkManager.conf</refentrytitle> - <manvolnum>5</manvolnum> - <refmiscinfo class="source">NetworkManager</refmiscinfo> - <refmiscinfo class="manual">Configuration</refmiscinfo> - <refmiscinfo class="version">1.2</refmiscinfo> - </refmeta> - - <refnamediv> - <refname>NetworkManager.conf</refname> - <refpurpose>NetworkManager configuration file</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <para><filename>/etc/NetworkManager/NetworkManager.conf</filename>, - <filename>/etc/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</filename>, - <filename>/usr/lib/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</filename>, - <filename>/var/lib/NetworkManager/NetworkManager-intern.conf</filename> - </para> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - <para><literal>NetworkManager.conf</literal> is the configuration file for NetworkManager. It is used - to set up various aspects of NetworkManager's behavior. The - location of the main file and configuration directories may be changed - through use of the <option>--config</option>, <option>--config-dir</option>, - <option>--system-config-dir</option>, and <option>--intern-config</option> - argument for NetworkManager, respectively. - </para> - <para>If a default <literal>NetworkManager.conf</literal> is - provided by your distribution's packages, you should not modify - it, since your changes may get overwritten by package - updates. Instead, you can add additional <literal>.conf</literal> - files to the <literal>/etc/NetworkManager/conf.d</literal> directory. - These will be read in order, with later files overriding earlier ones. - Packages might install further configuration snippets to <literal>/usr/lib/NetworkManager/conf.d</literal>. - This directory is parsed first, even before <literal>NetworkManager.conf</literal>. - The loading of a file <literal>/usr/lib/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</literal> - can be prevented by adding a file <literal>/etc/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</literal>. - In this case, the file from the etc configuration shadows the file from the - system configuration directory. - </para> - <para> - NetworkManager can overwrite certain user configuration options via D-Bus or other internal - operations. In this case it writes those changes to <literal>/var/lib/NetworkManager/NetworkManager-intern.conf</literal>. - This file is not intended to be modified by the user, but it is read last and can shadow - user configuration from <literal>NetworkManager.conf</literal>. - </para> - - </refsect1> - - <refsect1> - <title>File Format</title> - <para> - The configuration file format is so-called key file (sort of - ini-style format). It consists of sections (groups) of - key-value pairs. Lines beginning with a '#' and blank lines are - considered comments. Sections are started by a header line - containing the section enclosed in '[' and ']', and ended - implicitly by the start of the next section or the end of the - file. Each key-value pair must be contained in a section. - </para> - <para> - For keys that take a list of devices as their value, you can - specify devices by their MAC addresses or interface names, or - "*" to specify all devices. See <xref linkend="device-spec"/> - below. - </para> - <para> - Minimal system settings configuration file looks like this: - <programlisting> -[main] -plugins=keyfile -</programlisting> - </para> - <para> - As an extension to the normal keyfile format, you can also - append a value to a previously-set list-valued key by doing: - <programlisting> -plugins+=another-plugin -plugins-=remove-me -</programlisting> - </para> - </refsect1> - - <refsect1> - <title><literal>main</literal> section</title> - <variablelist> - <varlistentry> - <term><varname>plugins</varname></term> - <listitem> - <para> - Lists system settings plugin names separated by ','. These - plugins are used to read and write system-wide - connections. When multiple plugins are specified, the - connections are read from all listed plugins. When writing - connections, the plugins will be asked to save the - connection in the order listed here; if the first plugin - cannot write out that connection type (or can't write out - any connections) the next plugin is tried, etc. If none of - the plugins can save the connection, an error is returned - to the user. - </para> - <para> - If NetworkManager defines a distro-specific - network-configuration plugin for your system, then that - will normally be listed here. (See below for the available - plugins.) Note that the <literal>keyfile</literal> plugin - is always appended to the end of this list (if it doesn't - already appear earlier in the list), so if there is no - distro-specific plugin for your system then you can leave - this key unset and NetworkManager will fall back to using - <literal>keyfile</literal>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><varname>monitor-connection-files</varname></term> - <listitem><para>Whether the configured settings plugin(s) - should set up file monitors and immediately pick up changes - made to connection files while NetworkManager is running. This - is disabled by default; NetworkManager will only read - the connection files at startup, and when explicitly requested - via the ReloadConnections D-Bus call. If this key is set to - '<literal>true</literal>', then NetworkManager will reload - connection files any time they changed. - Automatic reloading is not advised because there are race conditions - involved and it depends on the way how the editor updates the file. - In some situations, NetworkManager might first delete and add the - connection anew, instead of updating the existing one. Also, NetworkManager - might pick up incomplete settings while the user is still editing the files. - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>auth-polkit</varname></term> - <listitem><para>Whether the system uses PolicyKit for authorization. - If <literal>false</literal>, all requests will be allowed. If - <literal>true</literal>, non-root requests are authorized using PolicyKit. - The default value is <literal>@NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT@</literal>. - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>dhcp</varname></term> - <listitem><para>This key sets up what DHCP client - NetworkManager will use. Allowed values are - <literal>dhclient</literal>, <literal>dhcpcd</literal>, and - <literal>internal</literal>. The <literal>dhclient</literal> - and <literal>dhcpcd</literal> options require the indicated - clients to be installed. The <literal>internal</literal> - option uses a built-in DHCP client which is not currently as - featureful as the external clients.</para> - <para>If this key is missing, available DHCP clients are - looked for in this order: <literal>dhclient</literal>, - <literal>dhcpcd</literal>, - <literal>internal</literal>.</para></listitem> - </varlistentry> - <varlistentry> - <term><varname>no-auto-default</varname></term> - <listitem><para>Specify devices for which - NetworkManager shouldn't create default wired connection - (Auto eth0). By default, NetworkManager creates a temporary - wired connection for any Ethernet device that is managed and - doesn't have a connection configured. List a device in this - option to inhibit creating the default connection for the - device. May have the special value <literal>*</literal> to - apply to all devices.</para> - <para>When the default wired connection is deleted or saved - to a new persistent connection by a plugin, the device is - added to a list in the file - <filename>/var/run/NetworkManager/no-auto-default.state</filename> - to prevent creating the default connection for that device - again.</para> - <para>See <xref linkend="device-spec"/> for the syntax how to - specify a device. - </para> - <para> - Example: - <programlisting> -no-auto-default=00:22:68:5c:5d:c4,00:1e:65:ff:aa:ee -no-auto-default=eth0,eth1 -no-auto-default=* -</programlisting> - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>ignore-carrier</varname></term> - <listitem> - <para> - Specify devices for which NetworkManager will (partially) - ignore the carrier state. Normally, for - device types that support carrier-detect, such as Ethernet - and InfiniBand, NetworkManager will only allow a - connection to be activated on the device if carrier is - present (ie, a cable is plugged in), and it will - deactivate the device if carrier drops for more than a few - seconds. - </para> - <para> - Listing a device here will allow activating connections on - that device even when it does not have carrier, provided - that the connection uses only statically-configured IP - addresses. Additionally, it will allow any active - connection (whether static or dynamic) to remain active on - the device when carrier is lost. - </para> - <para> - Note that the "carrier" property of NMDevices and device D-Bus - interfaces will still reflect the actual device state; it's just - that NetworkManager will not make use of that information. - </para> - <para>See <xref linkend="device-spec"/> for the syntax how to - specify a device. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>assume-ipv6ll-only</varname></term> - <listitem> - <para> - Specify devices for which NetworkManager will try to - generate a connection based on initial configuration when - the device only has an IPv6 link-local address. - </para> - <para>See <xref linkend="device-spec"/> for the syntax how to - specify a device. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>configure-and-quit</varname></term> - <listitem> - <para> - When set to '<literal>true</literal>', NetworkManager quits after - performing initial network configuration but spawns small helpers - to preserve DHCP leases and IPv6 addresses. This is useful in - environments where network setup is more or less static or it is - desirable to save process time but still handle some dynamic - configurations. When this option is <literal>true</literal>, - network configuration for WiFi, WWAN, Bluetooth, ADSL, and PPPoE - interfaces cannot be preserved due to their use of external - services, and these devices will be deconfigured when NetworkManager - quits even though other interface's configuration may be preserved. - Also, to preserve DHCP addresses the '<literal>dhcp</literal>' option - must be set to '<literal>internal</literal>'. The default value of - the '<literal>configure-and-quit</literal>' option is - '<literal>false</literal>', meaning that NetworkManager will continue - running after initial network configuration and continue responding - to system and hardware events, D-Bus requests, and user commands. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>dns</varname></term> - <listitem><para>Set the DNS (<filename>resolv.conf</filename>) processing mode.</para> - <para><literal>default</literal>: The default if the key is - not specified. NetworkManager will update - <filename>resolv.conf</filename> to reflect the nameservers - provided by currently active connections.</para> - <para><literal>dnsmasq</literal>: NetworkManager will run - dnsmasq as a local caching nameserver, using a "split DNS" - configuration if you are connected to a VPN, and then update - <filename>resolv.conf</filename> to point to the local - nameserver.</para> - <para><literal>unbound</literal>: NetworkManager will talk - to unbound and dnssec-triggerd, providing a "split DNS" - configuration with DNSSEC support. The /etc/resolv.conf - will be managed by dnssec-trigger daemon.</para> - <para><literal>none</literal>: NetworkManager will not - modify resolv.conf.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>rc-manager</varname></term> - <listitem><para>Set the <filename>resolv.conf</filename> - management mode. The default value depends on how NetworkManager - was built. Regardless of this setting, NetworkManager will - always write resolv.conf to its runtime state directory.</para> - <para><literal>none</literal>: NetworkManager will symlink - <filename>/etc/resolv.conf</filename> to its private - resolv.conf file in the runtime state directory.</para> - <para><literal>file</literal>: NetworkManager will write - <filename>/etc/resolv.conf</filename> as file.</para> - <para><literal>resolvconf</literal>: NetworkManager will run - resolvconf to update the DNS configuration.</para> - <para><literal>netconfig</literal>: NetworkManager will run - netconfig to update the DNS configuration.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>debug</varname></term> - <listitem><para>Comma separated list of options to aid - debugging. This value will be combined with the environment - variable <literal>NM_DEBUG</literal>. Currently the following - values are supported:</para> - <para> - <literal>RLIMIT_CORE</literal>: set ulimit -c unlimited - to write out core dumps. Beware, that a core dump can contain - sensitive information such as passwords or configuration settings. - </para> - <para> - <literal>fatal-warnings</literal>: set g_log_set_always_fatal() - to core dump on warning messages from glib. This is equivalent - to the --g-fatal-warnings command line option. - </para> - </listitem> - </varlistentry> - - </variablelist> - </refsect1> - - <refsect1> - <title><literal>keyfile</literal> section</title> - <para>This section contains keyfile-plugin-specific options, and - is normally only used when you are not using any other - distro-specific plugin.</para> - - <para> - <variablelist> - <varlistentry> - <term><varname>hostname</varname></term> - <listitem><para>This key is deprecated and has no effect - since the hostname is now stored in /etc/hostname or other - system configuration files according to build options. - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>path</varname></term> - <listitem> - <para>The location where keyfiles are read and stored. - This defaults to "<literal>@NM_CONFIG_KEYFILE_PATH_DEFAULT@</literal>". - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><varname>unmanaged-devices</varname></term> - <listitem><para>Set devices that should be ignored by - NetworkManager. - </para> - <para>See <xref linkend="device-spec"/> for the syntax how to - specify a device. - </para> - <para> - Example: - <programlisting> -unmanaged-devices=interface-name:em4 -unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth2 -</programlisting> - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title><literal>ifupdown</literal> section</title> - <para>This section contains ifupdown-specific options and thus only - has effect when using the <literal>ifupdown</literal> plugin.</para> - - <para> - <variablelist> - <varlistentry> - <term><varname>managed</varname></term> - <listitem><para>If set to <literal>true</literal>, then - interfaces listed in - <filename>/etc/network/interfaces</filename> are managed by - NetworkManager. If set to <literal>false</literal>, then - any interface listed in - <filename>/etc/network/interfaces</filename> will be ignored - by NetworkManager. Remember that NetworkManager controls the - default route, so because the interface is ignored, - NetworkManager may assign the default route to some other - interface.</para> - <para> - The default value is <literal>false</literal>. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title><literal>logging</literal> section</title> - <para>This section controls NetworkManager's logging. Any - settings here are overridden by the <option>--log-level</option> - and <option>--log-domains</option> command-line options.</para> - - <para> - <variablelist> - <varlistentry> - <term><varname>level</varname></term> - <listitem><para>The default logging verbosity level. - One of <literal>OFF</literal>, <literal>ERR</literal>, - <literal>WARN</literal>, <literal>INFO</literal>, - <literal>DEBUG</literal>, <literal>TRACE</literal>. The ERR - level logs only critical errors. WARN logs warnings that may - reflect operation. INFO logs various informational messages that - are useful for tracking state and operations. DEBUG enables - verbose logging for debugging purposes. TRACE enables even more - verbose logging then DEBUG level. Subsequent levels also log - all messages from earlier levels; thus setting the log level - to INFO also logs error and warning messages.</para></listitem> - </varlistentry> - <varlistentry> - <term><varname>domains</varname></term> - <listitem><para>The following log domains are available: - PLATFORM, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, - WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, - AGENTS, SETTINGS, SUSPEND, CORE, DEVICE, OLPC, WIMAX, - INFINIBAND, FIREWALL, ADSL, BOND, VLAN, BRIDGE, DBUS_PROPS, - TEAM, CONCHECK, DCB, DISPATCH, AUDIT.</para> - <para>In addition, these special domains can be used: NONE, - ALL, DEFAULT, DHCP, IP.</para> - <para>You can specify per-domain log level overrides by - adding a colon and a log level to any domain. E.g., - "<literal>WIFI:DEBUG,WIFI_SCAN:OFF</literal>".</para></listitem> - </varlistentry> - <varlistentry> - <para>Domain descriptions: - <simplelist type="horiz" columns="1"> - <member>PLATFORM : OS (platform) operations</member> - <member>RFKILL : RFKill subsystem operations</member> - <member>ETHER : Ethernet device operations</member> - <member>WIFI : Wi-Fi device operations</member> - <member>BT : Bluetooth operations</member> - <member>MB : Mobile broadband operations</member> - <member>DHCP4 : DHCP for IPv4</member> - <member>DHCP6 : DHCP for IPv6</member> - <member>PPP : Point-to-point protocol operations</member> - <member>WIFI_SCAN : Wi-Fi scanning operations</member> - <member>IP4 : IPv4-related operations</member> - <member>IP6 : IPv6-related operations</member> - <member>AUTOIP4 : AutoIP operations</member> - <member>DNS : Domain Name System related operations</member> - <member>VPN : Virtual Private Network connections and operations</member> - <member>SHARING : Connection sharing</member> - <member>SUPPLICANT : WPA supplicant related operations</member> - <member>AGENTS : Secret agents operations and communication</member> - <member>SETTINGS : Settings/config service operations</member> - <member>SUSPEND : Suspend/resume</member> - <member>CORE : Core daemon and policy operations</member> - <member>DEVICE : Activation and general interface operations</member> - <member>OLPC : OLPC Mesh device operations</member> - <member>WIMAX : WiMAX device operations</member> - <member>INFINIBAND : InfiniBand device operations</member> - <member>FIREWALL : FirewallD related operations</member> - <member>ADSL : ADSL device operations</member> - <member>BOND : Bonding operations</member> - <member>VLAN : VLAN operations</member> - <member>BRIDGE : Bridging operations</member> - <member>DBUS_PROPS : D-Bus property changes</member> - <member>TEAM : Teaming operations</member> - <member>CONCHECK : Connectivity check</member> - <member>DCB : Data Center Bridging (DCB) operations</member> - <member>DISPATCH : Dispatcher scripts</member> - <member>AUDIT : Audit records</member> - <member> </member> - <member>NONE : when given by itself logging is disabled</member> - <member>ALL : all log domains</member> - <member>DEFAULT : default log domains</member> - <member>DHCP : shortcut for "DHCP4,DHCP6"</member> - <member>IP : shortcut for "IP4,IP6"</member> - <member> </member> - <member>HW : deprecated alias for "PLATFORM"</member> - </simplelist> - </para> - </varlistentry> - <varlistentry> - <term><varname>backend</varname></term> - <listitem><para>The logging backend. Supported values - are "<literal>debug</literal>", "<literal>syslog</literal>", - "<literal>journal</literal>". - "<literal>debug</literal>" uses syslog and logs to standard error. - If NetworkManager is started in debug mode (<literal>--debug</literal>) - this option is ignored and "<literal>debug</literal>" is always used. - Otherwise, the default is "<literal>@NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT@</literal>". - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>audit</varname></term> - <listitem><para>Whether the audit records are delivered to - auditd, the audit daemon. If <literal>false</literal>, audit - records will be sent only to the NetworkManager logging - system. If set to <literal>true</literal>, they will be also - sent to auditd. The default value is <literal>@NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT@</literal>. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title><literal>connection</literal> section</title> - <para>Specify default values for connections. - </para> - <para> - Example: -<programlisting> -[connection] -ipv6.ip6-privacy=0 -</programlisting> - </para> - <refsect2> - <title>Supported Properties</title> - <para> - Not all properties can be overwritten, only the following - properties are supported to have their default values configured - (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). - A default value is only consulted if the corresponding per-connection value - explicitly allows for that. - <variablelist> - <varlistentry> - <term><varname>connection.autoconnect-slaves</varname></term> - </varlistentry> - <varlistentry> - <term><varname>connection.lldp</varname></term> - </varlistentry> - <varlistentry> - <term><varname>ethernet.wake-on-lan</varname></term> - </varlistentry> - <varlistentry> - <term><varname>ipv4.dad-timeout</varname></term> - </varlistentry> - <varlistentry> - <term><varname>ipv4.dhcp-timeout</varname></term> - <listitem><para>If left unspecified, the default value for - the interface type is used.</para></listitem> - </varlistentry> - <varlistentry> - <term><varname>ipv4.route-metric</varname></term> - </varlistentry> - <varlistentry> - <term><varname>ipv6.ip6-privacy</varname></term> - <listitem><para>If <literal>ipv6.ip6-privacy</literal> is unset, use the content of - "/proc/sys/net/ipv6/conf/default/use_tempaddr" as last fallback. - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>ipv6.route-metric</varname></term> - </varlistentry> - <varlistentry> - <term><varname>vpn.timeout</varname></term> - <listitem><para>If left unspecified, default value of 60 seconds is used.</para></listitem> - </varlistentry> - <varlistentry> - <term><varname>wifi.mac-address-randomization</varname></term> - <listitem><para>If left unspecified, MAC address randomization is disabled.</para></listitem> - </varlistentry> - <varlistentry> - <term><varname>wifi.powersave</varname></term> - <listitem><para>If left unspecified, the default value - "<literal>ignore</literal>" will be used.</para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - - <refsect2> - <title>Sections</title> - <para> - You can configure multiple <literal>connection</literal> - sections, by having different sections with a name that all start - with "connection". - Example: -<programlisting> -[connection] -ipv6.ip6-privacy=0 -connection.autoconnect-slaves=1 -vpn.timeout=120 - -[connection-wifi-wlan0] -match-device=interface-name:wlan0 -ipv4.route-metric=50 - -[connection-wifi-other] -match-device=type:wifi -ipv4.route-metric=55 -ipv6.ip6-privacy=1 -</programlisting> - </para> - - <para> - The sections within one file are considered in order of appearance, with the - exception that the <literal>[connection]</literal> section is always - considered last. In the example above, this order is <literal>[connection-wifi-wlan0]</literal>, - <literal>[connection-wlan-other]</literal>, and <literal>[connection]</literal>. - When checking for a default configuration value, the sections are searched until - the requested value is found. - In the example above, "ipv4.route-metric" for wlan0 interface is set to 50, - and for all other Wi-Fi typed interfaces to 55. Also, Wi-Fi devices would have - IPv6 private addresses enabled by default, but other devices would have it disabled. - Note that also "wlan0" gets "ipv6.ip6-privacy=1", because although the section - "[connection-wifi-wlan0]" matches the device, it does not contain that property - and the search continues. - </para> - <para> - When having different sections in multiple files, sections from files that are read - later have higher priority. So within one file the priority of the sections is - top-to-bottom. Across multiple files later definitions take precedence. - </para> - - <para> - The following properties further control how a connection section applies. - <variablelist> - <varlistentry> - <term><varname>match-device</varname></term> - <listitem><para>An optional device spec that restricts - when the section applies. See <xref linkend="device-spec"/> - for the possible values. - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>stop-match</varname></term> - <listitem><para>An optional boolean value which defaults to - <literal>no</literal>. If the section matches (based on - <literal>match-device</literal>), further sections will not be - considered even if the property in question is not present. In - the example above, if <literal>[connection-wifi-wlan0]</literal> would - have <literal>stop-match</literal> set to <literal>yes</literal>, - its <literal>ipv6.ip6-privacy</literal> value would be - unspecified. - </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect2> - </refsect1> - - <refsect1> - <title><literal>connectivity</literal> section</title> - <para>This section controls NetworkManager's optional connectivity - checking functionality. This allows NetworkManager to detect - whether or not the system can actually access the internet or - whether it is behind a captive portal.</para> - - <para> - <variablelist> - <varlistentry> - <term><varname>uri</varname></term> - <listitem><para>The URI of a web page to periodically - request when connectivity is being checked. This page - should return the header "X-NetworkManager-Status" with a - value of "online". Alternatively, it's body content should - be set to "NetworkManager is online". The body content - check can be controlled by the <literal>response</literal> - option. If this option is blank or missing, connectivity - checking is disabled. - </para></listitem> - </varlistentry> - <varlistentry> - <term><varname>interval</varname></term> - <listitem><para>Specified in seconds; controls how often - connectivity is checked when a network connection exists. If - set to 0 connectivity checking is disabled. If missing, the - default is 300 seconds.</para></listitem> - </varlistentry> - <varlistentry> - <term><varname>response</varname></term> - <listitem><para>If set controls what body content - NetworkManager checks for when requesting the URI for - connectivity checking. If missing, defaults to - "NetworkManager is online" </para></listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title><literal>global-dns</literal> section</title> - <para>This section specifies global DNS settings that override - connection-specific configuration.</para> - <para> - <variablelist> - <varlistentry> - <term><varname>searches</varname></term> - <listitem> - <para> - A list of search domains to be used during hostname lookup. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><varname>options</varname></term> - <listitem> - <para> - A list of of options to be passed to the hostname resolver. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title><literal>global-dns-domain</literal> sections</title> - <para>Sections with a name starting with the "global-dns-domain-" - prefix allow to define global DNS configuration for specific - domains. The part of section name after "global-dns-domain-" - specifies the domain name a section applies to. More specific - domains have the precedence over less specific ones and the - default domain is represented by the wildcard "*". A default - domain section is mandatory. - </para> - <para> - <variablelist> - <varlistentry> - <term><varname>servers</varname></term> - <listitem> - <para> - A list of addresses of DNS servers to be used for the given domain. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><varname>options</varname></term> - <listitem> - <para> - A list of domain-specific DNS options. Not used at the moment. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title><literal>.config</literal> sections</title> - <para>This is a special section that contains options which apply - to the configuration file that contains the option. - </para> - <para> - <variablelist> - <varlistentry> - <term><varname>enable</varname></term> - <listitem> - <para> - Defaults to "<literal>true</literal>". If "<literal>false</literal>", - the configuration file will be skipped during loading. - Note that the main configuration file <literal>NetworkManager.conf</literal> - cannot be disabled. -<programlisting> -# always skip loading the config file -[.config] -enable=false -</programlisting> - </para> - <para> - You can also match against the version of NetworkManager. For example - the following are valid configurations: -<programlisting> -# only load on version 1.0.6 -[.config] -enable=nm-version:1.0.6 - -# load on all versions 1.0.x, but not 1.2.x -[.config] -enable=nm-version:1.0 - -# only load on versions >= 1.1.6. This does not match -# with version 1.2.0 or 1.4.4. Only the last digit is considered. -[.config] -enable=nm-version-min:1.1.6 - -# only load on versions >= 1.2. Contrary to the previous -# example, this also matches with 1.2.0, 1.2.10, 1.4.4, etc. -[.config] -enable=nm-version-min:1.2 - -# Match against the maximum allowed version. The example matches -# versions 1.2.0, 1.2.2, 1.2.4. Again, only the last version digit -# is allowed to be smaller. So this would not match match on 1.1.10. -[.config] -enable=nm-version-max:1.2.6 -</programlisting> - </para> - <para> - You can also match against the value of the environment variable - <literal>NM_CONFIG_ENABLE_TAG</literal>, like: -<programlisting> -# always skip loading the file when running NetworkManager with -# environment variable "NM_CONFIG_ENABLE_TAG=TAG1" -[.config] -enable=env:TAG1 -</programlisting> - </para> - <para> - More then one match can be specified. The configuration will be - enabled if one of the predicates matches ("or"). The special prefix "except:" can - be used to negate the match. Note that if one except-predicate - matches, the entire configuration will be disabled. - In other words, a except predicate always wins over other predicates. -<programlisting> -# enable the configuration either when the environment variable -# is present or the version is at least 1.2.0. -[.config] -enable=env:TAG2,nm-version-min:1.2 - -# enable the configuration for version >= 1.2.0, but disable -# it when the environment variable is set to "TAG3" -[.config] -enable=except:env:TAG3,nm-version-min:1.2 - -# enable the configuration on >= 1.3, >= 1.2.6, and >= 1.0.16. -# Useful if a certain feature is only present since those releases. -[.config] -enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16 -</programlisting> - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - </refsect1> - - <refsect1> - <title>Plugins</title> - - <variablelist> - <varlistentry> - <term><varname>keyfile</varname></term> - <listitem> - <para> - The <literal>keyfile</literal> plugin is the generic - plugin that supports all the connection types and - capabilities that NetworkManager has. It writes files out - in an .ini-style format in - /etc/NetworkManager/system-connections. - </para> - <para> - The stored connection file may contain passwords and - private keys, so it will be made readable only to root, - and the plugin will ignore files that are readable or - writable by any user or group other than root. - </para> - <para> - This plugin is always active, and will automatically be - used to store any connections that aren't supported by any - other active plugin. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><varname>ifcfg-rh</varname></term> - <listitem> - <para> - This plugin is used on the Fedora and Red Hat Enterprise - Linux distributions to read and write configuration from - the standard - <filename>/etc/sysconfig/network-scripts/ifcfg-*</filename> - files. It currently supports reading Ethernet, Wi-Fi, - InfiniBand, VLAN, Bond, Bridge, and Team connections. - Enabling <literal>ifcfg-rh</literal> implicitly enables - <literal>ibft</literal> plugin, if it is available. - This can be disabled by adding <literal>no-ibft</literal>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>ifcfg-suse</varname></term> - <listitem> - <para> - This plugin is deprecated and its selection has no effect. - The <literal>keyfile</literal> plugin should be used - instead. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>ifupdown</varname></term> - <listitem> - <para> - This plugin is used on the Debian and Ubuntu - distributions, and reads Ethernet and Wi-Fi connections - from <filename>/etc/network/interfaces</filename>. - </para> - <para> - This plugin is read-only; any connections (of any type) - added from within NetworkManager when you are using this - plugin will be saved using the <literal>keyfile</literal> - plugin instead. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><varname>ibft</varname>, <varname>no-ibft</varname></term> - <listitem> - <para> - This plugin allows to read iBFT configuration (iSCSI Boot Firmware Table). - The configuration is read using /sbin/iscsiadm. Users are expected to - configure iBFT connections via the firmware interfaces. - If ibft support is available, it is automatically enabled after - <literal>ifcfg-rh</literal>. This can be disabled by <literal>no-ibft</literal>. - You can also explicitly specify <literal>ibft</literal> to load the - plugin without <literal>ifcfg-rh</literal> or to change the plugin order. - </para> - </listitem> - </varlistentry> - - </variablelist> - </refsect1> - - <refsect1> - <title>Appendix</title> - <refsect2 id="device-spec"> - <title>Device List Format</title> - <para> - The configuration options <literal>main.no-auto-default</literal>, <literal>main.ignore-carrier</literal>, - and <literal>keyfile.unmanaged-devices</literal> select devices based on a list of matchings. - Devices can be specified using the following format: - </para> - <para> - <variablelist> - <varlistentry> - <term>*</term> - <listitem><para>Matches every device.</para></listitem> - </varlistentry> - <varlistentry> - <term>IFNAME</term> - <listitem><para>Case sensitive match of interface name of the device. Globbing is not supported.</para></listitem> - </varlistentry> - <varlistentry> - <term>HWADDR</term> - <listitem><para>Match the MAC address of the device. Globbing is not supported</para></listitem> - </varlistentry> - <varlistentry> - <term>interface-name:IFNAME</term> - <term>interface-name:~IFNAME</term> - <listitem><para>Case sensitive match of interface name of the device. Simple globbing is supported with - <literal>*</literal> and <literal>?</literal>. Ranges and escaping is not supported.</para></listitem> - </varlistentry> - <varlistentry> - <term>interface-name:=IFNAME</term> - <listitem><para>Case sensitive match of interface name of the device. Globbing is disabled and <literal>IFNAME</literal> - is taken literally.</para></listitem> - </varlistentry> - <varlistentry> - <term>mac:HWADDR</term> - <listitem><para>Match the MAC address of the device. Globbing is not supported</para></listitem> - </varlistentry> - <varlistentry> - <term>s390-subchannels:HWADDR</term> - <listitem><para>Match the device based on the subchannel address. Globbing is not supported</para></listitem> - </varlistentry> - <varlistentry> - <term>type:TYPE</term> - <listitem><para>Match the device type. Valid type names are as reported by "<literal>nmcli -f GENERAL.TYPE device show</literal>". - Globbing is not supported.</para></listitem> - </varlistentry> - <varlistentry> - <term>except:SPEC</term> - <listitem><para>Negative match of a device. <literal>SPEC</literal> must be explicitly qualified with - a prefix such as <literal>interface-name:</literal>. A negative match has higher priority then the positive - matches above.</para></listitem> - </varlistentry> - <varlistentry> - <term>SPEC[,;]SPEC</term> - <listitem><para>Multiple specs can be concatenated with commas or semicolons. The order does not matter as - matches are either inclusive or negative (<literal>except:</literal>), with negative matches having higher - priority. - </para> - <para>Backslash is supported to escape the separators ';' and ',', and to express special - characters such as newline ('\n'), tabulator ('\t'), whitespace ('\s') and backslash ('\\'). The globbing of - interface names cannot be escaped. Whitespace is not a separator but will be trimmed between - two specs (unless escaped as '\s'). - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - <para> - Example: - <programlisting> -interface-name:em4 -mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth2 -interface-name:vboxnet*,except:interface-name:vboxnet2 -*,except:mac:00:22:68:1c:59:b1 -</programlisting> - </para> - </refsect2> - </refsect1> - - <refsect1> - <title>See Also</title> - <para> - <citerefentry><refentrytitle>NetworkManager</refentrytitle><manvolnum>8</manvolnum></citerefentry>, - <citerefentry><refentrytitle>nmcli</refentrytitle><manvolnum>1</manvolnum></citerefentry>, - <citerefentry><refentrytitle>nmcli-examples</refentrytitle><manvolnum>7</manvolnum></citerefentry>, - <citerefentry><refentrytitle>nm-online</refentrytitle><manvolnum>1</manvolnum></citerefentry>, - <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry>, - <citerefentry><refentrytitle>nm-applet</refentrytitle><manvolnum>1</manvolnum></citerefentry>, - <citerefentry><refentrytitle>nm-connection-editor</refentrytitle><manvolnum>1</manvolnum></citerefentry> - </para> - </refsect1> -</refentry> diff --git a/man/NetworkManager.xml b/man/NetworkManager.xml index 3c4b733e..1088cc9c 100644 --- a/man/NetworkManager.xml +++ b/man/NetworkManager.xml @@ -7,9 +7,22 @@ ]> <!-- - Copyright 2005 - 2014 Red Hat, Inc. - Copyright 2005 - 2009 Novell, Inc. - Copyright 2005 Robert Love + NetworkManager(8) manual page + + Copyright 2005 - 2016 Red Hat, Inc. + Copyright 2005 - 2009 Novell, Inc. + Copyright 2005 Robert Love + + 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 version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. You may obtain a copy of the GNU Free Documentation License + from the Free Software Foundation by visiting their Web site or by + writing to: + + Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <refentry id="NetworkManager"> diff --git a/man/common.ent.in b/man/common.ent.in index cd43b8d8..ae8897eb 100644 --- a/man/common.ent.in +++ b/man/common.ent.in @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" ?> <!ENTITY NM_VERSION "@NM_VERSION@"> +<!ENTITY sysconfdir "@sysconfdir@"> +<!ENTITY NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT "@NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT@"> +<!ENTITY NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT "@NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT@"> +<!ENTITY NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT "@NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT@"> diff --git a/man/nm-online.1 b/man/nm-online.1 index 94e6406c..7a0c8087 100644 --- a/man/nm-online.1 +++ b/man/nm-online.1 @@ -2,12 +2,12 @@ .\" Title: nm-online .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: General Commands Manual -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.1\&.93" "General Commands Manual" +.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.1\&.94" "General Commands Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-online.xml b/man/nm-online.xml index f1f7a0d4..7fdd2f3e 100644 --- a/man/nm-online.xml +++ b/man/nm-online.xml @@ -9,26 +9,18 @@ <!-- nm-online(1) manual page - This is free documentation; 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. - - The GNU General Public License's references to "object code" - and "executables" are to be interpreted as the output of any - document formatting or typesetting system, including - intermediate and printed output. - - This manual 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 Licence along - with this manual; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Copyright 2010 - 2016 Red Hat, Inc. + + 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 version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. You may obtain a copy of the GNU Free Documentation License + from the Free Software Foundation by visiting their Web site or by + writing to: + + Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <refentry id='nm-online'> diff --git a/man/nm-settings-ifcfg-rh.5 b/man/nm-settings-ifcfg-rh.5 index 6eef8eb8..1dbc66dc 100644 --- a/man/nm-settings-ifcfg-rh.5 +++ b/man/nm-settings-ifcfg-rh.5 @@ -2,12 +2,12 @@ .\" Title: nm-settings-ifcfg-rh .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: Configuration -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NM\-SETTINGS\-IFCFG\" "5" "" "NetworkManager 1\&.1\&.93" "Configuration" +.TH "NM\-SETTINGS\-IFCFG\" "5" "" "NetworkManager 1\&.1\&.94" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-ifcfg-rh.xml b/man/nm-settings-ifcfg-rh.xml index 02b6bb14..b7af978f 100644 --- a/man/nm-settings-ifcfg-rh.xml +++ b/man/nm-settings-ifcfg-rh.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> -<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.93</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para> +<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.94</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para> NetworkManager is based on the concept of connection profiles that contain network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be stored in various formats. NetworkManager uses plugins for reading and writing diff --git a/man/nm-settings-keyfile.5 b/man/nm-settings-keyfile.5 index aa258355..5f187d5d 100644 --- a/man/nm-settings-keyfile.5 +++ b/man/nm-settings-keyfile.5 @@ -2,12 +2,12 @@ .\" Title: nm-settings-keyfile .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: Configuration -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NM\-SETTINGS\-KEYFIL" "5" "" "NetworkManager 1\&.1\&.93" "Configuration" +.TH "NM\-SETTINGS\-KEYFIL" "5" "" "NetworkManager 1\&.1\&.94" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings-keyfile.xml b/man/nm-settings-keyfile.xml index fe3c4423..f4c8e322 100644 --- a/man/nm-settings-keyfile.xml +++ b/man/nm-settings-keyfile.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> -<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.93</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para> +<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.94</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para> NetworkManager is based on the concept of connection profiles that contain network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be stored in various formats. NetworkManager uses plugins for reading and writing diff --git a/man/nm-settings.5 b/man/nm-settings.5 index d1c61ade..3f94730c 100644 --- a/man/nm-settings.5 +++ b/man/nm-settings.5 @@ -2,12 +2,12 @@ .\" Title: nm-settings .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: Configuration -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NM\-SETTINGS" "5" "" "NetworkManager 1\&.1\&.93" "Configuration" +.TH "NM\-SETTINGS" "5" "" "NetworkManager 1\&.1\&.94" "Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nm-settings.xml b/man/nm-settings.xml index b1ee7208..4d51f648 100644 --- a/man/nm-settings.xml +++ b/man/nm-settings.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> -<refentry id="nm-settings"><refentryinfo><title>nm-settings</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.93</refmiscinfo></refmeta><refnamediv><refname>nm-settings</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para> +<refentry id="nm-settings"><refentryinfo><title>nm-settings</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.94</refmiscinfo></refmeta><refnamediv><refname>nm-settings</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para> NetworkManager is based on a concept of connection profiles, sometimes referred to as connections only. These connection profiles contain a network configuration. When NetworkManager activates a connection profile on a network device the configuration will diff --git a/man/nmcli-examples.7 b/man/nmcli-examples.7 index 2bb5bb77..9c173aff 100644 --- a/man/nmcli-examples.7 +++ b/man/nmcli-examples.7 @@ -2,12 +2,12 @@ .\" Title: nmcli-examples .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: Examples -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.1\&.93" "Examples" +.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.1\&.94" "Examples" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -30,8 +30,8 @@ .SH "NAME" nmcli-examples \- usage examples of nmcli .SH "SYNOPSIS" -.HP \w'\fBnmcli\ \fR\fB[OPTIONS...]\fR\ 'u -\fBnmcli \fR\fB[OPTIONS...]\fR +.HP \w'\fBnmcli\fR\ 'u +\fBnmcli\fR [OPTIONS...] .SH "DESCRIPTION" .PP \fInmcli\fR @@ -41,8 +41,6 @@ manual page\&. .PP The purpose of this manual page is to provide you with various examples and usage scenarios of \fInmcli\fR\&. -.PP -Note: this page has "work\-in\-progress" status\&. .SH "EXAMPLES" .PP \fBExample\ \&1.\ \&Listing available Wi-Fi APs\fR @@ -51,7 +49,7 @@ Note: this page has "work\-in\-progress" status\&. .RS 4 .\} .nf -\fB$ nmcli device wifi list\fR +$ \fBnmcli device wifi list\fR * SSID MODE CHAN RATE SIGNAL BARS SECURITY netdatacomm_local Infra 6 54 Mbit/s 37 ▂▄__ WEP * F1 Infra 11 54 Mbit/s 98 ▂▄▆█ WPA1 @@ -81,7 +79,7 @@ will show all of them\&. .RS 4 .\} .nf -\fB$ nmcli \-p \-f general,wifi\-properties device show wlan0\fR +$ \fBnmcli \-p \-f general,wifi\-properties device show wlan0\fR =========================================================================== Device details (wlan0) =========================================================================== @@ -128,7 +126,7 @@ This command shows information about a Wi\-Fi device\&. .RS 4 .\} .nf -\fB$ nmcli general permissions\fR +$ \fBnmcli general permissions\fR PERMISSION VALUE org\&.freedesktop\&.NetworkManager\&.enable\-disable\-network yes org\&.freedesktop\&.NetworkManager\&.enable\-disable\-wifi yes @@ -170,7 +168,7 @@ More information about polkit can be found at http://www\&.freedesktop\&.org/wik .RS 4 .\} .nf -\fB$ nmcli general logging\fR +$ \fBnmcli general logging\fR LEVEL DOMAINS INFO PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC, @@ -189,8 +187,8 @@ This command shows current NetworkManager logging status\&. .RS 4 .\} .nf -\fB$ nmcli g log level DEBUG domains CORE,ETHER,IP\fR -\fB$ nmcli g log level INFO domains DEFAULT\fR +$ \fBnmcli g log level DEBUG domains CORE,ETHER,IP\fR +$ \fBnmcli g log level INFO domains DEFAULT\fR .fi .if n \{\ .RE @@ -206,9 +204,9 @@ manual page for available logging levels and domains\&. .RS 4 .\} .nf -\fB$ nmcli con add type bond ifname mybond0 mode active\-backup\fR -\fB$ nmcli con add type ethernet ifname eth1 master mybond0\fR -\fB$ nmcli con add type ethernet ifname eth2 master mybond0\fR +$ \fBnmcli con add type bond ifname mybond0 mode active\-backup\fR +$ \fBnmcli con add type ethernet ifname eth1 master mybond0\fR +$ \fBnmcli con add type ethernet ifname eth2 master mybond0\fR .fi .if n \{\ .RE @@ -230,9 +228,9 @@ interface, the second to .RS 4 .\} .nf -\fB$ nmcli con add type team con\-name Team1 ifname Team1 config team1\-master\-json\&.conf\fR -\fB$ nmcli con add type ethernet con\-name Team1\-slave1 ifname em1 master Team1\fR -\fB$ nmcli con add type ethernet con\-name Team1\-slave2 ifname em2 master Team1\fR +$ \fBnmcli con add type team con\-name Team1 ifname Team1 config team1\-master\-json\&.conf\fR +$ \fBnmcli con add type ethernet con\-name Team1\-slave1 ifname em1 master Team1\fR +$ \fBnmcli con add type ethernet con\-name Team1\-slave2 ifname em2 master Team1\fR .fi .if n \{\ .RE @@ -257,8 +255,8 @@ will use its default configuration\&. You will activate the whole setup by activ .RS 4 .\} .nf - \fB$ nmcli con up Team1\-slave1\fR - \fB$ nmcli con up Team1\-slave2\fR + $ \fBnmcli con up Team1\-slave1\fR + $ \fBnmcli con up Team1\-slave2\fR .fi .if n \{\ .RE @@ -272,10 +270,10 @@ By default, the created profiles are marked for auto\-activation\&. But if anoth .RS 4 .\} .nf -\fB$ nmcli con add type bridge con\-name TowerBridge ifname TowerBridge\fR -\fB$ nmcli con add type ethernet con\-name br\-slave\-1 ifname ens3 master TowerBridge\fR -\fB$ nmcli con add type ethernet con\-name br\-slave\-2 ifname ens4 master TowerBridge\fR -\fB$ nmcli con modify TowerBridge bridge\&.stp no\fR +$ \fBnmcli con add type bridge con\-name TowerBridge ifname TowerBridge\fR +$ \fBnmcli con add type ethernet con\-name br\-slave\-1 ifname ens3 master TowerBridge\fR +$ \fBnmcli con add type ethernet con\-name br\-slave\-2 ifname ens4 master TowerBridge\fR +$ \fBnmcli con modify TowerBridge bridge\&.stp no\fR .fi .if n \{\ .RE @@ -294,12 +292,12 @@ interface, the second to .RS 4 .\} .nf -\fB$ nmcli con add con\-name my\-con\-em1 ifname em1 type ethernet \e +$ \fBnmcli con add con\-name my\-con\-em1 ifname em1 type ethernet \e ip4 192\&.168\&.100\&.100/24 gw4 192\&.168\&.100\&.1 ip4 1\&.2\&.3\&.4 ip6 abbe::cafe\fR -\fB$ nmcli con mod my\-con\-em1 ipv4\&.dns "8\&.8\&.8\&.8 8\&.8\&.4\&.4"\fR -\fB$ nmcli con mod my\-con\-em1 +ipv4\&.dns 1\&.2\&.3\&.4\fR -\fB$ nmcli con mod my\-con\-em1 ipv6\&.dns "2001:4860:4860::8888 2001:4860:4860::8844"\fR -\fB$ nmcli \-p con show my\-con\-em1\fR +$ \fBnmcli con mod my\-con\-em1 ipv4\&.dns "8\&.8\&.8\&.8 8\&.8\&.4\&.4"\fR +$ \fBnmcli con mod my\-con\-em1 +ipv4\&.dns 1\&.2\&.3\&.4\fR +$ \fBnmcli con mod my\-con\-em1 ipv6\&.dns "2001:4860:4860::8888 2001:4860:4860::8844"\fR +$ \fBnmcli \-p con show my\-con\-em1\fR .fi .if n \{\ .RE @@ -318,7 +316,7 @@ command displays the profile so that all parameters can be reviewed\&. .RS 4 .\} .nf -\fB$ nmcli \-t \-f general \-e yes \-m tab dev show eth0\fR +$ \fBnmcli \-t \-f general \-e yes \-m tab dev show eth0\fR GENERAL:eth0:ethernet:Intel Corporation:82567LM Gigabit Network Connection: e1000e:2\&.1\&.4\-k:1\&.8\-3:00\e:22\e:68\e:15\e:29\e:21:1500:100 (connected):0 (No reas on given):/sys/devices/pci0000\e:00/0000\e:00\e:19\&.0/net/eth0:eth0:yes:yes:no: @@ -375,7 +373,7 @@ manual page for more information about NetworkManager dispatcher scripts\&. .RS 4 .\} .nf -\fB$ nmcli connection edit type ethernet\fR +$ \fBnmcli connection edit type ethernet\fR ===| nmcli interactive connection editor |=== diff --git a/man/nmcli-examples.xml b/man/nmcli-examples.xml index 9c28e15f..50d4738b 100644 --- a/man/nmcli-examples.xml +++ b/man/nmcli-examples.xml @@ -7,7 +7,20 @@ ]> <!-- -Copyright 2013 - 2014 Red Hat, Inc. + nmcli-examples(7) manual page + + Copyright 2005 - 2016 Red Hat, Inc. + + 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 version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. You may obtain a copy of the GNU Free Documentation License + from the Free Software Foundation by visiting their Web site or by + writing to: + + Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <refentry id="nmcli-examples"> @@ -31,7 +44,8 @@ Copyright 2013 - 2014 Red Hat, Inc. <refsynopsisdiv> <cmdsynopsis> - <command>nmcli <arg choice="opt" rep="repeat">OPTIONS</arg></command> + <command>nmcli</command> + <arg choice="opt" rep="repeat">OPTIONS</arg> </cmdsynopsis> </refsynopsisdiv> @@ -47,14 +61,13 @@ Copyright 2013 - 2014 Red Hat, Inc. The purpose of this manual page is to provide you with various examples and usage scenarios of <emphasis>nmcli</emphasis>. </para> - <para>Note: this page has "work-in-progress" status.</para> </refsect1> <refsect1> <title>Examples</title> <example><title>Listing available Wi-Fi APs</title> -<screen><userinput>$ nmcli device wifi list</userinput> +<screen><prompt>$ </prompt><userinput>nmcli device wifi list</userinput> * SSID MODE CHAN RATE SIGNAL BARS SECURITY netdatacomm_local Infra 6 54 Mbit/s 37 ▂▄__ WEP * F1 Infra 11 54 Mbit/s 98 ▂▄▆█ WPA1 @@ -75,7 +88,7 @@ Copyright 2013 - 2014 Red Hat, Inc. </example> <example><title>Showing general information and properties for a Wi-Fi interface</title> -<screen><userinput>$ nmcli -p -f general,wifi-properties device show wlan0</userinput> +<screen><prompt>$ </prompt><userinput>nmcli -p -f general,wifi-properties device show wlan0</userinput> =========================================================================== Device details (wlan0) =========================================================================== @@ -115,7 +128,7 @@ WIFI-PROPERTIES.ADHOC: yes </example> <example><title>Listing NetworkManager polkit permissions</title> -<screen><userinput>$ nmcli general permissions</userinput> +<screen><prompt>$ </prompt><userinput>nmcli general permissions</userinput> PERMISSION VALUE org.freedesktop.NetworkManager.enable-disable-network yes org.freedesktop.NetworkManager.enable-disable-wifi yes @@ -142,7 +155,7 @@ org.freedesktop.NetworkManager.settings.modify.hostname auth</screen> </example> <example><title>Listing NetworkManager log level and domains</title> -<screen><userinput>$ nmcli general logging</userinput> +<screen><prompt>$ </prompt><userinput>nmcli general logging</userinput> LEVEL DOMAINS INFO PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC, @@ -152,10 +165,9 @@ B,DISPATCH</screen> This command shows current NetworkManager logging status. </para> </example> - <example><title>Changing NetworkManager logging</title> -<screen><userinput>$ nmcli g log level DEBUG domains CORE,ETHER,IP</userinput> -<userinput>$ nmcli g log level INFO domains DEFAULT</userinput></screen> +<screen><prompt>$ </prompt><userinput>nmcli g log level DEBUG domains CORE,ETHER,IP</userinput> +<prompt>$ </prompt><userinput>nmcli g log level INFO domains DEFAULT</userinput></screen> <para> The first command makes NetworkManager log in DEBUG level, and only for CORE, ETHER and IP domains. The second command restores the default logging state. Please refer to the @@ -165,9 +177,9 @@ B,DISPATCH</screen> </example> <example><title>Adding a bonding master and two slave connection profiles</title> -<screen><userinput>$ nmcli con add type bond ifname mybond0 mode active-backup</userinput> -<userinput>$ nmcli con add type ethernet ifname eth1 master mybond0</userinput> -<userinput>$ nmcli con add type ethernet ifname eth2 master mybond0</userinput></screen> +<screen><prompt>$ </prompt><userinput>nmcli con add type bond ifname mybond0 mode active-backup</userinput> +<prompt>$ </prompt><userinput>nmcli con add type ethernet ifname eth1 master mybond0</userinput> +<prompt>$ </prompt><userinput>nmcli con add type ethernet ifname eth2 master mybond0</userinput></screen> <para> This example demonstrates adding a bond master connection and two slaves. The first command adds a master bond connection, naming the bonding interface @@ -179,9 +191,9 @@ B,DISPATCH</screen> </example> <example><title>Adding a team master and two slave connection profiles</title> -<screen><userinput>$ nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</userinput> -<userinput>$ nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</userinput> -<userinput>$ nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</userinput></screen> +<screen><prompt>$ </prompt><userinput>nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</userinput> +<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</userinput> +<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</userinput></screen> <para> This example demonstrates adding a team master connection profile and two slaves. It is very similar to the bonding example. The first command adds a master team profile, naming @@ -194,8 +206,8 @@ B,DISPATCH</screen> <emphasis>em2</emphasis>. The slaves don't specify <emphasis>config</emphasis> and thus <emphasis>teamd</emphasis> will use its default configuration. You will activate the whole setup by activating both slaves: -<screen> <userinput>$ nmcli con up Team1-slave1</userinput> - <userinput>$ nmcli con up Team1-slave2</userinput></screen> +<screen> <prompt>$ </prompt><userinput>nmcli con up Team1-slave1</userinput> + <prompt>$ </prompt><userinput>nmcli con up Team1-slave2</userinput></screen> By default, the created profiles are marked for auto-activation. But if another connection has been activated on the device, the new profile won't activate automatically and you need to activate it manually. @@ -203,10 +215,10 @@ B,DISPATCH</screen> </example> <example><title>Adding a bridge and two slave profiles</title> -<screen><userinput>$ nmcli con add type bridge con-name TowerBridge ifname TowerBridge</userinput> -<userinput>$ nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</userinput> -<userinput>$ nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</userinput> -<userinput>$ nmcli con modify TowerBridge bridge.stp no</userinput></screen> +<screen><prompt>$ </prompt><userinput>nmcli con add type bridge con-name TowerBridge ifname TowerBridge</userinput> +<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</userinput> +<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</userinput> +<prompt>$ </prompt><userinput>nmcli con modify TowerBridge bridge.stp no</userinput></screen> <para> This example demonstrates adding a bridge master connection and two slaves. The first command adds a master bridge connection, naming the bridge interface and @@ -220,12 +232,12 @@ B,DISPATCH</screen> </example> <example><title>Adding an ethernet connection profile with manual IP configuration</title> -<screen><userinput>$ nmcli con add con-name my-con-em1 ifname em1 type ethernet \ +<screen><prompt>$ </prompt><userinput>nmcli con add con-name my-con-em1 ifname em1 type ethernet \ ip4 192.168.100.100/24 gw4 192.168.100.1 ip4 1.2.3.4 ip6 abbe::cafe</userinput> -<userinput>$ nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</userinput> -<userinput>$ nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</userinput> -<userinput>$ nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</userinput> -<userinput>$ nmcli -p con show my-con-em1</userinput></screen> +<prompt>$ </prompt><userinput>nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</userinput> +<prompt>$ </prompt><userinput>nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</userinput> +<prompt>$ </prompt><userinput>nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</userinput> +<prompt>$ </prompt><userinput>nmcli -p con show my-con-em1</userinput></screen> <para> The first command adds an Ethernet connection profile named <emphasis>my-con-em1</emphasis> that is bound to interface name <emphasis>em1</emphasis>. The profile is configured @@ -241,7 +253,7 @@ B,DISPATCH</screen> </example> <example><title>Escaping colon characters in tabular mode</title> -<screen><userinput>$ nmcli -t -f general -e yes -m tab dev show eth0</userinput> +<screen><prompt>$ </prompt><userinput>nmcli -t -f general -e yes -m tab dev show eth0</userinput> GENERAL:eth0:ethernet:Intel Corporation:82567LM Gigabit Network Connection: e1000e:2.1.4-k:1.8-3:00\:22\:68\:15\:29\:21:1500:100 (connected):0 (No reas on given):/sys/devices/pci0000\:00/0000\:00\:19.0/net/eth0:eth0:yes:yes:no: @@ -291,7 +303,7 @@ fi <para><emphasis role="bold">Example sessions of interactive connection editor</emphasis></para> <example><title>Adding an ethernet connection profile in interactive editor (a)</title> -<screen><userinput>$ nmcli connection edit type ethernet</userinput> +<screen><prompt>$ </prompt><userinput>nmcli connection edit type ethernet</userinput> ===| nmcli interactive connection editor |=== @@ -302,7 +314,7 @@ Type 'describe [<setting>.<prop>]' for detailed property description You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb -nmcli> <userinput>print</userinput> +<prompt>nmcli> </prompt><userinput>print</userinput> =========================================================================== Connection details =========================================================================== @@ -362,13 +374,13 @@ ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- --------------------------------------------------------------------------- -nmcli> <userinput>goto ethernet</userinput> +<prompt>nmcli> </prompt><userinput>goto ethernet</userinput> You may edit the following properties: port, speed, duplex, auto-negotiate, mac-address, cloned-mac-address, mac-address-blacklist, mtu, s390-subchann els, s390-nettype, s390-options nmcli 802-3-ethernet> set mtu 1492 nmcli 802-3-ethernet> b -nmcli> <userinput>goto ipv4.addresses</userinput> +<prompt>nmcli> </prompt><userinput>goto ipv4.addresses</userinput> nmcli ipv4.addresses> desc === [addresses] === @@ -389,10 +401,10 @@ nmcli ipv4.addresses> print addresses: 192.168.1.100/24 nmcli ipv4.addresses> back nmcli ipv4> b -nmcli> <userinput>set ipv4.gateway 192.168.1.1</userinput> -nmcli> <userinput>verify</userinput> +<prompt>nmcli> </prompt><userinput>set ipv4.gateway 192.168.1.1</userinput> +<prompt>nmcli> </prompt><userinput>verify</userinput> Verify connection: OK -nmcli> <userinput>print</userinput> +<prompt>nmcli> </prompt><userinput>print</userinput> =========================================================================== Connection details =========================================================================== @@ -451,8 +463,8 @@ ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- --------------------------------------------------------------------------- -nmcli> <userinput>set ipv4.dns 8.8.8.8 8.8.4.4</userinput> -nmcli> <userinput>print</userinput> +<prompt>nmcli> </prompt><userinput>set ipv4.dns 8.8.8.8 8.8.4.4</userinput> +<prompt>nmcli> </prompt><userinput>print</userinput> =========================================================================== Connection details =========================================================================== @@ -512,12 +524,12 @@ ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- --------------------------------------------------------------------------- -nmcli> <userinput>verify</userinput> +<prompt>nmcli> </prompt><userinput>verify</userinput> Verify connection: OK -nmcli> <userinput>save</userinput> +<prompt>nmcli> </prompt><userinput>save</userinput> Connection 'ethernet-4' (de89cdeb-a3e1-4d53-8fa0-c22546c775f4) successfully saved. -nmcli> <userinput>quit</userinput></screen> +<prompt>nmcli> </prompt><userinput>quit</userinput></screen> <para> Example session in the nmcli interactive connection editor. The scenario creates an Ethernet connection profile with static addressing (IPs and DNS). diff --git a/man/nmcli.1 b/man/nmcli.1 index cdecc8a8..85d7d1bd 100644 --- a/man/nmcli.1 +++ b/man/nmcli.1 @@ -2,12 +2,12 @@ .\" Title: nmcli .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: General Commands Manual -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NMCLI" "1" "" "NetworkManager 1\&.1\&.93" "General Commands Manual" +.TH "NMCLI" "1" "" "NetworkManager 1\&.1\&.94" "General Commands Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nmcli.xml b/man/nmcli.xml index 61954667..62e10254 100644 --- a/man/nmcli.xml +++ b/man/nmcli.xml @@ -9,26 +9,18 @@ <!-- nmcli(1) manual page - This is free documentation; 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. - - The GNU General Public License's references to "object code" - and "executables" are to be interpreted as the output of any - document formatting or typesetting system, including - intermediate and printed output. - - This manual 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 Licence along - with this manual; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Copyright 2010 - 2016 Red Hat, Inc. + + 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 version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. You may obtain a copy of the GNU Free Documentation License + from the Free Software Foundation by visiting their Web site or by + writing to: + + Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <refentry id='nmcli'> diff --git a/man/nmtui.1 b/man/nmtui.1 index 832d65d3..3d99ddc5 100644 --- a/man/nmtui.1 +++ b/man/nmtui.1 @@ -2,12 +2,12 @@ .\" Title: nmtui .\" Author: .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> -.\" Date: 04/05/2016 +.\" Date: 04/12/2016 .\" Manual: General Commands Manual -.\" Source: NetworkManager 1.1.93 +.\" Source: NetworkManager 1.1.94 .\" Language: English .\" -.TH "NMTUI" "1" "" "NetworkManager 1\&.1\&.93" "General Commands Manual" +.TH "NMTUI" "1" "" "NetworkManager 1\&.1\&.94" "General Commands Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/nmtui.xml b/man/nmtui.xml index d92f525b..357472fe 100644 --- a/man/nmtui.xml +++ b/man/nmtui.xml @@ -9,26 +9,18 @@ <!-- nmtui(1) manual page - This is free documentation; 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. - - The GNU General Public License's references to "object code" - and "executables" are to be interpreted as the output of any - document formatting or typesetting system, including - intermediate and printed output. - - This manual 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 Licence along - with this manual; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Copyright 2010 - 2016 Red Hat, Inc. + + 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 version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. You may obtain a copy of the GNU Free Documentation License + from the Free Software Foundation by visiting their Web site or by + writing to: + + Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <refentry id='nmtui'> diff --git a/po/pt_BR.po b/po/pt_BR.po index 9a30f3ba..71008329 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,5 +1,5 @@ # Brazilian Portuguese translation of NetworkManager. -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the NetworkManager package. # Raphael Higino <In memoriam>, 2004-2007 # Luiz Armesto <luiz.armesto@gmail.com>, 2007. @@ -8,22 +8,23 @@ # Fabrício Godoy <skarllot@gmail.com>, 2008. # Enrico Nicoletto <liverig@gmail.com>, 2013. # gcintra <gcintra@redhat.com>, 2013, 2014. -# Rafael Fontenelle <rffontenelle@gmail.com>, 2013, 2015. -# +# Rafael Fontenelle <rafaelff@gnome.org>, 2013, 2015, 2016. msgid "" msgstr "" "Project-Id-Version: NetworkManager\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-04-05 15:00+0200\n" -"PO-Revision-Date: 2015-12-21 12:50-0200\n" -"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=Network" +"Manager&keywords=I18N+L10N&component=Translations\n" +"POT-Creation-Date: 2016-04-04 01:29+0000\n" +"PO-Revision-Date: 2016-04-06 13:08-0200\n" +"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" "Language: pt_BR\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" -"X-Generator: Poedit 1.8.6\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" #: ../clients/cli/agent.c:39 #, c-format @@ -774,7 +775,7 @@ msgstr "PADRÃO6" #. 6 #: ../clients/cli/connections.c:199 msgid "SPEC-OBJECT" -msgstr "OBJETO-ESPEC." +msgstr "OBJETO-ESPEC" #. 7 #. 4 @@ -899,16 +900,16 @@ msgstr "" " show [--active] [--order <especificação da ordem>]\n" " show [--active] [id | uuid | path | apath] <ID> ...\n" "\n" -" up [[id | uuid | path] <ID>] [ifname <nome-if>] [ap <BSSID>] [passwd-file " -"<arquivo com senhas>]\n" +" up [[id | uuid | path] <ID>] [ifname <nome-if>] [ap <BSSID>] [passwd-file <" +"arquivo com senhas>]\n" "\n" " down [id | uuid | path | apath] <ID> ...\n" "\n" -" add OPÇÕES_COMUNS OPÇÕES_ESPECÍFICAS_TIPO OPÇÕES_IP [-- ([+|-]<definição>." -"<propriedade> <valor>)+]\n" +" add OPÇÕES_COMUNS OPÇÕES_ESPECÍFICAS_TIPO OPÇÕES_IP [-- " +"([+|-]<definição>.<propriedade> <valor>)+]\n" "\n" -" modify [--temporary] [id | uuid | path] <ID> ([+|-]<definição>." -"<propriedade> <valor>)+\n" +" modify [--temporary] [id | uuid | path] <ID> " +"([+|-]<definição>.<propriedade> <valor>)+\n" "\n" " clone [--temporary] [id | uuid | path ] <ID> <novo nome>\n" "\n" @@ -1007,8 +1008,8 @@ msgstr "" "por\n" "seu nome, UUID ou caminho do D-Bus.\n" "\n" -"ARGUMENTOS := ifname <nome-if> [ap <BSSID>] [nsp <nome>] [passwd-file " -"<arquivo com senhas>]\n" +"ARGUMENTOS := ifname <nome-if> [ap <BSSID>] [nsp <nome>] [passwd-file <" +"arquivo com senhas>]\n" "\n" "Ativa um dispositivo com uma conexão. O perfil da conexão é selecionado\n" "automaticamente pelo NetworkManager.\n" @@ -1017,6 +1018,7 @@ msgstr "" "ap - especifica AP para se conectar (válido somente para Wi-Fi)\n" "nsp - especifica NSP para se conectar (válido somente para WiMAX)\n" "passwd-file - arquivo com senha(s) necessária(s) para ativar a conexão\n" +"\n" #: ../clients/cli/connections.c:336 #, c-format @@ -1038,6 +1040,7 @@ msgstr "" "Desativa uma conexão de um dispositivo (sem prevenir o dispositivo de\n" "auto-ativamento no futuro). O perfil para desativar é identificado por\n" "seu nome, UUID ou caminho do D-Bus.\n" +"\n" #: ../clients/cli/connections.c:348 #, c-format @@ -1240,8 +1243,8 @@ msgstr "" "\n" " bond: [mode balance-rr (0) | active-backup (1) | balance-xor (2) " "| broadcast (3) |\n" -" 802.3ad (4) | balance-tlb (5) | balance-alb " -"(6)]\n" +" 802.3ad (4) | balance-tlb (5) | balance-alb (6)]" +"\n" " [primary <nome da interface>]\n" " [miimon <núm>]\n" " [downdelay <núm>]\n" @@ -1250,13 +1253,13 @@ msgstr "" " [arp-ip-target <núm>]\n" " [lacp-rate slow (0) | fast (1)]\n" "\n" -" bond-slave: master <(nome interface ou nome ou UUID da conexão) " -"mestre>\n" +" bond-slave: master <(nome interface ou nome ou UUID da conexão) mestre>" +"\n" "\n" " team: [config <arquivo>|<dados JSON não-tratados>]\n" "\n" -" team-slave: master <(nome interface ou nome ou UUID da conexão) " -"mestre>\n" +" team-slave: master <(nome interface ou nome ou UUID da conexão) mestre>" +"\n" " [config <arquivo>|<dados JSON não-tratados>]\n" "\n" " bridge: [stp yes|no]\n" @@ -1268,14 +1271,14 @@ msgstr "" " [multicast-snooping yes|no]\n" " [mac <endereço MAC>]\n" "\n" -" bridge-slave: master <(nome interface ou nome ou UUID da conexão) " -"mestre>\n" +" bridge-slave: master <(nome interface ou nome ou UUID da conexão) mestre>" +"\n" " [priority <0-63>]\n" " [path-cost <1-65535>]\n" " [hairpin yes|no]\n" "\n" -" vpn: vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|" -"ssh|l2tp|iodine|...\n" +" vpn: vpn-type " +"vpnc|openvpn|pptp|openconnect|openswan|libreswan|ssh|l2tp|iodine|...\n" " [user <nome de usuário>]\n" "\n" " olpc-mesh: ssid <SSID>\n" @@ -1321,6 +1324,7 @@ msgstr "" " OPÇÕES_IP:\n" " [ip4 <endereço IPv4>] [gw4 <gateway IPv4>]\n" " [ip6 <endereço IPv6>] [gw6 <gateway IPv6>]\n" +"\n" #: ../clients/cli/connections.c:460 #, c-format @@ -1360,8 +1364,8 @@ msgstr "" "\n" "Exemplos:\n" "nmcli con mod home-wifi wifi.ssid rakosnicek\n" -"nmcli con mod em1-1 ipv4.method manual ipv4.addr \"192.168.1.2/24, " -"10.10.1.5/8\"\n" +"nmcli con mod em1-1 ipv4.method manual ipv4.addr \"192.168.1.2/24, 10.10.1.5/" +"8\"\n" "nmcli con mod em1-1 +ipv4.dns 8.8.4.4\n" "nmcli con mod em1-1 -ipv4.dns 1\n" "nmcli con mod em1-1 -ipv6.addr \"abbe::cafe/56\"\n" @@ -1512,8 +1516,8 @@ msgstr "" "\n" "ARGUMENTOS := [--temporary] type <tipo> file <arquivo a ser importado>\n" "\n" -"Importa uma configuração externa como o perfil de conexão do " -"NetworkManager.\n" +"Importa uma configuração externa como o perfil de conexão do NetworkManager." +"\n" "O tipo de arquivo de entrada é especificado pela opção type.\n" "Apenas configurações de VPN possuem suporte no momento. A configuração\n" "é importada pelos plug-ins VPN do NetworkManager.\n" @@ -1537,6 +1541,7 @@ msgstr "" "Exporta uma conexão. Somente conexões VPN possuem suporte no presente\n" "momento. Os dados são direcionados para a saída padrão ou para um arquivo\n" "se um nome for informado.\n" +"\n" #: ../clients/cli/connections.c:644 msgid "activating" @@ -1846,7 +1851,7 @@ msgstr "\"%s\" não está entre [%s]" #: ../clients/cli/connections.c:3032 #, c-format msgid "Error: '%s': '%s' is not a valid %s MAC address." -msgstr "Erro: '%s': '%s' não é um endereço MAC %s válido." +msgstr "Erro: \"%s\": \"%s\" não é um endereço MAC %s válido." #. Ask for optional arguments #: ../clients/cli/connections.c:3033 ../clients/cli/connections.c:3565 @@ -1868,7 +1873,7 @@ msgstr "Erro: \"mtu\": \"%s\" não é um MTU válido." #: ../clients/cli/connections.c:3069 #, c-format msgid "Error: 'parent': '%s' is not a valid interface name." -msgstr "Erro: 'parent': \"%s\" não é um nome de interface válido" +msgstr "Erro: \"parent\": \"%s\" não é um nome de interface válido." #: ../clients/cli/connections.c:3090 #, c-format @@ -1976,7 +1981,7 @@ msgstr "P_KEY [nenhum]: " #: ../clients/cli/connections.c:3626 #, c-format msgid "Error: 'p-key' is mandatory when 'parent' is specified.\n" -msgstr "Erro: \"p-key\" é obrigatório quando 'parent' é especificado.\n" +msgstr "Erro: \"p-key\" é obrigatório quando \"parent\" é especificado.\n" #. Ask for optional arguments #: ../clients/cli/connections.c:3643 ../clients/tui/nm-editor-utils.c:154 @@ -2056,7 +2061,7 @@ msgstr "Mapas de prioridade de egresso [nenhum]: " #: ../clients/cli/connections.c:3827 msgid "Bonding mode [balance-rr]: " -msgstr "Modo de vinculação [balanço-rr]: " +msgstr "Modo de vinculação [balance-rr]: " #. Ask for optional 'bond' arguments. #: ../clients/cli/connections.c:3843 @@ -2135,7 +2140,7 @@ msgstr "Erro: \"lacp_rate\": \"%s\" é inválido (\"slow\" ou \"fast\").\n" #: ../clients/cli/connections.c:3972 msgid "Team JSON configuration [none]: " -msgstr "Configuração da União JSON [nenhum]:" +msgstr "Configuração da União JSON [nenhum]: " #: ../clients/cli/connections.c:3989 msgid "team" @@ -2528,11 +2533,11 @@ msgstr "Nome de usuário do PPPoE: " #: ../clients/cli/connections.c:5130 ../clients/cli/connections.c:6037 msgid "Error: 'username' is required." -msgstr "Erro: \"nome de usuário\" é necessário" +msgstr "Erro: \"nome de usuário\" é necessário." #: ../clients/cli/connections.c:5199 msgid "APN: " -msgstr "Nome do ponto de acesso (APN):" +msgstr "Nome do ponto de acesso (APN): " #: ../clients/cli/connections.c:5202 msgid "Error: 'apn' is required." @@ -2560,18 +2565,17 @@ msgid "Error: 'dev' is required." msgstr "Erro: é necessário o \"dev\"." #: ../clients/cli/connections.c:5355 -#, fuzzy msgid "VLAN ID <0-4094>: " -msgstr "ID da VLAN <0-4095>: " +msgstr "ID da VLAN <0-4094>: " #: ../clients/cli/connections.c:5358 ../clients/cli/connections.c:6424 msgid "Error: 'id' is required." msgstr "Erro: é necessário o \"id\"." #: ../clients/cli/connections.c:5364 -#, fuzzy, c-format +#, c-format msgid "Error: 'id': '%s' is not valid; use <0-4094>." -msgstr "Erro: \"id\": \"%s\" não é válido; use <0-4095>." +msgstr "Erro: \"id\": \"%s\" não é válido; use <0-4094>." #: ../clients/cli/connections.c:5374 ../clients/cli/connections.c:6116 #, c-format @@ -3025,7 +3029,7 @@ msgid "" "help/? [<command>] :: help for the nmcli commands\n" "\n" msgstr "" -"help/? [<command>] :: ajuda para os comandos do nmcli \n" +"help/? [<command>] :: ajuda para os comandos do nmcli\n" "\n" #: ../clients/cli/connections.c:8206 @@ -3399,7 +3403,7 @@ msgstr "Erro: definição desconhecida: \"%s\"\n" #: ../clients/cli/connections.c:9422 #, c-format msgid "Error: '%s' setting not present in the connection\n" -msgstr "Erro: a definição \"%s\" não está presente na conexão.\n" +msgstr "Erro: a definição \"%s\" não está presente na conexão\n" #: ../clients/cli/connections.c:9450 #, c-format @@ -4180,7 +4184,7 @@ msgid "PORT-ID-TYPE" msgstr "TIPO-ID-PORTA" #: ../clients/cli/devices.c:283 -#, fuzzy, c-format +#, c-format msgid "" "Usage: nmcli device { COMMAND | help }\n" "\n" @@ -4220,8 +4224,8 @@ msgid "" msgstr "" "Uso: nmcli device { COMANDO | help }\n" "\n" -"COMANDO := { status | show | connect | disconnect | delete | monitor | wifi " -"| lldp }\n" +"COMANDO := { status | show | connect | reapply | disconnect | delete | " +"monitor | wifi | lldp }\n" "\n" " status\n" "\n" @@ -4231,6 +4235,8 @@ msgstr "" "\n" " connect <nome-if>\n" "\n" +" reapply <nome-if> ...\n" +"\n" " disconnect <nome-if> ...\n" "\n" " delete <nome-if> ...\n" @@ -4239,13 +4245,13 @@ msgstr "" "\n" " wifi [list [ifname <nome-if>] [bssid <BSSID>]]\n" "\n" -" wifi connect <(B)SSID> [password <senha>] [wep-key-type key|phrase] " -"[ifname <nome-if>]\n" -" [bssid <BSSID>] [name <nome>] [private yes|no] " -"[hidden yes|no]\n" +" wifi connect <(B)SSID> [password <senha>] [wep-key-type key|phrase] [" +"ifname <nome-if>]\n" +" [bssid <BSSID>] [name <nome>] [private yes|no] [" +"hidden yes|no]\n" "\n" -" wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>] [band a|" -"bg] [channel <canal>] [password <senha>]\n" +" wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>] [band a|bg]" +" [channel <canal>] [password <senha>]\n" "\n" " wifi rescan [ifname <nome-if>] [[ssid <SSID para buscar>] ...]\n" "\n" @@ -4327,7 +4333,7 @@ msgstr "" "\n" #: ../clients/cli/devices.c:343 -#, fuzzy, c-format +#, c-format msgid "" "Usage: nmcli device reapply { ARGUMENTS | help }\n" "\n" @@ -4337,13 +4343,13 @@ msgid "" "made since it was last applied.\n" "\n" msgstr "" -"Uso: nmcli device disconnect { ARGUMENTOS | help }\n" +"Uso: nmcli device reapply { ARGUMENTOS | help }\n" "\n" "ARGUMENTOS := <nome-if> ...\n" "\n" -"Desconecta o dispositivo.\n" -"O comando desconecta o dispositivo e previne-o de auto-ativar\n" -"conexões futuras sem a intervenção do usuário/manual.\n" +"Tenta atualizar o dispositivo com as alterações à conexão atualmente ativa\n" +"feitas desde a última aplicação.\n" +"\n" #: ../clients/cli/devices.c:354 #, c-format @@ -4364,6 +4370,7 @@ msgstr "" "Desconecta o dispositivo.\n" "O comando desconecta o dispositivo e previne-o de auto-ativar\n" "conexões futuras sem a intervenção do usuário/manual.\n" +"\n" #: ../clients/cli/devices.c:366 #, c-format @@ -4491,14 +4498,15 @@ msgstr "" "\n" "ARGUMENTOS := [list [ifname <nome-if>] [bssid <BSSID>]]\n" "\n" -"Lista pontos de acesso de Wi-Fi disponíveis. As opções \"ifname\" e \"bssid" -"\"\n" +"Lista pontos de acesso de Wi-Fi disponíveis. As opções \"ifname\" e \"bssid\"" +"\n" "podem ser usadas para listar APs para uma interface específica, ou com um\n" "BSSID específico.\n" "\n" -"ARGUMENTS := connect <(B)SSID> [password <senha>] [wep-key-type key|phrase] " -"[ifname <nome-if>]\n" -" [bssid <BSSID>] [name <nome>] [private yes|no]\n" +"ARGUMENTOS := connect <(B)SSID> [password <senha>] [wep-key-type key|phrase]" +"\n" +" [ifname <nome-if>] [bssid <BSSID>] [name <nome>]\n" +" [private yes|no]\n" "\n" "Conecta à uma rede Wi-Fi especificada por SSID ou BSSID. O comando cria uma\n" "nova conexão e então ativa-a em um dispositivo. Isto é um parceiro de linha\n" @@ -4510,8 +4518,8 @@ msgstr "" "WPA-PSK são suportadas no momento. Presume-se também que a configuração IP\n" "seja obtida via DHCP.\n" "\n" -"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid " -"<SSID>]\n" +"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>]" +"\n" " [band a|bg] [channel <canal>] [password <senha>]\n" "\n" "Cria um hotspot Wi-Fi. Use 'connection down' ou 'device disconnect' para\n" @@ -4524,8 +4532,8 @@ msgstr "" "channel - canal Wi-Fi para usar\n" "password - senha para usar para o hotspot\n" "\n" -"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid " -"<SSID>]\n" +"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>]" +"\n" " [band a|bg] [channel <canal>] [password <senha>]\n" "\n" "Requer que o NetworkManager scaneie novamente imediatamente para pontos de\n" @@ -4537,6 +4545,7 @@ msgstr "" "parâmetros de \"ssid\" podem ser fornecidos. Note que este comando não " "mostra\n" "os APs, use 'nmcli device wifi list' para isto.\n" +"\n" #: ../clients/cli/devices.c:451 #, c-format @@ -4554,9 +4563,10 @@ msgstr "" "\n" "ARGUMENTOS := [list [ifname <nome-if>] [nsp <nome>]]\n" "\n" -"Lista dispositivos vizinhos descobertos por meio de LLDP. A opção \"ifname" -"\"\n" +"Lista dispositivos vizinhos descobertos por meio de LLDP. A opção \"ifname\"" +"\n" "pode ser usada para listar vizinhos de uma interface específica.\n" +"\n" #: ../clients/cli/devices.c:527 ../clients/cli/devices.c:1676 #: ../clients/cli/devices.c:1685 ../clients/cli/devices.c:1879 @@ -4734,19 +4744,19 @@ msgid "Device '%s' successfully removed.\n" msgstr "Dispositivo \"%s\" removido com sucesso.\n" #: ../clients/cli/devices.c:1838 -#, fuzzy, c-format +#, c-format msgid "Error: not all connections reapplied." -msgstr "Erro: nem todas as conexões ativas foram excluídas." +msgstr "Erro: nem todas as conexões foram reaplicadas." #: ../clients/cli/devices.c:1839 -#, fuzzy, c-format +#, c-format msgid "Error: Reapplying connection to device '%s' (%s) failed: %s\n" -msgstr "Erro: a exclusão do dispositivo \"%s\" (%s) falhou: %s\n" +msgstr "Erro: a reaplicação da conexão no dispositivo \"%s\" (%s) falhou: %s\n" #: ../clients/cli/devices.c:1849 -#, fuzzy, c-format +#, c-format msgid "Connection successfully reapplied to device '%s'.\n" -msgstr "Conexão ativada com sucesso (caminho D-Bus ativo: %s)\n" +msgstr "Conexão reaplicada com sucesso no dispositivo \"%s\".\n" #: ../clients/cli/devices.c:1912 #, c-format @@ -4905,7 +4915,7 @@ msgstr "" #: ../clients/cli/devices.c:2885 msgid "Password: " -msgstr "Senha:" +msgstr "Senha: " #: ../clients/cli/devices.c:3034 #, c-format @@ -5581,6 +5591,7 @@ msgstr "" " d[evice] dispositivos gerenciados pelo NetworkManager\n" " a[gent] agente secreto do NetworkManager ou agente do polkit\n" " m[onitor] monitora alterações do NetworkManager\n" +"\n" #: ../clients/cli/nmcli.c:143 #, c-format @@ -5661,7 +5672,7 @@ msgstr "Falha ao criar o segmento de manipulação de sinal: %d\n" #: ../clients/cli/nmcli.c:512 ../clients/nm-online.c:193 #, c-format msgid "Error: Could not create NMClient object: %s." -msgstr "Erro: não foi possível criar objeto NMClient: %s" +msgstr "Erro: não foi possível criar objeto NMClient: %s." #: ../clients/cli/nmcli.c:529 msgid "Success" @@ -5773,15 +5784,15 @@ msgstr "0 (desativado)" #: ../clients/cli/settings.c:1258 msgid "enabled, " -msgstr "habilitado," +msgstr "habilitado, " #: ../clients/cli/settings.c:1260 msgid "advertise, " -msgstr "publicar," +msgstr "publicar, " #: ../clients/cli/settings.c:1262 msgid "willing, " -msgstr "desejando," +msgstr "desejando, " #: ../clients/cli/settings.c:1290 msgid "-1 (unset)" @@ -5797,9 +5808,9 @@ msgid "default" msgstr "padrão" #: ../clients/cli/settings.c:1556 -#, fuzzy, c-format +#, c-format msgid "%d (off)" -msgstr "%d (não)" +msgstr "%d (desligado)" #: ../clients/cli/settings.c:1770 #, c-format @@ -5856,7 +5867,7 @@ msgstr "Aviso: definição %s.%s requer remover as definições de ipv4 e ipv6\n #: ../clients/cli/settings.c:2300 msgid "Do you want to remove them? [yes] " -msgstr "Você deseja removê-las [sim]" +msgstr "Você deseja removê-las? [sim] " #: ../clients/cli/settings.c:2396 ../clients/cli/settings.c:2791 #: ../clients/cli/settings.c:5182 @@ -5939,7 +5950,7 @@ msgstr "\"%s\" não é um nome de interface válido" #: ../clients/cli/settings.c:2856 #, c-format msgid "'%s' is not a valid flag number; use <0-%d>" -msgstr "Erro: \"priority\": \"%s\" não é um número válido <0-%d>." +msgstr "Erro: \"priority\": \"%s\" não é um número válido <0-%d>" #: ../clients/cli/settings.c:2868 #, c-format @@ -6072,7 +6083,7 @@ msgstr "" "Note que nmcli não oferece suporte a especificar certificados como dados " "blob \n" "não tratados.\n" -"Exemplo: /home/cimrman/cert-ac.crt\n" +"Exemplo: /home/cimrman/cert-ca.crt\n" #: ../clients/cli/settings.c:3428 #, c-format @@ -6126,8 +6137,8 @@ msgid "" "Note that nmcli does not support specifying certificates as raw blob data.\n" "Example: /home/cimrman/jara-zweite-phase.crt\n" msgstr "" -"Insira o caminho do arquivo para um certificado de cliente para " -"autenticação \n" +"Insira o caminho do arquivo para um certificado de cliente para autenticação " +"\n" "interna (opcionalmente, prefixado com file://).\n" " [file://]<caminho do arquivo>\n" "Note que nmcli não oferece suporte a especificar certificados como dados \n" @@ -6399,8 +6410,8 @@ msgstr "" "arquivo contendo a configuração. Neste caso, o arquivo é lido e o conteúdo é " "colocado nesta propriedade.\n" "\n" -"Exemplos: set team.config { \"device\": \"team0\", \"runner\": {\"name\": " -"\"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n" +"Exemplos: set team.config { \"device\": \"team0\", \"runner\": {\"name\": \"" +"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n" " set team.config /etc/minha-união.conf\n" #: ../clients/cli/settings.c:4602 @@ -6501,8 +6512,8 @@ msgid "" "'%s' not compatible with %s '%s', please change the key or set the right %s " "first." msgstr "" -"\"%s\" não é compatível com %s \"%s\", por favor altere a chave ou defina o " -"%s correto primeiro" +"\"%s\" não é compatível com %s \"%s\", por favor altere a chave ou defina o %" +"s correto primeiro." #: ../clients/cli/settings.c:5199 #, c-format @@ -6769,7 +6780,7 @@ msgstr "" #: ../clients/common/nm-secret-agent-simple.c:457 msgid "Wired 802.1X authentication" -msgstr "Autenticação 802.1X com fio " +msgstr "Autenticação 802.1X com fio" #: ../clients/common/nm-secret-agent-simple.c:460 msgid "Network name" @@ -7013,7 +7024,7 @@ msgstr "Não foi possível criar editor para a conexão \"%s\" do tipo \"%s\"." #: ../clients/tui/nmt-editor.c:101 #, c-format msgid "Could not create editor for invalid connection '%s'." -msgstr "Não foi possível criar editor para a conexão inválida \"%s\"" +msgstr "Não foi possível criar editor para a conexão inválida \"%s\"." #: ../clients/tui/nmt-editor.c:111 msgid "Edit Connection" @@ -7966,9 +7977,9 @@ msgid "unknown setting name" msgstr "nome de definição desconhecido" #: ../libnm-core/nm-connection.c:306 -#, fuzzy +#| msgid "unknown setting name" msgid "duplicate setting name" -msgstr "nome de definição desconhecido" +msgstr "nome de definição duplicado" #: ../libnm-core/nm-connection.c:873 msgid "setting not found" @@ -8131,7 +8142,7 @@ msgstr "ignorando senha não tratada inválida" #: ../libnm-core/nm-keyfile-reader.c:892 ../libnm-core/nm-keyfile-reader.c:1058 #, c-format msgid "certificate or key file '%s' does not exist" -msgstr "certificado ou arquivo de chave \"%s\" não existe." +msgstr "certificado ou arquivo de chave \"%s\" não existe" #: ../libnm-core/nm-keyfile-reader.c:897 #, c-format @@ -8406,7 +8417,7 @@ msgstr "opção \"%s\" é válida apenas para \"%s\"" #: ../libnm-core/nm-setting-bond.c:687 #, c-format msgid "'%s' and '%s' cannot have different values" -msgstr "" +msgstr "\"%s\" e \"%s\" não podem ter valores diferentes" #: ../libnm-core/nm-setting-bond.c:703 #, c-format @@ -8457,7 +8468,7 @@ msgstr "definição requerida para a conexão do tipo \"%s\"" #: ../libnm-core/nm-setting-connection.c:897 #, c-format msgid "connection type '%s' is not valid" -msgstr "tipo de conexão \"%s\" não é válida." +msgstr "tipo de conexão \"%s\" não é válida" #: ../libnm-core/nm-setting-connection.c:932 #: ../libnm-util/nm-setting-connection.c:877 @@ -8539,7 +8550,7 @@ msgstr "valor da propriedade \"%s\" está vazio ou é muito longo (>64)" #: ../libnm-core/nm-setting-gsm.c:326 ../libnm-util/nm-setting-gsm.c:327 #, c-format msgid "'%s' contains invalid char(s) (use [A-Za-z._-])" -msgstr "\"%s\" contém cactere(s) inválido(s) (use [A-Za-z._-])" +msgstr "\"%s\" contém caractere(s) inválido(s) (use [A-Za-z._-])" #: ../libnm-core/nm-setting-gsm.c:352 ../libnm-util/nm-setting-gsm.c:353 #, c-format @@ -8733,7 +8744,7 @@ msgid "property is not specified and neither is '%s:%s'" msgstr "propriedade não está especificada nem é \"%s=%s\"" #: ../libnm-core/nm-setting-macvlan.c:192 -#, fuzzy +#| msgid "non promiscuous operation is allowed only in passthru mode'" msgid "non promiscuous operation is allowed only in passthru mode" msgstr "operação não promíscua é permitida apenas em modo passthru" @@ -8785,7 +8796,7 @@ msgstr "valor \"%s\" não corresponde \"%s=%s\"" #: ../libnm-core/nm-setting-vlan.c:672 ../libnm-util/nm-setting-vlan.c:600 #, c-format msgid "the vlan id must be in range 0-4094 but is %u" -msgstr "" +msgstr "o id da vlan deve estar na faixa 0-4094, mas é %u" #: ../libnm-core/nm-setting-vlan.c:681 ../libnm-util/nm-setting-vlan.c:591 msgid "flags are invalid" @@ -8911,7 +8922,7 @@ msgstr "\"%s\" requer a definição da propriedade \"%s\"" #: ../libnm-core/nm-setting.c:837 #, c-format msgid "duplicate property" -msgstr "" +msgstr "propriedade duplicada" #: ../libnm-core/nm-setting.c:865 ../libnm-core/nm-setting.c:912 #, c-format @@ -8920,19 +8931,22 @@ msgstr "" "não foi possível definir propriedade do tipo \"%s\" do valor de tipo \"%s\"" #: ../libnm-core/nm-setting.c:884 ../libnm-core/nm-setting.c:898 -#, fuzzy, c-format +#, c-format +#| msgid "Error: failed to set '%s' property: %s\n" msgid "failed to set property: %s" -msgstr "Erro: falha ao definir a propriedade \"%s\": %s\n" +msgstr "falha ao definir a propriedade: %s" #: ../libnm-core/nm-setting.c:926 -#, fuzzy, c-format +#, c-format +#| msgid "not a secret property" msgid "can not set property: %s" -msgstr "não é uma propriedade de segredo" +msgstr "não foi possível definir propriedade: %s" #: ../libnm-core/nm-setting.c:942 -#, fuzzy, c-format +#, c-format +#| msgid "unknown error" msgid "unknown property" -msgstr "erro desconhecido" +msgstr "propriedade desconhecida" #: ../libnm-core/nm-setting.c:1682 msgid "secret not found" @@ -9081,18 +9095,18 @@ msgid "Bluetooth" msgstr "Bluetooth" #: ../libnm-glib/nm-device.c:1873 ../libnm/nm-device.c:1824 -#, fuzzy +#| msgid "VLAN" msgid "MACVLAN" -msgstr "VLAN" +msgstr "MACVLAN" #: ../libnm-glib/nm-device.c:1877 ../libnm/nm-device.c:1828 -#, fuzzy +#| msgid "IP Tunnel" msgid "IPTunnel" -msgstr "Túnel IP" +msgstr "IPTunnel" #: ../libnm-glib/nm-device.c:1881 ../libnm/nm-device.c:1832 msgid "Veth" -msgstr "" +msgstr "Veth" #: ../libnm-glib/nm-device.c:1913 ../libnm/nm-device.c:1864 msgid "Wired" @@ -9182,7 +9196,7 @@ msgstr "%d. endereço IPv6 possui prefixo inválido" #: ../libnm-util/nm-setting-vpn.c:582 #, c-format msgid "Failed to convert '%s' value '%s' to uint" -msgstr "Falha ao converter valor de \"%s\" \"%s\" para unit" +msgstr "Falha ao converter valor de \"%s\" \"%s\" para uint" #: ../libnm-util/nm-setting-vpn.c:589 #, c-format @@ -9265,7 +9279,7 @@ msgstr "A conexão não era tun." #: ../libnm/nm-device-tun.c:218 msgid "The mode of the device and the connection didn't match" -msgstr "O modo do dispositivo e da conexão não correspondem." +msgstr "O modo do dispositivo e da conexão não correspondem" #: ../libnm/nm-device-infiniband.c:94 msgid "The connection was not an InfiniBand connection." @@ -9310,7 +9324,7 @@ msgstr "A conexão não era VLAN." #: ../libnm/nm-device-vlan.c:135 msgid "The VLAN identifiers of the device and the connection didn't match." -msgstr "Os identificadores da VLAN do dispositivo e a conexão não correspondem" +msgstr "Os identificadores da VLAN do dispositivo e a conexão não correspondem." #: ../libnm/nm-device-vlan.c:148 msgid "The hardware address of the device and the connection didn't match." @@ -9497,29 +9511,35 @@ msgstr "" #: ../shared/nm-shared-utils.c:174 #, c-format msgid "object class '%s' has no property named '%s'" -msgstr "" +msgstr "a classe de objeto \"%s\" não possui uma propriedade chamada \"%s\"" #: ../shared/nm-shared-utils.c:181 #, c-format msgid "property '%s' of object class '%s' is not writable" -msgstr "" +msgstr "a propriedade \"%s\" da classe de objeto \"%s\" não pode ser escrita" #: ../shared/nm-shared-utils.c:188 #, c-format msgid "" "construct property \"%s\" for object '%s' can't be set after construction" msgstr "" +"a propriedade de construtor \"%s\" para objeto \"%s\" não pode ser definido " +"após construção" #: ../shared/nm-shared-utils.c:196 #, c-format msgid "'%s::%s' is not a valid property name; '%s' is not a GObject subtype" msgstr "" +"\"%s::%s\" não é um nome de propriedade válido; \"%s\" não é um subtipo de " +"GObject" #: ../shared/nm-shared-utils.c:205 -#, fuzzy, c-format +#, c-format +#| msgid "can't set property of type '%s' from value of type '%s'" msgid "unable to set property '%s' of type '%s' from value of type '%s'" msgstr "" -"não foi possível definir propriedade do tipo \"%s\" do valor de tipo \"%s\"" +"não foi possível definir a propriedade \"%s\" de tipo \"%s\" a partir do " +"valor de tipo \"%s\"" #: ../shared/nm-shared-utils.c:216 #, c-format @@ -9527,6 +9547,8 @@ msgid "" "value \"%s\" of type '%s' is invalid or out of range for property '%s' of " "type '%s'" msgstr "" +"o valor \"%s\" de tipo \"%s\" é inválido ou fora do intervalo da propriedade " +"\"%s\" de tipo \"%s\"" #. Translators: the first %s is a prefix for the connection id, such #. * as "Wired Connection" or "VPN Connection". The %d is a number @@ -9801,19 +9823,19 @@ msgstr "" "WPA" #: ../src/devices/wifi/nm-wifi-ap-utils.c:164 -#, fuzzy, c-format +#, c-format msgid "a connection using '%s' authentication cannot specify WPA protocols" msgstr "" "uma conexão usando autenticação \"%s\" não pode especificar protocolos WPA" #: ../src/devices/wifi/nm-wifi-ap-utils.c:180 #: ../src/devices/wifi/nm-wifi-ap-utils.c:197 -#, fuzzy, c-format +#, c-format msgid "a connection using '%s' authentication cannot specify WPA ciphers" msgstr "uma conexão usando autenticação \"%s\" não pode especificar cifras WPA" #: ../src/devices/wifi/nm-wifi-ap-utils.c:209 -#, fuzzy, c-format +#, c-format msgid "a connection using '%s' authentication cannot specify a WPA password" msgstr "" "uma conexão usando autenticação \"%s\" não pode especificar uma senha WPA" @@ -10112,15 +10134,6 @@ msgstr "O NetworkManager precisa desligar as redes" msgid "System" msgstr "Sistema" -#~ msgid "Error: unknown parameter: %s" -#~ msgstr "Erro: parâmetro desconhecido: %s" - -#~ msgid "yes (%u)" -#~ msgstr "sim (%u)" - -#~ msgid "'%s' is not a valid powersave value" -#~ msgstr "\"%s\" não é um valor de economia de energia válido" - #~ msgid "Failed to read configuration: (%d) %s\n" #~ msgstr "Falha ao ler configuração: (%d) %s\n" @@ -10138,6 +10151,15 @@ msgstr "Sistema" #~ msgid "The nameservers listed below may not be recognized." #~ msgstr "Os servidores de nomes listados abaixo podem não ser reconhecidos." +#~ msgid "Error: unknown parameter: %s" +#~ msgstr "Erro: parâmetro desconhecido: %s" + +#~ msgid "yes (%u)" +#~ msgstr "sim (%u)" + +#~ msgid "'%s' is not a valid powersave value" +#~ msgstr "\"%s\" não é um valor de economia de energia válido" + #~ msgid "Bond master: " #~ msgstr "Vínculo mestre: " diff --git a/shared/nm-macros-internal.h b/shared/nm-macros-internal.h index 41762318..384bca66 100644 --- a/shared/nm-macros-internal.h +++ b/shared/nm-macros-internal.h @@ -26,7 +26,9 @@ /********************************************************/ -#define nm_auto(fcn) __attribute ((cleanup(fcn))) +#define _nm_packed __attribute__ ((packed)) + +#define nm_auto(fcn) __attribute__ ((cleanup(fcn))) /** * nm_auto_free: diff --git a/shared/nm-test-utils.h b/shared/nm-test-utils.h index 25032457..b792a69c 100644 --- a/shared/nm-test-utils.h +++ b/shared/nm-test-utils.h @@ -782,6 +782,34 @@ nmtst_get_rand_int (void) return g_rand_int (nmtst_get_rand ()); } +inline static gpointer +nmtst_rand_buf (GRand *rand, gpointer buffer, gsize buffer_length) +{ + guint32 v; + guint8 *b = buffer; + + if (!buffer_length) + return buffer; + + g_assert (buffer); + + if (!rand) + rand = nmtst_get_rand (); + + for (; buffer_length >= sizeof (guint32); buffer_length -= sizeof (guint32), b += sizeof (guint32)) { + v = g_rand_int (rand); + memcpy (b, &v, sizeof (guint32)); + } + if (buffer_length > 0) { + v = g_rand_int (rand); + do { + *(b++) = v & 0xFF; + v >>= 8; + } while (--buffer_length > 0); + } + return buffer; +} + inline static void * nmtst_rand_perm (GRand *rand, void *dst, const void *src, gsize elmt_size, gsize n_elmt) { @@ -1151,11 +1179,54 @@ _nmtst_assert_resolve_relative_path_equals (const char *f1, const char *f2, cons #ifdef __NETWORKMANAGER_PLATFORM_H__ +inline static NMPlatformIP4Address * +nmtst_platform_ip4_address (const char *address, const char *peer_address, guint plen) +{ + static NMPlatformIP4Address addr; + + g_assert (plen <= 32); + + memset (&addr, 0, sizeof (addr)); + addr.address = nmtst_inet4_from_string (address); + if (peer_address) + addr.peer_address = nmtst_inet4_from_string (peer_address); + else + addr.peer_address = addr.address; + addr.plen = plen; + + return &addr; +} + +inline static NMPlatformIP4Address * +nmtst_platform_ip4_address_full (const char *address, const char *peer_address, guint plen, + int ifindex, NMIPConfigSource source, guint32 timestamp, + guint32 lifetime, guint32 preferred, guint32 flags, + const char *label) +{ + NMPlatformIP4Address *addr = nmtst_platform_ip4_address (address, peer_address, plen); + + G_STATIC_ASSERT (IFNAMSIZ == sizeof (addr->label)); + g_assert (!label || strlen (label) < IFNAMSIZ); + + addr->ifindex = ifindex; + addr->source = source; + addr->timestamp = timestamp; + addr->lifetime = lifetime; + addr->preferred = preferred; + addr->n_ifa_flags = flags; + if (label) + g_strlcpy (addr->label, label, sizeof (addr->label)); + + return addr; +} + inline static NMPlatformIP6Address * nmtst_platform_ip6_address (const char *address, const char *peer_address, guint plen) { static NMPlatformIP6Address addr; + g_assert (plen <= 128); + memset (&addr, 0, sizeof (addr)); addr.address = *nmtst_inet6_from_string (address); addr.peer_address = *nmtst_inet6_from_string (peer_address); @@ -1186,6 +1257,8 @@ nmtst_platform_ip4_route (const char *network, guint plen, const char *gateway) { static NMPlatformIP4Route route; + g_assert (plen <= 32); + memset (&route, 0, sizeof (route)); route.network = nmtst_inet4_from_string (network); route.plen = plen; @@ -1218,6 +1291,8 @@ nmtst_platform_ip6_route (const char *network, guint plen, const char *gateway) { static NMPlatformIP6Route route; + nm_assert (plen <= 128); + memset (&route, 0, sizeof (route)); route.network = *nmtst_inet6_from_string (network); route.plen = plen; diff --git a/shared/nm-version-macros.h b/shared/nm-version-macros.h index 8ac9b12a..b96b6c87 100644 --- a/shared/nm-version-macros.h +++ b/shared/nm-version-macros.h @@ -45,7 +45,7 @@ * Evaluates to the micro version number of NetworkManager which this source * compiled against. */ -#define NM_MICRO_VERSION (93) +#define NM_MICRO_VERSION (94) /** * NM_CHECK_VERSION: diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index dde9af94..3d949ec2 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -5725,6 +5725,7 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, NMDevice *self) if (discovered_route->plen > 0) { memset (&route, 0, sizeof (route)); route.network = discovered_route->network; + nm_assert (discovered_route->plen <= 128); route.plen = discovered_route->plen; route.gateway = discovered_route->gateway; route.source = NM_IP_CONFIG_SOURCE_RDISC; diff --git a/src/devices/tests/test-arping.c b/src/devices/tests/test-arping.c index 72d28a7a..244d0715 100644 --- a/src/devices/tests/test-arping.c +++ b/src/devices/tests/test-arping.c @@ -79,7 +79,7 @@ test_arping_common (test_fixture *fixture, TestInfo *info) g_assert (nm_arping_manager_add_address (manager, info->addresses[i])); for (i = 0; info->peer_addresses[i]; i++) { - nmtstp_ip4_address_add (FALSE, fixture->ifindex1, info->peer_addresses[i], + nmtstp_ip4_address_add (NULL, FALSE, fixture->ifindex1, info->peer_addresses[i], 24, 0, 3600, 1800, 0, NULL); } @@ -126,13 +126,13 @@ fixture_teardown (test_fixture *fixture, gconstpointer user_data) } void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_with_logging (argc, argv, NULL, "ALL"); } void -setup_tests (void) +_nmtstp_setup_tests (void) { g_test_add ("/arping/1", test_fixture, NULL, fixture_setup, test_arping_1, fixture_teardown); g_test_add ("/arping/2", test_fixture, NULL, fixture_setup, test_arping_2, fixture_teardown); diff --git a/src/devices/tests/test-lldp.c b/src/devices/tests/test-lldp.c index 1b7f536d..bff85e6c 100644 --- a/src/devices/tests/test-lldp.c +++ b/src/devices/tests/test-lldp.c @@ -435,13 +435,13 @@ _test_recv_fixture_teardown (TestRecvFixture *fixture, gconstpointer user_data) /*****************************************************************************/ void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_assert_logging (argc, argv, "WARN", "ALL"); } void -setup_tests (void) +_nmtstp_setup_tests (void) { #define _TEST_ADD_RECV(testpath, testdata) \ g_test_add (testpath, TestRecvFixture, testdata, _test_recv_fixture_setup, test_recv, _test_recv_fixture_teardown) diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c index 769e6a27..9539fefd 100644 --- a/src/devices/wwan/nm-modem-broadband.c +++ b/src/devices/wwan/nm-modem-broadband.c @@ -870,7 +870,8 @@ static_stage3_ip4_done (NMModemBroadband *self) address.peer_address = address_network; address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv4_config); address.source = NM_IP_CONFIG_SOURCE_WWAN; - nm_ip4_config_add_address (config, &address); + if (address.plen <= 32) + nm_ip4_config_add_address (config, &address); nm_log_info (LOGD_MB, " address %s/%d", address_string, address.plen); @@ -960,7 +961,8 @@ stage3_ip6_done (NMModemBroadband *self) config = nm_ip6_config_new (nm_platform_link_get_ifindex (NM_PLATFORM_GET, data_port)); address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv6_config); - nm_ip6_config_add_address (config, &address); + if (address.plen <= 128) + nm_ip6_config_add_address (config, &address); nm_log_info (LOGD_MB, " address %s/%d", address_string, address.plen); diff --git a/src/dhcp-manager/nm-dhcp-systemd.c b/src/dhcp-manager/nm-dhcp-systemd.c index 91fa8803..5d49c27e 100644 --- a/src/dhcp-manager/nm-dhcp-systemd.c +++ b/src/dhcp-manager/nm-dhcp-systemd.c @@ -312,7 +312,8 @@ lease_to_ip4_config (const char *iface, continue; route.network = a.s_addr; - if (sd_dhcp_route_get_destination_prefix_length (routes[i], &plen) < 0) + if ( sd_dhcp_route_get_destination_prefix_length (routes[i], &plen) < 0 + || plen > 32) continue; route.plen = plen; diff --git a/src/dhcp-manager/nm-dhcp-utils.c b/src/dhcp-manager/nm-dhcp-utils.c index be563a69..a88a7e6d 100644 --- a/src/dhcp-manager/nm-dhcp-utils.c +++ b/src/dhcp-manager/nm-dhcp-utils.c @@ -60,7 +60,7 @@ ip4_process_dhcpcd_rfc3442_routes (const char *str, *slash = '\0'; errno = 0; rt_cidr = strtol (slash + 1, NULL, 10); - if ((errno == EINVAL) || (errno == ERANGE)) { + if (errno || rt_cidr > 32) { nm_log_warn (LOGD_DHCP4, "DHCP provided invalid classless static route cidr: '%s'", slash + 1); continue; } @@ -382,7 +382,8 @@ nm_dhcp_utils_ip4_config_from_options (int ifindex, in_addr_t addr; NMPlatformIP4Address address; char *str = NULL; - guint32 gwaddr = 0, plen = 0; + guint32 gwaddr = 0; + guint8 plen = 0; g_return_val_if_fail (options != NULL, NULL); diff --git a/src/dhcp-manager/tests/test-dhcp-utils.c b/src/dhcp-manager/tests/test-dhcp-utils.c index 162f2dd4..f477c061 100644 --- a/src/dhcp-manager/tests/test-dhcp-utils.c +++ b/src/dhcp-manager/tests/test-dhcp-utils.c @@ -208,6 +208,8 @@ ip4_test_route (NMIP4Config *ip4_config, const NMPlatformIP4Route *route; guint32 tmp; + g_assert (expected_prefix <= 32); + route = nm_ip4_config_get_route (ip4_config, route_num); g_assert (inet_pton (AF_INET, expected_dest, &tmp) > 0); g_assert (route->network == tmp); diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c index 460feaac..5ead5ecf 100644 --- a/src/dns-manager/nm-dns-dnsmasq.c +++ b/src/dns-manager/nm-dns-dnsmasq.c @@ -131,18 +131,18 @@ ip6_addr_to_string (const struct in6_addr *addr, const char *iface) char *buf; if (IN6_IS_ADDR_V4MAPPED (addr)) { - /* inet_ntop is probably supposed to do this for us, but it doesn't */ buf = g_malloc (INET_ADDRSTRLEN); nm_utils_inet4_ntop (addr->s6_addr32[3], buf); } else if (!iface || !iface[0] || !IN6_IS_ADDR_LINKLOCAL (addr)) { buf = g_malloc (INET6_ADDRSTRLEN); nm_utils_inet6_ntop (addr, buf); } else { - /* If we got a scope identifier, we need use '%' instead of - * '@', since dnsmasq supports '%' in server= addresses - * only since version 2.58 and up + /* Need to scope the address with %<zone-id>. Before dnsmasq 2.58, + * only '@' was supported as delimiter. Since 2.58, '@' and '%' + * are supported. Due to a bug, since 2.73 only '%' works properly + * as "server" address. */ - buf = g_strconcat (nm_utils_inet6_ntop (addr, NULL), "@", iface, NULL); + buf = g_strconcat (nm_utils_inet6_ntop (addr, NULL), "%", iface, NULL); } return buf; } diff --git a/src/dnsmasq-manager/nm-dnsmasq-utils.c b/src/dnsmasq-manager/nm-dnsmasq-utils.c index bf8faecd..3786f37d 100644 --- a/src/dnsmasq-manager/nm-dnsmasq-utils.c +++ b/src/dnsmasq-manager/nm-dnsmasq-utils.c @@ -34,7 +34,7 @@ nm_dnsmasq_utils_get_range (const NMPlatformIP4Address *addr, char **out_error_desc) { guint32 host = addr->address; - guint32 prefix = addr->plen; + guint8 prefix = addr->plen; guint32 netmask = nm_utils_ip4_prefix_to_netmask (prefix); guint32 first, last, reserved; diff --git a/src/dnsmasq-manager/tests/test-dnsmasq-utils.c b/src/dnsmasq-manager/tests/test-dnsmasq-utils.c index 850ae4f6..aeec5879 100644 --- a/src/dnsmasq-manager/tests/test-dnsmasq-utils.c +++ b/src/dnsmasq-manager/tests/test-dnsmasq-utils.c @@ -26,14 +26,6 @@ #include "nm-test-utils.h" -static NMPlatformIP4Address * -_set_addr (NMPlatformIP4Address *addr, const char *address, int plen) -{ - memset (addr, 0, sizeof (*addr)); - nm_platform_ip4_address_set_addr (addr, nmtst_inet4_from_string (address), plen); - return addr; -} - static void test_address_ranges (void) { @@ -42,50 +34,50 @@ test_address_ranges (void) char last[INET_ADDRSTRLEN]; char *error_desc = NULL; - _set_addr (&addr, "192.168.0.1", 24); + addr = *nmtst_platform_ip4_address ("192.168.0.1", NULL, 24); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "192.168.0.10"); g_assert_cmpstr (last, ==, "192.168.0.254"); - _set_addr (&addr, "192.168.0.99", 24); + addr = *nmtst_platform_ip4_address ("192.168.0.99", NULL, 24); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "192.168.0.108"); g_assert_cmpstr (last, ==, "192.168.0.254"); - _set_addr (&addr, "192.168.0.254", 24); + addr = *nmtst_platform_ip4_address ("192.168.0.254", NULL, 24); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "192.168.0.1"); g_assert_cmpstr (last, ==, "192.168.0.245"); /* Smaller networks */ - _set_addr (&addr, "1.2.3.1", 30); + addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 30); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "1.2.3.2"); g_assert_cmpstr (last, ==, "1.2.3.2"); - _set_addr (&addr, "1.2.3.1", 29); + addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 29); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "1.2.3.2"); g_assert_cmpstr (last, ==, "1.2.3.6"); - _set_addr (&addr, "1.2.3.1", 28); + addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 28); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "1.2.3.3"); g_assert_cmpstr (last, ==, "1.2.3.14"); - _set_addr (&addr, "1.2.3.1", 26); + addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 26); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc)); g_assert (error_desc == NULL); g_assert_cmpstr (first, ==, "1.2.3.8"); g_assert_cmpstr (last, ==, "1.2.3.62"); - _set_addr (&addr, "1.2.3.1", 31); + addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 31); g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc) == FALSE); g_assert (error_desc); g_free (error_desc); diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c index 6cdd00e0..714aaa92 100644 --- a/src/nm-core-utils.c +++ b/src/nm-core-utils.c @@ -233,7 +233,6 @@ nm_ethernet_address_is_valid (gconstpointer addr, gssize len) return TRUE; } - /* nm_utils_ip4_address_clear_host_address: * @addr: source ip6 address * @plen: prefix length of network @@ -279,6 +278,32 @@ nm_utils_ip6_address_clear_host_address (struct in6_addr *dst, const struct in6_ return dst; } +gboolean +nm_utils_ip6_address_same_prefix (const struct in6_addr *addr_a, const struct in6_addr *addr_b, guint8 plen) +{ + int nbytes; + guint8 t, m; + + if (plen >= 128) + return memcmp (addr_a, addr_b, sizeof (struct in6_addr)) == 0; + + nbytes = plen / 8; + if (nbytes) { + if (memcmp (addr_a, addr_b, nbytes) != 0) + return FALSE; + } + + plen = plen % 8; + if (plen == 0) + return TRUE; + + m = ~((1 << (8 - plen)) - 1); + t = ((((const guint8 *) addr_a))[nbytes]) ^ ((((const guint8 *) addr_b))[nbytes]); + return (t & m) == 0; +} + +/*****************************************************************************/ + void nm_utils_array_remove_at_indexes (GArray *array, const guint *indexes_to_delete, gsize len) { diff --git a/src/nm-core-utils.h b/src/nm-core-utils.h index f77b43e2..280be047 100644 --- a/src/nm-core-utils.h +++ b/src/nm-core-utils.h @@ -100,6 +100,7 @@ gboolean nm_ethernet_address_is_valid (gconstpointer addr, gssize len); in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen); const struct in6_addr *nm_utils_ip6_address_clear_host_address (struct in6_addr *dst, const struct in6_addr *src, guint8 plen); +gboolean nm_utils_ip6_address_same_prefix (const struct in6_addr *addr_a, const struct in6_addr *addr_b, guint8 plen); /** * nm_utils_ip6_route_metric_normalize: @@ -220,11 +221,13 @@ fcn_name (lookup_type val, char *buf, gsize len) \ /*****************************************************************************/ -#define NM_UTILS_LOOKUP_DEFAULT(v) return (v) -#define NM_UTILS_LOOKUP_DEFAULT_WARN(v) g_return_val_if_reached (v) -#define NM_UTILS_LOOKUP_ITEM(v, n) (void) 0; case v: return (n); (void) 0 -#define NM_UTILS_LOOKUP_STR_ITEM(v, n) NM_UTILS_LOOKUP_ITEM(v, ""n"") -#define NM_UTILS_LOOKUP_ITEM_IGNORE(v) (void) 0; case v: break; (void) 0 +#define NM_UTILS_LOOKUP_DEFAULT(v) return (v) +#define NM_UTILS_LOOKUP_DEFAULT_WARN(v) g_return_val_if_reached (v) +#define NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(v) { nm_assert_not_reached (); return (v); } +#define NM_UTILS_LOOKUP_ITEM(v, n) (void) 0; case v: return (n); (void) 0 +#define NM_UTILS_LOOKUP_STR_ITEM(v, n) NM_UTILS_LOOKUP_ITEM(v, ""n"") +#define NM_UTILS_LOOKUP_ITEM_IGNORE(v) (void) 0; case v: break; (void) 0 +#define NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER() (void) 0; default: break; (void) 0 #define _NM_UTILS_LOOKUP_DEFINE(scope, fcn_name, lookup_type, result_type, unknown_val, ...) \ scope result_type \ diff --git a/src/nm-iface-helper.c b/src/nm-iface-helper.c index 5a697537..20f7729a 100644 --- a/src/nm-iface-helper.c +++ b/src/nm-iface-helper.c @@ -213,7 +213,8 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, gpointer user_da * local configuration or user preferences are, so sending routes * with a prefix length of 0 is quite rude and thus ignored. */ - if (discovered_route->plen > 0) { + if ( discovered_route->plen > 0 + && discovered_route->plen <= 128) { memset (&route, 0, sizeof (route)); route.network = discovered_route->network; route.plen = discovered_route->plen; diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 4b27edf7..75caf7e3 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -365,6 +365,8 @@ nm_ip4_config_commit (const NMIP4Config *config, int ifindex, gboolean routes_fu if (addr->plen == 0) continue; + nm_assert (addr->plen <= 32); + route.ifindex = ifindex; route.source = NM_IP_CONFIG_SOURCE_KERNEL; @@ -466,6 +468,7 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu nm_ip_address_get_address_binary (s_addr, &address.address); address.peer_address = address.address; address.plen = nm_ip_address_get_prefix (s_addr); + nm_assert (address.plen <= 32); address.lifetime = NM_PLATFORM_LIFETIME_PERMANENT; address.preferred = NM_PLATFORM_LIFETIME_PERMANENT; address.source = NM_IP_CONFIG_SOURCE_USER; @@ -486,7 +489,12 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu memset (&route, 0, sizeof (route)); nm_ip_route_get_dest_binary (s_route, &route.network); + route.plen = nm_ip_route_get_prefix (s_route); + nm_assert (route.plen <= 32); + if (route.plen == 0) + continue; + nm_ip_route_get_next_hop_binary (s_route, &route.gateway); if (nm_ip_route_get_metric (s_route) == -1) route.metric = default_route_metric; @@ -494,8 +502,6 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu route.metric = nm_ip_route_get_metric (s_route); route.source = NM_IP_CONFIG_SOURCE_USER; - g_assert (route.plen > 0); - nm_ip4_config_add_route (config, &route); } @@ -1328,7 +1334,7 @@ nm_ip4_config_dump (const NMIP4Config *config, const char *detail) } gboolean -nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 network, int plen) +nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 network, guint8 plen) { guint naddresses = nm_ip4_config_get_num_addresses (config); int i; @@ -1567,7 +1573,7 @@ nm_ip4_config_add_route (NMIP4Config *config, const NMPlatformIP4Route *new) int i; g_return_if_fail (new != NULL); - g_return_if_fail (new->plen > 0); + g_return_if_fail (new->plen > 0 && new->plen <= 32); g_assert (priv->ifindex); for (i = 0; i < priv->routes->len; i++ ) { diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h index 02bc8b07..b1a57687 100644 --- a/src/nm-ip4-config.h +++ b/src/nm-ip4-config.h @@ -79,7 +79,7 @@ void nm_ip4_config_merge (NMIP4Config *dst, const NMIP4Config *src, NMIPConfigMe void nm_ip4_config_subtract (NMIP4Config *dst, const NMIP4Config *src); void nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src); gboolean nm_ip4_config_replace (NMIP4Config *dst, const NMIP4Config *src, gboolean *relevant_changes); -gboolean nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 dest, int plen); +gboolean nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 dest, guint8 plen); void nm_ip4_config_dump (const NMIP4Config *config, const char *detail); /* Gateways */ diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 6d83bd53..8e7bd22c 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -95,24 +95,6 @@ nm_ip6_config_get_ifindex (const NMIP6Config *config) /******************************************************************/ -static gboolean -same_prefix (const struct in6_addr *address1, const struct in6_addr *address2, int plen) -{ - const guint8 *bytes1 = (const guint8 *) address1; - const guint8 *bytes2 = (const guint8 *) address2; - int nbytes = plen / 8; - int nbits = plen % 8; - int masked1 = bytes1[nbytes] >> (8 - nbits); - int masked2 = bytes2[nbytes] >> (8 - nbits); - - if (nbytes && memcmp (bytes1, bytes2, nbytes)) - return FALSE; - - return masked1 == masked2; -} - -/******************************************************************/ - /** * nm_ip6_config_capture_resolv_conf(): * @nameservers: array of struct in6_addr @@ -472,6 +454,7 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIPConfig *setting, gu memset (&address, 0, sizeof (address)); nm_ip_address_get_address_binary (s_addr, &address.address); address.plen = nm_ip_address_get_prefix (s_addr); + nm_assert (address.plen <= 128); address.lifetime = NM_PLATFORM_LIFETIME_PERMANENT; address.preferred = NM_PLATFORM_LIFETIME_PERMANENT; address.source = NM_IP_CONFIG_SOURCE_USER; @@ -488,7 +471,12 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIPConfig *setting, gu memset (&route, 0, sizeof (route)); nm_ip_route_get_dest_binary (s_route, &route.network); + route.plen = nm_ip_route_get_prefix (s_route); + nm_assert (route.plen <= 128); + if (route.plen == 0) + continue; + nm_ip_route_get_next_hop_binary (s_route, &route.gateway); if (nm_ip_route_get_metric (s_route) == -1) route.metric = default_route_metric; @@ -496,8 +484,6 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIPConfig *setting, gu route.metric = nm_ip_route_get_metric (s_route); route.source = NM_IP_CONFIG_SOURCE_USER; - g_assert (route.plen > 0); - nm_ip6_config_add_route (config, &route); } @@ -708,16 +694,20 @@ nm_ip6_config_merge (NMIP6Config *dst, const NMIP6Config *src, NMIPConfigMergeFl } gboolean -nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *network, int plen) +nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *network, guint8 plen) { int num = nm_ip6_config_get_num_addresses (config); int i; + nm_assert (network); + nm_assert (plen <= 128); + for (i = 0; i < num; i++) { const NMPlatformIP6Address *item = nm_ip6_config_get_address (config, i); - if (item->plen <= plen && same_prefix (&item->address, network, item->plen) && - !(item->n_ifa_flags & IFA_F_NOPREFIXROUTE)) + if ( item->plen <= plen + && !NM_FLAGS_HAS (item->n_ifa_flags, IFA_F_NOPREFIXROUTE) + && nm_utils_ip6_address_same_prefix (&item->address, network, item->plen)) return TRUE; } @@ -1415,7 +1405,7 @@ nm_ip6_config_add_route (NMIP6Config *config, const NMPlatformIP6Route *new) int i; g_return_if_fail (new != NULL); - g_return_if_fail (new->plen > 0); + g_return_if_fail (new->plen > 0 && new->plen <= 128); g_assert (priv->ifindex); for (i = 0; i < priv->routes->len; i++ ) { @@ -1473,7 +1463,6 @@ nm_ip6_config_get_direct_route_for_host (const NMIP6Config *config, const struct { NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config); guint i; - struct in6_addr network2, host2; NMPlatformIP6Route *best_route = NULL; g_return_val_if_fail (host && !IN6_IS_ADDR_UNSPECIFIED (host), NULL); @@ -1487,10 +1476,7 @@ nm_ip6_config_get_direct_route_for_host (const NMIP6Config *config, const struct if (best_route && best_route->plen > item->plen) continue; - nm_utils_ip6_address_clear_host_address (&host2, host, item->plen); - nm_utils_ip6_address_clear_host_address (&network2, &item->network, item->plen); - - if (!IN6_ARE_ADDR_EQUAL (&network2, &host2)) + if (!nm_utils_ip6_address_same_prefix (host, &item->network, item->plen)) continue; if (best_route && diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h index 5ca64ac3..5e66d500 100644 --- a/src/nm-ip6-config.h +++ b/src/nm-ip6-config.h @@ -81,7 +81,7 @@ void nm_ip6_config_merge (NMIP6Config *dst, const NMIP6Config *src, NMIPConfigMe void nm_ip6_config_subtract (NMIP6Config *dst, const NMIP6Config *src); void nm_ip6_config_intersect (NMIP6Config *dst, const NMIP6Config *src); gboolean nm_ip6_config_replace (NMIP6Config *dst, const NMIP6Config *src, gboolean *relevant_changes); -int nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *dest, int plen); +int nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *dest, guint8 plen); void nm_ip6_config_dump (const NMIP6Config *config, const char *detail); /* Gateways */ diff --git a/src/nm-route-manager.c b/src/nm-route-manager.c index 3cf24118..05e28c74 100644 --- a/src/nm-route-manager.c +++ b/src/nm-route-manager.c @@ -221,7 +221,7 @@ _v6_route_dest_cmp (const NMPlatformIP6Route *r1, const NMPlatformIP6Route *r2) CMP_AND_RETURN_INT (r1->plen, r2->plen); nm_utils_ip6_address_clear_host_address (&n1, &r1->network, r1->plen); - nm_utils_ip6_address_clear_host_address (&n2, &r2->network, r2->plen); + nm_utils_ip6_address_clear_host_address (&n2, &r2->network, r2->plen ); return memcmp (&n1, &n2, sizeof (n1)); } diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c index fdb11eac..15d9c543 100644 --- a/src/platform/nm-fake-platform.c +++ b/src/platform/nm-fake-platform.c @@ -91,17 +91,17 @@ static void link_changed (NMPlatform *platform, NMFakePlatformLink *device, gboo static gboolean ip6_address_add (NMPlatform *platform, int ifindex, struct in6_addr addr, - int plen, + guint8 plen, struct in6_addr peer_addr, guint32 lifetime, guint32 preferred, guint flags); -static gboolean ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen); +static gboolean ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen); /******************************************************************/ static gboolean -_ip4_address_equal_peer_net (in_addr_t peer1, in_addr_t peer2, int plen) +_ip4_address_equal_peer_net (in_addr_t peer1, in_addr_t peer2, guint8 plen) { return ((peer1 ^ peer2) & nm_utils_ip4_prefix_to_netmask (plen)) == 0; } @@ -886,7 +886,7 @@ static gboolean ip4_address_add (NMPlatform *platform, int ifindex, in_addr_t addr, - int plen, + guint8 plen, in_addr_t peer_addr, guint32 lifetime, guint32 preferred, @@ -938,7 +938,7 @@ static gboolean ip6_address_add (NMPlatform *platform, int ifindex, struct in6_addr addr, - int plen, + guint8 plen, struct in6_addr peer_addr, guint32 lifetime, guint32 preferred, @@ -982,7 +982,7 @@ ip6_address_add (NMPlatform *platform, } static gboolean -ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address) +ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1007,7 +1007,7 @@ ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, } static gboolean -ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen) +ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1031,7 +1031,7 @@ ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int } static const NMPlatformIP4Address * -ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address) +ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1050,7 +1050,7 @@ ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in } static const NMPlatformIP6Address * -ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen) +ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1058,8 +1058,9 @@ ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, int pl for (i = 0; i < priv->ip6_addresses->len; i++) { NMPlatformIP6Address *address = &g_array_index (priv->ip6_addresses, NMPlatformIP6Address, i); - if (address->ifindex == ifindex && address->plen == plen && - IN6_ARE_ADDR_EQUAL (&address->address, &addr)) + if ( address->ifindex == ifindex + && address->plen == plen + && IN6_ARE_ADDR_EQUAL (&address->address, &addr)) return address; } @@ -1129,7 +1130,7 @@ ip6_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags fl } static gboolean -ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric) +ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1153,7 +1154,7 @@ ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen } static gboolean -ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric) +ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1180,7 +1181,7 @@ ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, in static gboolean ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, - in_addr_t network, int plen, in_addr_t gateway, + in_addr_t network, guint8 plen, in_addr_t gateway, in_addr_t pref_src, guint32 metric, guint32 mss) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); @@ -1188,6 +1189,8 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, guint i; guint8 scope; + g_assert (plen <= 32); + scope = gateway == 0 ? RT_SCOPE_LINK : RT_SCOPE_UNIVERSE; memset (&route, 0, sizeof (route)); @@ -1247,7 +1250,7 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, static gboolean ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, - struct in6_addr network, int plen, struct in6_addr gateway, + struct in6_addr network, guint8 plen, struct in6_addr gateway, guint32 metric, guint32 mss) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); @@ -1313,7 +1316,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, } static const NMPlatformIP4Route * -ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric) +ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; @@ -1332,7 +1335,7 @@ ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, g } static const NMPlatformIP6Route * -ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric) +ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); int i; diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 3282e698..ded019e6 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -176,13 +176,22 @@ * Forward declarations and enums ******************************************************************/ +enum { + DELAYED_ACTION_IDX_REFRESH_ALL_LINKS, + DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ADDRESSES, + DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ADDRESSES, + DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ROUTES, + DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ROUTES, + _DELAYED_ACTION_IDX_REFRESH_ALL_NUM, +}; + typedef enum { DELAYED_ACTION_TYPE_NONE = 0, - DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS = (1LL << 0), - DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES = (1LL << 1), - DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES = (1LL << 2), - DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES = (1LL << 3), - DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES = (1LL << 4), + DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_LINKS), + DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ADDRESSES), + DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ADDRESSES), + DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ROUTES), + DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ROUTES), DELAYED_ACTION_TYPE_REFRESH_LINK = (1LL << 5), DELAYED_ACTION_TYPE_MASTER_CONNECTED = (1LL << 6), DELAYED_ACTION_TYPE_READ_NETLINK = (1LL << 7), @@ -198,6 +207,10 @@ typedef enum { DELAYED_ACTION_TYPE_MAX = __DELAYED_ACTION_TYPE_MAX -1, } DelayedActionType; +#define FOR_EACH_DELAYED_ACTION(iflags, flags_all) \ + for ((iflags) = (DelayedActionType) 0x1LL; (iflags) <= DELAYED_ACTION_TYPE_MAX; (iflags) <<= 1) \ + if (NM_FLAGS_HAS (flags_all, iflags)) + typedef enum { /* Negative values are errors from kernel. Add dummy member to * make enum signed. */ @@ -290,49 +303,9 @@ _support_user_ipv6ll_detect (struct nlattr **tb) * Various utilities ******************************************************************/ -static guint -_nm_ip_config_source_to_rtprot (NMIPConfigSource source) -{ - switch (source) { - case NM_IP_CONFIG_SOURCE_UNKNOWN: - return RTPROT_UNSPEC; - case NM_IP_CONFIG_SOURCE_KERNEL: - case NM_IP_CONFIG_SOURCE_RTPROT_KERNEL: - return RTPROT_KERNEL; - case NM_IP_CONFIG_SOURCE_DHCP: - return RTPROT_DHCP; - case NM_IP_CONFIG_SOURCE_RDISC: - return RTPROT_RA; - - default: - return RTPROT_STATIC; - } -} - -static NMIPConfigSource -_nm_ip_config_source_from_rtprot (guint rtprot) -{ - switch (rtprot) { - case RTPROT_UNSPEC: - return NM_IP_CONFIG_SOURCE_UNKNOWN; - case RTPROT_KERNEL: - return NM_IP_CONFIG_SOURCE_RTPROT_KERNEL; - case RTPROT_REDIRECT: - return NM_IP_CONFIG_SOURCE_KERNEL; - case RTPROT_RA: - return NM_IP_CONFIG_SOURCE_RDISC; - case RTPROT_DHCP: - return NM_IP_CONFIG_SOURCE_DHCP; - - default: - return NM_IP_CONFIG_SOURCE_USER; - } -} - static void -clear_host_address (int family, const void *network, int plen, void *dst) +clear_host_address (int family, const void *network, guint8 plen, void *dst) { - g_return_if_fail (plen == (guint8)plen); g_return_if_fail (network); switch (family) { @@ -1641,6 +1614,9 @@ _new_from_nl_addr (struct nlmsghdr *nlh, gboolean id_only) ? sizeof (in_addr_t) : sizeof (struct in6_addr); + if (ifa->ifa_prefixlen > (is_v4 ? 32 : 128)) + goto errout; + /*****************************************************************/ obj = nmp_object_new (is_v4 ? NMP_OBJECT_TYPE_IP4_ADDRESS : NMP_OBJECT_TYPE_IP6_ADDRESS, NULL); @@ -1779,6 +1755,9 @@ _new_from_nl_route (struct nlmsghdr *nlh, gboolean id_only) ? sizeof (in_addr_t) : sizeof (struct in6_addr); + if (rtm->rtm_dst_len > (is_v4 ? 32 : 128)) + goto errout; + /***************************************************************** * parse nexthops. Only handle routes with one nh. *****************************************************************/ @@ -1906,7 +1885,7 @@ _new_from_nl_route (struct nlmsghdr *nlh, gboolean id_only) * */ obj->ip_route.source = _NM_IP_CONFIG_SOURCE_RTM_F_CLONED; } else - obj->ip_route.source = _nm_ip_config_source_from_rtprot (rtm->rtm_protocol); + obj->ip_route.source = nmp_utils_ip_config_source_from_rtprot (rtm->rtm_protocol); obj_result = obj; obj = NULL; @@ -2158,7 +2137,7 @@ _nl_msg_new_address (int nlmsg_type, int family, int ifindex, gconstpointer address, - int plen, + guint8 plen, gconstpointer peer_address, guint32 flags, int scope, @@ -2255,7 +2234,7 @@ _nl_msg_new_route (int nlmsg_type, NMIPConfigSource source, unsigned char scope, gconstpointer network, - int plen, + guint8 plen, gconstpointer gateway, guint32 metric, guint32 mss, @@ -2266,7 +2245,7 @@ _nl_msg_new_route (int nlmsg_type, .rtm_family = family, .rtm_tos = 0, .rtm_table = RT_TABLE_MAIN, /* omit setting RTA_TABLE attribute */ - .rtm_protocol = _nm_ip_config_source_to_rtprot (source), + .rtm_protocol = nmp_utils_ip_config_source_to_rtprot (source), .rtm_scope = scope, .rtm_type = RTN_UNICAST, .rtm_flags = 0, @@ -2369,9 +2348,10 @@ _support_kernel_extended_ifa_flags_get (void) typedef struct { guint32 seq_number; - gint64 timeout_abs_ns; WaitForNlResponseResult seq_result; + gint64 timeout_abs_ns; WaitForNlResponseResult *out_seq_result; + gint *out_refresh_all_in_progess; } DelayedActionWaitForNlResponseData; typedef struct _NMLinuxPlatformPrivate NMLinuxPlatformPrivate; @@ -2379,7 +2359,10 @@ typedef struct _NMLinuxPlatformPrivate NMLinuxPlatformPrivate; struct _NMLinuxPlatformPrivate { struct nl_sock *nlh; guint32 nlh_seq_next; +#ifdef NM_MORE_LOGGING guint32 nlh_seq_last_handled; +#endif + guint32 nlh_seq_last_seen; NMPCache *cache; GIOChannel *event_channel; guint event_id; @@ -2390,10 +2373,18 @@ struct _NMLinuxPlatformPrivate { GUdevClient *udev_client; struct { + /* which delayed actions are scheduled, as marked in @flags. + * Some types have additional arguments in the fields below. */ DelayedActionType flags; + + /* counter that a refresh all action is in progress, separated + * by type. */ + gint refresh_all_in_progess[_DELAYED_ACTION_IDX_REFRESH_ALL_NUM]; + GPtrArray *list_master_connected; GPtrArray *list_refresh_link; GArray *list_wait_for_nl_response; + gint is_handling; } delayed_action; @@ -2412,12 +2403,21 @@ NM_LINUX_PLATFORM_GET_PRIVATE (const void *self) G_DEFINE_TYPE (NMLinuxPlatform, nm_linux_platform, NM_TYPE_PLATFORM) +NMPlatform * +nm_linux_platform_new (gboolean netns_support) +{ + return g_object_new (NM_TYPE_LINUX_PLATFORM, + NM_PLATFORM_REGISTER_SINGLETON, FALSE, + NM_PLATFORM_NETNS_SUPPORT, netns_support, + NULL); +} + void nm_linux_platform_setup (void) { g_object_new (NM_TYPE_LINUX_PLATFORM, - NM_PLATFORM_NETNS_SUPPORT, FALSE, NM_PLATFORM_REGISTER_SINGLETON, TRUE, + NM_PLATFORM_NETNS_SUPPORT, FALSE, NULL); } @@ -2733,49 +2733,51 @@ do_emit_signal (NMPlatform *platform, const NMPObject *obj, NMPCacheOpsType cach /******************************************************************/ -static DelayedActionType -delayed_action_refresh_from_object_type (NMPObjectType obj_type) -{ - switch (obj_type) { - case NMP_OBJECT_TYPE_LINK: return DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS; - case NMP_OBJECT_TYPE_IP4_ADDRESS: return DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES; - case NMP_OBJECT_TYPE_IP6_ADDRESS: return DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES; - case NMP_OBJECT_TYPE_IP4_ROUTE: return DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES; - case NMP_OBJECT_TYPE_IP6_ROUTE: return DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES; - default: g_return_val_if_reached (DELAYED_ACTION_TYPE_NONE); - } -} - -static NMPObjectType -delayed_action_refresh_to_object_type (DelayedActionType action_type) -{ - switch (action_type) { - case DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS: return NMP_OBJECT_TYPE_LINK; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES: return NMP_OBJECT_TYPE_IP4_ADDRESS; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES: return NMP_OBJECT_TYPE_IP6_ADDRESS; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES: return NMP_OBJECT_TYPE_IP4_ROUTE; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES: return NMP_OBJECT_TYPE_IP6_ROUTE; - default: g_return_val_if_reached (NMP_OBJECT_TYPE_UNKNOWN); - } -} - -static const char * -delayed_action_to_string (DelayedActionType action_type) -{ - switch (action_type) { - case DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS : return "refresh-all-links"; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES : return "refresh-all-ip4-addresses"; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES : return "refresh-all-ip6-addresses"; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES : return "refresh-all-ip4-routes"; - case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES : return "refresh-all-ip6-routes"; - case DELAYED_ACTION_TYPE_REFRESH_LINK : return "refresh-link"; - case DELAYED_ACTION_TYPE_MASTER_CONNECTED : return "master-connected"; - case DELAYED_ACTION_TYPE_READ_NETLINK : return "read-netlink"; - case DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE : return "wait-for-nl-response"; - default: - return "unknown"; - } -} +_NM_UTILS_LOOKUP_DEFINE (static, delayed_action_refresh_from_object_type, NMPObjectType, DelayedActionType, + NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT (DELAYED_ACTION_TYPE_NONE), + NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_LINK, DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS), + NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP4_ADDRESS, DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES), + NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP6_ADDRESS, DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES), + NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP4_ROUTE, DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES), + NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP6_ROUTE, DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES), + NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER (), +); + +_NM_UTILS_LOOKUP_DEFINE (static, delayed_action_refresh_to_object_type, DelayedActionType, NMPObjectType, + NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT (NMP_OBJECT_TYPE_UNKNOWN), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS, NMP_OBJECT_TYPE_LINK), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES, NMP_OBJECT_TYPE_IP4_ADDRESS), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES, NMP_OBJECT_TYPE_IP6_ADDRESS), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES, NMP_OBJECT_TYPE_IP4_ROUTE), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES, NMP_OBJECT_TYPE_IP6_ROUTE), + NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER (), +); + +_NM_UTILS_LOOKUP_DEFINE (static, delayed_action_refresh_all_to_idx, DelayedActionType, guint, + NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT (0), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS, DELAYED_ACTION_IDX_REFRESH_ALL_LINKS), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES, DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ADDRESSES), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES, DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ADDRESSES), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES, DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ROUTES), + NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES, DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ROUTES), + NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER (), +); + +NM_UTILS_LOOKUP_STR_DEFINE_STATIC (delayed_action_to_string, DelayedActionType, + NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS, "refresh-all-links"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES, "refresh-all-ip4-addresses"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES, "refresh-all-ip6-addresses"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES, "refresh-all-ip4-routes"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES, "refresh-all-ip6-routes"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_LINK, "refresh-link"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_MASTER_CONNECTED, "master-connected"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_READ_NETLINK, "read-netlink"), + NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE, "wait-for-nl-response"), + NM_UTILS_LOOKUP_ITEM_IGNORE (DELAYED_ACTION_TYPE_NONE), + NM_UTILS_LOOKUP_ITEM_IGNORE (DELAYED_ACTION_TYPE_REFRESH_ALL), + NM_UTILS_LOOKUP_ITEM_IGNORE (__DELAYED_ACTION_TYPE_MAX), +); static const char * delayed_action_to_string_full (DelayedActionType action_type, gpointer user_data, char *buf, gsize buf_size) @@ -2826,6 +2828,24 @@ delayed_action_to_string_full (DelayedActionType action_type, gpointer user_data /*****************************************************************************/ +static gboolean +delayed_action_refresh_all_in_progress (NMPlatform *platform, DelayedActionType action_type) +{ + NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); + + nm_assert (nm_utils_is_power_of_two (action_type)); + nm_assert (NM_FLAGS_ANY (action_type, DELAYED_ACTION_TYPE_REFRESH_ALL)); + nm_assert (!NM_FLAGS_ANY (action_type, ~DELAYED_ACTION_TYPE_REFRESH_ALL)); + + if (NM_FLAGS_ANY (priv->delayed_action.flags, action_type)) + return TRUE; + + if (priv->delayed_action.refresh_all_in_progess[delayed_action_refresh_all_to_idx (action_type)] > 0) + return TRUE; + + return FALSE; +} + static void delayed_action_wait_for_nl_response_complete (NMPlatform *platform, guint idx, @@ -2833,7 +2853,6 @@ delayed_action_wait_for_nl_response_complete (NMPlatform *platform, { NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); DelayedActionWaitForNlResponseData *data; - WaitForNlResponseResult *out_seq_result; nm_assert (NM_FLAGS_HAS (priv->delayed_action.flags, DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE)); nm_assert (idx < priv->delayed_action.list_wait_for_nl_response->len); @@ -2843,16 +2862,16 @@ delayed_action_wait_for_nl_response_complete (NMPlatform *platform, _LOGt_delayed_action (DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE, data, "complete"); - out_seq_result = data->out_seq_result; - - g_array_remove_index_fast (priv->delayed_action.list_wait_for_nl_response, idx); - /* Note: @data is invalidated at this point */ - - if (priv->delayed_action.list_wait_for_nl_response->len <= 0) + if (priv->delayed_action.list_wait_for_nl_response->len <= 1) priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE; + if (data->out_seq_result) + *data->out_seq_result = seq_result; + if (data->out_refresh_all_in_progess) { + nm_assert (*data->out_refresh_all_in_progess > 0); + *data->out_refresh_all_in_progess -= 1; + } - if (out_seq_result) - *out_seq_result = seq_result; + g_array_remove_index_fast (priv->delayed_action.list_wait_for_nl_response, idx); } static void @@ -2961,9 +2980,8 @@ delayed_action_handle_one (NMPlatform *platform) priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_REFRESH_ALL; if (_LOGt_ENABLED ()) { - for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) { - if (NM_FLAGS_HAS (flags, iflags)) - _LOGt_delayed_action (iflags, NULL, "handle"); + FOR_EACH_DELAYED_ACTION (iflags, flags) { + _LOGt_delayed_action (iflags, NULL, "handle"); } } @@ -3048,9 +3066,8 @@ delayed_action_schedule (NMPlatform *platform, DelayedActionType action_type, gp priv->delayed_action.flags |= action_type; if (_LOGt_ENABLED ()) { - for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) { - if (NM_FLAGS_HAS (action_type, iflags)) - _LOGt_delayed_action (iflags, user_data, "schedule"); + FOR_EACH_DELAYED_ACTION (iflags, action_type) { + _LOGt_delayed_action (iflags, user_data, "schedule"); } } } @@ -3058,12 +3075,14 @@ delayed_action_schedule (NMPlatform *platform, DelayedActionType action_type, gp static void delayed_action_schedule_WAIT_FOR_NL_RESPONSE (NMPlatform *platform, guint32 seq_number, - WaitForNlResponseResult *out_seq_result) + WaitForNlResponseResult *out_seq_result, + gint *out_refresh_all_in_progess) { DelayedActionWaitForNlResponseData data = { .seq_number = seq_number, .timeout_abs_ns = nm_utils_get_monotonic_timestamp_ns () + (200 * (NM_UTILS_NS_PER_SECOND / 1000)), .out_seq_result = out_seq_result, + .out_refresh_all_in_progess = out_refresh_all_in_progess, }; delayed_action_schedule (platform, @@ -3150,7 +3169,7 @@ cache_prune_candidates_prune (NMPlatform *platform) static void cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMPCacheOpsType ops_type, gpointer user_data) { - NMPlatform *platform = NM_PLATFORM (user_data); + NMPlatform *platform = user_data; NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); const NMPClass *klass; char str_buf[sizeof (_nm_utils_to_string_buffer)]; @@ -3162,6 +3181,7 @@ cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMP nm_assert (ops_type != NMP_CACHE_OPS_REMOVED || (new == NULL && NMP_OBJECT_IS_VALID (old) && nmp_object_is_alive (old))); nm_assert (ops_type != NMP_CACHE_OPS_UPDATED || (NMP_OBJECT_IS_VALID (old) && nmp_object_is_alive (old) && NMP_OBJECT_IS_VALID (new) && nmp_object_is_alive (new))); nm_assert (new == NULL || old == NULL || nmp_object_id_equal (new, old)); + nm_assert (!old || !new || NMP_OBJECT_GET_CLASS (old) == NMP_OBJECT_GET_CLASS (new)); klass = old ? NMP_OBJECT_GET_CLASS (old) : NMP_OBJECT_GET_CLASS (new); @@ -3368,17 +3388,56 @@ cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMP NULL); } } + break; default: break; } } +static void +cache_post (NMPlatform *platform, + struct nlmsghdr *msghdr, + NMPCacheOpsType cache_op, + NMPObject *obj, + NMPObject *obj_cache) +{ + NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); + + nm_assert (NMP_OBJECT_IS_VALID (obj)); + nm_assert (!obj_cache || nmp_object_id_equal (obj, obj_cache)); + + if (msghdr->nlmsg_type == RTM_NEWROUTE) { + DelayedActionType action_type; + + action_type = NMP_OBJECT_GET_TYPE (obj) == NMP_OBJECT_TYPE_IP4_ROUTE + ? DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES + : DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES; + if ( !delayed_action_refresh_all_in_progress (platform, action_type) + && nmp_cache_find_other_route_for_same_destination (priv->cache, obj)) { + /* via `iproute route change` the user can update an existing route which effectively + * means that a new object (with a different ID) comes into existance, replacing the + * old on. In other words, as the ID of the object changes, we really see a new + * object with the old one deleted. + * However, kernel decides not to send a RTM_DELROUTE event for that. + * + * To hack around that, check if the update leaves us with multiple routes for the + * same network/plen,metric part. In that case, we cannot do better then requesting + * all routes anew, which sucks. + * + * One mitigation to avoid a dump is only to request a new dump, if we are not in + * the middle of an ongoing dump (delayed_action_refresh_all_in_progress). */ + delayed_action_schedule (platform, action_type, NULL); + } + } +} + /******************************************************************/ static int _nl_send_auto_with_seq (NMPlatform *platform, struct nl_msg *nlmsg, - WaitForNlResponseResult *out_seq_result) + WaitForNlResponseResult *out_seq_result, + gint *out_refresh_all_in_progess) { NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); guint32 seq; @@ -3393,7 +3452,7 @@ _nl_send_auto_with_seq (NMPlatform *platform, if (nle >= 0) { nle = 0; - delayed_action_schedule_WAIT_FOR_NL_RESPONSE (platform, seq, out_seq_result); + delayed_action_schedule_WAIT_FOR_NL_RESPONSE (platform, seq, out_seq_result, out_refresh_all_in_progess); } else _LOGD ("netlink: send: failed sending message: %s (%d)", nl_geterror (nle), nle); @@ -3427,7 +3486,7 @@ do_request_link_no_delayed_actions (NMPlatform *platform, int ifindex, const cha 0, 0); if (nlmsg) - _nl_send_auto_with_seq (platform, nlmsg, NULL); + _nl_send_auto_with_seq (platform, nlmsg, NULL, NULL); } static void @@ -3446,48 +3505,51 @@ do_request_all_no_delayed_actions (NMPlatform *platform, DelayedActionType actio nm_assert (!NM_FLAGS_ANY (action_type, ~DELAYED_ACTION_TYPE_REFRESH_ALL)); action_type &= DELAYED_ACTION_TYPE_REFRESH_ALL; - for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) { - if (NM_FLAGS_HAS (action_type, iflags)) - cache_prune_candidates_record_all (platform, delayed_action_refresh_to_object_type (iflags)); + FOR_EACH_DELAYED_ACTION (iflags, action_type) { + cache_prune_candidates_record_all (platform, delayed_action_refresh_to_object_type (iflags)); } - for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) { - if (NM_FLAGS_HAS (action_type, iflags)) { - NMPObjectType obj_type = delayed_action_refresh_to_object_type (iflags); - const NMPClass *klass = nmp_class_from_type (obj_type); - nm_auto_nlmsg struct nl_msg *nlmsg = NULL; - struct rtgenmsg gmsg = { - .rtgen_family = klass->addr_family, - }; - int nle; - - /* clear any delayed action that request a refresh of this object type. */ - priv->delayed_action.flags &= ~iflags; - _LOGt_delayed_action (iflags, NULL, "handle (do-request-all)"); - if (obj_type == NMP_OBJECT_TYPE_LINK) { - priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_REFRESH_LINK; - g_ptr_array_set_size (priv->delayed_action.list_refresh_link, 0); - _LOGt_delayed_action (DELAYED_ACTION_TYPE_REFRESH_LINK, NULL, "clear (do-request-all)"); - } + FOR_EACH_DELAYED_ACTION (iflags, action_type) { + NMPObjectType obj_type = delayed_action_refresh_to_object_type (iflags); + const NMPClass *klass = nmp_class_from_type (obj_type); + nm_auto_nlmsg struct nl_msg *nlmsg = NULL; + struct rtgenmsg gmsg = { + .rtgen_family = klass->addr_family, + }; + int nle; + gint *out_refresh_all_in_progess; - event_handler_read_netlink (platform, FALSE); + out_refresh_all_in_progess = &priv->delayed_action.refresh_all_in_progess[delayed_action_refresh_all_to_idx (iflags)]; + nm_assert (*out_refresh_all_in_progess >= 0); + *out_refresh_all_in_progess += 1; - /* reimplement - * nl_rtgen_request (sk, klass->rtm_gettype, klass->addr_family, NLM_F_DUMP); - * because we need the sequence number. - */ - nlmsg = nlmsg_alloc_simple (klass->rtm_gettype, NLM_F_DUMP); - if (!nlmsg) - goto next; + /* clear any delayed action that request a refresh of this object type. */ + priv->delayed_action.flags &= ~iflags; + _LOGt_delayed_action (iflags, NULL, "handle (do-request-all)"); + if (obj_type == NMP_OBJECT_TYPE_LINK) { + priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_REFRESH_LINK; + g_ptr_array_set_size (priv->delayed_action.list_refresh_link, 0); + _LOGt_delayed_action (DELAYED_ACTION_TYPE_REFRESH_LINK, NULL, "clear (do-request-all)"); + } - nle = nlmsg_append (nlmsg, &gmsg, sizeof (gmsg), NLMSG_ALIGNTO); - if (nle < 0) - goto next; + event_handler_read_netlink (platform, FALSE); - _nl_send_auto_with_seq (platform, nlmsg, NULL); + /* reimplement + * nl_rtgen_request (sk, klass->rtm_gettype, klass->addr_family, NLM_F_DUMP); + * because we need the sequence number. + */ + nlmsg = nlmsg_alloc_simple (klass->rtm_gettype, NLM_F_DUMP); + if (!nlmsg) + continue; + + nle = nlmsg_append (nlmsg, &gmsg, sizeof (gmsg), NLMSG_ALIGNTO); + if (nle < 0) + continue; + + if (_nl_send_auto_with_seq (platform, nlmsg, NULL, out_refresh_all_in_progess) < 0) { + nm_assert (*out_refresh_all_in_progess > 0); + *out_refresh_all_in_progess -= 1; } -next: - ; } } @@ -3499,14 +3561,41 @@ do_request_one_type (NMPlatform *platform, NMPObjectType obj_type) } static void -event_seq_check (NMPlatform *platform, struct nl_msg *msg, WaitForNlResponseResult seq_result) +event_seq_check_refresh_all (NMPlatform *platform, guint32 seq_number) { NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); DelayedActionWaitForNlResponseData *data; - guint32 seq_number; guint i; - seq_number = nlmsg_hdr (msg)->nlmsg_seq; + if (NM_IN_SET (seq_number, 0, priv->nlh_seq_last_seen)) + return; + + if (NM_FLAGS_HAS (priv->delayed_action.flags, DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE)) { + nm_assert (priv->delayed_action.list_wait_for_nl_response->len > 0); + + for (i = 0; i < priv->delayed_action.list_wait_for_nl_response->len; i++) { + data = &g_array_index (priv->delayed_action.list_wait_for_nl_response, DelayedActionWaitForNlResponseData, i); + + if (data->seq_number == priv->nlh_seq_last_seen) { + if (data->out_refresh_all_in_progess) { + nm_assert (*data->out_refresh_all_in_progess > 0); + *data->out_refresh_all_in_progess -= 1; + data->out_refresh_all_in_progess = NULL; + break; + } + } + } + } + + priv->nlh_seq_last_seen = seq_number; +} + +static void +event_seq_check (NMPlatform *platform, guint32 seq_number, WaitForNlResponseResult seq_result) +{ + NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); + DelayedActionWaitForNlResponseData *data; + guint i; if (seq_number == 0) return; @@ -3531,9 +3620,11 @@ event_seq_check (NMPlatform *platform, struct nl_msg *msg, WaitForNlResponseResu } } +#ifdef NM_MORE_LOGGING if (seq_number != priv->nlh_seq_last_handled) _LOGt ("netlink: recvmsg: unwaited sequence number %u", seq_number); priv->nlh_seq_last_handled = seq_number; +#endif } static void @@ -3581,6 +3672,9 @@ event_valid_msg (NMPlatform *platform, struct nl_msg *msg, gboolean handle_event case RTM_NEWADDR: case RTM_NEWROUTE: cache_op = nmp_cache_update_netlink (priv->cache, obj, &obj_cache, &was_visible, cache_pre_hook, platform); + + cache_post (platform, msghdr, cache_op, obj, obj_cache); + do_emit_signal (platform, obj_cache, cache_op, was_visible); break; @@ -3730,7 +3824,7 @@ do_add_link_with_lookup (NMPlatform *platform, } } - nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result); + nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL); if (nle < 0) { _LOGE ("do-add-link[%s/%s]: failed sending netlink request \"%s\" (%d)", name, @@ -3781,7 +3875,7 @@ do_add_addrroute (NMPlatform *platform, const NMPObject *obj_id, struct nl_msg * event_handler_read_netlink (platform, FALSE); - nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result); + nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL); if (nle < 0) { _LOGE ("do-add-%s[%s]: failure sending netlink request \"%s\" (%d)", NMP_OBJECT_GET_CLASS (obj_id)->obj_type_name, @@ -3834,7 +3928,7 @@ do_delete_object (NMPlatform *platform, const NMPObject *obj_id, struct nl_msg * event_handler_read_netlink (platform, FALSE); - nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result); + nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL); if (nle < 0) { _LOGE ("do-delete-%s[%s]: failure sending netlink request \"%s\" (%d)", NMP_OBJECT_GET_CLASS (obj_id)->obj_type_name, @@ -3895,7 +3989,7 @@ do_change_link (NMPlatform *platform, return NM_PLATFORM_ERROR_UNSPECIFIED; retry: - nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result); + nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL); if (nle < 0) { _LOGE ("do-change-link[%d]: failure sending netlink request \"%s\" (%d)", ifindex, @@ -3964,7 +4058,7 @@ link_add (NMPlatform *platform, name, nm_link_type_to_string (type), (int) type); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4356,7 +4450,7 @@ vlan_add (NMPlatform *platform, name, parent, vlan_id, (unsigned int) vlan_flags); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4400,7 +4494,7 @@ link_gre_add (NMPlatform *platform, nm_utils_inet4_ntop (props->remote, buffer)); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4456,7 +4550,7 @@ link_ip6tnl_add (NMPlatform *platform, nm_utils_inet6_ntop (&props->remote, buffer)); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4516,7 +4610,7 @@ link_ipip_add (NMPlatform *platform, nm_utils_inet4_ntop (props->remote, buffer)); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4566,7 +4660,7 @@ link_macvlan_add (NMPlatform *platform, props->mode); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4616,7 +4710,7 @@ link_sit_add (NMPlatform *platform, nm_utils_inet4_ntop (props->remote, buffer)); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -4665,7 +4759,7 @@ link_vxlan_add (NMPlatform *platform, name, props->parent_ifindex, props->id); nlmsg = _nl_msg_new_link (RTM_NEWLINK, - NLM_F_CREATE, + NLM_F_CREATE | NLM_F_EXCL, 0, name, 0, @@ -5266,7 +5360,7 @@ static gboolean ip4_address_add (NMPlatform *platform, int ifindex, in_addr_t addr, - int plen, + guint8 plen, in_addr_t peer_addr, guint32 lifetime, guint32 preferred, @@ -5297,7 +5391,7 @@ static gboolean ip6_address_add (NMPlatform *platform, int ifindex, struct in6_addr addr, - int plen, + guint8 plen, struct in6_addr peer_addr, guint32 lifetime, guint32 preferred, @@ -5324,7 +5418,7 @@ ip6_address_add (NMPlatform *platform, } static gboolean -ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address) +ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address) { nm_auto_nlmsg struct nl_msg *nlmsg = NULL; NMPObject obj_id; @@ -5349,7 +5443,7 @@ ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, } static gboolean -ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen) +ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen) { nm_auto_nlmsg struct nl_msg *nlmsg = NULL; NMPObject obj_id; @@ -5374,7 +5468,7 @@ ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int } static const NMPlatformIP4Address * -ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address) +ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address) { NMPObject obj_id; const NMPObject *obj; @@ -5387,7 +5481,7 @@ ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in } static const NMPlatformIP6Address * -ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen) +ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen) { NMPObject obj_id; const NMPObject *obj; @@ -5454,7 +5548,7 @@ ip6_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags fl static gboolean ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, - in_addr_t network, int plen, in_addr_t gateway, + in_addr_t network, guint8 plen, in_addr_t gateway, in_addr_t pref_src, guint32 metric, guint32 mss) { NMPObject obj_id; @@ -5479,7 +5573,7 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, static gboolean ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, - struct in6_addr network, int plen, struct in6_addr gateway, + struct in6_addr network, guint8 plen, struct in6_addr gateway, guint32 metric, guint32 mss) { NMPObject obj_id; @@ -5503,7 +5597,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, } static gboolean -ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric) +ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); nm_auto_nlmsg struct nl_msg *nlmsg = NULL; @@ -5559,7 +5653,7 @@ ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen } static gboolean -ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric) +ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { nm_auto_nlmsg struct nl_msg *nlmsg = NULL; NMPObject obj_id; @@ -5587,7 +5681,7 @@ ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, in } static const NMPlatformIP4Route * -ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric) +ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { NMPObject obj_id; const NMPObject *obj; @@ -5600,7 +5694,7 @@ ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, g } static const NMPlatformIP6Route * -ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric) +ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { NMPObject obj_id; const NMPObject *obj; @@ -5684,6 +5778,8 @@ continue_reading: while (nlmsg_ok (hdr, n)) { nm_auto_nlmsg struct nl_msg *msg = NULL; gboolean abort_parsing = FALSE; + gboolean process_valid_msg = FALSE; + guint32 seq_number; msg = nlmsg_convert (hdr); if (!msg) { @@ -5768,7 +5864,21 @@ continue_reading: seq_result = -errsv; } else seq_result = WAIT_FOR_NL_RESPONSE_RESULT_RESPONSE_OK; - } else { + } else + process_valid_msg = TRUE; + + seq_number = nlmsg_hdr (msg)->nlmsg_seq; + + /* check whether the seq number is different from before, and + * whether the previous number (@nlh_seq_last_seen) is a pending + * refresh-all request. In that case, the pending request is thereby + * completed. + * + * We must do that before processing the message with event_valid_msg(), + * because we must track the completion of the pending request before that. */ + event_seq_check_refresh_all (platform, seq_number); + + if (process_valid_msg) { /* Valid message (not checking for MULTIPART bit to * get along with broken kernels. NL_SKIP has no * effect on this. */ @@ -5778,7 +5888,7 @@ continue_reading: seq_result = WAIT_FOR_NL_RESPONSE_RESULT_RESPONSE_OK; } - event_seq_check (platform, msg, seq_result); + event_seq_check (platform, seq_number, seq_result); if (abort_parsing) goto stop; diff --git a/src/platform/nm-linux-platform.h b/src/platform/nm-linux-platform.h index a9e2cd82..4ae2fd14 100644 --- a/src/platform/nm-linux-platform.h +++ b/src/platform/nm-linux-platform.h @@ -48,6 +48,8 @@ typedef struct { GType nm_linux_platform_get_type (void); +NMPlatform *nm_linux_platform_new (gboolean netns_support); + void nm_linux_platform_setup (void); #endif /* __NETWORKMANAGER_LINUX_PLATFORM_H__ */ diff --git a/src/platform/nm-platform-utils.c b/src/platform/nm-platform-utils.c index d0c92a78..b4542adf 100644 --- a/src/platform/nm-platform-utils.c +++ b/src/platform/nm-platform-utils.c @@ -30,6 +30,7 @@ #include <linux/sockios.h> #include <linux/mii.h> #include <linux/version.h> +#include <linux/rtnetlink.h> #include "nm-utils.h" #include "nm-setting-wired.h" @@ -412,6 +413,10 @@ out: return g_intern_string (driver); } +/****************************************************************************** + * utils + *****************************************************************************/ + gboolean nmp_utils_device_exists (const char *name) { @@ -427,3 +432,43 @@ nmp_utils_device_exists (const char *name) nm_utils_ifname_cpy (&sysdir[NM_STRLEN (SYS_CLASS_NET)], name); return g_file_test (sysdir, G_FILE_TEST_EXISTS); } + +guint +nmp_utils_ip_config_source_to_rtprot (NMIPConfigSource source) +{ + switch (source) { + case NM_IP_CONFIG_SOURCE_UNKNOWN: + return RTPROT_UNSPEC; + case NM_IP_CONFIG_SOURCE_KERNEL: + case NM_IP_CONFIG_SOURCE_RTPROT_KERNEL: + return RTPROT_KERNEL; + case NM_IP_CONFIG_SOURCE_DHCP: + return RTPROT_DHCP; + case NM_IP_CONFIG_SOURCE_RDISC: + return RTPROT_RA; + + default: + return RTPROT_STATIC; + } +} + +NMIPConfigSource +nmp_utils_ip_config_source_from_rtprot (guint rtprot) +{ + switch (rtprot) { + case RTPROT_UNSPEC: + return NM_IP_CONFIG_SOURCE_UNKNOWN; + case RTPROT_KERNEL: + return NM_IP_CONFIG_SOURCE_RTPROT_KERNEL; + case RTPROT_REDIRECT: + return NM_IP_CONFIG_SOURCE_KERNEL; + case RTPROT_RA: + return NM_IP_CONFIG_SOURCE_RDISC; + case RTPROT_DHCP: + return NM_IP_CONFIG_SOURCE_DHCP; + + default: + return NM_IP_CONFIG_SOURCE_USER; + } +} + diff --git a/src/platform/nm-platform-utils.h b/src/platform/nm-platform-utils.h index 976bd8db..f2594747 100644 --- a/src/platform/nm-platform-utils.h +++ b/src/platform/nm-platform-utils.h @@ -54,4 +54,7 @@ const char *nmp_utils_udev_get_driver (GUdevDevice *device); gboolean nmp_utils_device_exists (const char *name); +guint nmp_utils_ip_config_source_to_rtprot (NMIPConfigSource source); +NMIPConfigSource nmp_utils_ip_config_source_from_rtprot (guint rtprot); + #endif /* __NM_PLATFORM_UTILS_H__ */ diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 5a399b31..69b0d420 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -2459,8 +2459,10 @@ nm_platform_ethtool_get_link_speed (NMPlatform *self, const char *ifname, guint3 /******************************************************************/ void -nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, int plen) +nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, guint8 plen) { + nm_assert (plen <= 32); + addr->address = address; addr->peer_address = address; addr->plen = plen; @@ -2499,7 +2501,7 @@ gboolean nm_platform_ip4_address_add (NMPlatform *self, int ifindex, in_addr_t address, - int plen, + guint8 plen, in_addr_t peer_address, guint32 lifetime, guint32 preferred, @@ -2509,7 +2511,7 @@ nm_platform_ip4_address_add (NMPlatform *self, _CHECK_SELF (self, klass, FALSE); g_return_val_if_fail (ifindex > 0, FALSE); - g_return_val_if_fail (plen > 0, FALSE); + g_return_val_if_fail (plen <= 32, FALSE); g_return_val_if_fail (lifetime > 0, FALSE); g_return_val_if_fail (preferred <= lifetime, FALSE); g_return_val_if_fail (!label || strlen (label) < sizeof (((NMPlatformIP4Address *) NULL)->label), FALSE); @@ -2537,7 +2539,7 @@ gboolean nm_platform_ip6_address_add (NMPlatform *self, int ifindex, struct in6_addr address, - int plen, + guint8 plen, struct in6_addr peer_address, guint32 lifetime, guint32 preferred, @@ -2546,7 +2548,7 @@ nm_platform_ip6_address_add (NMPlatform *self, _CHECK_SELF (self, klass, FALSE); g_return_val_if_fail (ifindex > 0, FALSE); - g_return_val_if_fail (plen > 0, FALSE); + g_return_val_if_fail (plen <= 128, FALSE); g_return_val_if_fail (lifetime > 0, FALSE); g_return_val_if_fail (preferred <= lifetime, FALSE); @@ -2568,7 +2570,7 @@ nm_platform_ip6_address_add (NMPlatform *self, } gboolean -nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address) +nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address) { char str_dev[TO_STRING_DEV_BUF_SIZE]; char str_peer2[NM_UTILS_INET_ADDRSTRLEN]; @@ -2577,7 +2579,7 @@ nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address _CHECK_SELF (self, klass, FALSE); g_return_val_if_fail (ifindex > 0, FALSE); - g_return_val_if_fail (plen > 0, FALSE); + g_return_val_if_fail (plen <= 32, FALSE); _LOGD ("address: deleting IPv4 address %s/%d, %sifindex %d%s", nm_utils_inet4_ntop (address, NULL), plen, @@ -2589,14 +2591,14 @@ nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address } gboolean -nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, int plen) +nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen) { char str_dev[TO_STRING_DEV_BUF_SIZE]; _CHECK_SELF (self, klass, FALSE); g_return_val_if_fail (ifindex > 0, FALSE); - g_return_val_if_fail (plen > 0, FALSE); + g_return_val_if_fail (plen <= 128, FALSE); _LOGD ("address: deleting IPv6 address %s/%d, ifindex %d%s", nm_utils_inet6_ntop (&address, NULL), plen, ifindex, @@ -2605,21 +2607,21 @@ nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr a } const NMPlatformIP4Address * -nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, int plen, guint32 peer_address) +nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, guint32 peer_address) { _CHECK_SELF (self, klass, NULL); - g_return_val_if_fail (plen > 0, NULL); + g_return_val_if_fail (plen <= 32, NULL); return klass->ip4_address_get (self, ifindex, address, plen, peer_address); } const NMPlatformIP6Address * -nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, int plen) +nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen) { _CHECK_SELF (self, klass, NULL); - g_return_val_if_fail (plen > 0, NULL); + g_return_val_if_fail (plen <= 128, NULL); return klass->ip6_address_get (self, ifindex, address, plen); } @@ -2854,13 +2856,13 @@ nm_platform_ip6_route_get_all (NMPlatform *self, int ifindex, NMPlatformGetRoute gboolean nm_platform_ip4_route_add (NMPlatform *self, int ifindex, NMIPConfigSource source, - in_addr_t network, int plen, + in_addr_t network, guint8 plen, in_addr_t gateway, in_addr_t pref_src, guint32 metric, guint32 mss) { _CHECK_SELF (self, klass, FALSE); - g_return_val_if_fail (0 <= plen && plen <= 32, FALSE); + g_return_val_if_fail (plen <= 32, FALSE); if (_LOGD_ENABLED ()) { NMPlatformIP4Route route = { 0 }; @@ -2882,12 +2884,12 @@ nm_platform_ip4_route_add (NMPlatform *self, gboolean nm_platform_ip6_route_add (NMPlatform *self, int ifindex, NMIPConfigSource source, - struct in6_addr network, int plen, struct in6_addr gateway, + struct in6_addr network, guint8 plen, struct in6_addr gateway, guint32 metric, guint32 mss) { _CHECK_SELF (self, klass, FALSE); - g_return_val_if_fail (0 <= plen && plen <= 128, FALSE); + g_return_val_if_fail (plen <= 128, FALSE); if (_LOGD_ENABLED ()) { NMPlatformIP6Route route = { 0 }; @@ -2906,7 +2908,7 @@ nm_platform_ip6_route_add (NMPlatform *self, } gboolean -nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric) +nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { char str_dev[TO_STRING_DEV_BUF_SIZE]; @@ -2919,7 +2921,7 @@ nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, } gboolean -nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric) +nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { char str_dev[TO_STRING_DEV_BUF_SIZE]; @@ -2932,7 +2934,7 @@ nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr net } const NMPlatformIP4Route * -nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric) +nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { _CHECK_SELF (self, klass, FALSE); @@ -2940,7 +2942,7 @@ nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, int } const NMPlatformIP6Route * -nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric) +nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { _CHECK_SELF (self, klass, FALSE); @@ -3631,7 +3633,8 @@ nm_platform_ip4_route_to_string (const NMPlatformIP4Route *route, char *buf, gsi "%s%s" /* scope */ "%s%s" /* pref-src */ "", - s_network, route->plen, + s_network, + route->plen, s_gateway, str_dev, route->metric, @@ -3678,7 +3681,8 @@ nm_platform_ip6_route_to_string (const NMPlatformIP6Route *route, char *buf, gsi " mss %"G_GUINT32_FORMAT " src %s" /* source */ "", - s_network, route->plen, + s_network, + route->plen, s_gateway, str_dev, route->metric, @@ -4257,7 +4261,7 @@ nm_platform_class_init (NMPlatformClass *platform_class) g_object_class_install_property (object_class, PROP_NETNS_SUPPORT, g_param_spec_boolean (NM_PLATFORM_NETNS_SUPPORT, "", "", - FALSE, + NM_PLATFORM_NETNS_SUPPORT_DEFAULT, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h index 15bd2fde..9f055b04 100644 --- a/src/platform/nm-platform.h +++ b/src/platform/nm-platform.h @@ -40,6 +40,8 @@ #define NM_IS_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_PLATFORM)) #define NM_PLATFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_PLATFORM, NMPlatformClass)) +#define NM_PLATFORM_NETNS_SUPPORT_DEFAULT FALSE + /******************************************************************/ #define NM_PLATFORM_NETNS_SUPPORT "netns-support" @@ -226,7 +228,7 @@ typedef struct { * IFA_FLAGS attribute. */ \ guint32 n_ifa_flags; \ \ - int plen; \ + guint8 plen; \ ; /** @@ -302,7 +304,7 @@ typedef union { #define __NMPlatformIPRoute_COMMON \ __NMPlatformObject_COMMON; \ NMIPConfigSource source; \ - int plen; \ + guint8 plen; \ guint32 metric; \ guint32 mss; \ ; @@ -593,7 +595,7 @@ typedef struct { gboolean (*ip4_address_add) (NMPlatform *, int ifindex, in_addr_t address, - int plen, + guint8 plen, in_addr_t peer_address, guint32 lifetime, guint32 preferred_lft, @@ -602,28 +604,28 @@ typedef struct { gboolean (*ip6_address_add) (NMPlatform *, int ifindex, struct in6_addr address, - int plen, + guint8 plen, struct in6_addr peer_address, guint32 lifetime, guint32 preferred_lft, guint32 flags); - gboolean (*ip4_address_delete) (NMPlatform *, int ifindex, in_addr_t address, int plen, in_addr_t peer_address); - gboolean (*ip6_address_delete) (NMPlatform *, int ifindex, struct in6_addr address, int plen); - const NMPlatformIP4Address *(*ip4_address_get) (NMPlatform *, int ifindex, in_addr_t address, int plen, in_addr_t peer_address); - const NMPlatformIP6Address *(*ip6_address_get) (NMPlatform *, int ifindex, struct in6_addr address, int plen); + gboolean (*ip4_address_delete) (NMPlatform *, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address); + gboolean (*ip6_address_delete) (NMPlatform *, int ifindex, struct in6_addr address, guint8 plen); + const NMPlatformIP4Address *(*ip4_address_get) (NMPlatform *, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address); + const NMPlatformIP6Address *(*ip6_address_get) (NMPlatform *, int ifindex, struct in6_addr address, guint8 plen); GArray * (*ip4_route_get_all) (NMPlatform *, int ifindex, NMPlatformGetRouteFlags flags); GArray * (*ip6_route_get_all) (NMPlatform *, int ifindex, NMPlatformGetRouteFlags flags); gboolean (*ip4_route_add) (NMPlatform *, int ifindex, NMIPConfigSource source, - in_addr_t network, int plen, in_addr_t gateway, + in_addr_t network, guint8 plen, in_addr_t gateway, in_addr_t pref_src, guint32 metric, guint32 mss); gboolean (*ip6_route_add) (NMPlatform *, int ifindex, NMIPConfigSource source, - struct in6_addr network, int plen, struct in6_addr gateway, + struct in6_addr network, guint8 plen, struct in6_addr gateway, guint32 metric, guint32 mss); - gboolean (*ip4_route_delete) (NMPlatform *, int ifindex, in_addr_t network, int plen, guint32 metric); - gboolean (*ip6_route_delete) (NMPlatform *, int ifindex, struct in6_addr network, int plen, guint32 metric); - const NMPlatformIP4Route *(*ip4_route_get) (NMPlatform *, int ifindex, in_addr_t network, int plen, guint32 metric); - const NMPlatformIP6Route *(*ip6_route_get) (NMPlatform *, int ifindex, struct in6_addr network, int plen, guint32 metric); + gboolean (*ip4_route_delete) (NMPlatform *, int ifindex, in_addr_t network, guint8 plen, guint32 metric); + gboolean (*ip6_route_delete) (NMPlatform *, int ifindex, struct in6_addr network, guint8 plen, guint32 metric); + const NMPlatformIP4Route *(*ip4_route_get) (NMPlatform *, int ifindex, in_addr_t network, guint8 plen, guint32 metric); + const NMPlatformIP6Route *(*ip6_route_get) (NMPlatform *, int ifindex, struct in6_addr network, guint8 plen, guint32 metric); gboolean (*check_support_kernel_extended_ifa_flags) (NMPlatform *); gboolean (*check_support_user_ipv6ll) (NMPlatform *); @@ -835,10 +837,10 @@ guint32 nm_platform_mesh_get_channel (NMPlatform *self, int ifindex); gboolean nm_platform_mesh_set_channel (NMPlatform *self, int ifindex, guint32 channel); gboolean nm_platform_mesh_set_ssid (NMPlatform *self, int ifindex, const guint8 *ssid, gsize len); -void nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, int plen); +void nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, guint8 plen); const struct in6_addr *nm_platform_ip6_address_get_peer (const NMPlatformIP6Address *addr); -const NMPlatformIP4Address *nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address); +const NMPlatformIP4Address *nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address); NMPlatformError nm_platform_link_gre_add (NMPlatform *self, const char *name, @@ -862,13 +864,13 @@ NMPlatformError nm_platform_link_sit_add (NMPlatform *self, const NMPlatformLnkSit *props, const NMPlatformLink **out_link); -const NMPlatformIP6Address *nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, int plen); +const NMPlatformIP6Address *nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen); GArray *nm_platform_ip4_address_get_all (NMPlatform *self, int ifindex); GArray *nm_platform_ip6_address_get_all (NMPlatform *self, int ifindex); gboolean nm_platform_ip4_address_add (NMPlatform *self, int ifindex, in_addr_t address, - int plen, + guint8 plen, in_addr_t peer_address, guint32 lifetime, guint32 preferred_lft, @@ -877,29 +879,29 @@ gboolean nm_platform_ip4_address_add (NMPlatform *self, gboolean nm_platform_ip6_address_add (NMPlatform *self, int ifindex, struct in6_addr address, - int plen, + guint8 plen, struct in6_addr peer_address, guint32 lifetime, guint32 preferred_lft, guint32 flags); -gboolean nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address); -gboolean nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, int plen); +gboolean nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address); +gboolean nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen); gboolean nm_platform_ip4_address_sync (NMPlatform *self, int ifindex, const GArray *known_addresses, GPtrArray **out_added_addresses); gboolean nm_platform_ip6_address_sync (NMPlatform *self, int ifindex, const GArray *known_addresses, gboolean keep_link_local); gboolean nm_platform_address_flush (NMPlatform *self, int ifindex); -const NMPlatformIP4Route *nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric); -const NMPlatformIP6Route *nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric); +const NMPlatformIP4Route *nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric); +const NMPlatformIP6Route *nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric); GArray *nm_platform_ip4_route_get_all (NMPlatform *self, int ifindex, NMPlatformGetRouteFlags flags); GArray *nm_platform_ip6_route_get_all (NMPlatform *self, int ifindex, NMPlatformGetRouteFlags flags); gboolean nm_platform_ip4_route_add (NMPlatform *self, int ifindex, NMIPConfigSource source, - in_addr_t network, int plen, in_addr_t gateway, + in_addr_t network, guint8 plen, in_addr_t gateway, in_addr_t pref_src, guint32 metric, guint32 mss); gboolean nm_platform_ip6_route_add (NMPlatform *self, int ifindex, NMIPConfigSource source, - struct in6_addr network, int plen, struct in6_addr gateway, + struct in6_addr network, guint8 plen, struct in6_addr gateway, guint32 metric, guint32 mss); -gboolean nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric); -gboolean nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric); +gboolean nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric); +gboolean nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric); const char *nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len); const char *nm_platform_lnk_gre_to_string (const NMPlatformLnkGre *lnk, char *buf, gsize len); diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c index adeb3aab..eb7e1ca4 100644 --- a/src/platform/nmp-object.c +++ b/src/platform/nmp-object.c @@ -343,7 +343,7 @@ _vt_cmd_obj_stackinit_id_link (NMPObject *obj, const NMPObject *src) } const NMPObject * -nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, int plen, guint32 peer_address) +nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, guint8 plen, guint32 peer_address) { nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP4_ADDRESS, NULL); obj->ip4_address.ifindex = ifindex; @@ -360,7 +360,7 @@ _vt_cmd_obj_stackinit_id_ip4_address (NMPObject *obj, const NMPObject *src) } const NMPObject * -nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, int plen) +nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, guint8 plen) { nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP6_ADDRESS, NULL); obj->ip4_address.ifindex = ifindex; @@ -377,7 +377,7 @@ _vt_cmd_obj_stackinit_id_ip6_address (NMPObject *obj, const NMPObject *src) } const NMPObject * -nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, int plen, guint32 metric) +nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, guint8 plen, guint32 metric) { nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP4_ROUTE, NULL); obj->ip4_route.ifindex = ifindex; @@ -394,7 +394,7 @@ _vt_cmd_obj_stackinit_id_ip4_route (NMPObject *obj, const NMPObject *src) } const NMPObject * -nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, int plen, guint32 metric) +nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, guint8 plen, guint32 metric) { nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP6_ROUTE, NULL); obj->ip6_route.ifindex = ifindex; @@ -952,26 +952,46 @@ _vt_cmd_obj_is_visible_link (const NMPObject *obj) /******************************************************************/ +#define _STRUCT_SIZE(struct_type, field) \ + (G_STRUCT_OFFSET (struct_type, field) + sizeof (((struct_type *) NULL)->field)) + +_NM_UTILS_LOOKUP_DEFINE (static, _nmp_cache_id_size_by_type, NMPCacheIdType, guint, + NM_UTILS_LOOKUP_DEFAULT (({ nm_assert_not_reached (); sizeof (NMPCacheId); })), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_OBJECT_TYPE, _STRUCT_SIZE (NMPCacheId, object_type)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY, _STRUCT_SIZE (NMPCacheId, object_type)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT, _STRUCT_SIZE (NMPCacheId, object_type)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_ONLY_DEFAULT, _STRUCT_SIZE (NMPCacheId, object_type)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX, _STRUCT_SIZE (NMPCacheId, object_type_by_ifindex)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT, _STRUCT_SIZE (NMPCacheId, object_type_by_ifindex)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT, _STRUCT_SIZE (NMPCacheId, object_type_by_ifindex)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_LINK_BY_IFNAME, _STRUCT_SIZE (NMPCacheId, link_by_ifname)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4, _STRUCT_SIZE (NMPCacheId, routes_by_destination_ip4)), + NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6, _STRUCT_SIZE (NMPCacheId, routes_by_destination_ip6)), + NM_UTILS_LOOKUP_ITEM_IGNORE (NMP_CACHE_ID_TYPE_NONE), + NM_UTILS_LOOKUP_ITEM_IGNORE (__NMP_CACHE_ID_TYPE_MAX), +); + gboolean nmp_cache_id_equal (const NMPCacheId *a, const NMPCacheId *b) { - /* just memcmp() the entire id. This is potentially dangerous, because - * the struct is not __attribute__((packed)) and not all types have the - * same size. It is important, to memset() the entire struct to 0, - * not only the relevant fields. - * - * You anyway should use the nmp_cache_id_init_*() functions on a stack-allocated - * struct. */ - return memcmp (a, b, sizeof (NMPCacheId)) == 0; + if (a->_id_type != b->_id_type) + return FALSE; + return memcmp (a, b, _nmp_cache_id_size_by_type (a->_id_type)) == 0; } guint nmp_cache_id_hash (const NMPCacheId *id) { guint hash = 5381; - guint i; + guint i, n; - for (i = 0; i < sizeof (NMPCacheId); i++) + /* for hashing we only iterate over the actually set bytes and skip the + * zero padding at the end (which depends on the type of the id). + * + * For the equal implementation, we don't care about that and compare the + * entire NMPCacheId sized struct. */ + n = _nmp_cache_id_size_by_type (id->_id_type); + for (i = 0; i < n; i++) hash = ((hash << 5) + hash) + ((char *) id)[i]; /* hash * 33 + c */ return hash; } @@ -980,27 +1000,42 @@ NMPCacheId * nmp_cache_id_clone (const NMPCacheId *id) { NMPCacheId *id2; + guint n; - id2 = g_slice_new (NMPCacheId); - memcpy (id2, id, sizeof (NMPCacheId)); + n = _nmp_cache_id_size_by_type (id->_id_type); + id2 = g_slice_alloc (n); + memcpy (id2, id, n); return id2; } void nmp_cache_id_destroy (NMPCacheId *id) { - g_slice_free (NMPCacheId, id); + guint n; + + n = _nmp_cache_id_size_by_type (id->_id_type); + g_slice_free1 (n, id); } /******************************************************************/ NMPCacheId _nmp_cache_id_static; -static NMPCacheId * +static void _nmp_cache_id_init (NMPCacheId *id, NMPCacheIdType id_type) { memset (id, 0, sizeof (NMPCacheId)); id->_id_type = id_type; +} + +NMPCacheId * +nmp_cache_id_copy (NMPCacheId *id, const NMPCacheId *src) +{ + guint n; + + memset (id, 0, sizeof (NMPCacheId)); + n = _nmp_cache_id_size_by_type (src->_id_type); + memcpy (id, src, n); return id; } @@ -1028,7 +1063,7 @@ nmp_cache_id_init_addrroute_visible_by_ifindex (NMPCacheId *id, _nmp_cache_id_init (id, NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX); id->object_type_by_ifindex.obj_type = obj_type; - id->object_type_by_ifindex.ifindex = ifindex; + memcpy (&id->object_type_by_ifindex._misaligned_ifindex, &ifindex, sizeof (int)); return id; } @@ -1055,7 +1090,7 @@ nmp_cache_id_init_routes_visible (NMPCacheId *id, g_return_val_if_reached (NULL); id->object_type_by_ifindex.obj_type = obj_type; - id->object_type_by_ifindex.ifindex = ifindex; + memcpy (&id->object_type_by_ifindex._misaligned_ifindex, &ifindex, sizeof (int)); return id; } @@ -1077,6 +1112,33 @@ nmp_cache_id_init_link_by_ifname (NMPCacheId *id, return id; } +NMPCacheId * +nmp_cache_id_init_routes_by_destination_ip4 (NMPCacheId *id, + guint32 network, + guint8 plen, + guint32 metric) +{ + _nmp_cache_id_init (id, NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4); + id->routes_by_destination_ip4.plen = plen; + memcpy (&id->routes_by_destination_ip4._misaligned_metric, &metric, sizeof (guint32)); + memcpy (&id->routes_by_destination_ip4._misaligned_network, &network, sizeof (guint32)); + return id; +} + +NMPCacheId * +nmp_cache_id_init_routes_by_destination_ip6 (NMPCacheId *id, + const struct in6_addr *network, + guint8 plen, + guint32 metric) +{ + _nmp_cache_id_init (id, NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6); + id->routes_by_destination_ip4.plen = plen; + memcpy (&id->routes_by_destination_ip6._misaligned_metric, &metric, sizeof (guint32)); + if (network) + memcpy (&id->routes_by_destination_ip6._misaligned_network, network, sizeof (struct in6_addr)); + return id; +} + /******************************************************************/ static gboolean @@ -1100,6 +1162,13 @@ _nmp_object_init_cache_id (const NMPObject *obj, NMPCacheIdType id_type, NMPCach } } +static const guint8 _supported_cache_ids_link[] = { + NMP_CACHE_ID_TYPE_OBJECT_TYPE, + NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY, + NMP_CACHE_ID_TYPE_LINK_BY_IFNAME, + 0, +}; + static gboolean _vt_cmd_obj_init_cache_id_link (const NMPObject *obj, NMPCacheIdType id_type, NMPCacheId *id, const NMPCacheId **out_id) { @@ -1117,6 +1186,13 @@ _vt_cmd_obj_init_cache_id_link (const NMPObject *obj, NMPCacheIdType id_type, NM return TRUE; } +static const guint8 _supported_cache_ids_ipx_address[] = { + NMP_CACHE_ID_TYPE_OBJECT_TYPE, + NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY, + NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX, + 0, +}; + static gboolean _vt_cmd_obj_init_cache_id_ipx_address (const NMPObject *obj, NMPCacheIdType id_type, NMPCacheId *id, const NMPCacheId **out_id) { @@ -1135,6 +1211,30 @@ _vt_cmd_obj_init_cache_id_ipx_address (const NMPObject *obj, NMPCacheIdType id_t return TRUE; } +static const guint8 _supported_cache_ids_ip4_route[] = { + NMP_CACHE_ID_TYPE_OBJECT_TYPE, + NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY, + NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_ONLY_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4, + 0, +}; + +static const guint8 _supported_cache_ids_ip6_route[] = { + NMP_CACHE_ID_TYPE_OBJECT_TYPE, + NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY, + NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_ONLY_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT, + NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6, + 0, +}; + static gboolean _vt_cmd_obj_init_cache_id_ipx_route (const NMPObject *obj, NMPCacheIdType id_type, NMPCacheId *id, const NMPCacheId **out_id) { @@ -1178,6 +1278,18 @@ _vt_cmd_obj_init_cache_id_ipx_route (const NMPObject *obj, NMPCacheIdType id_typ return TRUE; } break; + case NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4: + if (NMP_OBJECT_GET_CLASS (obj)->obj_type == NMP_OBJECT_TYPE_IP4_ROUTE) { + *out_id = nmp_cache_id_init_routes_by_destination_ip4 (id, obj->ip4_route.network, obj->ip_route.plen, obj->ip_route.metric); + return TRUE; + } + return FALSE; + case NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6: + if (NMP_OBJECT_GET_CLASS (obj)->obj_type == NMP_OBJECT_TYPE_IP6_ROUTE) { + *out_id = nmp_cache_id_init_routes_by_destination_ip6 (id, &obj->ip6_route.network, obj->ip_route.plen, obj->ip_route.metric); + return TRUE; + } + return FALSE; default: return FALSE; } @@ -1346,6 +1458,51 @@ nmp_cache_lookup_link (const NMPCache *cache, int ifindex) return nmp_cache_lookup_obj (cache, nmp_object_stackinit_id_link (&obj_needle, ifindex)); } +/** + * nmp_cache_find_other_route_for_same_destination: + * @cache: + * @route: + * + * Look into the cache whether there is a route to the same destination, + * in terms of network/plen,metric. + * + * Returns: (transfer none): the first found route object from the cache + * that has the same (network/plen,metric) values as @route, but has different + * ID. Or %NULL, if no such route exists. + */ +const NMPObject * +nmp_cache_find_other_route_for_same_destination (const NMPCache *cache, const NMPObject *route) +{ + NMPCacheId cache_id; + const NMPlatformObject *const *list; + + nm_assert (cache); + + switch (NMP_OBJECT_GET_TYPE (route)) { + case NMP_OBJECT_TYPE_IP4_ROUTE: + nmp_cache_id_init_routes_by_destination_ip4 (&cache_id, route->ip4_route.network, route->ip_route.plen, route->ip_route.metric); + break; + case NMP_OBJECT_TYPE_IP6_ROUTE: + nmp_cache_id_init_routes_by_destination_ip6 (&cache_id, &route->ip6_route.network, route->ip_route.plen, route->ip_route.metric); + break; + default: + g_return_val_if_reached (NULL); + } + + list = nmp_cache_lookup_multi (cache, &cache_id, NULL); + if (list) { + for (; *list; list++) { + const NMPObject *candidate = NMP_OBJECT_UP_CAST (*list); + + nm_assert (NMP_OBJECT_GET_CLASS (route) == NMP_OBJECT_GET_CLASS (candidate)); + + if (!nmp_object_id_equal (route, candidate)) + return candidate; + } + } + return NULL; +} + const NMPObject * nmp_cache_lookup_link_full (const NMPCache *cache, int ifindex, @@ -1425,13 +1582,13 @@ nmp_cache_lookup_all_to_hash (const NMPCache *cache, static void _nmp_cache_update_cache (NMPCache *cache, NMPObject *obj, gboolean remove) { - NMPCacheIdType id_type; + const guint8 *id_type; - for (id_type = 0; id_type <= NMP_CACHE_ID_TYPE_MAX; id_type++) { + for (id_type = NMP_OBJECT_GET_CLASS (obj)->supported_cache_ids; *id_type; id_type++) { NMPCacheId cache_id_storage; const NMPCacheId *cache_id; - if (!_nmp_object_init_cache_id (obj, id_type, &cache_id_storage, &cache_id)) + if (!_nmp_object_init_cache_id (obj, *id_type, &cache_id_storage, &cache_id)) continue; if (!cache_id) continue; @@ -1480,19 +1637,19 @@ _nmp_cache_update_remove (NMPCache *cache, NMPObject *obj) static void _nmp_cache_update_update (NMPCache *cache, NMPObject *obj, const NMPObject *new) { - NMPCacheIdType id_type; + const guint8 *id_type; nm_assert (NMP_OBJECT_GET_CLASS (obj) == NMP_OBJECT_GET_CLASS (new)); nm_assert (obj->is_cached); nm_assert (!new->is_cached); - for (id_type = 0; id_type <= NMP_CACHE_ID_TYPE_MAX; id_type++) { + for (id_type = NMP_OBJECT_GET_CLASS (obj)->supported_cache_ids; *id_type; id_type++) { NMPCacheId cache_id_storage_obj, cache_id_storage_new; const NMPCacheId *cache_id_obj, *cache_id_new; - if (!_nmp_object_init_cache_id (obj, id_type, &cache_id_storage_obj, &cache_id_obj)) + if (!_nmp_object_init_cache_id (obj, *id_type, &cache_id_storage_obj, &cache_id_obj)) continue; - if (!_nmp_object_init_cache_id (new, id_type, &cache_id_storage_new, &cache_id_new)) + if (!_nmp_object_init_cache_id (new, *id_type, &cache_id_storage_new, &cache_id_new)) g_assert_not_reached (); if (!nm_multi_index_move (cache->idx_multi, (NMMultiIndexId *) cache_id_obj, (NMMultiIndexId *) cache_id_new, &obj->object)) g_assert_not_reached (); @@ -1891,13 +2048,13 @@ ASSERT_nmp_cache_is_consistent (const NMPCache *cache) g_hash_table_iter_init (&iter_hash, cache->idx_main); while (g_hash_table_iter_next (&iter_hash, (gpointer *) &obj, NULL)) { - NMPCacheIdType id_type; + const guint8 *id_type; g_assert (NMP_OBJECT_IS_VALID (obj)); g_assert (nmp_object_is_alive (obj)); - for (id_type = 0; id_type <= NMP_CACHE_ID_TYPE_MAX; id_type++) { - if (!_nmp_object_init_cache_id (obj, id_type, &cache_id_storage, &cache_id)) + for (id_type = NMP_OBJECT_GET_CLASS (obj)->supported_cache_ids; *id_type; id_type++) { + if (!_nmp_object_init_cache_id (obj, *id_type, &cache_id_storage, &cache_id)) continue; if (!cache_id) continue; @@ -1943,6 +2100,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { .rtm_gettype = RTM_GETLINK, .signal_type_id = NM_PLATFORM_SIGNAL_ID_LINK, .signal_type = NM_PLATFORM_SIGNAL_LINK_CHANGED, + .supported_cache_ids = _supported_cache_ids_link, .cmd_obj_init_cache_id = _vt_cmd_obj_init_cache_id_link, .cmd_obj_cmp = _vt_cmd_obj_cmp_link, .cmd_obj_copy = _vt_cmd_obj_copy_link, @@ -1967,6 +2125,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { .rtm_gettype = RTM_GETADDR, .signal_type_id = NM_PLATFORM_SIGNAL_ID_IP4_ADDRESS, .signal_type = NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED, + .supported_cache_ids = _supported_cache_ids_ipx_address, .cmd_obj_init_cache_id = _vt_cmd_obj_init_cache_id_ipx_address, .cmd_obj_stackinit_id = _vt_cmd_obj_stackinit_id_ip4_address, .cmd_obj_is_alive = _vt_cmd_obj_is_alive_ipx_address, @@ -1986,6 +2145,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { .rtm_gettype = RTM_GETADDR, .signal_type_id = NM_PLATFORM_SIGNAL_ID_IP6_ADDRESS, .signal_type = NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED, + .supported_cache_ids = _supported_cache_ids_ipx_address, .cmd_obj_init_cache_id = _vt_cmd_obj_init_cache_id_ipx_address, .cmd_obj_stackinit_id = _vt_cmd_obj_stackinit_id_ip6_address, .cmd_obj_is_alive = _vt_cmd_obj_is_alive_ipx_address, @@ -2005,6 +2165,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { .rtm_gettype = RTM_GETROUTE, .signal_type_id = NM_PLATFORM_SIGNAL_ID_IP4_ROUTE, .signal_type = NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED, + .supported_cache_ids = _supported_cache_ids_ip4_route, .cmd_obj_init_cache_id = _vt_cmd_obj_init_cache_id_ipx_route, .cmd_obj_stackinit_id = _vt_cmd_obj_stackinit_id_ip4_route, .cmd_obj_is_alive = _vt_cmd_obj_is_alive_ipx_route, @@ -2024,6 +2185,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = { .rtm_gettype = RTM_GETROUTE, .signal_type_id = NM_PLATFORM_SIGNAL_ID_IP6_ROUTE, .signal_type = NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED, + .supported_cache_ids = _supported_cache_ids_ip6_route, .cmd_obj_init_cache_id = _vt_cmd_obj_init_cache_id_ipx_route, .cmd_obj_stackinit_id = _vt_cmd_obj_stackinit_id_ip6_route, .cmd_obj_is_alive = _vt_cmd_obj_is_alive_ipx_route, diff --git a/src/platform/nmp-object.h b/src/platform/nmp-object.h index 6d5b9627..c5241037 100644 --- a/src/platform/nmp-object.h +++ b/src/platform/nmp-object.h @@ -57,6 +57,8 @@ typedef enum { /*< skip >*/ * matching v4/v6 and ifindex -- or maybe not at all if it isn't visible. * */ typedef enum { /*< skip >*/ + NMP_CACHE_ID_TYPE_NONE, + /* all the objects of a certain type */ NMP_CACHE_ID_TYPE_OBJECT_TYPE, @@ -77,6 +79,17 @@ typedef enum { /*< skip >*/ NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT, NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT, + /* Consider all the destination fields of a route, that is, the ID without the ifindex + * and gateway (meaning: network/plen,metric). + * The reason for this is that `ip route change` can replace an existing route + * and modify it's ifindex/gateway. Effectively, that means it deletes an existing + * route and adds a different one (as the ID of the route changes). However, it only + * sends one RTM_NEWADDR notification without notifying about the deletion. We detect + * that by having this index to contain overlapping routes which require special + * cache-resync. */ + NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4, + NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6, + __NMP_CACHE_ID_TYPE_MAX, NMP_CACHE_ID_TYPE_MAX = __NMP_CACHE_ID_TYPE_MAX - 1, } NMPCacheIdType; @@ -87,7 +100,7 @@ typedef struct { union { NMMultiIndexId base; guint8 _id_type; /* NMPCacheIdType as guint8 */ - struct { + struct _nm_packed { /* NMP_CACHE_ID_TYPE_OBJECT_TYPE */ /* NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY */ /* NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT */ @@ -95,19 +108,33 @@ typedef struct { guint8 _id_type; guint8 obj_type; /* NMPObjectType as guint8 */ } object_type; - struct { + struct _nm_packed { /* NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX */ /* NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT */ /* NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT */ guint8 _id_type; guint8 obj_type; /* NMPObjectType as guint8 */ - int ifindex; + int _misaligned_ifindex; } object_type_by_ifindex; - struct { + struct _nm_packed { /* NMP_CACHE_ID_TYPE_LINK_BY_IFNAME */ guint8 _id_type; char ifname_short[IFNAMSIZ - 1]; /* don't include the trailing NUL so the struct fits in 4 bytes. */ } link_by_ifname; + struct _nm_packed { + /* NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6 */ + guint8 _id_type; + guint8 plen; + guint32 _misaligned_metric; + guint32 _misaligned_network; + } routes_by_destination_ip4; + struct _nm_packed { + /* NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4 */ + guint8 _id_type; + guint8 plen; + guint32 _misaligned_metric; + struct in6_addr _misaligned_network; + } routes_by_destination_ip6; }; } NMPCacheId; @@ -124,6 +151,8 @@ typedef struct { const char *obj_type_name; const char *signal_type; + const guint8 *supported_cache_ids; + /* Only for NMPObjectLnk* types. */ NMLinkType lnk_link_type; @@ -341,10 +370,10 @@ NMPObject *nmp_object_new_link (int ifindex); const NMPObject *nmp_object_stackinit (NMPObject *obj, NMPObjectType obj_type, const NMPlatformObject *plobj); const NMPObject *nmp_object_stackinit_id (NMPObject *obj, const NMPObject *src); const NMPObject *nmp_object_stackinit_id_link (NMPObject *obj, int ifindex); -const NMPObject *nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, int plen, guint32 peer_address); -const NMPObject *nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, int plen); -const NMPObject *nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, int plen, guint32 metric); -const NMPObject *nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, int plen, guint32 metric); +const NMPObject *nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, guint8 plen, guint32 peer_address); +const NMPObject *nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, guint8 plen); +const NMPObject *nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, guint8 plen, guint32 metric); +const NMPObject *nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, guint8 plen, guint32 metric); const char *nmp_object_to_string (const NMPObject *obj, NMPObjectToStringMode to_string_mode, char *buf, gsize buf_size); int nmp_object_cmp (const NMPObject *obj1, const NMPObject *obj2); @@ -375,16 +404,21 @@ guint nmp_cache_id_hash (const NMPCacheId *id); NMPCacheId *nmp_cache_id_clone (const NMPCacheId *id); void nmp_cache_id_destroy (NMPCacheId *id); +NMPCacheId *nmp_cache_id_copy (NMPCacheId *id, const NMPCacheId *src); NMPCacheId *nmp_cache_id_init_object_type (NMPCacheId *id, NMPObjectType obj_type, gboolean visible_only); NMPCacheId *nmp_cache_id_init_addrroute_visible_by_ifindex (NMPCacheId *id, NMPObjectType obj_type, int ifindex); NMPCacheId *nmp_cache_id_init_routes_visible (NMPCacheId *id, NMPObjectType obj_type, gboolean with_default, gboolean with_non_default, int ifindex); NMPCacheId *nmp_cache_id_init_link_by_ifname (NMPCacheId *id, const char *ifname); +NMPCacheId *nmp_cache_id_init_routes_by_destination_ip4 (NMPCacheId *id, guint32 network, guint8 plen, guint32 metric); +NMPCacheId *nmp_cache_id_init_routes_by_destination_ip6 (NMPCacheId *id, const struct in6_addr *network, guint8 plen, guint32 metric); const NMPlatformObject *const *nmp_cache_lookup_multi (const NMPCache *cache, const NMPCacheId *cache_id, guint *out_len); GArray *nmp_cache_lookup_multi_to_array (const NMPCache *cache, NMPObjectType obj_type, const NMPCacheId *cache_id); const NMPObject *nmp_cache_lookup_obj (const NMPCache *cache, const NMPObject *obj); const NMPObject *nmp_cache_lookup_link (const NMPCache *cache, int ifindex); +const NMPObject *nmp_cache_find_other_route_for_same_destination (const NMPCache *cache, const NMPObject *route); + const NMPObject *nmp_cache_lookup_link_full (const NMPCache *cache, int ifindex, const char *ifname, diff --git a/src/platform/tests/Makefile.am b/src/platform/tests/Makefile.am index ebf20e15..5af4ce91 100644 --- a/src/platform/tests/Makefile.am +++ b/src/platform/tests/Makefile.am @@ -50,56 +50,56 @@ EXTRA_DIST = test-common.h monitor_SOURCES = monitor.c $(PLATFORM_SOURCES) monitor_LDADD = $(PLATFORM_LDADD) -test_link_fake_SOURCES = test-link.c $(TEST_SOURCES) +test_link_fake_SOURCES = $(TEST_SOURCES) test-link.c test_link_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_link_fake_LDADD = $(PLATFORM_LDADD) -test_link_linux_SOURCES = test-link.c $(TEST_SOURCES) +test_link_linux_SOURCES = $(TEST_SOURCES) test-link.c test_link_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ -DKERNEL_HACKS=1 test_link_linux_LDADD = $(PLATFORM_LDADD) -test_address_fake_SOURCES = test-address.c $(TEST_SOURCES) +test_address_fake_SOURCES = $(TEST_SOURCES) test-address.c test_address_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_address_fake_LDADD = $(PLATFORM_LDADD) -test_address_linux_SOURCES = test-address.c $(TEST_SOURCES) +test_address_linux_SOURCES = $(TEST_SOURCES) test-address.c test_address_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ -DKERNEL_HACKS=1 test_address_linux_LDADD = $(PLATFORM_LDADD) -test_route_fake_SOURCES = test-route.c $(TEST_SOURCES) +test_route_fake_SOURCES = $(TEST_SOURCES) test-route.c test_route_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_route_fake_LDADD = $(PLATFORM_LDADD) -test_route_linux_SOURCES = test-route.c $(TEST_SOURCES) +test_route_linux_SOURCES = $(TEST_SOURCES) test-route.c test_route_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ -DKERNEL_HACKS=1 test_route_linux_LDADD = $(PLATFORM_LDADD) -test_cleanup_fake_SOURCES = test-cleanup.c $(TEST_SOURCES) +test_cleanup_fake_SOURCES = $(TEST_SOURCES) test-cleanup.c test_cleanup_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_cleanup_fake_LDADD = $(PLATFORM_LDADD) -test_cleanup_linux_SOURCES = test-cleanup.c $(TEST_SOURCES) +test_cleanup_linux_SOURCES = $(TEST_SOURCES) test-cleanup.c test_cleanup_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ diff --git a/src/platform/tests/Makefile.in b/src/platform/tests/Makefile.in index 7c4b72ea..60cd6d82 100644 --- a/src/platform/tests/Makefile.in +++ b/src/platform/tests/Makefile.in @@ -137,8 +137,8 @@ am__objects_2 = test_address_fake-nm-platform.$(OBJEXT) \ test_address_fake-nm-linux-platform.$(OBJEXT) am__objects_3 = test_address_fake-test-common.$(OBJEXT) \ $(am__objects_2) -am_test_address_fake_OBJECTS = \ - test_address_fake-test-address.$(OBJEXT) $(am__objects_3) +am_test_address_fake_OBJECTS = $(am__objects_3) \ + test_address_fake-test-address.$(OBJEXT) test_address_fake_OBJECTS = $(am_test_address_fake_OBJECTS) test_address_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_4 = test_address_linux-nm-platform.$(OBJEXT) \ @@ -146,8 +146,8 @@ am__objects_4 = test_address_linux-nm-platform.$(OBJEXT) \ test_address_linux-nm-linux-platform.$(OBJEXT) am__objects_5 = test_address_linux-test-common.$(OBJEXT) \ $(am__objects_4) -am_test_address_linux_OBJECTS = \ - test_address_linux-test-address.$(OBJEXT) $(am__objects_5) +am_test_address_linux_OBJECTS = $(am__objects_5) \ + test_address_linux-test-address.$(OBJEXT) test_address_linux_OBJECTS = $(am_test_address_linux_OBJECTS) test_address_linux_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_6 = test_cleanup_fake-nm-platform.$(OBJEXT) \ @@ -155,8 +155,8 @@ am__objects_6 = test_cleanup_fake-nm-platform.$(OBJEXT) \ test_cleanup_fake-nm-linux-platform.$(OBJEXT) am__objects_7 = test_cleanup_fake-test-common.$(OBJEXT) \ $(am__objects_6) -am_test_cleanup_fake_OBJECTS = \ - test_cleanup_fake-test-cleanup.$(OBJEXT) $(am__objects_7) +am_test_cleanup_fake_OBJECTS = $(am__objects_7) \ + test_cleanup_fake-test-cleanup.$(OBJEXT) test_cleanup_fake_OBJECTS = $(am_test_cleanup_fake_OBJECTS) test_cleanup_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_8 = test_cleanup_linux-nm-platform.$(OBJEXT) \ @@ -164,8 +164,8 @@ am__objects_8 = test_cleanup_linux-nm-platform.$(OBJEXT) \ test_cleanup_linux-nm-linux-platform.$(OBJEXT) am__objects_9 = test_cleanup_linux-test-common.$(OBJEXT) \ $(am__objects_8) -am_test_cleanup_linux_OBJECTS = \ - test_cleanup_linux-test-cleanup.$(OBJEXT) $(am__objects_9) +am_test_cleanup_linux_OBJECTS = $(am__objects_9) \ + test_cleanup_linux-test-cleanup.$(OBJEXT) test_cleanup_linux_OBJECTS = $(am_test_cleanup_linux_OBJECTS) test_cleanup_linux_DEPENDENCIES = $(PLATFORM_LDADD) am_test_general_OBJECTS = test-general.$(OBJEXT) @@ -176,8 +176,8 @@ am__objects_10 = test_link_fake-nm-platform.$(OBJEXT) \ test_link_fake-nm-linux-platform.$(OBJEXT) am__objects_11 = test_link_fake-test-common.$(OBJEXT) \ $(am__objects_10) -am_test_link_fake_OBJECTS = test_link_fake-test-link.$(OBJEXT) \ - $(am__objects_11) +am_test_link_fake_OBJECTS = $(am__objects_11) \ + test_link_fake-test-link.$(OBJEXT) test_link_fake_OBJECTS = $(am_test_link_fake_OBJECTS) test_link_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_12 = test_link_linux-nm-platform.$(OBJEXT) \ @@ -185,8 +185,8 @@ am__objects_12 = test_link_linux-nm-platform.$(OBJEXT) \ test_link_linux-nm-linux-platform.$(OBJEXT) am__objects_13 = test_link_linux-test-common.$(OBJEXT) \ $(am__objects_12) -am_test_link_linux_OBJECTS = test_link_linux-test-link.$(OBJEXT) \ - $(am__objects_13) +am_test_link_linux_OBJECTS = $(am__objects_13) \ + test_link_linux-test-link.$(OBJEXT) test_link_linux_OBJECTS = $(am_test_link_linux_OBJECTS) test_link_linux_DEPENDENCIES = $(PLATFORM_LDADD) am_test_nmp_object_OBJECTS = test-nmp-object.$(OBJEXT) @@ -198,8 +198,8 @@ am__objects_14 = test_route_fake-nm-platform.$(OBJEXT) \ test_route_fake-nm-linux-platform.$(OBJEXT) am__objects_15 = test_route_fake-test-common.$(OBJEXT) \ $(am__objects_14) -am_test_route_fake_OBJECTS = test_route_fake-test-route.$(OBJEXT) \ - $(am__objects_15) +am_test_route_fake_OBJECTS = $(am__objects_15) \ + test_route_fake-test-route.$(OBJEXT) test_route_fake_OBJECTS = $(am_test_route_fake_OBJECTS) test_route_fake_DEPENDENCIES = $(PLATFORM_LDADD) am__objects_16 = test_route_linux-nm-platform.$(OBJEXT) \ @@ -207,8 +207,8 @@ am__objects_16 = test_route_linux-nm-platform.$(OBJEXT) \ test_route_linux-nm-linux-platform.$(OBJEXT) am__objects_17 = test_route_linux-test-common.$(OBJEXT) \ $(am__objects_16) -am_test_route_linux_OBJECTS = test_route_linux-test-route.$(OBJEXT) \ - $(am__objects_17) +am_test_route_linux_OBJECTS = $(am__objects_17) \ + test_route_linux-test-route.$(OBJEXT) test_route_linux_OBJECTS = $(am_test_route_linux_OBJECTS) test_route_linux_DEPENDENCIES = $(PLATFORM_LDADD) AM_V_P = $(am__v_P_@AM_V@) @@ -776,56 +776,56 @@ PLATFORM_LDADD = \ EXTRA_DIST = test-common.h monitor_SOURCES = monitor.c $(PLATFORM_SOURCES) monitor_LDADD = $(PLATFORM_LDADD) -test_link_fake_SOURCES = test-link.c $(TEST_SOURCES) +test_link_fake_SOURCES = $(TEST_SOURCES) test-link.c test_link_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_link_fake_LDADD = $(PLATFORM_LDADD) -test_link_linux_SOURCES = test-link.c $(TEST_SOURCES) +test_link_linux_SOURCES = $(TEST_SOURCES) test-link.c test_link_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ -DKERNEL_HACKS=1 test_link_linux_LDADD = $(PLATFORM_LDADD) -test_address_fake_SOURCES = test-address.c $(TEST_SOURCES) +test_address_fake_SOURCES = $(TEST_SOURCES) test-address.c test_address_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_address_fake_LDADD = $(PLATFORM_LDADD) -test_address_linux_SOURCES = test-address.c $(TEST_SOURCES) +test_address_linux_SOURCES = $(TEST_SOURCES) test-address.c test_address_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ -DKERNEL_HACKS=1 test_address_linux_LDADD = $(PLATFORM_LDADD) -test_route_fake_SOURCES = test-route.c $(TEST_SOURCES) +test_route_fake_SOURCES = $(TEST_SOURCES) test-route.c test_route_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_route_fake_LDADD = $(PLATFORM_LDADD) -test_route_linux_SOURCES = test-route.c $(TEST_SOURCES) +test_route_linux_SOURCES = $(TEST_SOURCES) test-route.c test_route_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ -DKERNEL_HACKS=1 test_route_linux_LDADD = $(PLATFORM_LDADD) -test_cleanup_fake_SOURCES = test-cleanup.c $(TEST_SOURCES) +test_cleanup_fake_SOURCES = $(TEST_SOURCES) test-cleanup.c test_cleanup_fake_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_fake_platform_setup \ -DKERNEL_HACKS=0 test_cleanup_fake_LDADD = $(PLATFORM_LDADD) -test_cleanup_linux_SOURCES = test-cleanup.c $(TEST_SOURCES) +test_cleanup_linux_SOURCES = $(TEST_SOURCES) test-cleanup.c test_cleanup_linux_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DSETUP=nm_linux_platform_setup \ @@ -1047,20 +1047,6 @@ nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_address_fake-test-address.o: test-address.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c - -test_address_fake-test-address.obj: test-address.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` - test_address_fake-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-common.Tpo -c -o test_address_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-common.Tpo $(DEPDIR)/test_address_fake-test-common.Po @@ -1117,19 +1103,19 @@ test_address_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_address_linux-test-address.o: test-address.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.o' libtool=no @AMDEPBACKSLASH@ +test_address_fake-test-address.o: test-address.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c -test_address_linux-test-address.obj: test-address.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.obj' libtool=no @AMDEPBACKSLASH@ +test_address_fake-test-address.obj: test-address.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` test_address_linux-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-common.Tpo -c -o test_address_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1187,19 +1173,19 @@ test_address_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_cleanup_fake-test-cleanup.o: test-cleanup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.o' libtool=no @AMDEPBACKSLASH@ +test_address_linux-test-address.o: test-address.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c -test_cleanup_fake-test-cleanup.obj: test-cleanup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@ +test_address_linux-test-address.obj: test-address.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi` test_cleanup_fake-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-common.Tpo -c -o test_cleanup_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1257,19 +1243,19 @@ test_cleanup_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_cleanup_linux-test-cleanup.o: test-cleanup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.o' libtool=no @AMDEPBACKSLASH@ +test_cleanup_fake-test-cleanup.o: test-cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c -test_cleanup_linux-test-cleanup.obj: test-cleanup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@ +test_cleanup_fake-test-cleanup.obj: test-cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` test_cleanup_linux-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-common.Tpo -c -o test_cleanup_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1327,19 +1313,19 @@ test_cleanup_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_link_fake-test-link.o: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.o' libtool=no @AMDEPBACKSLASH@ +test_cleanup_linux-test-cleanup.o: test-cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c -test_link_fake-test-link.obj: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.obj' libtool=no @AMDEPBACKSLASH@ +test_cleanup_linux-test-cleanup.obj: test-cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi` test_link_fake-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-common.Tpo -c -o test_link_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1397,19 +1383,19 @@ test_link_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_link_linux-test-link.o: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.o' libtool=no @AMDEPBACKSLASH@ +test_link_fake-test-link.o: test-link.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c -test_link_linux-test-link.obj: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.obj' libtool=no @AMDEPBACKSLASH@ +test_link_fake-test-link.obj: test-link.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` test_link_linux-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-common.Tpo -c -o test_link_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1467,19 +1453,19 @@ test_link_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_route_fake-test-route.o: test-route.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.o' libtool=no @AMDEPBACKSLASH@ +test_link_linux-test-link.o: test-link.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c -test_route_fake-test-route.obj: test-route.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.obj' libtool=no @AMDEPBACKSLASH@ +test_link_linux-test-link.obj: test-link.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` test_route_fake-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-common.Tpo -c -o test_route_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1537,19 +1523,19 @@ test_route_fake-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` -test_route_linux-test-route.o: test-route.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.o' libtool=no @AMDEPBACKSLASH@ +test_route_fake-test-route.o: test-route.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c -test_route_linux-test-route.obj: test-route.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.obj' libtool=no @AMDEPBACKSLASH@ +test_route_fake-test-route.obj: test-route.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` test_route_linux-test-common.o: test-common.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-common.Tpo -c -o test_route_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c @@ -1607,6 +1593,20 @@ test_route_linux-nm-linux-platform.obj: ../nm-linux-platform.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi` +test_route_linux-test-route.o: test-route.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c + +test_route_linux-test-route.obj: test-route.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi` + mostlyclean-libtool: -rm -f *.lo diff --git a/src/platform/tests/test-address.c b/src/platform/tests/test-address.c index 83a0bfd3..05a14448 100644 --- a/src/platform/tests/test-address.c +++ b/src/platform/tests/test-address.c @@ -94,12 +94,12 @@ test_ip4_address_general (void) /* Add address */ g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr)); - nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL); g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr)); accept_signal (address_added); /* Add address again (aka update) */ - nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime + 100, preferred + 50, 0, NULL); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime + 100, preferred + 50, 0, NULL); accept_signals (address_changed, 0, 1); /* Test address listing */ @@ -114,12 +114,12 @@ test_ip4_address_general (void) g_array_unref (addresses); /* Remove address */ - nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr); + nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr); g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr)); accept_signal (address_removed); /* Remove address again */ - nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr); + nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr); free_signal (address_added); free_signal (address_changed); @@ -144,12 +144,12 @@ test_ip6_address_general (void) /* Add address */ g_assert (!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); - nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags); + nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags); g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); accept_signal (address_added); /* Add address again (aka update) */ - nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags); + nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags); accept_signals (address_changed, 0, 1); /* Test address listing */ @@ -163,12 +163,12 @@ test_ip6_address_general (void) g_array_unref (addresses); /* Remove address */ - nmtstp_ip6_address_del (EX, ifindex, addr, IP6_PLEN); + nmtstp_ip6_address_del (NULL, EX, ifindex, addr, IP6_PLEN); g_assert (!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); accept_signal (address_removed); /* Remove address again */ - nmtstp_ip6_address_del (EX, ifindex, addr, IP6_PLEN); + nmtstp_ip6_address_del (NULL, EX, ifindex, addr, IP6_PLEN); /* ensure not pending signal. */ accept_signals (address_changed, 0, 1); @@ -197,15 +197,15 @@ test_ip4_address_general_2 (void) g_assert (nm_platform_link_set_up (NM_PLATFORM_GET, DEVICE_IFINDEX, NULL)); /* Add/delete notification */ - nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL); accept_signal (address_added); g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr)); - nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr); + nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr); accept_signal (address_removed); g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr)); /* Add/delete conflict */ - nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL); g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr)); accept_signal (address_added); @@ -227,20 +227,20 @@ test_ip6_address_general_2 (void) inet_pton (AF_INET6, IP6_ADDRESS, &addr); /* Add/delete notification */ - nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0); + nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0); accept_signal (address_added); g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); - nmtstp_ip6_address_del (EX, ifindex, addr, IP6_PLEN); + nmtstp_ip6_address_del (NULL, EX, ifindex, addr, IP6_PLEN); accept_signal (address_removed); g_assert (!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); /* Add/delete conflict */ - nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0); + nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0); accept_signal (address_added); g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); - nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags); + nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags); ensure_no_signal (address_added); g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN)); @@ -273,7 +273,7 @@ test_ip4_address_peer (void) accept_signals (address_added, 0, G_MAXINT); /* Add/delete notification */ - nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer, lifetime, preferred, 0, NULL); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr_peer, lifetime, preferred, 0, NULL); accept_signal (address_added); a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer); g_assert (a); @@ -281,7 +281,7 @@ test_ip4_address_peer (void) nmtstp_ip_address_assert_lifetime ((NMPlatformIPAddress *) a, -1, lifetime, preferred); - nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer2, lifetime, preferred, 0, NULL); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr_peer2, lifetime, preferred, 0, NULL); accept_signal (address_added); g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer)); a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer2); @@ -290,7 +290,7 @@ test_ip4_address_peer (void) nmtstp_ip_address_assert_lifetime ((NMPlatformIPAddress *) a, -1, lifetime, preferred); g_assert (addr != addr_peer); - nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr_peer); + nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr_peer); accept_signal (address_removed); g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer)); g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer2)); @@ -308,7 +308,7 @@ test_ip4_address_peer_zero (void) in_addr_t addr, addr_peer; guint32 lifetime = 2000; guint32 preferred = 1000; - const int plen = 24; + const gint8 plen = 24; const char *label = NULL; in_addr_t peers[3], r_peers[3]; int i; @@ -328,7 +328,7 @@ test_ip4_address_peer_zero (void) for (i = 0; i < G_N_ELEMENTS (peers); i++) { g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, plen, r_peers[i])); - nmtstp_ip4_address_add (EX, ifindex, addr, plen, r_peers[i], lifetime, preferred, 0, label); + nmtstp_ip4_address_add (NULL, EX, ifindex, addr, plen, r_peers[i], lifetime, preferred, 0, label); addrs = nm_platform_ip4_address_get_all (NM_PLATFORM_GET, ifindex); g_assert (addrs); @@ -343,7 +343,7 @@ test_ip4_address_peer_zero (void) for (i = 0; i < G_N_ELEMENTS (peers); i++) { g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, plen, r_peers[i])); - nmtstp_ip4_address_del (EX, ifindex, addr, plen, r_peers[i]); + nmtstp_ip4_address_del (NULL, EX, ifindex, addr, plen, r_peers[i]); addrs = nm_platform_ip4_address_get_all (NM_PLATFORM_GET, ifindex); g_assert (addrs); @@ -355,7 +355,7 @@ test_ip4_address_peer_zero (void) /*****************************************************************************/ void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_with_logging (argc, argv, NULL, "ALL"); } @@ -412,7 +412,7 @@ _g_test_add_func (const char *testpath, } void -setup_tests (void) +_nmtstp_setup_tests (void) { _g_test_add_func ("/address/ipv4/general", test_ip4_address_general); _g_test_add_func ("/address/ipv6/general", test_ip6_address_general); diff --git a/src/platform/tests/test-cleanup.c b/src/platform/tests/test-cleanup.c index 4036daad..3b52487a 100644 --- a/src/platform/tests/test-cleanup.c +++ b/src/platform/tests/test-cleanup.c @@ -107,13 +107,13 @@ test_cleanup_internal (void) } void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_with_logging (argc, argv, NULL, "ALL"); } void -setup_tests (void) +_nmtstp_setup_tests (void) { nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME)); g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, DEVICE_NAME)); diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index e9fffe90..b1947a6d 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -27,11 +27,11 @@ #include "test-common.h" -#include "nm-test-utils.h" - #define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)" #define SIGNAL_DATA_ARG(data) (data)->name, nm_platform_signal_change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ? (data)->ifname : "", (data)->ifname ? "'" : "", (data)->received_count +/*****************************************************************************/ + gboolean nmtstp_is_root_test (void) { @@ -47,6 +47,20 @@ nmtstp_is_sysfs_writable (void) || (access ("/sys/devices", W_OK) == 0); } +static void +_init_platform (NMPlatform **platform, gboolean external_command) +{ + g_assert (platform); + if (!*platform) + *platform = NM_PLATFORM_GET; + g_assert (NM_IS_PLATFORM (*platform)); + + if (external_command) + g_assert (NM_IS_LINUX_PLATFORM (*platform)); +} + +/*****************************************************************************/ + SignalData * add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname) { @@ -180,8 +194,10 @@ link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlat g_error ("Added/changed link not found in the local cache."); } +/*****************************************************************************/ + gboolean -ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric) +nmtstp_ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric) { gs_free char *arg_network = NULL; const char *argv[] = { @@ -205,7 +221,7 @@ ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric) g_assert (!strstr (ifname, " metric ")); g_assert (plen >= 0 && plen <= 32); - if (!NM_IS_LINUX_PLATFORM (nm_platform_get ())) { + if (!nmtstp_is_root_test ()) { /* If we don't test against linux-platform, we don't actually configure any * routes in the system. */ return -1; @@ -259,15 +275,17 @@ ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric) } void -_assert_ip4_route_exists (const char *file, guint line, const char *func, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric) +_nmtstp_assert_ip4_route_exists (const char *file, guint line, const char *func, NMPlatform *platform, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric) { int ifindex; gboolean exists_checked; + _init_platform (&platform, FALSE); + /* Check for existance of the route by spawning iproute2. Do this because platform * code might be entirely borked, but we expect ip-route to give a correct result. * If the ip command cannot be found, we accept this as success. */ - exists_checked = ip4_route_exists (ifname, network, plen, metric); + exists_checked = nmtstp_ip4_route_exists (ifname, network, plen, metric); if (exists_checked != -1 && !exists_checked != !exists) { g_error ("[%s:%u] %s(): We expect the ip4 route %s/%d metric %u %s, but it %s", file, line, func, @@ -276,9 +294,9 @@ _assert_ip4_route_exists (const char *file, guint line, const char *func, gboole exists ? "doesn't" : "does"); } - ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, ifname); + ifindex = nm_platform_link_get_ifindex (platform, ifname); g_assert (ifindex > 0); - if (!nm_platform_ip4_route_get (NM_PLATFORM_GET, ifindex, network, plen, metric) != !exists) { + if (!nm_platform_ip4_route_get (platform, ifindex, network, plen, metric) != !exists) { g_error ("[%s:%u] %s(): The ip4 route %s/%d metric %u %s, but platform thinks %s", file, line, func, nm_utils_inet4_ntop (network, NULL), plen, metric, @@ -287,6 +305,8 @@ _assert_ip4_route_exists (const char *file, guint line, const char *func, gboole } } +/*****************************************************************************/ + int nmtstp_run_command (const char *format, ...) { @@ -309,7 +329,7 @@ nmtstp_run_command (const char *format, ...) typedef struct { GMainLoop *loop; - gboolean timeout; + guint signal_counts; guint id; } WaitForSignalData; @@ -323,6 +343,8 @@ _wait_for_signal_cb (NMPlatform *platform, { WaitForSignalData *data = user_data; + data->signal_counts++; + nm_clear_g_source (&data->id); g_main_loop_quit (data->loop); } @@ -331,20 +353,19 @@ _wait_for_signal_timeout (gpointer user_data) { WaitForSignalData *data = user_data; - data->timeout = TRUE; + g_assert (data->id); data->id = 0; g_main_loop_quit (data->loop); return G_SOURCE_REMOVE; } -gboolean +guint nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms) { WaitForSignalData data = { 0 }; gulong id_link, id_ip4_address, id_ip6_address, id_ip4_route, id_ip6_route; - if (!platform) - platform = NM_PLATFORM_GET; + _init_platform (&platform, FALSE); data.loop = g_main_loop_new (NULL, FALSE); @@ -359,33 +380,34 @@ nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms) g_main_loop_run (data.loop); + g_assert (!data.id); g_assert (nm_clear_g_signal_handler (platform, &id_link)); g_assert (nm_clear_g_signal_handler (platform, &id_ip4_address)); g_assert (nm_clear_g_signal_handler (platform, &id_ip6_address)); g_assert (nm_clear_g_signal_handler (platform, &id_ip4_route)); g_assert (nm_clear_g_signal_handler (platform, &id_ip6_route)); - if (nm_clear_g_source (&data.id)) - g_assert (timeout_ms != 0 && !data.timeout); - g_clear_pointer (&data.loop, g_main_loop_unref); - return !data.timeout; + /* return the number of signals, or 0 if timeout was reached .*/ + return data.signal_counts; } -gboolean +guint nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms) { gint64 now; + guint signal_counts; while (TRUE) { now = nm_utils_get_monotonic_timestamp_ms (); if (until_ms < now) - return FALSE; + return 0; - if (nmtstp_wait_for_signal (platform, MAX (1, until_ms - now))) - return TRUE; + signal_counts = nmtstp_wait_for_signal (platform, MAX (1, until_ms - now)); + if (signal_counts) + return signal_counts; } } @@ -401,10 +423,12 @@ nmtstp_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType const NMPlatformLink *plink; gint64 now; + _init_platform (&platform, FALSE); + while (TRUE) { now = nm_utils_get_monotonic_timestamp_ms (); - plink = nm_platform_link_get_by_ifname (platform ?: NM_PLATFORM_GET, ifname); + plink = nm_platform_link_get_by_ifname (platform, ifname); if ( plink && (expected_link_type == NM_LINK_TYPE_NONE || plink->type == expected_link_type)) return plink; @@ -432,6 +456,8 @@ nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NML return plink; } +/*****************************************************************************/ + int nmtstp_run_command_check_external_global (void) { @@ -460,6 +486,8 @@ nmtstp_run_command_check_external (int external_command) return (nmtst_get_rand_int () % 2) == 0; } +/*****************************************************************************/ + #define CHECK_LIFETIME_MAX_DIFF 2 gboolean @@ -556,8 +584,11 @@ nmtstp_ip_address_assert_lifetime (const NMPlatformIPAddress *addr, g_assert (nmtstp_ip_address_check_lifetime (addr, n, expected_lifetime, expected_preferred)); } +/*****************************************************************************/ + static void -_ip_address_add (gboolean external_command, +_ip_address_add (NMPlatform *platform, + gboolean external_command, gboolean is_v4, int ifindex, const NMIPAddr *address, @@ -572,6 +603,8 @@ _ip_address_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { const char *ifname; gs_free char *s_valid = NULL; @@ -579,7 +612,7 @@ _ip_address_add (gboolean external_command, gs_free char *s_label = NULL; char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN]; - ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex); + ifname = nm_platform_link_get_name (platform, ifindex); g_assert (ifname); if (lifetime != NM_PLATFORM_LIFETIME_PERMANENT) @@ -628,7 +661,7 @@ _ip_address_add (gboolean external_command, gboolean success; if (is_v4) { - success = nm_platform_ip4_address_add (NM_PLATFORM_GET, + success = nm_platform_ip4_address_add (platform, ifindex, address->addr4, plen, @@ -639,7 +672,7 @@ _ip_address_add (gboolean external_command, label); } else { g_assert (label == NULL); - success = nm_platform_ip6_address_add (NM_PLATFORM_GET, + success = nm_platform_ip6_address_add (platform, ifindex, address->addr6, plen, @@ -656,14 +689,14 @@ _ip_address_add (gboolean external_command, do { if (external_command) - nm_platform_process_events (NM_PLATFORM_GET); + nm_platform_process_events (platform); /* let's wait until we see the address as we added it. */ if (is_v4) { const NMPlatformIP4Address *a; g_assert (flags == 0); - a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4); + a = nm_platform_ip4_address_get (platform, ifindex, address->addr4, plen, peer_address->addr4); if ( a && a->peer_address == peer_address->addr4 && nmtstp_ip_address_check_lifetime ((NMPlatformIPAddress*) a, -1, lifetime, preferred) @@ -675,7 +708,7 @@ _ip_address_add (gboolean external_command, g_assert (label == NULL); g_assert (flags == 0); - a = nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen); + a = nm_platform_ip6_address_get (platform, ifindex, address->addr6, plen); if ( a && !memcmp (nm_platform_ip6_address_get_peer (a), (IN6_IS_ADDR_UNSPECIFIED (&peer_address->addr6) || IN6_ARE_ADDR_EQUAL (&address->addr6, &peer_address->addr6)) @@ -688,10 +721,188 @@ _ip_address_add (gboolean external_command, /* for internal command, we expect not to reach this line.*/ g_assert (external_command); - g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time)); + nmtstp_assert_wait_for_signal_until (platform, end_time); + } while (TRUE); +} + +void +nmtstp_ip4_address_add (NMPlatform *platform, + gboolean external_command, + int ifindex, + in_addr_t address, + int plen, + in_addr_t peer_address, + guint32 lifetime, + guint32 preferred, + guint32 flags, + const char *label) +{ + _ip_address_add (platform, + external_command, + TRUE, + ifindex, + (NMIPAddr *) &address, + plen, + (NMIPAddr *) &peer_address, + lifetime, + preferred, + flags, + label); +} + +void +nmtstp_ip6_address_add (NMPlatform *platform, + gboolean external_command, + int ifindex, + struct in6_addr address, + int plen, + struct in6_addr peer_address, + guint32 lifetime, + guint32 preferred, + guint32 flags) +{ + _ip_address_add (platform, + external_command, + FALSE, + ifindex, + (NMIPAddr *) &address, + plen, + (NMIPAddr *) &peer_address, + lifetime, + preferred, + flags, + NULL); +} + +/*****************************************************************************/ + +static void +_ip_address_del (NMPlatform *platform, + gboolean external_command, + gboolean is_v4, + int ifindex, + const NMIPAddr *address, + int plen, + const NMIPAddr *peer_address) +{ + gint64 end_time; + + external_command = nmtstp_run_command_check_external (external_command); + + _init_platform (&platform, external_command); + + if (external_command) { + const char *ifname; + char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN]; + int success; + gboolean had_address; + + ifname = nm_platform_link_get_name (platform, ifindex); + g_assert (ifname); + + /* let's wait until we see the address as we added it. */ + if (is_v4) + had_address = !!nm_platform_ip4_address_get (platform, ifindex, address->addr4, plen, peer_address->addr4); + else + had_address = !!nm_platform_ip6_address_get (platform, ifindex, address->addr6, plen); + + if (is_v4) { + success = nmtstp_run_command ("ip address delete %s%s%s/%d dev %s", + nm_utils_inet4_ntop (address->addr4, b1), + peer_address->addr4 != address->addr4 ? " peer " : "", + peer_address->addr4 != address->addr4 ? nm_utils_inet4_ntop (peer_address->addr4, b2) : "", + plen, + ifname); + } else { + g_assert (!peer_address); + success = nmtstp_run_command ("ip address delete %s/%d dev %s", + nm_utils_inet6_ntop (&address->addr6, b1), + plen, + ifname); + } + g_assert (success == 0 || !had_address); + } else { + gboolean success; + + if (is_v4) { + success = nm_platform_ip4_address_delete (platform, + ifindex, + address->addr4, + plen, + peer_address->addr4); + } else { + g_assert (!peer_address); + success = nm_platform_ip6_address_delete (platform, + ifindex, + address->addr6, + plen); + } + g_assert (success); + } + + /* Let's wait until we get the result */ + end_time = nm_utils_get_monotonic_timestamp_ms () + 250; + do { + if (external_command) + nm_platform_process_events (platform); + + /* let's wait until we see the address as we added it. */ + if (is_v4) { + const NMPlatformIP4Address *a; + + a = nm_platform_ip4_address_get (platform, ifindex, address->addr4, plen, peer_address->addr4); + if (!a) + break; + } else { + const NMPlatformIP6Address *a; + + a = nm_platform_ip6_address_get (platform, ifindex, address->addr6, plen); + if (!a) + break; + } + + /* for internal command, we expect not to reach this line.*/ + g_assert (external_command); + + nmtstp_assert_wait_for_signal_until (platform, end_time); } while (TRUE); } +void +nmtstp_ip4_address_del (NMPlatform *platform, + gboolean external_command, + int ifindex, + in_addr_t address, + int plen, + in_addr_t peer_address) +{ + _ip_address_del (platform, + external_command, + TRUE, + ifindex, + (NMIPAddr *) &address, + plen, + (NMIPAddr *) &peer_address); +} + +void +nmtstp_ip6_address_del (NMPlatform *platform, + gboolean external_command, + int ifindex, + struct in6_addr address, + int plen) +{ + _ip_address_del (platform, + external_command, + FALSE, + ifindex, + (NMIPAddr *) &address, + plen, + NULL); +} + +/*****************************************************************************/ + #define _assert_pllink(platform, success, pllink, name, type) \ G_STMT_START { \ const NMPlatformLink *_pllink = (pllink); \ @@ -706,7 +917,8 @@ _ip_address_add (gboolean external_command, } G_STMT_END const NMPlatformLink * -nmtstp_link_dummy_add (gboolean external_command, +nmtstp_link_dummy_add (NMPlatform *platform, + gboolean external_command, const char *name) { const NMPlatformLink *pllink = NULL; @@ -716,21 +928,24 @@ nmtstp_link_dummy_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { success = !nmtstp_run_command ("ip link add %s type dummy", name); if (success) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_DUMMY, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_DUMMY, 100); } else - success = nm_platform_link_dummy_add (NM_PLATFORM_GET, name, &pllink) == NM_PLATFORM_ERROR_SUCCESS; + success = nm_platform_link_dummy_add (platform, name, &pllink) == NM_PLATFORM_ERROR_SUCCESS; g_assert (success); - _assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_DUMMY); + _assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_DUMMY); return pllink; } const NMPlatformLink * -nmtstp_link_gre_add (gboolean external_command, +nmtstp_link_gre_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkGre *lnk) { @@ -742,11 +957,13 @@ nmtstp_link_gre_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { gs_free char *dev = NULL; if (lnk->parent_ifindex) - dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex)); + dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex)); success = !nmtstp_run_command ("ip tunnel add %s mode gre %s local %s remote %s ttl %u tos %02x %s", name, @@ -757,17 +974,18 @@ nmtstp_link_gre_add (gboolean external_command, lnk->tos, lnk->path_mtu_discovery ? "pmtudisc" : "nopmtudisc"); if (success) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_GRE, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_GRE, 100); } else - success = nm_platform_link_gre_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; + success = nm_platform_link_gre_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; - _assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_GRE); + _assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_GRE); return pllink; } const NMPlatformLink * -nmtstp_link_ip6tnl_add (gboolean external_command, +nmtstp_link_ip6tnl_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkIp6Tnl *lnk) { @@ -779,12 +997,14 @@ nmtstp_link_ip6tnl_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { gs_free char *dev = NULL; const char *mode; if (lnk->parent_ifindex) - dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex)); + dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex)); switch (lnk->proto) { case IPPROTO_IPIP: @@ -808,17 +1028,18 @@ nmtstp_link_ip6tnl_add (gboolean external_command, lnk->encap_limit, lnk->flow_label); if (success) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_IP6TNL, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_IP6TNL, 100); } else - success = nm_platform_link_ip6tnl_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; + success = nm_platform_link_ip6tnl_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; - _assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_IP6TNL); + _assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_IP6TNL); return pllink; } const NMPlatformLink * -nmtstp_link_ipip_add (gboolean external_command, +nmtstp_link_ipip_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkIpIp *lnk) { @@ -830,11 +1051,13 @@ nmtstp_link_ipip_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { gs_free char *dev = NULL; if (lnk->parent_ifindex) - dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex)); + dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex)); success = !nmtstp_run_command ("ip tunnel add %s mode ipip %s local %s remote %s ttl %u tos %02x %s", name, @@ -845,17 +1068,18 @@ nmtstp_link_ipip_add (gboolean external_command, lnk->tos, lnk->path_mtu_discovery ? "pmtudisc" : "nopmtudisc"); if (success) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_IPIP, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_IPIP, 100); } else - success = nm_platform_link_ipip_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; + success = nm_platform_link_ipip_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; - _assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_IPIP); + _assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_IPIP); return pllink; } const NMPlatformLink * -nmtstp_link_macvlan_add (gboolean external_command, +nmtstp_link_macvlan_add (NMPlatform *platform, + gboolean external_command, const char *name, int parent, const NMPlatformLnkMacvlan *lnk) @@ -868,6 +1092,8 @@ nmtstp_link_macvlan_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + link_type = lnk->tap ? NM_LINK_TYPE_MACVTAP : NM_LINK_TYPE_MACVLAN; if (external_command) { @@ -879,7 +1105,7 @@ nmtstp_link_macvlan_add (gboolean external_command, [MACVLAN_MODE_PASSTHRU] = "passthru", }; - dev = nm_platform_link_get_name (NM_PLATFORM_GET, parent); + dev = nm_platform_link_get_name (platform, parent); g_assert (dev); g_assert_cmpint (lnk->mode, <, G_N_ELEMENTS (modes)); @@ -890,17 +1116,18 @@ nmtstp_link_macvlan_add (gboolean external_command, modes[lnk->mode], lnk->no_promisc ? "nopromisc" : ""); if (success) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, link_type, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, link_type, 100); } else - success = nm_platform_link_macvlan_add (NM_PLATFORM_GET, name, parent, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; + success = nm_platform_link_macvlan_add (platform, name, parent, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; - _assert_pllink (NM_PLATFORM_GET, success, pllink, name, link_type); + _assert_pllink (platform, success, pllink, name, link_type); return pllink; } const NMPlatformLink * -nmtstp_link_sit_add (gboolean external_command, +nmtstp_link_sit_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkSit *lnk) { @@ -912,13 +1139,15 @@ nmtstp_link_sit_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { const char *dev = ""; if (lnk->parent_ifindex) { const char *parent_name; - parent_name = nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex); + parent_name = nm_platform_link_get_name (platform, lnk->parent_ifindex); g_assert (parent_name); dev = nm_sprintf_bufa (100, " dev %s", parent_name); } @@ -932,17 +1161,18 @@ nmtstp_link_sit_add (gboolean external_command, lnk->tos, lnk->path_mtu_discovery ? "pmtudisc" : "nopmtudisc"); if (success) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_SIT, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_SIT, 100); } else - success = nm_platform_link_sit_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; + success = nm_platform_link_sit_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS; - _assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_SIT); + _assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_SIT); return pllink; } const NMPlatformLink * -nmtstp_link_vxlan_add (gboolean external_command, +nmtstp_link_vxlan_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkVxlan *lnk) { @@ -954,12 +1184,14 @@ nmtstp_link_vxlan_add (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { gs_free char *dev = NULL; gs_free char *local = NULL, *remote = NULL; if (lnk->parent_ifindex) - dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex)); + dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex)); if (lnk->local) local = g_strdup_printf ("%s", nm_utils_inet4_ntop (lnk->local, NULL)); @@ -985,12 +1217,12 @@ nmtstp_link_vxlan_add (gboolean external_command, /* Older versions of iproute2 don't support adding vxlan devices. * On failure, fallback to using platform code. */ if (err == 0) - pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_VXLAN, 100); + pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_VXLAN, 100); else _LOGI ("Adding vxlan device via iproute2 failed. Assume iproute2 is not up to the task."); } if (!pllink) { - plerr = nm_platform_link_vxlan_add (NM_PLATFORM_GET, name, lnk, &pllink); + plerr = nm_platform_link_vxlan_add (platform, name, lnk, &pllink); g_assert_cmpint (plerr, ==, NM_PLATFORM_ERROR_SUCCESS); g_assert (pllink); } @@ -1000,168 +1232,7 @@ nmtstp_link_vxlan_add (gboolean external_command, return pllink; } -void -nmtstp_ip4_address_add (gboolean external_command, - int ifindex, - in_addr_t address, - int plen, - in_addr_t peer_address, - guint32 lifetime, - guint32 preferred, - guint32 flags, - const char *label) -{ - _ip_address_add (external_command, - TRUE, - ifindex, - (NMIPAddr *) &address, - plen, - (NMIPAddr *) &peer_address, - lifetime, - preferred, - flags, - label); -} - -void -nmtstp_ip6_address_add (gboolean external_command, - int ifindex, - struct in6_addr address, - int plen, - struct in6_addr peer_address, - guint32 lifetime, - guint32 preferred, - guint32 flags) -{ - _ip_address_add (external_command, - FALSE, - ifindex, - (NMIPAddr *) &address, - plen, - (NMIPAddr *) &peer_address, - lifetime, - preferred, - flags, - NULL); -} - -static void -_ip_address_del (gboolean external_command, - gboolean is_v4, - int ifindex, - const NMIPAddr *address, - int plen, - const NMIPAddr *peer_address) -{ - gint64 end_time; - - external_command = nmtstp_run_command_check_external (external_command); - - if (external_command) { - const char *ifname; - char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN]; - int success; - gboolean had_address; - - ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex); - g_assert (ifname); - - /* let's wait until we see the address as we added it. */ - if (is_v4) - had_address = !!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4); - else - had_address = !!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen); - - if (is_v4) { - success = nmtstp_run_command ("ip address delete %s%s%s/%d dev %s", - nm_utils_inet4_ntop (address->addr4, b1), - peer_address->addr4 != address->addr4 ? " peer " : "", - peer_address->addr4 != address->addr4 ? nm_utils_inet4_ntop (peer_address->addr4, b2) : "", - plen, - ifname); - } else { - g_assert (!peer_address); - success = nmtstp_run_command ("ip address delete %s/%d dev %s", - nm_utils_inet6_ntop (&address->addr6, b1), - plen, - ifname); - } - g_assert (success == 0 || !had_address); - } else { - gboolean success; - - if (is_v4) { - success = nm_platform_ip4_address_delete (NM_PLATFORM_GET, - ifindex, - address->addr4, - plen, - peer_address->addr4); - } else { - g_assert (!peer_address); - success = nm_platform_ip6_address_delete (NM_PLATFORM_GET, - ifindex, - address->addr6, - plen); - } - g_assert (success); - } - - /* Let's wait until we get the result */ - end_time = nm_utils_get_monotonic_timestamp_ms () + 250; - do { - if (external_command) - nm_platform_process_events (NM_PLATFORM_GET); - - /* let's wait until we see the address as we added it. */ - if (is_v4) { - const NMPlatformIP4Address *a; - - a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4); - if (!a) - break; - } else { - const NMPlatformIP6Address *a; - - a = nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen); - if (!a) - break; - } - - /* for internal command, we expect not to reach this line.*/ - g_assert (external_command); - - g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time)); - } while (TRUE); -} - -void -nmtstp_ip4_address_del (gboolean external_command, - int ifindex, - in_addr_t address, - int plen, - in_addr_t peer_address) -{ - _ip_address_del (external_command, - TRUE, - ifindex, - (NMIPAddr *) &address, - plen, - (NMIPAddr *) &peer_address); -} - -void -nmtstp_ip6_address_del (gboolean external_command, - int ifindex, - struct in6_addr address, - int plen) -{ - _ip_address_del (external_command, - FALSE, - ifindex, - (NMIPAddr *) &address, - plen, - NULL); -} +/*****************************************************************************/ const NMPlatformLink * nmtstp_link_get_typed (NMPlatform *platform, @@ -1171,8 +1242,7 @@ nmtstp_link_get_typed (NMPlatform *platform, { const NMPlatformLink *pllink = NULL; - if (!platform) - platform = NM_PLATFORM_GET; + _init_platform (&platform, FALSE); if (ifindex > 0) { pllink = nm_platform_link_get (platform, ifindex); @@ -1210,8 +1280,11 @@ nmtstp_link_get (NMPlatform *platform, return nmtstp_link_get_typed (platform, ifindex, name, NM_LINK_TYPE_NONE); } +/*****************************************************************************/ + void -nmtstp_link_del (gboolean external_command, +nmtstp_link_del (NMPlatform *platform, + gboolean external_command, int ifindex, const char *name) { @@ -1220,19 +1293,21 @@ nmtstp_link_del (gboolean external_command, gboolean success; gs_free char *name_copy = NULL; - pllink = nmtstp_link_get (NM_PLATFORM_GET, ifindex, name); + external_command = nmtstp_run_command_check_external (external_command); + + _init_platform (&platform, external_command); + + pllink = nmtstp_link_get (platform, ifindex, name); g_assert (pllink); name = name_copy = g_strdup (pllink->name); ifindex = pllink->ifindex; - external_command = nmtstp_run_command_check_external (external_command); - if (external_command) { nmtstp_run_command_check ("ip link delete %s", name); } else { - success = nm_platform_link_delete (NM_PLATFORM_GET, ifindex); + success = nm_platform_link_delete (platform, ifindex); g_assert (success); } @@ -1240,22 +1315,25 @@ nmtstp_link_del (gboolean external_command, end_time = nm_utils_get_monotonic_timestamp_ms () + 250; do { if (external_command) - nm_platform_process_events (NM_PLATFORM_GET); + nm_platform_process_events (platform); - if (!nm_platform_link_get (NM_PLATFORM_GET, ifindex)) { - g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, name)); + if (!nm_platform_link_get (platform, ifindex)) { + g_assert (!nm_platform_link_get_by_ifname (platform, name)); break; } /* for internal command, we expect not to reach this line.*/ g_assert (external_command); - g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time)); + nmtstp_assert_wait_for_signal_until (platform, end_time); } while (TRUE); } +/*****************************************************************************/ + void -nmtstp_link_set_updown (gboolean external_command, +nmtstp_link_set_updown (NMPlatform *platform, + gboolean external_command, int ifindex, gboolean up) { @@ -1264,10 +1342,12 @@ nmtstp_link_set_updown (gboolean external_command, external_command = nmtstp_run_command_check_external (external_command); + _init_platform (&platform, external_command); + if (external_command) { const char *ifname; - ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex); + ifname = nm_platform_link_get_name (platform, ifindex); g_assert (ifname); nmtstp_run_command_check ("ip link set %s %s", @@ -1275,19 +1355,19 @@ nmtstp_link_set_updown (gboolean external_command, up ? "up" : "down"); } else { if (up) - g_assert (nm_platform_link_set_up (NM_PLATFORM_GET, ifindex, NULL)); + g_assert (nm_platform_link_set_up (platform, ifindex, NULL)); else - g_assert (nm_platform_link_set_down (NM_PLATFORM_GET, ifindex)); + g_assert (nm_platform_link_set_down (platform, ifindex)); } /* Let's wait until we get the result */ end_time = nm_utils_get_monotonic_timestamp_ms () + 250; do { if (external_command) - nm_platform_process_events (NM_PLATFORM_GET); + nm_platform_process_events (platform); /* let's wait until we see the address as we added it. */ - plink = nm_platform_link_get (NM_PLATFORM_GET, ifindex); + plink = nm_platform_link_get (platform, ifindex); g_assert (plink); if (NM_FLAGS_HAS (plink->n_ifi_flags, IFF_UP) == !!up) @@ -1296,7 +1376,7 @@ nmtstp_link_set_updown (gboolean external_command, /* for internal command, we expect not to reach this line.*/ g_assert (external_command); - g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time)); + nmtstp_assert_wait_for_signal_until (platform, end_time); } while (TRUE); } @@ -1513,7 +1593,7 @@ main (int argc, char **argv) int result; const char *program = *argv; - init_tests (&argc, &argv); + _nmtstp_init_tests (&argc, &argv); if ( nmtstp_is_root_test () && (geteuid () != 0 || getegid () != 0)) { @@ -1571,7 +1651,7 @@ main (int argc, char **argv) SETUP (); - setup_tests (); + _nmtstp_setup_tests (); result = g_test_run (); diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h index 82561193..0e3cf10b 100644 --- a/src/platform/tests/test-common.h +++ b/src/platform/tests/test-common.h @@ -4,7 +4,6 @@ #include <string.h> #include <arpa/inet.h> -#include "nm-default.h" #include "nm-platform.h" #include "nm-fake-platform.h" #include "nm-linux-platform.h" @@ -38,16 +37,6 @@ /*********************************************************************************************/ -typedef struct { - gulong handler_id; - const char *name; - NMPlatformSignalChangeType change_type; - gint received_count; - GMainLoop *loop; - int ifindex; - const char *ifname; -} SignalData; - gboolean nmtstp_is_root_test (void); gboolean nmtstp_is_sysfs_writable (void); @@ -64,6 +53,16 @@ int nmtstp_namespace_get_fd_for_process (pid_t pid, const char *ns_name); /******************************************************************************/ +typedef struct { + gulong handler_id; + const char *name; + NMPlatformSignalChangeType change_type; + gint received_count; + GMainLoop *loop; + int ifindex; + const char *ifname; +} SignalData; + SignalData *add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname); #define add_signal(name, change_type, callback) add_signal_full (name, change_type, (GCallback) callback, 0, NULL) #define add_signal_ifindex(name, change_type, callback, ifindex) add_signal_full (name, change_type, (GCallback) callback, ifindex, NULL) @@ -81,27 +80,49 @@ void _free_signal (const char *file, int line, const char *func, SignalData *dat #define ensure_no_signal(data) _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data) #define free_signal(data) _free_signal(__FILE__, __LINE__, G_STRFUNC, data) -gboolean ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric); - -void _assert_ip4_route_exists (const char *file, guint line, const char *func, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric); -#define assert_ip4_route_exists(exists, ifname, network, plen, metric) _assert_ip4_route_exists (__FILE__, __LINE__, G_STRFUNC, exists, ifname, network, plen, metric) - void link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlatformLink *received, NMPlatformSignalChangeType change_type, SignalData *data); +/*****************************************************************************/ + int nmtstp_run_command (const char *format, ...) __attribute__((__format__ (__printf__, 1, 2))); #define nmtstp_run_command_check(...) do { g_assert_cmpint (nmtstp_run_command (__VA_ARGS__), ==, 0); } while (0) -gboolean nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms); -gboolean nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms); +/*****************************************************************************/ + +guint nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms); +guint nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms); const NMPlatformLink *nmtstp_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms); const NMPlatformLink *nmtstp_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, gint64 until_ms); +#define nmtstp_assert_wait_for_signal(platform, timeout_ms) \ + G_STMT_START { \ + if (nmtstp_wait_for_signal (platform, timeout_ms) == 0) \ + g_assert_not_reached (); \ + } G_STMT_END + +#define nmtstp_assert_wait_for_signal_until(platform, until_ms) \ + G_STMT_START { \ + if (nmtstp_wait_for_signal_until (platform, until_ms) == 0) \ + g_assert_not_reached (); \ + } G_STMT_END + const NMPlatformLink *nmtstp_assert_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms); const NMPlatformLink *nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, gint64 until_ms); +/*****************************************************************************/ + int nmtstp_run_command_check_external_global (void); gboolean nmtstp_run_command_check_external (int external_command); +/*****************************************************************************/ + +gboolean nmtstp_ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric); + +void _nmtstp_assert_ip4_route_exists (const char *file, guint line, const char *func, NMPlatform *platform, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric); +#define nmtstp_assert_ip4_route_exists(platform, exists, ifname, network, plen, metric) _nmtstp_assert_ip4_route_exists (__FILE__, __LINE__, G_STRFUNC, platform, exists, ifname, network, plen, metric) + +/*****************************************************************************/ + gboolean nmtstp_ip_address_check_lifetime (const NMPlatformIPAddress *addr, gint64 now, guint32 expected_lifetime, @@ -110,7 +131,9 @@ void nmtstp_ip_address_assert_lifetime (const NMPlatformIPAddress *addr, gint64 now, guint32 expected_lifetime, guint32 expected_preferred); -void nmtstp_ip4_address_add (gboolean external_command, + +void nmtstp_ip4_address_add (NMPlatform *platform, + gboolean external_command, int ifindex, in_addr_t address, int plen, @@ -119,7 +142,8 @@ void nmtstp_ip4_address_add (gboolean external_command, guint32 preferred, guint32 flags, const char *label); -void nmtstp_ip6_address_add (gboolean external_command, +void nmtstp_ip6_address_add (NMPlatform *platform, + gboolean external_command, int ifindex, struct in6_addr address, int plen, @@ -127,49 +151,64 @@ void nmtstp_ip6_address_add (gboolean external_command, guint32 lifetime, guint32 preferred, guint32 flags); -void nmtstp_ip4_address_del (gboolean external_command, +void nmtstp_ip4_address_del (NMPlatform *platform, + gboolean external_command, int ifindex, in_addr_t address, int plen, in_addr_t peer_address); -void nmtstp_ip6_address_del (gboolean external_command, +void nmtstp_ip6_address_del (NMPlatform *platform, + gboolean external_command, int ifindex, struct in6_addr address, int plen); +/*****************************************************************************/ + const NMPlatformLink *nmtstp_link_get_typed (NMPlatform *platform, int ifindex, const char *name, NMLinkType link_type); const NMPlatformLink *nmtstp_link_get (NMPlatform *platform, int ifindex, const char *name); -void nmtstp_link_set_updown (gboolean external_command, +void nmtstp_link_set_updown (NMPlatform *platform, + gboolean external_command, int ifindex, gboolean up); -const NMPlatformLink *nmtstp_link_dummy_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_dummy_add (NMPlatform *platform, + gboolean external_command, const char *name); -const NMPlatformLink *nmtstp_link_gre_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_gre_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkGre *lnk); -const NMPlatformLink *nmtstp_link_ip6tnl_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_ip6tnl_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkIp6Tnl *lnk); -const NMPlatformLink *nmtstp_link_ipip_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_ipip_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkIpIp *lnk); -const NMPlatformLink *nmtstp_link_macvlan_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_macvlan_add (NMPlatform *platform, + gboolean external_command, const char *name, int parent, const NMPlatformLnkMacvlan *lnk); -const NMPlatformLink *nmtstp_link_sit_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_sit_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkSit *lnk); -const NMPlatformLink *nmtstp_link_vxlan_add (gboolean external_command, +const NMPlatformLink *nmtstp_link_vxlan_add (NMPlatform *platform, + gboolean external_command, const char *name, const NMPlatformLnkVxlan *lnk); -void nmtstp_link_del (gboolean external_command, +void nmtstp_link_del (NMPlatform *platform, + gboolean external_command, int ifindex, const char *name); -void init_tests (int *argc, char ***argv); -void setup_tests (void); +/*****************************************************************************/ + +void _nmtstp_init_tests (int *argc, char ***argv); +void _nmtstp_setup_tests (void); diff --git a/src/platform/tests/test-general.c b/src/platform/tests/test-general.c index 66f72fa5..d8d92561 100644 --- a/src/platform/tests/test-general.c +++ b/src/platform/tests/test-general.c @@ -35,7 +35,7 @@ test_init_linux_platform (void) { gs_unref_object NMPlatform *platform = NULL; - platform = g_object_new (NM_TYPE_LINUX_PLATFORM, NULL); + platform = nm_linux_platform_new (NM_PLATFORM_NETNS_SUPPORT_DEFAULT); } /******************************************************************/ @@ -46,7 +46,7 @@ test_link_get_all (void) gs_unref_object NMPlatform *platform = NULL; gs_unref_array GArray *links = NULL; - platform = g_object_new (NM_TYPE_LINUX_PLATFORM, NULL); + platform = nm_linux_platform_new (NM_PLATFORM_NETNS_SUPPORT_DEFAULT); links = nm_platform_link_get_all (platform); } diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index 94695edc..9d548aab 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -343,7 +343,7 @@ test_slave (int master, int type, SignalData *master_changed) ensure_no_signal (link_added); ensure_no_signal (link_changed); ensure_no_signal (link_removed); - nmtstp_link_del (-1, ifindex, NULL); + nmtstp_link_del (NULL, -1, ifindex, NULL); accept_signals (master_changed, 0, 1); accept_signals (link_changed, 0, 1); accept_signal (link_removed); @@ -437,7 +437,7 @@ test_software (NMLinkType link_type, const char *link_typename) free_signal (link_changed); /* Delete */ - nmtstp_link_del (-1, ifindex, DEVICE_NAME); + nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME); accept_signal (link_removed); /* Delete again */ @@ -448,7 +448,7 @@ test_software (NMLinkType link_type, const char *link_typename) if (link_type == NM_LINK_TYPE_VLAN) { SignalData *link_removed_parent = add_signal_ifindex (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_REMOVED, link_callback, vlan_parent); - nmtstp_link_del (-1, vlan_parent, NULL); + nmtstp_link_del (NULL, -1, vlan_parent, NULL); accept_signal (link_removed_parent); free_signal (link_removed_parent); } @@ -531,7 +531,7 @@ test_bridge_addr (void) g_assert_cmpint (plink->addr.len, ==, sizeof (addr)); g_assert (!memcmp (plink->addr.data, addr, sizeof (addr))); - nmtstp_link_del (-1, link.ifindex, link.name); + nmtstp_link_del (NULL, -1, link.ifindex, link.name); } /*****************************************************************************/ @@ -606,7 +606,7 @@ test_internal (void) accept_signal (link_changed); /* Delete device */ - nmtstp_link_del (-1, ifindex, DEVICE_NAME); + nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME); accept_signal (link_removed); /* Try to delete again */ @@ -717,7 +717,7 @@ test_software_detect (gconstpointer user_data) gracefully_skip = nm_utils_modprobe (NULL, TRUE, "ip_gre", NULL) != 0; } - if (!nmtstp_link_gre_add (ext, DEVICE_NAME, &lnk_gre)) { + if (!nmtstp_link_gre_add (NULL, ext, DEVICE_NAME, &lnk_gre)) { if (gracefully_skip) { g_test_skip ("Cannot create gre tunnel because of missing ip_gre module (modprobe ip_gre)"); goto out_delete_parent; @@ -741,7 +741,7 @@ test_software_detect (gconstpointer user_data) lnk_ipip.tos = 32; lnk_ipip.path_mtu_discovery = FALSE; - if (!nmtstp_link_ipip_add (ext, DEVICE_NAME, &lnk_ipip)) { + if (!nmtstp_link_ipip_add (NULL, ext, DEVICE_NAME, &lnk_ipip)) { if (gracefully_skip) { g_test_skip ("Cannot create ipip tunnel because of missing ipip module (modprobe ipip)"); goto out_delete_parent; @@ -767,7 +767,7 @@ test_software_detect (gconstpointer user_data) lnk_ip6tnl.flow_label = 1337; lnk_ip6tnl.proto = IPPROTO_IPV6; - if (!nmtstp_link_ip6tnl_add (ext, DEVICE_NAME, &lnk_ip6tnl)) { + if (!nmtstp_link_ip6tnl_add (NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) { if (gracefully_skip) { g_test_skip ("Cannot create ip6tnl tunnel because of missing ip6_tunnel module (modprobe ip6_tunnel)"); goto out_delete_parent; @@ -783,7 +783,7 @@ test_software_detect (gconstpointer user_data) lnk_macvlan.no_promisc = FALSE; lnk_macvlan.tap = FALSE; - if (!nmtstp_link_macvlan_add (ext, DEVICE_NAME, ifindex_parent, &lnk_macvlan)) + if (!nmtstp_link_macvlan_add (NULL, ext, DEVICE_NAME, ifindex_parent, &lnk_macvlan)) g_error ("Failed adding MACVLAN interface"); break; } @@ -794,7 +794,7 @@ test_software_detect (gconstpointer user_data) lnk_macvtap.no_promisc = FALSE; lnk_macvtap.tap = TRUE; - if (!nmtstp_link_macvlan_add (ext, DEVICE_NAME, ifindex_parent, &lnk_macvtap)) + if (!nmtstp_link_macvlan_add (NULL, ext, DEVICE_NAME, ifindex_parent, &lnk_macvtap)) g_error ("Failed adding MACVTAP interface"); break; } @@ -814,7 +814,7 @@ test_software_detect (gconstpointer user_data) gracefully_skip = nm_utils_modprobe (NULL, TRUE, "sit", NULL) != 0; } - if (!nmtstp_link_sit_add (ext, DEVICE_NAME, &lnk_sit)) { + if (!nmtstp_link_sit_add (NULL, ext, DEVICE_NAME, &lnk_sit)) { if (gracefully_skip) { g_test_skip ("Cannot create sit tunnel because of missing sit module (modprobe sit)"); goto out_delete_parent; @@ -853,7 +853,7 @@ test_software_detect (gconstpointer user_data) break; } - g_assert (nmtstp_link_vxlan_add (ext, DEVICE_NAME, &lnk_vxlan)); + g_assert (nmtstp_link_vxlan_add (NULL, ext, DEVICE_NAME, &lnk_vxlan)); break; } default: @@ -862,7 +862,7 @@ test_software_detect (gconstpointer user_data) ifindex = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, DEVICE_NAME, test_data->link_type, 100)->ifindex; - nmtstp_link_set_updown (-1, ifindex_parent, TRUE); + nmtstp_link_set_updown (NULL, -1, ifindex_parent, TRUE); for (i_step = 0; i_step < 5; i_step++) { @@ -880,7 +880,7 @@ test_software_detect (gconstpointer user_data) * https://bugzilla.redhat.com/show_bug.cgi?id=1277131 */ g_usleep (1); } - nmtstp_link_set_updown (-1, ifindex, set_up); + nmtstp_link_set_updown (NULL, -1, ifindex, set_up); } lnk = nm_platform_link_get_lnk (NM_PLATFORM_GET, ifindex, test_data->link_type, &plink); @@ -1017,9 +1017,9 @@ test_software_detect (gconstpointer user_data) } } - nmtstp_link_del (-1, ifindex, DEVICE_NAME); + nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME); out_delete_parent: - nmtstp_link_del (-1, ifindex_parent, PARENT_NAME); + nmtstp_link_del (NULL, -1, ifindex_parent, PARENT_NAME); } static void @@ -1597,8 +1597,8 @@ test_vlan_set_xgress (void) _assert_vlan_flags (ifindex, NM_VLAN_FLAG_REORDER_HEADERS | NM_VLAN_FLAG_GVRP); } - nmtstp_link_del (-1, ifindex, DEVICE_NAME); - nmtstp_link_del (-1, ifindex_parent, PARENT_NAME); + nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME); + nmtstp_link_del (NULL, -1, ifindex_parent, PARENT_NAME); } /*****************************************************************************/ @@ -1625,7 +1625,7 @@ test_create_many_links_do (guint n_devices) * while adding all the links. */ nmtstp_run_command_check ("ip link add %s type dummy", name); } else - nmtstp_link_dummy_add (EX, name); + nmtstp_link_dummy_add (NULL, EX, name); } _LOGI (">>> process events after creating devices..."); @@ -1654,7 +1654,7 @@ test_create_many_links_do (guint n_devices) if (EX == 2) nmtstp_run_command_check ("ip link delete %s", name); else - nmtstp_link_del (EX, g_array_index (ifindexes, int, i), name); + nmtstp_link_del (NULL, EX, g_array_index (ifindexes, int, i), name); } _LOGI (">>> process events after deleting devices..."); @@ -1743,7 +1743,7 @@ test_nl_bugs_veth (void) }); out: - nmtstp_link_del (-1, ifindex_veth0, IFACE_VETH0); + nmtstp_link_del (NULL, -1, ifindex_veth0, IFACE_VETH0); g_assert (!nmtstp_link_get (NM_PLATFORM_GET, ifindex_veth0, IFACE_VETH0)); g_assert (!nmtstp_link_get (NM_PLATFORM_GET, ifindex_veth1, IFACE_VETH1)); nmtstp_namespace_handle_release (ns_handle); @@ -1768,7 +1768,7 @@ test_nl_bugs_spuroius_newlink (void) nmtstp_run_command_check ("ip link add %s type bond", IFACE_BOND0); ifindex_bond0 = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, IFACE_BOND0, NM_LINK_TYPE_BOND, 100)->ifindex; - nmtstp_link_set_updown (-1, ifindex_bond0, TRUE); + nmtstp_link_set_updown (NULL, -1, ifindex_bond0, TRUE); nmtstp_run_command_check ("ip link set %s master %s", IFACE_DUMMY0, IFACE_BOND0); NMTST_WAIT_ASSERT (100, { @@ -1796,7 +1796,7 @@ again: } g_assert (!nmtstp_link_get (NM_PLATFORM_GET, ifindex_bond0, IFACE_BOND0)); - nmtstp_link_del (-1, ifindex_dummy0, IFACE_DUMMY0); + nmtstp_link_del (NULL, -1, ifindex_dummy0, IFACE_DUMMY0); } /*****************************************************************************/ @@ -1818,7 +1818,7 @@ test_nl_bugs_spuroius_dellink (void) nmtstp_run_command_check ("ip link add %s type bridge", IFACE_BRIDGE0); ifindex_bridge0 = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, IFACE_BRIDGE0, NM_LINK_TYPE_BRIDGE, 100)->ifindex; - nmtstp_link_set_updown (-1, ifindex_bridge0, TRUE); + nmtstp_link_set_updown (NULL, -1, ifindex_bridge0, TRUE); nmtstp_run_command_check ("ip link set %s master %s", IFACE_DUMMY0, IFACE_BRIDGE0); NMTST_WAIT_ASSERT (100, { @@ -1850,8 +1850,8 @@ again: goto again; } - nmtstp_link_del (-1, ifindex_bridge0, IFACE_BRIDGE0); - nmtstp_link_del (-1, ifindex_dummy0, IFACE_DUMMY0); + nmtstp_link_del (NULL, -1, ifindex_bridge0, IFACE_BRIDGE0); + nmtstp_link_del (NULL, -1, ifindex_dummy0, IFACE_DUMMY0); } /******************************************************************/ @@ -1880,7 +1880,7 @@ _test_netns_create_platform (void) netns = nmp_netns_new (); g_assert (NMP_IS_NETNS (netns)); - platform = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL); + platform = nm_linux_platform_new (TRUE); g_assert (NM_IS_LINUX_PLATFORM (platform)); nmp_netns_pop (netns); @@ -1932,7 +1932,7 @@ test_netns_general (gpointer fixture, gconstpointer test_data) if (_test_netns_check_skip ()) return; - platform_1 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL); + platform_1 = nm_linux_platform_new (TRUE); platform_2 = _test_netns_create_platform (); /* add some dummy devices. The "other-*" devices are there to bump the ifindex */ @@ -2028,7 +2028,7 @@ test_netns_set_netns (gpointer fixture, gconstpointer test_data) if (_test_netns_check_skip ()) return; - platforms[0] = platform_0 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL); + platforms[0] = platform_0 = nm_linux_platform_new (TRUE); platforms[1] = platform_1 = _test_netns_create_platform (); platforms[2] = platform_2 = _test_netns_create_platform (); @@ -2125,7 +2125,7 @@ test_netns_push (gpointer fixture, gconstpointer test_data) if (_test_netns_check_skip ()) return; - pl[0].platform = platform_0 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL); + pl[0].platform = platform_0 = nm_linux_platform_new (TRUE); pl[1].platform = platform_1 = _test_netns_create_platform (); pl[2].platform = platform_2 = _test_netns_create_platform (); @@ -2257,7 +2257,7 @@ test_netns_bind_to_path (gpointer fixture, gconstpointer test_data) if (_test_netns_check_skip ()) return; - platforms[0] = platform_0 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL); + platforms[0] = platform_0 = nm_linux_platform_new (TRUE); platforms[1] = platform_1 = _test_netns_create_platform (); platforms[2] = platform_2 = _test_netns_create_platform (); @@ -2293,13 +2293,13 @@ test_netns_bind_to_path (gpointer fixture, gconstpointer test_data) /*****************************************************************************/ void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_with_logging (argc, argv, NULL, "ALL"); } void -setup_tests (void) +_nmtstp_setup_tests (void) { nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME)); nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, SLAVE_NAME)); diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c index 85851854..a50392a6 100644 --- a/src/platform/tests/test-route.c +++ b/src/platform/tests/test-route.c @@ -82,50 +82,50 @@ test_ip4_route_metric0 (void) int mss = 1000; /* No routes initially */ - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric); /* add the first route */ g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network, plen, INADDR_ANY, 0, metric, mss)); accept_signal (route_added); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric); /* Deleting route with metric 0 does nothing */ g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, 0)); ensure_no_signal (route_removed); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric); /* add the second route */ g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network, plen, INADDR_ANY, 0, 0, mss)); accept_signal (route_added); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric); /* Delete route with metric 0 */ g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, 0)); accept_signal (route_removed); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric); /* Delete route with metric 0 again (we expect nothing to happen) */ g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, 0)); ensure_no_signal (route_removed); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric); /* Delete the other route */ g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, metric)); accept_signal (route_removed); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric); free_signal (route_added); free_signal (route_changed); @@ -142,7 +142,7 @@ test_ip4_route (void) GArray *routes; NMPlatformIP4Route rts[3]; in_addr_t network; - int plen = 24; + guint8 plen = 24; in_addr_t gateway; /* Choose a high metric so that we hopefully don't conflict. */ int metric = 22986; @@ -156,9 +156,9 @@ test_ip4_route (void) accept_signal (route_added); /* Add route */ - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric); g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network, plen, gateway, 0, metric, mss)); - assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric); accept_signal (route_added); /* Add route again */ @@ -166,9 +166,9 @@ test_ip4_route (void) accept_signals (route_changed, 0, 1); /* Add default route */ - assert_ip4_route_exists (FALSE, DEVICE_NAME, 0, 0, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, 0, 0, metric); g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, 0, 0, gateway, 0, metric, mss)); - assert_ip4_route_exists (TRUE, DEVICE_NAME, 0, 0, metric); + nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, 0, 0, metric); accept_signal (route_added); /* Add default route again */ @@ -208,7 +208,7 @@ test_ip4_route (void) /* Remove route */ g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, metric)); - assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric); + nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric); accept_signal (route_removed); /* Remove route again */ @@ -229,7 +229,7 @@ test_ip6_route (void) GArray *routes; NMPlatformIP6Route rts[3]; struct in6_addr network; - int plen = 64; + guint8 plen = 64; struct in6_addr gateway; /* Choose a high metric so that we hopefully don't conflict. */ int metric = 22987; @@ -329,13 +329,13 @@ test_ip4_zero_gateway (void) /*****************************************************************************/ void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_with_logging (argc, argv, NULL, "ALL"); } void -setup_tests (void) +_nmtstp_setup_tests (void) { SignalData *link_added = add_signal_ifname (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_ADDED, link_callback, DEVICE_NAME); diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index 16e34f11..89a7addf 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -481,7 +481,7 @@ impl_ppp_manager_set_ip4_config (NMPPPManager *manager, if (g_variant_lookup (config_dict, NM_PPP_IP4_CONFIG_PREFIX, "u", &u32)) address.plen = u32; - if (address.address && address.plen) { + if (address.address && address.plen && address.plen <= 32) { address.source = NM_IP_CONFIG_SOURCE_PPP; nm_ip4_config_add_address (config, &address); } else { @@ -554,6 +554,7 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager, NMPlatformIP6Address addr; struct in6_addr a; NMUtilsIPv6IfaceId iid = NM_UTILS_IPV6_IFACE_ID_INIT; + gboolean has_peer = FALSE; _LOGI ("(IPv6 Config Get) reply received."); @@ -567,9 +568,12 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager, if (iid_value_to_ll6_addr (config_dict, NM_PPP_IP6_CONFIG_PEER_IID, &a, NULL)) { nm_ip6_config_set_gateway (config, &a); addr.peer_address = a; + has_peer = TRUE; } if (iid_value_to_ll6_addr (config_dict, NM_PPP_IP6_CONFIG_OUR_IID, &addr.address, &iid)) { + if (!has_peer) + addr.peer_address = addr.address; nm_ip6_config_add_address (config, &addr); if (set_ip_config_common (manager, config_dict, NM_PPP_IP6_CONFIG_INTERFACE, NULL)) { @@ -1064,8 +1068,14 @@ nm_ppp_manager_start (NMPPPManager *manager, } pppoe_setting = nm_connection_get_setting_pppoe (connection); - if (pppoe_setting) + if (pppoe_setting) { + /* We can't modify the applied connection's setting, make a copy */ + if (!s_ppp_created) { + s_ppp = NM_SETTING_PPP (nm_setting_duplicate ((NMSetting *) s_ppp)); + s_ppp_created = TRUE; + } pppoe_fill_defaults (s_ppp); + } adsl_setting = (NMSettingAdsl *) nm_connection_get_setting (connection, NM_TYPE_SETTING_ADSL); diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c index 41ffa27d..39e981f9 100644 --- a/src/settings/plugins/ifcfg-rh/reader.c +++ b/src/settings/plugins/ifcfg-rh/reader.c @@ -358,7 +358,7 @@ read_full_ip4_address (shvarFile *ifcfg, { char *ip_tag, *prefix_tag, *netmask_tag, *gw_tag; char *ip = NULL; - long prefix = 0; + int prefix = 0; gboolean success = FALSE; char *value; guint32 tmp; @@ -395,47 +395,40 @@ read_full_ip4_address (shvarFile *ifcfg, /* Prefix */ value = svGetValue (ifcfg, prefix_tag, FALSE); if (value) { - errno = 0; - prefix = strtol (value, NULL, 10); - if (errno || prefix < 0) { + prefix = _nm_utils_ascii_str_to_int64 (value, 10, 0, 32, -1); + if (prefix < 0) { g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, "Invalid IP4 prefix '%s'", value); g_free (value); goto done; } g_free (value); - } - - /* Fall back to NETMASK if no PREFIX was specified */ - if (prefix == 0) { + } else { + /* Fall back to NETMASK if no PREFIX was specified */ if (!read_ip4_address (ifcfg, netmask_tag, &value, error)) goto done; if (value) { inet_pton (AF_INET, value, &tmp); prefix = nm_utils_ip4_netmask_to_prefix (tmp); g_free (value); - } - } - - if (prefix == 0 && base_addr) - prefix = nm_ip_address_get_prefix (base_addr); - - /* Try to autodetermine the prefix for the address' class */ - if (prefix == 0) { - if (inet_pton (AF_INET, ip, &tmp) == 1) { - prefix = nm_utils_ip4_get_default_prefix (tmp); + } else { + if (base_addr) + prefix = nm_ip_address_get_prefix (base_addr); + else { + /* Try to autodetermine the prefix for the address' class */ + if (inet_pton (AF_INET, ip, &tmp) == 1) { + prefix = nm_utils_ip4_get_default_prefix (tmp); - PARSE_WARNING ("missing %s, assuming %s/%ld", prefix_tag, ip, prefix); + PARSE_WARNING ("missing %s, assuming %s/%d", prefix_tag, ip, prefix); + } else { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "Missing IP4 prefix"); + goto done; + } + } } } - /* Validate the prefix */ - if (prefix == 0) { - g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, - "Missing IP4 prefix"); - goto done; - } - *out_address = nm_ip_address_new (AF_INET, ip, prefix, error); if (*out_address) success = TRUE; @@ -717,7 +710,7 @@ parse_full_ip6_address (shvarFile *ifcfg, { char **list; char *ip_val, *prefix_val; - long prefix; + int prefix; gboolean success = FALSE; g_return_val_if_fail (addr_str != NULL, FALSE); @@ -737,9 +730,8 @@ parse_full_ip6_address (shvarFile *ifcfg, prefix_val = list[1]; if (prefix_val) { - errno = 0; - prefix = strtol (prefix_val, NULL, 10); - if (errno || prefix <= 0 || prefix > 128) { + prefix = _nm_utils_ascii_str_to_int64 (prefix_val, 10, 0, 128, -1); + if (prefix < 0) { g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, "Invalid IP6 prefix '%s'", prefix_val); goto error; diff --git a/src/tests/test-general.c b/src/tests/test-general.c index b2512590..a45357e8 100644 --- a/src/tests/test-general.c +++ b/src/tests/test-general.c @@ -98,6 +98,122 @@ test_nm_utils_ip6_address_clear_host_address (void) g_rand_free (r); } +/*****************************************************************************/ + +static void +_test_same_prefix (const char *a1, const char *a2, guint8 plen) +{ + struct in6_addr a = *nmtst_inet6_from_string (a1); + struct in6_addr b = *nmtst_inet6_from_string (a2); + + g_assert (nm_utils_ip6_address_same_prefix (&a, &b, plen)); +} + +static void +test_nm_utils_ip6_address_same_prefix (void) +{ + guint n, i; + const guint N = 100; + union { + guint8 ptr[sizeof (struct in6_addr)]; + struct in6_addr val; + } a, b, addrmask, addrmask_bit; + guint8 plen; + + /* test#1 */ + for (n = 0; n < N; n++) { + gboolean is_same = n < N / 2; + gboolean result; + + nmtst_rand_buf (NULL, a.ptr, sizeof (a)); + nmtst_rand_buf (NULL, b.ptr, sizeof (b)); +again_plen: + plen = nmtst_get_rand_int () % 129; + if (!is_same && NM_IN_SET (plen, 0, 128)) + goto again_plen; + + if (plen < 128) { + for (i = 0; (i + 1) * 8 <= plen; i++) + b.ptr[i] = a.ptr[i]; + if (plen % 8) { + guint8 mask; + + g_assert (i < sizeof (a)); + mask = ~((1 << (8 - (plen % 8))) - 1); + b.ptr[i] = (a.ptr[i] & mask) | (b.ptr[i] & ~mask); + if (!is_same) { + mask = (1 << (8 - (plen % 8))); + b.ptr[i] = (b.ptr[i] & ~mask) | ~(b.ptr[i] & mask); + } + } else if (!is_same) { + g_assert (i > 0); + + b.ptr[i - 1] = (b.ptr[i - 1] & ~0x1) | ~(b.ptr[i - 1] & 0x1); + } + } else + b = a; + + result = nm_utils_ip6_address_same_prefix (&a.val, &b.val, plen); + g_assert (result == is_same); + g_assert (NM_IN_SET (result, TRUE, FALSE)); + } + + /* test#2 */ + for (n = 0; n < N; n++) { + nmtst_rand_buf (NULL, a.ptr, sizeof (a)); + nmtst_rand_buf (NULL, b.ptr, sizeof (b)); + plen = nmtst_get_rand_int () % 129; + + memset (addrmask.ptr, 0xFF, sizeof (addrmask)); + nm_utils_ip6_address_clear_host_address (&addrmask.val, &addrmask.val, plen); + + for (i = 0; i < sizeof (a); i++) + b.ptr[i] = (a.ptr[i] & addrmask.ptr[i]) | (b.ptr[i] & ~addrmask.ptr[i]); + + g_assert (nm_utils_ip6_address_same_prefix (&a.val, &b.val, plen) == TRUE); + } + + /* test#3 */ + for (n = 0; n < N; n++) { + gboolean reached = FALSE; + + nmtst_rand_buf (NULL, a.ptr, sizeof (a)); + nmtst_rand_buf (NULL, b.ptr, sizeof (b)); + plen = nmtst_get_rand_int () % 129; + + if (!plen) + continue; + + memset (addrmask.ptr, 0xFF, sizeof (addrmask)); + nm_utils_ip6_address_clear_host_address (&addrmask.val, &addrmask.val, plen); + + memset (addrmask_bit.ptr, 0xFF, sizeof (addrmask_bit)); + nm_utils_ip6_address_clear_host_address (&addrmask_bit.val, &addrmask_bit.val, plen - 1); + + for (i = 0; i < sizeof (a); i++) + b.ptr[i] = (a.ptr[i] & addrmask.ptr[i]) | (b.ptr[i] & ~addrmask.ptr[i]); + + /* flip the last bit. */ + for (i = 0; i < sizeof (a); i++) { + guint8 mask = addrmask.ptr[i] ^ addrmask_bit.ptr[i]; + if (mask) { + g_assert (!reached); + g_assert (nm_utils_is_power_of_two (mask)); + reached = TRUE; + b.ptr[i] = (b.ptr[i] & ~mask) | ~(b.ptr[i] & mask); + } + } + g_assert (reached); + + g_assert (nm_utils_ip6_address_same_prefix (&a.val, &b.val, plen) == FALSE); + } + + /* test#4 */ + _test_same_prefix ("::", "::1", 10); + _test_same_prefix ("abcd::", "abcd::1", 10); +} + +/*****************************************************************************/ static void test_nm_utils_log_connection_diff (void) @@ -1257,6 +1373,7 @@ main (int argc, char **argv) g_test_add_func ("/general/nm_utils_strbuf_append", test_nm_utils_strbuf_append); g_test_add_func ("/general/nm_utils_ip6_address_clear_host_address", test_nm_utils_ip6_address_clear_host_address); + g_test_add_func ("/general/nm_utils_ip6_address_same_prefix", test_nm_utils_ip6_address_same_prefix); g_test_add_func ("/general/nm_utils_log_connection_diff", test_nm_utils_log_connection_diff); g_test_add_func ("/general/connection-match/basic", test_connection_match_basic); diff --git a/src/tests/test-ip4-config.c b/src/tests/test-ip4-config.c index 2b743c8c..9d38dc27 100644 --- a/src/tests/test-ip4-config.c +++ b/src/tests/test-ip4-config.c @@ -28,44 +28,6 @@ #include "nm-test-utils.h" -static void -addr_init (NMPlatformIP4Address *a, const char *addr, const char *peer, guint plen) -{ - memset (a, 0, sizeof (*a)); - g_assert (inet_pton (AF_INET, addr, (void *) &a->address) == 1); - if (peer) - g_assert (inet_pton (AF_INET, peer, (void *) &a->peer_address) == 1); - else - a->peer_address = a->address; - a->plen = plen; -} - -static void -route_new (NMPlatformIP4Route *route, const char *network, guint plen, const char *gw) -{ - guint n; - - g_assert (route); - memset (route, 0, sizeof (*route)); - g_assert (inet_pton (AF_INET, network, (void *) &n) == 1); - route->network = n; - route->plen = plen; - if (gw) { - n = 0; - g_assert (inet_pton (AF_INET, gw, (void *) &n) == 1); - route->gateway = n; - } -} - -static guint32 -addr_to_num (const char *addr) -{ - guint n; - - g_assert (inet_pton (AF_INET, addr, (void *) &n) == 1); - return n; -} - static NMIP4Config * build_test_config (void) { @@ -76,29 +38,29 @@ build_test_config (void) /* Build up the config to subtract */ config = nm_ip4_config_new (1); - addr_init (&addr, "192.168.1.10", "1.2.3.4", 24); + addr = *nmtst_platform_ip4_address ("192.168.1.10", "1.2.3.4", 24); nm_ip4_config_add_address (config, &addr); - - route_new (&route, "10.0.0.0", 8, "192.168.1.1"); + + route = *nmtst_platform_ip4_route ("10.0.0.0", 8, "192.168.1.1"); nm_ip4_config_add_route (config, &route); - route_new (&route, "172.16.0.0", 16, "192.168.1.1"); + route = *nmtst_platform_ip4_route ("172.16.0.0", 16, "192.168.1.1"); nm_ip4_config_add_route (config, &route); - nm_ip4_config_set_gateway (config, addr_to_num ("192.168.1.1")); + nm_ip4_config_set_gateway (config, nmtst_inet4_from_string ("192.168.1.1")); - nm_ip4_config_add_nameserver (config, addr_to_num ("4.2.2.1")); - nm_ip4_config_add_nameserver (config, addr_to_num ("4.2.2.2")); + nm_ip4_config_add_nameserver (config, nmtst_inet4_from_string ("4.2.2.1")); + nm_ip4_config_add_nameserver (config, nmtst_inet4_from_string ("4.2.2.2")); nm_ip4_config_add_domain (config, "foobar.com"); nm_ip4_config_add_domain (config, "baz.com"); nm_ip4_config_add_search (config, "blahblah.com"); nm_ip4_config_add_search (config, "beatbox.com"); - nm_ip4_config_add_nis_server (config, addr_to_num ("1.2.3.9")); - nm_ip4_config_add_nis_server (config, addr_to_num ("1.2.3.10")); + nm_ip4_config_add_nis_server (config, nmtst_inet4_from_string ("1.2.3.9")); + nm_ip4_config_add_nis_server (config, nmtst_inet4_from_string ("1.2.3.10")); - nm_ip4_config_add_wins (config, addr_to_num ("4.2.3.9")); - nm_ip4_config_add_wins (config, addr_to_num ("4.2.3.10")); + nm_ip4_config_add_wins (config, nmtst_inet4_from_string ("4.2.3.9")); + nm_ip4_config_add_wins (config, nmtst_inet4_from_string ("4.2.3.10")); return config; } @@ -116,12 +78,12 @@ test_subtract (void) const char *expected_route_dest = "8.7.6.5"; guint32 expected_route_plen = 8; const char *expected_route_next_hop = "192.168.1.1"; - guint32 expected_ns1 = addr_to_num ("8.8.8.8"); - guint32 expected_ns2 = addr_to_num ("8.8.8.9"); + guint32 expected_ns1 = nmtst_inet4_from_string ("8.8.8.8"); + guint32 expected_ns2 = nmtst_inet4_from_string ("8.8.8.9"); const char *expected_domain = "wonderfalls.com"; const char *expected_search = "somewhere.com"; - guint32 expected_nis = addr_to_num ("1.2.3.13"); - guint32 expected_wins = addr_to_num ("2.3.4.5"); + guint32 expected_nis = nmtst_inet4_from_string ("1.2.3.13"); + guint32 expected_wins = nmtst_inet4_from_string ("2.3.4.5"); guint32 expected_mss = 1400; guint32 expected_mtu = 1492; @@ -129,10 +91,10 @@ test_subtract (void) /* add a couple more things to the test config */ dst = build_test_config (); - addr_init (&addr, expected_addr, NULL, expected_addr_plen); + addr = *nmtst_platform_ip4_address (expected_addr, NULL, expected_addr_plen); nm_ip4_config_add_address (dst, &addr); - - route_new (&route, expected_route_dest, expected_route_plen, expected_route_next_hop); + + route = *nmtst_platform_ip4_route (expected_route_dest, expected_route_plen, expected_route_next_hop); nm_ip4_config_add_route (dst, &route); nm_ip4_config_add_nameserver (dst, expected_ns1); @@ -152,7 +114,7 @@ test_subtract (void) g_assert_cmpuint (nm_ip4_config_get_num_addresses (dst), ==, 1); test_addr = nm_ip4_config_get_address (dst, 0); g_assert (test_addr != NULL); - g_assert_cmpuint (test_addr->address, ==, addr_to_num (expected_addr)); + g_assert_cmpuint (test_addr->address, ==, nmtst_inet4_from_string (expected_addr)); g_assert_cmpuint (test_addr->peer_address, ==, test_addr->address); g_assert_cmpuint (test_addr->plen, ==, expected_addr_plen); @@ -161,9 +123,9 @@ test_subtract (void) g_assert_cmpuint (nm_ip4_config_get_num_routes (dst), ==, 1); test_route = nm_ip4_config_get_route (dst, 0); g_assert (test_route != NULL); - g_assert_cmpuint (test_route->network, ==, addr_to_num (expected_route_dest)); + g_assert_cmpuint (test_route->network, ==, nmtst_inet4_from_string (expected_route_dest)); g_assert_cmpuint (test_route->plen, ==, expected_route_plen); - g_assert_cmpuint (test_route->gateway, ==, addr_to_num (expected_route_next_hop)); + g_assert_cmpuint (test_route->gateway, ==, nmtst_inet4_from_string (expected_route_next_hop)); g_assert_cmpuint (nm_ip4_config_get_num_nameservers (dst), ==, 2); g_assert_cmpuint (nm_ip4_config_get_nameserver (dst, 0), ==, expected_ns1); @@ -198,7 +160,7 @@ test_compare_with_source (void) b = nm_ip4_config_new (2); /* Address */ - addr_init (&addr, "1.2.3.4", NULL, 24); + addr = *nmtst_platform_ip4_address ("1.2.3.4", NULL, 24); addr.source = NM_IP_CONFIG_SOURCE_USER; nm_ip4_config_add_address (a, &addr); @@ -206,7 +168,7 @@ test_compare_with_source (void) nm_ip4_config_add_address (b, &addr); /* Route */ - route_new (&route, "10.0.0.0", 8, "192.168.1.1"); + route = *nmtst_platform_ip4_route ("10.0.0.0", 8, "192.168.1.1"); route.source = NM_IP_CONFIG_SOURCE_USER; nm_ip4_config_add_route (a, &route); @@ -230,7 +192,7 @@ test_add_address_with_source (void) a = nm_ip4_config_new (1); /* Test that a higher priority source is not overwritten */ - addr_init (&addr, "1.2.3.4", NULL, 24); + addr = *nmtst_platform_ip4_address ("1.2.3.4", NULL, 24); addr.source = NM_IP_CONFIG_SOURCE_USER; nm_ip4_config_add_address (a, &addr); @@ -270,7 +232,7 @@ test_add_route_with_source (void) a = nm_ip4_config_new (1); /* Test that a higher priority source is not overwritten */ - route_new (&route, "1.2.3.4", 24, "1.2.3.1"); + route = *nmtst_platform_ip4_route ("1.2.3.4", 24, "1.2.3.1"); route.source = NM_IP_CONFIG_SOURCE_USER; nm_ip4_config_add_route (a, &route); diff --git a/src/tests/test-route-manager.c b/src/tests/test-route-manager.c index b32775da..c753174d 100644 --- a/src/tests/test-route-manager.c +++ b/src/tests/test-route-manager.c @@ -906,13 +906,13 @@ fixture_teardown (test_fixture *fixture, gconstpointer user_data) /*****************************************************************************/ void -init_tests (int *argc, char ***argv) +_nmtstp_init_tests (int *argc, char ***argv) { nmtst_init_assert_logging (argc, argv, "WARN", "ALL"); } void -setup_tests (void) +_nmtstp_setup_tests (void) { g_test_add ("/route-manager/ip4", test_fixture, NULL, fixture_setup, test_ip4, fixture_teardown); g_test_add ("/route-manager/ip6", test_fixture, NULL, fixture_setup, test_ip6, fixture_teardown); diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c index cbc7c69d..2945ad34 100644 --- a/src/vpn-manager/nm-vpn-connection.c +++ b/src/vpn-manager/nm-vpn-connection.c @@ -1387,11 +1387,11 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict) if (g_variant_lookup (dict, NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, "u", &u32)) address.plen = u32; - if (address.address && address.plen) { + if (address.address && address.plen && address.plen <= 32) { address.source = NM_IP_CONFIG_SOURCE_VPN; nm_ip4_config_add_address (config, &address); } else { - _LOGE ("invalid IP4 config received!"); + _LOGW ("invalid IP4 config received!"); g_object_unref (config); nm_vpn_connection_config_maybe_complete (self, FALSE); return; @@ -1439,6 +1439,9 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict) route.metric = route_metric; route.source = NM_IP_CONFIG_SOURCE_VPN; + if (route.plen > 32) + break; + /* 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 @@ -1448,7 +1451,7 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict) nm_ip4_config_add_route (config, &route); break; default: - _LOGW ("VPN connection: received invalid IPv4 route"); + break; } g_variant_unref (v); } @@ -1521,11 +1524,11 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict) if (g_variant_lookup (dict, NM_VPN_PLUGIN_IP6_CONFIG_PREFIX, "u", &u32)) address.plen = u32; - if (!IN6_IS_ADDR_UNSPECIFIED (&address.address) && address.plen) { + if (!IN6_IS_ADDR_UNSPECIFIED (&address.address) && address.plen && address.plen <= 128) { address.source = NM_IP_CONFIG_SOURCE_VPN; nm_ip6_config_add_address (config, &address); } else { - _LOGE ("invalid IP6 config received!"); + _LOGW ("invalid IP6 config received!"); g_object_unref (config); nm_vpn_connection_config_maybe_complete (self, FALSE); return; @@ -1565,10 +1568,11 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict) memset (&route, 0, sizeof (route)); - if (!ip6_addr_from_variant (dest, &route.network)) { - _LOGW ("VPN connection: received invalid IPv6 dest address"); + if (!ip6_addr_from_variant (dest, &route.network)) + goto next; + + if (prefix > 128) goto next; - } route.plen = prefix; ip6_addr_from_variant (next_hop, &route.gateway); |