Commit graph

30 commits

Author SHA1 Message Date
Thomas Haller
9802c89972
l3cfg: add nm_l3_config_data_{get,set}_ndisc_*() API 2020-09-15 17:45:35 +02:00
Thomas Haller
81d7009956
l3cfg: track ip6_privacy (use_tempaddr) in NML3ConfigData
NMDevice currently configures use_tempaddr sysctl itself. Later,
NML3Cfg should do that, so we need to keep track of that as part
of the configuration.
2020-09-15 16:06:32 +02:00
Thomas Haller
16e59cc37c
l3cfg: support tracking the DHCP lease in NML3ConfigData 2020-09-11 16:18:34 +02:00
Thomas Haller
4c07d34505
l3cfg: add nm_l3_config_data_has_routes_with_type_local() helper 2020-09-07 16:11:51 +02:00
Thomas Haller
c328c10227
l3cfg: more integration of NMDevice with l3cfg
Add more code that will be used later for glueing NMDevice with NML3Cfg
and NML3ConfigData. The code is not yet really used.
2020-09-07 16:11:50 +02:00
Thomas Haller
41b9d44f9b
l3cfg: drop unused NM_L3_CONFIG_MERGE_FLAGS_EXTERNAL
The current approach also tracks external configuration in an NMIP[46]Config, and
we need to special handle those. In the future, we only want to track what we actually
want to configure. So this flag won't be used with NML3Cfg/NML3ConfigData.
2020-09-07 16:11:50 +02:00
Thomas Haller
38b2239146
l3cfg: add more l3cfg API that will be used next 2020-09-07 16:11:50 +02:00
Thomas Haller
e89a095673
l3cfg: add nm_l3_config_data_get_blacklisted_ip4_routes() util
We will need to prune routes that kernel adds (and we don't want).
2020-09-07 16:11:49 +02:00
Thomas Haller
0ab341b9e6
l3cfg: add nm_l3_config_data_get_domains() accessor 2020-09-07 16:11:49 +02:00
Thomas Haller
d2beefa658
l3cfg: change l3cd for-each macros to take pointers instead of variable names
It's not a big difference and unclear which is preferable. It however
seems slighly clearer to require the user to provide a pointer, instead
of a variable for which the macro itself takes the reference.

It makes it clearer that the "iter" and "obj" arguments are modified
by the macro.
2020-08-06 18:12:02 +02:00
Thomas Haller
79db3972d7
l3cfg: rework merging NML3ConfigData to give more control over how to merge
NML3Cfg will need more control about how to merge the NML3ConfigData
instances. For example, it will need to intercept IPv4 addresses to
perform ACD.

For that, move the bulk of the merging code to NML3Cfg and expose the
low-level function nm_l3_config_data_merge().

Also, add a callback function to nm_l3_config_data_merge(), to give
control over how to merge.
2020-08-05 12:47:56 +02:00
Thomas Haller
25d404dadb
l3cfg: add more API to NML3ConfigData 2020-08-05 12:47:56 +02:00
Thomas Haller
37e5ebbf70
l3cfg: forward declare NML3ConfigData in "nm-types.h" 2020-08-05 12:47:56 +02:00
Thomas Haller
60ad076094
l3cfg: add nm_l3_config_data_set_source()
It's useful to have a NML3ConfigData track the source.
Previously, NMIP4Config tracks the source per MTU. But the
source really belongs to the entire setting.
2020-08-05 12:47:55 +02:00
Thomas Haller
9798a90d53
l3cfg: rename NML3ConfigData instances from l3cfg to l3cd
The name l3cfg is nicer, but it would make you think that it's an
NML3Cfg instance, when it's really NML3ConfigData.
2020-08-05 12:47:55 +02:00
Thomas Haller
e50597559b
l3cfg: track externally removed addresses/routes
We want to allow the user to externally remove IP addresses
and routes, and NetworkManager not re-adding them until a full reapply
happens. For that, we need to keep track of IP addresses that were
present, but no longer are.
2020-07-31 08:53:07 +02:00
Thomas Haller
c3798fbf4e
l3cfg: add nm_l3cfg_platform_commit() 2020-07-31 08:53:07 +02:00
Thomas Haller
1867746e6c
l3cfg: track route-table sync mode in NML3ConfigData
Currently, we track the route table sync mode outside of the settings.
But as it depends on configuration, we should track it in NML3ConfigData.
2020-07-31 08:53:06 +02:00
Thomas Haller
695ce608ba
l3cfg: add nm_l3_config_data_add_dependent_routes() 2020-07-31 08:53:06 +02:00
Thomas Haller
81cf493b96
l3cfg: support tracking NML3ConfigData in NML3Cfg
NML3Cfg is supposed to manage an interface (by ifindex).

As such, it later will itself implement DHCP and similar addressing
methods.

However, in various cases we get additional IP configuration from
external (e.g. from a VPN connection). To support that, let NML3Cfg
track any number of NML3ConfigData instances.
2020-07-31 08:53:06 +02:00
Thomas Haller
297eb4d169
l3cfg: support more properties in NML3ConfigData 2020-07-31 08:53:06 +02:00
Thomas Haller
bfc77c89d1
l3cfg: add flags for affecting how add-object works for NML3ConfigData
We need a way to say don't touch the existing object during add.
Add flags for that.
2020-07-31 08:53:06 +02:00
Thomas Haller
98e311899d
l3cfg: add nm_l3_config_data_cmp()/nm_l3_config_data_equal() 2020-07-31 08:53:06 +02:00
Thomas Haller
e3e60bf87d
l3cfg: add NM_IS_L3_CONFIG_DATA() for asserting valid NML3ConfigData instances 2020-07-31 08:53:06 +02:00
Thomas Haller
99f096577c
l3cfg: add flags for NML3ConfigData
Add a flags parameter. That is useful to bundle multiple simple boolean
properties, without need to implement individual accessors.
2020-07-28 16:03:51 +02:00
Thomas Haller
d9547e8452
l3cfg: make NML3ConfigData ref/unref functions const
NML3ConfigData is supposed to be used as immutable, ref-counted type.
You create it once, initialize it, seal it, and pass (immutable) references
around.

In such a scheme, having ref/unref functions not operate on const pointers
is a major inconvenience.
2020-07-24 16:12:23 +02:00
Thomas Haller
a2a69a2dab
l3cfg: add more API to NML3ConfigData 2020-07-24 16:12:23 +02:00
Thomas Haller
6aa338edd4
l3cfg: tie NML3ConfigData to an ifindex
NML3ConfigData tracks IP addresses and routes. In their current form, these
types (NMPObject) always have an ifindex and there is no sensible way to have
an NMPObject (for routes or addresses) that have a wildcard ifindex.

Honor that by also tying NML3ConfigData to an ifindex. In most cases, the
user knows the ifindex before and can create it. On the unlikely case where
the user doesn't know the ifindex, we should add a new nm_l3_config_data_clone()
function, which allows migrating the setting from one ifindex to another.
2020-07-24 16:12:23 +02:00
Thomas Haller
5f23d691bf
l3cfg: add nm_l3_config_data_new_from_platform() for capturing settings
It basically does what nm_ip4_config_capture() and
nm_ip6_config_capture() does.
2020-07-24 16:12:22 +02:00
Thomas Haller
a1dbaf5799
l3cfg: add NML3ConfigData
Currently NMIP4Config and NMIP6Config both track the data to be
configured, they expose properties on D-Bus, and they have logic for
capturing and applying settings to platform.

We will split that.

- NMIP4Config and NMIP6Config will expose data on D-Bus.

- NML3Cfg will have the logic for handling IP configuration.

- NML3ConfigData will track data to be configured.

NML3ConfigData mirrors NMIP4Config/NMIP6Config in many aspects. For now,
this duplicates a lot of code. More will be done later. Eventually,
NMIP4Config/NMIP6Config will drop the duplicated functionality.
2020-07-23 15:29:25 +02:00