Commit graph

22699 commits

Author SHA1 Message Date
Beniamino Galvani
b1d5f11b3d cli: add lldp output tests
Check the result of 'nmcli device lldp' command.
2019-03-27 10:17:39 +01:00
Beniamino Galvani
a66ab735b6 lldp: drop _access* macros
Use unaligned access functions instead where needed.
2019-03-27 10:16:39 +01:00
Beniamino Galvani
579373a5df dns: fix memory leak of error
The error was leaked when cancelled.

Fixes: 818023c257 ('dns/resolved: add systemd-resolved backend')
2019-03-26 17:37:54 +01:00
Beniamino Galvani
fc4aedc6f3 merge: branch 'bg/bridge-vlan-filtering'
https://github.com/NetworkManager/NetworkManager/pull/322
https://bugzilla.redhat.com/show_bug.cgi?id=1652910
2019-03-26 17:32:03 +01:00
Beniamino Galvani
494f78440c device: support bridge vlans 2019-03-26 17:26:31 +01:00
Beniamino Galvani
fafde171ea platform: add support for bridge vlans 2019-03-26 17:19:39 +01:00
Beniamino Galvani
be2fbd0c69 platform: add @family argument to new-link function
This will be used to create bridge vlans, which require an AF_BRIDGE
message family.
2019-03-26 17:19:39 +01:00
Beniamino Galvani
4848ad7c77 nmcli: add bridge vlans support 2019-03-26 17:19:39 +01:00
Beniamino Galvani
56d193e686 ifcfg-rh: add bridge vlans support 2019-03-26 17:19:39 +01:00
Beniamino Galvani
c66d17d4fc keyfile: support bridge vlans 2019-03-26 17:19:39 +01:00
Beniamino Galvani
cf71860183 libnm-core: add bridge vlan conversion utils 2019-03-26 17:18:29 +01:00
Beniamino Galvani
a680bedf94 libnm-core: add vlans property to bridge setting 2019-03-26 17:18:29 +01:00
Beniamino Galvani
1e5b0788bc libnm-core: add vlans property to bridge-port setting 2019-03-26 17:18:29 +01:00
Beniamino Galvani
96fab7b462 all: add vlan-filtering and vlan-default-pvid bridge properties 2019-03-26 17:18:29 +01:00
Beniamino Galvani
6f8beac4cf keyfile: fix memory leaks
The GPtrArray was leaked when the group did not have keys.
2019-03-26 17:18:29 +01:00
Beniamino Galvani
2691fd279d libnm-core: fix typos in API documentation 2019-03-26 17:18:29 +01:00
Beniamino Galvani
d9143d851d libnm-core: add missing notify in sriov setting 2019-03-26 17:18:29 +01:00
Lubomir Rintel
8f2a8a52f0 device: fix the slave state change reason on master connection removal
If we surprise-remove the master, slaves would immediately attempt to bring
things up by autoconnecting. Not cool. Policy, however, blocks
autoconnect if the slaves disconnect due to "dependency-failed", and it
indeed seems to be an appropriate reason here:

  $ nmcli c add type bridge
  $ nmcli c add type dummy ifname dummy0 master bridge autoconnect yes
  $ nmcli c del bridge
  $

Before:

  (nm-bridge): state change: ip-config -> deactivating (reason 'connection-removed')
  (nm-bridge): state change: deactivating -> disconnected (reason 'connection-removed')
  (nm-bridge): detached bridge port dummy0
  (dummy0): state change: activated -> disconnected (reason 'connection-removed')
  (nm-bridge): state change: disconnected -> unmanaged (reason 'user-requested')
  (dummy0): state change: disconnected -> unmanaged (reason 'user-requested')
  policy: auto-activating connection 'bridge-slave-dummy0'

After:

  (nm-bridge): state change: ip-config -> deactivating (reason 'connection-removed')
  (nm-bridge): state change: deactivating -> disconnected (reason 'connection-removed')
  (nm-bridge): detached bridge port dummy0
  (dummy0): state change: activated -> deactivating (reason 'dependency-failed')
  (nm-bridge): state change: disconnected -> unmanaged (reason 'user-requested')
  (dummy0): state change: deactivating -> disconnected (reason 'dependency-failed')
  (dummy0): state change: disconnected -> unmanaged (reason 'user-requested')

https://github.com/NetworkManager/NetworkManager/pull/319
2019-03-26 15:03:15 +01:00
Thomas Haller
f224d6a853 nmcli: merge branch 'th/nmcli-list-options'
https://github.com/NetworkManager/NetworkManager/pull/317
2019-03-25 10:15:08 +01:00
Thomas Haller
8b0461380f cli/trivial: add comment about partially modifying settings when failing set_fcn() 2019-03-25 09:12:33 +01:00
Thomas Haller
7dcf368cf0 cli: freeze/thaw property changed signals in nmc_setting_set_property()
Setting one property might affect multiple properties.
For example, setting a team property might also emit property changed
signal for "team.config".

Or, one property might be modified multiple times. For example list
properties may first clear the property, then append multiple elements.
Or a list property might remove multiple elements.

Combine these signals via g_object_freeze_notify() and
g_object_thaw_notify().
2019-03-25 09:12:33 +01:00
Thomas Haller
d3343b241f cli/trivial: add FIXME comment about how wrong editor_init_existing_connection() is 2019-03-25 09:12:33 +01:00
Thomas Haller
3a77201361 cli: workaround libnm issue for setting team.runner-tx-hash
This workaround was dropped when refactoring the property handling.
Restore the workaround (at least) until libnm is fixed.
2019-03-25 09:12:33 +01:00
Thomas Haller
a1c7b04664 nmcli: add clear_all_fcn() hook for mutllist property types 2019-03-25 09:12:33 +01:00
Thomas Haller
3a8fe7ad45 cli: consistently validate multilist options for add and remove
There is no reason to validate only in certain cases. Either we
validate, or we don't (always the same).

This is a change in behavior, but the cases should be sensible.
2019-03-25 09:12:33 +01:00
Thomas Haller
96c4f51208 cli: distinguish between resetting GObject property to default and NULL
Most GObject properties default to FALSE/NULL/0. In that case, there
is no difference between setting the default or clearing the value.

During

     if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
         return _gobject_property_reset_default (setting, property_info->property_name);

it is correct to reset the default.

However for list-typed properties, we want to clear the list. So,
it should be

     if (_SET_FCN_DO_SET_ALL (modifier, value))
         _gobject_property_reset (setting, property_info->property_name, FALSE);
2019-03-25 09:12:33 +01:00
Thomas Haller
166e04799d cli: accept ',' as delimiter for match.interface-names
"match.interface-names" is the only property that uses VALUE_STRSPLIT_MODE_MULTILIST_WITH_ESCAPE.

    $ nmcli connection modify "$PROFILE" match.interface-name ' 5, \,\  4\,  '

results in

    [match]
    interface-name=5;, ;4,;

and

    $ echo ">$(nmcli -g match.interface-name -escape=no connection show "$PROFILE")<"
    >5 \,\  4\,<

Yes, plain --get leads to a wrong double-escaping:

    $ echo ">$(nmcli -g match.interface-name connection show "$PROFILE")<"
    >5 \\,\\  4\\,<
2019-03-25 09:12:33 +01:00
Thomas Haller
65c8c19fa7 cli: don't support removing sriov vfs by index
The VFs already can be parsed as plain number (to indicate the
ifindex). We should not also support accepting the plain number
as index to be removed.

Fixes: a2f12994b7 ('cli: add support for configuring SR-IOV')
2019-03-25 09:12:33 +01:00
Thomas Haller
da5895951a shared: add _nm_utils_escape_plain() API 2019-03-25 09:12:33 +01:00
Thomas Haller
e26e0fdffd all: consider all ASCII spaces for _nm_utils_escape_spaces() and unescape 2019-03-25 09:12:33 +01:00
Thomas Haller
5b8305c27c shared: add NM_ASCII_SPACES macro 2019-03-25 09:12:33 +01:00
Thomas Haller
70bad5c74d cli: support list of indexes for removing objlist property
$ nmcli connection modify "$PROFILE" -ipv4.addresses 1,3

Already before, nmcli would support removing items by index. But only
one number was supported.

- indexes are zero based (as before).

- duplicate indexes or indexes out of bounds are silently ignored.

Maybe certain properties should not support removal by index.
2019-03-25 09:12:33 +01:00
Thomas Haller
28f0153350 cli: cleanup parsing of VLAN ingress/egress priority map
Use new ValueStrsplitMode "VALUE_STRSPLIT_MODE_STRIPPED".

Note that this is not exactly what we did before. For example, empty
tokens are now silently removed.

Also, we accept now whitespace as separators.
2019-03-25 09:12:33 +01:00
Thomas Haller
c0d83ef522 cli: refactor splitting the string when parsing the property values
Have one function that gets all the nonesense right. "nonesense", because
we have inconsistent behaviors, and the function is supposed to help with
that.
2019-03-25 09:12:33 +01:00
Thomas Haller
e2c95014c2 cli: merge remove-by-value and add functions of objlist property types 2019-03-25 09:12:33 +01:00
Thomas Haller
18fac0407e cli: merge set_fcn() and remove_fcn()
set_fcn() and remove_fcn() are strongly related. They should accept
arguments in the same format, hence the parsing of the arguments should
be done at one place.

In fact, previously the parsing was separate, leading to ugly
inconsistencies:

  $ nmcli connection modify "$PROFILE" +vpn.data x=y
  $ nmcli connection modify "$PROFILE" -vpn.data x=y
  Error: failed to remove a value from vpn.data: invalid option 'x=y'.

or

  $ nmcli connection modify "$PROFILE" +ipv4.addresses 192.168.1.5/24,192.168.2.5/24
  $ nmcli connection modify "$PROFILE" -ipv4.addresses 192.168.1.5/24,192.168.2.5/24
  Error: failed to remove a value from ipv4.addresses: invalid prefix '24,192.168.2.5/24'; <1-32> allowed.

Let set_fcn() handle set-default, set-all, add, and subtract.
2019-03-25 09:12:33 +01:00
Thomas Haller
eb0cfefe52 cli: allow resetting all values via set_fcn() property handler
Previously, set_fcn() could only append values. Now, pass on the modifier
so that it may append, set all, or reset the default.

These operations are strongly related and should be handled by the same
set_fcn() function.
2019-03-25 09:12:33 +01:00
Thomas Haller
22382c4e82 cli: implement remove-fcn for objlist types 2019-03-25 09:12:33 +01:00
Thomas Haller
923a79554c cli: implement add-fcn for objlist types 2019-03-25 09:12:33 +01:00
Thomas Haller
2a50729c6f cli: add clear-all-fcn for objlist properties 2019-03-25 09:12:33 +01:00
Thomas Haller
ad15b2505b cli: add objlist property type and implement get_fcn() for all types 2019-03-25 09:12:33 +01:00
Thomas Haller
126348d4be cli: implement team:runner-tx-hash as multilist property 2019-03-25 09:12:33 +01:00
Thomas Haller
1b1ef52ff8 cli: implement match:interface-names as multilist property 2019-03-25 09:12:33 +01:00
Thomas Haller
e3fa570c1b shared: add "strip" argument to _nm_utils_unescape_spaces()
It's usually not necessary, because _nm_utils_unescape_spaces()
gets called after nm_utils_strsplit_set(), which already removes
the non-escaped spaces.

Still, for completeness, this should be here. Also, because with
this the function is useful for individual options (not delimiter
separate list values), to support automatically dropping leading or
trailing whitespace, but also support escaping them.
2019-03-25 09:12:33 +01:00
Thomas Haller
b91f21aa23 cli: implement connection:permissions as multilist property 2019-03-25 09:12:32 +01:00
Thomas Haller
ecd0e34fe9 cli: minor cleanup of _get_fcn_connection_permissions() 2019-03-25 09:12:32 +01:00
Thomas Haller
cb310a061b cli: implement connection:secondaries as multilist property 2019-03-25 09:12:32 +01:00
Thomas Haller
b9cd9c8dc8 cli: implement mac-address-blacklist properties as mulitlist types 2019-03-25 09:12:32 +01:00
Thomas Haller
0cb1c20f93 cli: first validate all values in _set_fcn_multilist() before modifying the setting 2019-03-25 09:12:32 +01:00
Thomas Haller
b63620e67c cli: implement DNS property as multilist type 2019-03-25 09:12:32 +01:00