Commit graph

978 commits

Author SHA1 Message Date
Francesco Giudici
bcababf612 libnm-core: docs update requires also settings-docs.c.in update
Fixes: c6e1b3abc0
2018-01-12 15:20:23 +01:00
Beniamino Galvani
207eb3266f all: add more meaningful error code for unsupported IP method
Add a new device state reason code for unsupported IP method. It is
returned, for example, when users select manual IP configuration for
WWAN connections:

 # nmcli connection mod Gsm ipv4.method manual ipv4.address 1.2.3.4/32
 # nmcli connection up Gsm
 Error: Connection activation failed: The selected IP method is not
 supported

compared to the old:

 Error: Connection activation failed: IP configuration could not be
 reserved (no available address, timeout, etc.)

Note that we could instead fail the connection validation if the
method is not supported by the connection type, but adding such
limitation now could make existing connections invalid.

https://bugzilla.redhat.com/show_bug.cgi?id=1459529
(cherry picked from commit aa820e9386)
2017-12-21 10:07:12 +01:00
Beniamino Galvani
8a570a41cf device: add a new state-reason for DAD failures
(cherry picked from commit 12a49cbdc7)
2017-12-21 10:07:07 +01:00
Thomas Haller
7fb865947c cli: avoid out-of-bounds-read for show_device_info()
Probably not critical, because it will still include
the terminating NULL, and just continue to fill the
temporary buffer with static addresses.

Found by coverity.

Fixes: bfb9fd0d2f
(cherry picked from commit c274b565a6)
2017-12-12 11:21:05 +01:00
Lubomir Rintel
81967af3fc clients: add tc tfilter support
What works:

  nmcli c add con-name dum0 ifname dum0 type dummy \
      tc.tfilters 'parent 1234: matchall action drop, parent ffff: matchall action drop'
  nmcli c modify dum0 -tc.tfilters 'parent ffff: matchall action drop'
  nmcli c modify dum0 +tc.tfilters 'parent ffff: matchall action simple sdata Hello'

(cherry picked from commit 3261820004)
2017-12-11 19:43:40 +01:00
Lubomir Rintel
457a17ae83 libnm-core: add traffic filter support to NMSettingTCConfig
(cherry picked from commit e035cb7be0)
2017-12-11 19:38:37 +01:00
Lubomir Rintel
47e5e3ba7d clients: add tc qdisc support
What works:

  nmcli c add con-name dum0 ifname dum0 type dummy \
      tc.qdiscs 'ingress, root pfifo_fast'
  nmcli c modify dum0 -tc.qdiscs 'root pfifo_fast'
  nmcli c modify dum0 +tc.qdiscs 'root handle 666: fq_codel'

(cherry picked from commit 92f8f30d47)
2017-12-11 19:06:31 +01:00
Lubomir Rintel
93b3fc8c57 libnm-core: add NMSettingTCConfig with qdisc support
Currently is only able to hold the queueing disciplines.

(cherry picked from commit da13c7a1a4)
2017-12-11 19:04:02 +01:00
Thomas Haller
fae720edc4 cli: fix integer types in get-functions to match libnm origin
The num/i variables are initialized from libnm API and used
back at them. The integer types should match.

(cherry picked from commit e7d18548b9)
2017-12-08 16:52:35 +01:00
Francesco Giudici
07b1e80803 cli: add support to TeamPort link watchers
(cherry picked from commit c5228b8a83)
2017-12-08 04:00:08 +01:00
Francesco Giudici
704f0acb77 libnm-core: team-port: expose the new link-watchers property
It will allow explicit configuration of link-watchers in the team port
configuration.

(cherry picked from commit f094837d73)
2017-12-08 04:00:08 +01:00
Francesco Giudici
2eacf89f38 cli: add support to Team link watchers
(cherry picked from commit 4657390d45)
2017-12-08 04:00:07 +01:00
Francesco Giudici
466f8e0dd5 libnm-core: team: expose the new link-watchers property
It will allow explicit configuration of link-watchers in the team
configuration.

(cherry picked from commit ca816ae10e)
2017-12-08 04:00:07 +01:00
Francesco Giudici
5b9f4202d6 cli: add team-port properties
(cherry picked from commit 81527f1a09)
2017-12-08 02:10:27 +01:00
Francesco Giudici
7d9553da50 libnm-core: add explicit team properties to NMSettingTeamPort
(cherry picked from commit 1c99d379eb)
2017-12-08 02:10:22 +01:00
Francesco Giudici
316a6ea3be cli: add team properties
(cherry picked from commit e1220c933f)
2017-12-08 02:08:57 +01:00
Francesco Giudici
b42ad17e2d libnm-core: add explicit team properties to NMSettingTeam
(cherry picked from commit 9715969b77)
2017-12-08 02:08:49 +01:00
Beniamino Galvani
e48b9300bd cli: don't print warnings when completing arguments
$ nmcli con add type wifi ifname wlan0 \
     wifi-sec.key-mgmt none \
     wifi-sec.wep-key0 $ascii_key \
     ssid <TAB>

 completes the line with:

  "Info:\ WEP\ key\ is\ guessed\ to\ be\ of\ '2\ \(passphrase\)'"

The environment warning function should not emit warning when
completing arguments.

(cherry picked from commit 5e239d2c04)
2017-12-01 14:29:45 +01:00
Beniamino Galvani
967d5d4059 clients: fix display value for dns-options
We must show the default value "(default)" when the list of
dns-options is initialized but empty.

(cherry picked from commit ca06f82371)
2017-12-01 00:02:30 +01:00
Beniamino Galvani
91a460c0b4 tui: fix creation of open Wi-Fi connections
Commit 6a4af482f0 ("nmtui: always create ethernet settings for VLAN
and wireless security for wifi.") changed nmtui to always add the
wireless security setting to the new connection, but without
initializing it. This leads to a crash that was fixed in 40fcf67a84
("tui: fix crash creating Wi-Fi connection").

There is an additional bug: connections without authentication can't
be saved because the wireless security setting has uninitialized
fields.

To fix this, revert both patches (the first partially) because the
previous code did the right thing as it added the setting only when
needed.

Fixes: 6a4af482f0

https://bugzilla.redhat.com/show_bug.cgi?id=1518167
(cherry picked from commit fead82f419)
2017-11-30 23:43:30 +01:00
Beniamino Galvani
66a728e8ac cli: exit from main loop after 'quit' editor command
When we stop processing the editor command loop (after a 'quit'
command) we must quit the GLib main loop.

https://bugzilla.redhat.com/show_bug.cgi?id=1517401
(cherry picked from commit 21cfeff777)
2017-11-29 11:06:07 +01:00
Beniamino Galvani
d23e050ef5 cli: do completion only when needed on 'nmcli con down'
$ nmcli connection down p
 path
 Connection 'p' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

Don't do completion when not requested.

(cherry picked from commit 021d797089)
2017-11-28 09:38:48 +01:00
Beniamino Galvani
604c7de1c7 cli: fix connection type completion
Don't show completion for all setting types but only for base ones.

Before:
 $ nmcli connection add type <TAB>
 802-11-olpc-mesh          ethernet                  ppp
 802-11-wireless           generic                   pppoe
 802-11-wireless-security  gsm                       proxy
 802-1x                    infiniband                serial
 802-3-ethernet            ip-tunnel                 team
 adsl                      ipv4                      team-port
 bluetooth                 ipv6                      tun
 bond                      macsec                    user
 bridge                    macvlan                   vlan
 bridge-port               olpc-mesh                 vpn
 cdma                      ovs-bridge                vxlan
 connection                ovs-interface             wifi
 dcb                       ovs-patch                 wifi-sec
 dummy                     ovs-port                  wimax

After:
 $ nmcli connection add type <TAB>
 802-11-olpc-mesh  cdma              macsec            team
 802-11-wireless   dummy             macvlan           tun
 802-3-ethernet    ethernet          olpc-mesh         vlan
 adsl              generic           ovs-bridge        vpn
 bluetooth         gsm               ovs-interface     vxlan
 bond              infiniband        ovs-port          wifi
 bridge            ip-tunnel         pppoe             wimax
(cherry picked from commit 60f57ebe4a)
2017-11-20 22:19:51 +01:00
Thomas Haller
ee77657727 clients: avoid crash in _complete_fcn_connection_master()
Found by coverity, but not a practical issue, because we
wouldn't actually call the function with text NULL.

(cherry picked from commit 8cb86d947c)
2017-11-15 18:13:34 +01:00
Thomas Haller
fc2894508e all: use nm_close() instead of close()
(cherry picked from commit 5b29c2e5b9)
2017-11-14 15:17:02 +01:00
Thomas Haller
e2e4cdd2c1 doc: fix type on documentation for NMSettingOvsPort:bond-updelay
Fixes: 8a1ae40a80

https://bugzilla.gnome.org/show_bug.cgi?id=789880
(cherry picked from commit 5986d92053)
2017-11-06 12:27:21 +01:00
Beniamino Galvani
61b666902b cli: enable secret-agent only after activation
Change the activation procedure for connections that require secrets
in the following way:

 - nmcli creates a secret-agent and leaves it disabled so that
   incoming requests are queued
 - nmcli calls ActivateConnection()
 - when the method returns success, the secret-agent gets enabled and
   all queued requests are processed

When the user activates a connection which is already auto-activating,
NM will deactivate the current active-connection and will call
CancelGetSecrets() for it before the new ActivateConnection()
returns. In this way, when the secret-agent is enabled by nmcli, we
have the guarantee that there aren't any queued requests for
the deactivating connections.

https://bugzilla.redhat.com/show_bug.cgi?id=1438476
2017-11-02 15:25:59 +01:00
Beniamino Galvani
a25db64f7c clients: implement CancelGetSecrets() secret-agent API 2017-11-02 15:25:59 +01:00
Thomas Haller
2730dc60de all: move setting 802-1x.auth-retries to connection.auth-retries
The number of authentication retires is useful also for passwords aside
802-1x settings. For example, src/devices/wifi/nm-device-wifi.c also has
a retry counter and uses a hard-coded value of 3.

Move the setting, so that it can be used in general. Although it is still
not implemented for other settings.

This is an API and ABI break.
2017-11-02 11:41:01 +01:00
Thomas Haller
89e518db5a libnm,cli,ifcfg-rh: add NMSetting8021x:auth-retries property 2017-10-31 19:35:33 +01:00
Thomas Haller
ef60cf890f docs: clearify documentation of connection.autoconnect-retries 2017-10-31 19:35:33 +01:00
Thomas Haller
d7d9759d56 docs: fix typo in NMSettingBridge:group-forward-mask doc
Fixes: 17ec3aef2f

https://bugzilla.gnome.org/show_bug.cgi?id=789662
2017-10-30 21:49:50 +01:00
Lubomir Rintel
d0cb2050f3 all: add OVSDB connection failure device state reason 2017-10-30 17:40:09 +01:00
Lubomir Rintel
aec8d36b3e clients: add support for ovs-bridge setting 2017-10-30 17:40:09 +01:00
Lubomir Rintel
6f73b4608a clients: add support for ovs-port setting 2017-10-30 17:40:09 +01:00
Lubomir Rintel
6dcd54b0de clients: add support for ovs-interface setting 2017-10-30 17:40:09 +01:00
Lubomir Rintel
e7ab81098a clients: add support for ovs-patch setting 2017-10-30 17:40:09 +01:00
Lubomir Rintel
cb9b024ddb libnm-core: add ovs-bridge setting 2017-10-30 17:40:08 +01:00
Lubomir Rintel
8a1ae40a80 libnm-core: add ovs-port setting 2017-10-30 17:40:08 +01:00
Lubomir Rintel
27790fa976 libnm-core: add ovs-interface setting 2017-10-30 17:40:08 +01:00
Lubomir Rintel
d4a7fe4679 libnm-core: add ovs-patch setting 2017-10-30 17:40:08 +01:00
Lubomir Rintel
4391ba82dd cli/trivial: drop default branch from some cases
This way not handling a known enum value will be caught by a compiler
warning.
2017-10-30 17:38:37 +01:00
Lubomir Rintel
c3080c79dc ip-tunnel: fix a typo 2017-10-30 17:38:37 +01:00
Lubomir Rintel
fb8ea059e6 cli: ignore PAGER when escalating privileges
nmcli typically doesn't run setuid, nor uses file capabilities or is labelled
for a SELinux domain trainsition upon execution.

But in case anyone has any reason to do that, we should follow good
security practices and not exec whatever is set in the environment.
2017-10-30 15:27:05 +01:00
Thomas Haller
f3146de41b libnm: avoid unnecessary copies accessing NMIPRoute's attributes
We want to support large number of routes. Reduce the number
of copies, by adding internal accessor functions.

Also, work around a complaint from coverity:

  46. NetworkManager-1.9.2/libnm-core/nm-utils.c:1987:
  dereference: Dereferencing a null pointer "names".
2017-10-30 14:12:41 +01:00
Thomas Haller
31facf6fad cli: fix leak in _output_selection_parse()
Reported by coverity.

Fixes: fdd40b6a68
2017-10-30 11:18:25 +01:00
Thomas Haller
53aa340476 nmcli: fix wrongly adding a generic setting when constructing connection
nmc_read_connection_properties() iterates over the input arguments, and
completes the connection.

Initially, the type is not yet known, in that case, we should not wrongly
assume that this is a generic connection. Later, when the type is specified,
con_settings() will return the correct settings.

Previously, this would wrongly add a [generic] section:

  $ nmcli connection add type ethernet ifname eth1 con-name ethie autoconnect no ipv4.method auto ethernet.cloned-mac-address random

With the fix, it still works to specify the type later:

  $ nmcli connection add ifname eth1 con-name ethie autoconnect no ipv4.method auto type ethernet

but it doesn't work, to specify the type after type-specific options:

  $ nmcli connection add ifname eth1 con-name ethie autoconnect no ipv4.method auto ethernet.cloned-mac-address random type ethernet
  Error: invalid or not allowed setting 'ethernet': 'ethernet' not among [connection, ipv4, ipv6, proxy].

The patch doesn't change the latter limitation.

Fixes: c5324ed285
2017-10-26 19:07:24 +02:00
Thomas Haller
3434261811 core,clients: use our own string hashing function nm_str_hash()
Replace the usage of g_str_hash() with our own nm_str_hash().

GLib's g_str_hash() uses djb2 hashing function, just like we
do at the moment. The only difference is, that we use a diffrent
seed value.

Note, that we initialize the hash seed with random data (by calling
getrandom() or reading /dev/urandom). That is a change compared to
before.

This change of the hashing function and accessing the random pool
might be undesired for libnm/libnm-core. Hence, the change is not
done there as it possibly changes behavior for public API. Maybe
we should do that later though.

At this point, there isn't much of a change. This patch becomes
interesting, if we decide to use a different hashing algorithm.
2017-10-18 13:05:00 +02:00
Beniamino Galvani
90aa8a8b7b tui: fix memory leak 2017-10-16 17:43:37 +02:00
Beniamino Galvani
c898594c71 tui: improve tracking of activation state
nmtui determines the activation result by tracking the active
connection state but that is not enough, as the active connection may
disappear or because we need to consider also the device state in some
particular cases.

Use the same logic implemented in nmcli that is now provided by the
nmc_activation_get_effective_state() helper.
2017-10-16 17:43:37 +02:00