Commit Graph
463 Commits
Author SHA1 Message Date
Tom Gundersen 7619683b46 networkd: link - handle links coming back to life
When enslaving devices, we may receieve DELLINK/NEWLINK for the same ifindex,
let's not be confused by this.
2014-05-09 14:41:27 +02:00
Tom Gundersen d9c67ea112 networkd: reorder bonding and bridging
A link should only ever be part of one, but if we accidentally do both, let's do it
in the right order so the failure is more obvious in the logs.
2014-05-09 14:41:27 +02:00
Tom Gundersen f22364691b networkd: manager - drop links and netdevs when we receive DELLINK 2014-05-09 14:41:27 +02:00
Tom Gundersen 37ebeb77cf networkd: netdev - drop if creation fails
This ensures that all links waiting to be enslaved are notified that the netdev does not exist.
2014-05-09 14:41:27 +02:00
Tom Gundersen 370e9930c3 networkd: link - introduce LINGER state and link_drop()
We need the LINGER state in case we still have references to the link after it has been dropped.
2014-05-09 14:41:27 +02:00
Tom Gundersen 2cc7e981af networkd: netdev - introduce LINGER state and netdev_drop()
We need the LINGER state in case we still have references to the netdev after it has been dropped.
2014-05-09 14:41:27 +02:00
Tom Gundersen 59cb64e625 networkd: netdev - cancel all callbacks when freeing
This notifies the link that the netdev no longer exists.
2014-05-09 14:41:27 +02:00
Tom Gundersen b226d99b04 networkd: link - take refcounts on links
We need to take a refcount on the link whenever we expect a callback. The exceptions
are the ipv4ll/dhcp clients as their lifetimes are guaranteed to be shorter than that
of the link.
2014-05-09 14:41:27 +02:00
Tom Gundersen 47e2dc3168 networkd: network - do reference counting on netdevs 2014-05-09 14:41:27 +02:00
Tom Gundersen 69a93e7db4 networkd: network - merge all netdev parsing into one function 2014-05-09 14:41:27 +02:00
Tom Gundersen 14b746f721 networkd: introduce refcounting for Links and NetDevs 2014-05-09 14:41:27 +02:00
Tom Gundersen 68a8723c85 networkd: link - clean up state files
Also keep the path to the lease file around rather than regenarating it all the time.
2014-05-09 14:41:27 +02:00
Tom Gundersen bbf7c04821 sd-network: expose global operational state 2014-05-08 17:21:37 +02:00
Tom Gundersen 3a9c5a32be networkd-wait-online: flush monitor events after processing
Otherwise the event will trigger immediately again.
2014-05-08 15:27:55 +02:00
Tom Gundersen d91d3c1580 networkd-wait-online: fix false positives when checking if a link is managed by networkd 2014-05-08 15:27:55 +02:00
Tom Gundersen 75adc2189b networkd: link - operstate is an enum, not a bitmask 2014-05-08 15:27:55 +02:00
Tom Gundersen bc6345767e networkd-wait-online: rely purely on sd-network events and drop rtnl hooks 2014-05-07 16:54:02 +02:00
Tom Gundersen 99b4cc3e75 networkd: link - always maintain link operstate regardless of admin state 2014-05-07 16:54:02 +02:00
Tom Gundersen deb2e5230b sd-network: expose both admin and operational state directly
Also add a call to check if a link is loopback, as this should commonly be ignored.
2014-05-07 16:54:02 +02:00
Umut Tezduyar Lindskog 8ddbeaa23c networkd: dont configure route if lease doesn't have one 2014-04-30 00:05:28 +02:00
Tom Gundersen 7e141e498c sd-network: add support for only listening to some types of changes 2014-04-30 00:05:28 +02:00
Tom Gundersen 9b86b3930a networkd: link - don't fail a link if RF kill is active 2014-04-28 00:16:46 +02:00
Tom Gundersen 69ceb044c8 networkd: netdev - log when loading a .netdev file 2014-04-28 00:06:06 +02:00
Umut Tezduyar Lindskog d96e629fd7 networkd: do not complain about IFF_RUNNING
Otherwise:
eth0: unknown link flags gained: 0x00040 (ignoring)

[tomegun: hiding these messages is ok, as IFF_RUNNING is redundant
          and can be deduced from operstate and IFF_LOWER_UP]
2014-04-27 23:36:30 +02:00
Tom Gundersen 27134b2f05 networkd-wait-online: refactor a bit
Clarify that we are waiting for any link to reach 'carrier' state, regardless
of who manages it. This will be useful when we add support for waiting for more
operational states.
2014-04-26 01:20:12 +02:00
Tom Gundersen cef8b07358 networkd-wait-online: drop config file and add commandline options instead 2014-04-26 01:20:12 +02:00
Tom Gundersen 3a67e927e3 networkd-wait-online: improve interoptability and enable by default
To make sure we don't delay boot on systems where (some) network links are managed by someone else
we don't block if something else has successfully brought up a link.

We will still block until all links we are aware of that are  managed by networkd have been
configured, but if no such links exist, and someone else have configured a link sufficiently
that it has a carrier, it may be that the link is ready so we should no longer block.

Note that in all likelyhood the link is not ready (no addresses/routes configured),
so whatever network managment daemon configured it should provide a similar wait-online
service to block network-online.target until it is ready.

The aim is to block as long as we know networking is not fully configured, but no longer. This
will allow systemd-networkd-wait-online.service to be enabled on any system, even if we don't
know whether networkd is the main/only network manager.

Even in the case networking is fully configured by networkd, the default behavior may not be
sufficient: if two links need to be configured, but the first is fully configured before the
second one appears we will assume the network is up. To work around that, we allow specifying
specific devices to wait for before considering the network up.

This unit is enabled by default, just like systemd-networkd, but will only be pulled in if
anyone pulls in network-online.target.
2014-04-24 00:23:07 +02:00
Thomas Hindoe Paaboel Andersen cc544d5fb4 networkd: link - add missing curly brackets
introduced in 1e9be60bba
2014-04-22 21:45:17 +02:00
Tom Gundersen df9aa406e8 networkd: link - reduce default verbosity a bit 2014-04-22 21:06:00 +02:00
Tom Gundersen 1e9be60bba networkd: link - support IFLA_OPERSTATE
This properly detects the state of the link based on both the link flags and the
operstate.

Moreover, always log state-changes even if we are not yet managing the link.
2014-04-22 21:06:00 +02:00
Tom Gundersen 45ad2c1328 networkd: link - don't react to successfull link up
Avoid having two code-paths racing with eacother to do the same thing. The change
of flags will be detected in the normal way, so only use the link_up_handler
to detect if the 'up' failed and in that case fail the link.
2014-04-22 21:06:00 +02:00
Tom Gundersen 124fa2c601 networkd: link - log when starting clients fail 2014-04-22 21:06:00 +02:00
Tom Gundersen 2139694e82 networkd: link - avoid cycle when failing 2014-04-22 21:06:00 +02:00
Tom Gundersen 111bb8f93a networkd: link - stop clients when failing 2014-04-22 21:06:00 +02:00
Tom Gundersen 7d95c772cb Revert "networkd: netdev - set predictable mac address when creating netdev"
This reverts commit cdc85c875b.

There appears to be a kernel bug that (among other things) cause bridges
not to get a bridge id set when supplying IFLA_ADDRESS when creating the
netdev.

Simply revert the whole thing until we sort this out in the kernel.

See: http://www.spinics.net/lists/netdev/msg279807.html

Reported-by: C. R. Oldham <cr@saltstack.com>
2014-04-21 22:12:53 +02:00
Tom Gundersen 57bd6899b3 networkd: link - add explicit unmanaged state 2014-04-20 19:54:35 +02:00
Tom Gundersen 4bb40e8125 networkd: link - set mac addresses when starting clients
MAC addreses are also set when NEWLINK messages are receieved, but only if the clients have
already been initialized.
2014-04-20 19:34:53 +02:00
Tom Gundersen c6a1eb79a5 networkd: link - log changes in some common link flags 2014-04-20 19:20:26 +02:00
Tom Gundersen 75ee87c8c6 networkd: link - use IFF_DORMANT instead of IFF_RUNNING
Should be no functional change, but avoids spurious log
messages when in operstate UNKNOWN and !IFF_LOWER_UP.
2014-04-20 18:02:15 +02:00
Tom Gundersen 069e10a0e0 networkd: link - make debug logging a bit more readable
Drop leading zeros which will never be used when printing the link flags.
2014-04-20 14:42:57 +02:00
Tom Gundersen 667fcc6d7d networkd: manager - add a bit of debug output to udev ADD events 2014-04-19 21:41:40 +02:00
Tom Gundersen b8941f74c8 networkd: link - track interface renames 2014-04-19 20:39:29 +02:00
Tom Gundersen 6916ec29af network: implement masking of .link, .network and .netdev files 2014-04-19 19:05:37 +02:00
Tom Gundersen a21df10488 networkd: netdev - give up early when setting already set ifindex
We may receive RTM_NEWLINK messages with missing LINKINFO after the initial NEWLINK message,
don't bother verifying these, just drop out early after checking that the ifindex is not in conflict.
2014-04-19 18:41:58 +02:00
Tom Gundersen c6315a7afc networkd: netdev - verify name of newlink messages 2014-04-19 18:41:58 +02:00
Tom Gundersen cdc85c875b networkd: netdev - set predictable mac address when creating netdev 2014-04-19 18:41:58 +02:00
Tom Gundersen 505f8da732 networkd: tie links to rtnl rather than udev
This essentially swaps the roles of rtnl and udev in networkd. After this
change libudev is only used for waiting for udev to initialize devices and
to get udev-specific information needed for some [Match] attributes.

This in particular simplifies the code in containers where udev is not really
useful, but also simplifies things and reduces round-trips in the non-container
case.
2014-04-19 18:41:58 +02:00
Tom Gundersen 3379e257ee networkd: link - make state changing logging a bit less verbose 2014-04-14 17:55:47 +02:00
Tom Gundersen e9189a1f56 networkd: link - ignore missing MAC address from NEWLINK message
The kernel may broadcast such messages, simply discard them.
2014-04-14 17:53:01 +02:00
Tom Gundersen 7cc832b91e networkd: link - require both RUNNING and LOWER_UP before using link
Usually RUNNING implies LOWER_UP, but for drivers that don't support oper state, RUNNING can
also mean that the state is unknown. In that case we should just trust LOWER_UP directly.
2014-04-12 12:48:12 +02:00