Commit Graph

387 Commits

Author SHA1 Message Date
Thomas Haller
3cda2df12b config: add support for per-device configuration to NetworkManager.conf
Add a new [device*] section to NetworkManager.conf. This works similar
like the default connection settings in [connection*].

This will allow us to express per-device configuration in NetworkManager.conf
in our familar style.

Later, via NMConfig's write API it will be possible to make settings
accessible via D-Bus and persist them in NetworkManager-intern.conf.
This way, the user can both edit configuration snippets and modify
them via D-Bus, and also support installing default configuration
from the package.

In a way, a [device*] setting is similar to networkd's link files.
The match options is all encoded in the match-device specs.
One difference is, that the resulting setting can be merged together
by multiple section by partially overwriting them. This makes it
more flexible and allows for example to drop a configuration snippet
that only sets one property, while the rest can be merged from different
snippets.
2016-06-30 08:07:35 +02:00
Lubomir Rintel
8b4494598d cli/device: add modify command
It modifies the applied connection using the Reapply API.
2016-06-29 20:28:42 +02:00
Lubomir Rintel
c3422e917d man: update the nmcli manual for new connection add syntax
It allows us to clean up the nmcli "c add" section considerably.

We list the old-fashioned aliases in a separate section that applies to both
"nmcli c add" and "nmcli c modify".

The section is now nicely cross-linked with nm-settings in HTML
rendering.
2016-06-21 18:40:22 +02:00
Lubomir Rintel
057d477b2a man: turn the manual page cross-references into links
This improves the HTML rendering.

But it also causes a lot of non-resolvable linkends warning when rendering a
separate manual pages into roff/mman. The messages are harmless, but still
a bit ugly.
2016-06-21 18:40:13 +02:00
Thomas Haller
4143fbde17 logging: enable logging domain VPN_PLUGIN up to level <info>
The logging domain VPN_PLUGIN controlls logging of the VPN plugins.
Especially at verbose levels <debug> and <trace>, the plugins might
reveal sensitive information in the logging.

Thus, this level should not be enabled by a

  $ nmcli logging general level DEBUG domains ALL

It should only be enabled when requested explicitly.

  $ nmcli logging general level DEBUG domains ALL,VPN_PLUGIN:DEBUG

Previously, the special level VPN_PLUGIN was entirely excluded from
ALL and DEFAULT domains and it was entirely disabled by default. That
is however to strict, as it completely silences the VPN plugins by
defult. Now, enable them by default up to level INFO.

VPN plugins should take care that they don't reveal sensitive
information at levels <info> (LOG_NOTICE) and higher (less verbose).
For more verbose levels they may print passwords, but that should
still be avoided as far as possible.
2016-06-17 08:19:44 +02:00
Thomas Haller
718fd22436 dns: follow resolv.conf if it is a symlink for 'rc-manager=file'
Until before 1.2.0, NetworkManager would always write resolv.conf as file, but
if /etc/resolv.conf was a symlink, it would follow the link instead of
replacing it with a file ([1], [2]).

With 1.2.0, we initially dropped that behavior and added a new 'rc-manager=none'
which writes resolv.conf to /var/run/NetworkManager and symlinks resolv.conf [3].
In case resolv.conf being already a symlink to another target, it would
not be replaced [4].
Later, we added 'rc-manager=file', which always writes /etc/resolv.conf as
file [5].

With 1.4.0, we will rename 'rc-manager=none' to 'rc-manager=symlink' [6].

This commit now fixes 'rc-manager=file' to restores the pre-1.2 behavior
and follow symlinks.

[1] 5761e328b8
[2] https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/324233
[3] 4805be2ed2
[4] 583568e12f
[5] 288799713d
[6] cd6a469668

https://github.com/NetworkManager/NetworkManager/pull/7
2016-06-03 11:50:02 +02:00
Thomas Haller
d91f3b35d7 auth: fix get_permissions() D-Bus call for settings-modify-global-dns 2016-06-01 22:04:37 +02:00
Thomas Haller
0acee97220 config,dns: support Reload flags to specify that only parts should be reloaded
Support 3 new flags for Reload:

  - 0x01 (CONF): reload the configuration from disk
  - 0x02 (DNS_RC): write DNS configuration to resolv.conf
  - 0x04 (DNS_FULL): restart DNS plugin

Omitting all flags is the same as reloading everything, thus SIGHUP.
2016-06-01 19:06:34 +02:00
Thomas Haller
1d0e0eeffd manager: add Reload() D-Bus command
Add new Reload D-Bus command to reload NetworkManager configuration.

For now, this is like sending SIGHUP to the process. There are several
advantages here:

  - it is guarded via PolicyKit authentication while signals
    can only be sent by root.

  - the user can wait for the reload to be complete instead of sending
    an asynchronous signal. For now, we operation completes after
    nm_config_reload() returns, but later we could delay the response
    further until specific parts are fully reloaded.

  - SIGHUP reloads everything including re-reading configuration from
    disk while SIGUSR1 reloads just certain parts such as writing out DNS
    configuration anew.
    Now, the Reload command has a flags argument which is more granular
    in selecting parts which are to be reloaded. For example, via
    signals the user can:

      1) send SIGUSR1: this writes out the DNS configuration to
         resolv.conf and possibly reloads other parts without
         re-reading configuration and without restarting the DNS plugin.
      2) send SIGHUP: this reloads configuration from disk,
         writes out resolv.conf and restarts the DNS plugin.

    There is no way, to only restart the DNS plugin without also reloading
    everything else.
2016-06-01 19:06:34 +02:00
Thomas Haller
ec89bd5171 man: update documenting signals in NetworkManager manual 2016-06-01 19:06:34 +02:00
Thomas Haller
7f3ea16533 logging: add new logging domain LOGD_VPN_PLUGIN
This logging domain will be used to enable debugging of the VPN plugins.

However, the plugins might expose sensitive data in this mode, so exclude
the new domain from "LOGD_ALL".
2016-05-24 19:39:30 +02:00
Thomas Haller
51791c4772 dns: add configure option "--with-config-dns-rc-manager-default" for default of main.rc-manager
Downstream might want to choose a different default value for
main.rc-manager setting (and it can does so, by compiling with
explicit resolvconf or netconfig support).

Make the default configurable at build-time and also embed it into
the manual page of "NetworkManager.conf".

https://bugzilla.redhat.com/show_bug.cgi?id=1337222
2016-05-23 21:49:42 +02:00
Thomas Haller
7eb9731fac man: fix minor style issue in man NetworkManager.conf
Previously, it would read:

  "This implies rc-managerunmanaged"
2016-05-23 08:50:14 +02:00
Thomas Haller
1f5c056700 man: describe logging domain "SYSTEMD" in man NetworkManager.conf 2016-05-17 19:57:55 +02:00
Thomas Haller
7d0119d249 man: minor rewording in NetworkManager.conf about connection.stop-match 2016-05-13 15:06:02 +02:00
Thomas Haller
9f29cc13e7 man: clearify rc-manager symlink setting in NetworkManager.conf 2016-04-30 03:16:41 +02:00
Francesco Giudici
3c67a1ec5e cli: remove version check against NM
When performing NM package upgrade the new version of nmcli will be immediately
available while NM daemon will not, as it would not restart in order to avoid
to disrupt connectivity. This could create issues with tools leveraging
on nmcli output (till reboot). As apart from this case it is very unlikely
that a user can have this nmcli / NM daemon version mismatch situation,
the check could cause more harm than benefit in real user case
scenarios.

https://bugzilla.redhat.com/show_bug.cgi?id=1291785
2016-04-28 09:35:20 +02:00
Thomas Haller
2789345d5b dns: add new rc-manager=unmanaged
The following settings are effectively identical:

    dns=none,rc-manager=*any*
    dns=none,rc-manager=unmanaged
    dns=default,rc-manager=unmanaged

The new setting is only there for completeness and only
makes sense for a dns plugin.
2016-04-26 13:58:28 +02:00
Thomas Haller
cd6a469668 dns: rename "rc-manager=none" to "symlink"
We already have "rc-manager=file", rename "rc-manager=none" to "symlink"
because that better describes what it is actually doing. Of course, the
old name is still accepted.
2016-04-26 13:58:27 +02:00
Beniamino Galvani
916e598f56 man: add missing comma in NetworkManager.xml 'see also' section 2016-04-16 16:35:41 +02:00
Lubomir Rintel
b349603959 man: clarify the license of the manuals
It's included from GFDL 1.1+ document; it should be GFDL too.
2016-04-08 13:10:47 +02:00
Lubomir Rintel
530af7009e man: don't template NetworkManager.conf.xml
Use XML entities instead.
2016-04-08 13:10:47 +02:00
Lubomir Rintel
22fb039435 man: remove work-in-progress warning 2016-04-08 13:10:47 +02:00
Lubomir Rintel
f73649db5c man: fix prompt and user input formatting 2016-04-08 13:10:47 +02:00
Lubomir Rintel
37271b6827 man: fix nmcli-examples synopsis formatting 2016-04-08 13:10:47 +02:00
Colin Walters
c976f983eb build: make man page hardlinks conditional on having man pages
Otherwise we fail since they don't exist.  We have to carefully
implement an "or" condition for the cases of having prebuilt manpages
in a tarball, vs actually building them from source.
2016-04-05 18:15:38 +02:00
Lubomir Rintel
0fc0cc68fc man: move nmcli-examples to section 7
It really is not a configuration file and doesn't belong to section 5.
2016-04-05 14:37:51 +02:00
Lubomir Rintel
20300fd7db man: make the templated manuals a bit more consistent with the rest
Use the docbook tags wherever appropriate.
2016-04-05 14:37:51 +02:00
Lubomir Rintel
60582bf443 man: include version from a XML entity
This way it's consistently used across all manual page without a need
for XSL templating.

Also, the entities file could in future possibly be used to template the
build-time configurables such as filesystem paths or bug tracker URL.
2016-04-05 14:37:51 +02:00
Lubomir Rintel
8035b5b03b man: drop dates
It's injected from the makefile, but not even used consistently or included in
the resulting render of manual page. Which is good, otherwise we'd have a
non-reproducible build with possible multilib conflicts if rendered around
midnight.
2016-04-05 14:37:50 +02:00
Lubomir Rintel
5a4c54c793 man: rename some variables
No functional change, just a readability improvement. No need to prefix
the variables with docbook_ and docbook_generated -- all manual pages
are generated from docbook.
2016-04-05 14:37:50 +02:00
Lubomir Rintel
f457f4ef83 man: drop nm-system-settings.conf.5
It's long deprecated and the last roff manual page.

Instead, NetworkManager.conf(5) documents the file. Let's just link that
one.
2016-04-05 14:37:50 +02:00
Lubomir Rintel
8a9350f3b0 man: convert nm-online(1) manual to docbook refentry 2016-04-05 14:37:50 +02:00
Lubomir Rintel
5216307b5a man: convert nmtui(1) manual to docbook refentry 2016-04-05 14:37:50 +02:00
Lubomir Rintel
b19e4d37b6 man: convert nmcli(1) manual to docbook refentry 2016-04-05 14:37:50 +02:00
Lubomir Rintel
1ab89ecf85 man/nmcli-examples: specify a language for the listing 2016-04-01 12:29:42 +02:00
Lubomir Rintel
159c95cbe2 man/nmcli-examples: no extra breaks around listings
Looks bad in HTML.
2016-04-01 12:29:20 +02:00
Lubomir Rintel
f446afbfad man/nmcli-examples: mark user input in editor
For the extra viewing pleasure.
2016-04-01 12:13:52 +02:00
Lubomir Rintel
529f744ec9 man/nmcli-examples: wrap screen output at column 75
This ensures it doesn't generate excessively long lines and roughly corresponds to what actually be on a screen.
Or a teletype typewriter. In 1969.
2016-04-01 12:13:52 +02:00
Lubomir Rintel
14421ac4aa man/nmcli-examples: structure the screen examples better
The synopsis tag is not appropriate and doesn't look well in HTML and
inserts unnecessary line breaks in roff.

The <userinput> in <screen> suits this perfectly on the other hand.
2016-04-01 12:13:52 +02:00
Thomas Haller
05f17ace71 man: fix typo in NetworkManager.conf manual and 10-ifcfg-rh-routes.sh comment 2016-03-31 20:46:52 +02:00
Thomas Haller
4db69c5b52 man: discourage use of monitor-connection-files=yes in NetworkManager.conf manual
https://bugzilla.gnome.org/show_bug.cgi?id=764402
Related: https://bugzilla.redhat.com/show_bug.cgi?id=754677
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1272617
2016-03-31 14:51:24 +02:00
Beniamino Galvani
a0206a4f5e man,libnm-core: fix typos 2016-03-30 12:03:36 +02:00
Lubomir Rintel
e691f01e01 cli: make the *-slave type option parsing out of the common path
We actually don't want to understand these options unless the legacy
*-slave types are used. The properties should be used directly instead.

https://bugzilla.gnome.org/show_bug.cgi?id=748302

This basically undoes most of what has been done in  commit 00e0fffea2.
2016-03-29 14:20:09 +02:00
Beniamino Galvani
f67bf52046 man: use replace <programlisting> with <synopsis>
It makes more sense and actually looks good in rendered HTML.

[lkundrak@v3.sk: wrote the commit message]
2016-03-26 11:28:19 +01:00
Thomas Haller
288799713d dns: add new "rc-manager=file" 2016-03-23 09:09:06 +01:00
Thomas Haller
7f98169cff build: dist $(docbook_generated_man_pages)
Otherwise, the pre-generated manual pages from docbook
are not part of the source tarball.
2016-03-21 13:31:40 +01:00
Beniamino Galvani
c885fd55e8 man: update version number and dates in manual pages
Bump NM version number to 1.2 and add the project name to non-XML
pages. Also, update the dates to the date of the last non-trivial
change and update their format to YYYY-MM-DD, as specified by 'man
man-pages'.
2016-03-09 10:11:27 +01:00
Beniamino Galvani
89d1e46615 dhcp/systemd: enable DHCPv6 support
Until now the internal DHCP client could start a DHCPv6 transaction
but was not able to parse the lease and pass the information back to
the core. Add the missing glue code to make this work.

https://bugzilla.gnome.org/show_bug.cgi?id=762432
2016-03-03 11:29:27 +01:00
Thomas Haller
24582b65e1 logging: change logging format to drop "[file:line] func():" part
Choose a new logging format.

- the logging format must not be configurable and it must be the
  same for all backends. It is neat that journal supports additional
  fields, but an average user still posts the output of plain
  journalctl, without "--output verbose" (which would also be hard
  to read).
  Also, we get used to a certain logging format, so having different
  formats is confusing. If one format is better then another, it should
  be used for all backends: syslog, journal and debug.
  The only question is, what is the best format.

- the timestamp: I find it useful to see how much time between two
  events passed. The timestamp printed by syslog doesn't have sufficient
  granularity, and the internal journal fields are not readily available.
  We used to print the timestamps for <error>, <debug> and <trace>,
  but ommited them for <info> and <warn> levels. We now print them for
  all levels, which has a uniform alignment.

- the location: the "[file:line] func():" part is mostly redundant
  and results in wide lines. It also causes a misalignment of the
  logging lines, or -- as I recently added alignment of the location --
  it results in awkward whitespace and truncation.
  But the location is really just necessary because our logging messages
  are bad:
    "<debug> [1456397604.038226] (9) 11-dhclient succeeded"
  The solution to this is not
    "<debug> [1456397604.038226] [nm-dispatcher.c:358] dispatcher_results_process(): (9) 11-dhclient succeeded"
  but a properly worded message:
    "<debug> [1456397604.038226] dispatcher: request #9, script 11-dhclient succeeded"

- logging-message: we need to write better logging messages.
  I like some form of "tags" that are easy to grep:
    "platform: signal: link changed: 4: ..."
  Downside is, that this is not nice to read as a full sentence.
  So, especially for <info> and <warn> logging, more human readable
  messages are better.
  We should find a compromise, where the log message explains what
  happens, but is still concise and contains patterns that are easy
  to grep and identify visually.

https://mail.gnome.org/archives/networkmanager-list/2016-February/msg00077.html
2016-03-01 15:20:57 +01:00