1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-08 11:27:32 +03:00
Commit Graph

734 Commits

Author SHA1 Message Date
Susant Sahani
ce67afb043 networkd: tuntap improve logging
Replaces  strerror() usage with log_netdev_error_errno()
2015-06-14 11:18:28 +05:30
Tom Gundersen
1c4baffc18 sd-netlink: rename from sd-rtnl 2015-06-13 19:52:54 +02:00
Lennart Poettering
533b432940 Merge pull request #173 from mischief/ipforwarding-3
IPForwarding=kernel v3
2015-06-12 12:28:16 +02:00
Nick Owens
8add5f7970 networkd: create "kernel" setting for IPForwarding
In 5a8bcb674f, IPForwarding was introduced
to set forwarding flags on interfaces in .network files. networkd sets
forwarding options regardless of the previous setting, even if it was
set by e.g. sysctl. This commit creates a new option for IPForwarding,
"kernel", that preserves the sysctl settings rather than always setting
them.

See https://bugs.freedesktop.org/show_bug.cgi?id=89509 for the initial
bug report.
2015-06-11 12:09:21 -07:00
David Herrmann
ed810b68d3 Merge pull request #171 from teg/rtnl-broadcast-2
sd-rtnl: make joining broadcast groups implicit
2015-06-11 18:05:18 +02:00
Tom Gundersen
31710be527 sd-rtnl: make joining broadcast groups implicit 2015-06-11 17:47:40 +02:00
Lennart Poettering
c067b4acef Merge pull request #143 from teg/networkd-packets-per-slave-mode
networkd: bond - only set packets_per_slave on balance-rr mode
2015-06-11 17:42:46 +02:00
Susant Sahani
f6a0ea8568 networkd: improve logging
Replace strerror() usage with log_netdev_error_errno()
2015-06-11 13:11:33 +05:30
Susant Sahani
c8a09ef463 networkd: macvlan improve logging
Replace strerror() usage with log_netdev_error_errno()
2015-06-11 13:08:19 +05:30
Nick Owens
37de250906 libsystemd-network: use domain validation instead of hostname validation for dhcp domain option
previously hostname_is_valid was used to validate domain names, which
would silently drop perfectly valid dns names that were longer than a
single dns label.
2015-06-10 11:15:46 -07:00
Tom Gundersen
76f0a56790 networkd: bond - only set packets_per_slave on balance-rr mode
Otherwise the creation of the bond fails.
2015-06-10 19:39:02 +02:00
Lennart Poettering
0748385cc4 Merge pull request #132 from ssahani/bond
networkd: bond  improve logging
2015-06-10 15:10:47 +02:00
Lennart Poettering
521446dbff Merge pull request #138 from utezduyar/use-async-convenience-function-on-setting-hostname
networkd: use async convenience call to set hostname
2015-06-10 15:09:03 +02:00
Umut Tezduyar Lindskog
9c34154a2b networkd: use async convenience call to set hostname 2015-06-10 13:15:39 +02:00
Susant Sahani
7676666c6a network: veth imprve logging
Replaces a lof of strerror() usage with log_netdev_error_errno()
2015-06-10 12:22:39 +05:30
Susant Sahani
f545680e3d networkd: vxlan improve logging
Replaces a lof of strerror() usage with log_netdev_error_errno()
2015-06-10 12:02:48 +05:30
Susant Sahani
a668086ec7 networkd: bond improve logging
Replaces a lof of strerror() usage with log_netdev_error_errno()
2015-06-10 11:57:28 +05:30
Lennart Poettering
e941c27331 Merge pull request #113 from mezcalero/address-family
networkd: actually always use AddressFamilyBoolean as the bit mask it is
2015-06-09 10:47:04 +02:00
Lennart Poettering
e0ee46f290 networkd: actually always use AddressFamilyBoolean as the bit mask it is 2015-06-09 01:21:02 +02:00
Lennart Poettering
02776da6ec Merge pull request #108 from phomes/master
tree-wide: remove spurious space
2015-06-08 23:38:27 +02:00
Lennart Poettering
ee0eb1d891 Revert "networkd: create "kernel" setting for IPForwarding" 2015-06-08 23:24:32 +02:00
Thomas Hindoe Paaboel Andersen
920b52e490 tree-wide: remove spurious space 2015-06-08 23:11:26 +02:00
Nick Owens
a70ec7f19f networkd: create "kernel" setting for IPForwarding
In 5a8bcb674f, IPForwarding was introduced
to set forwarding flags on interfaces in .network files. networkd sets
forwarding options regardless of the previous setting, even if it was
set by e.g. sysctl. This commit creates a new option for IPForwarding,
"kernel", that preserves the sysctl settings rather than always setting
them.

See https://bugs.freedesktop.org/show_bug.cgi?id=89509 for the initial
bug report.
2015-06-02 15:31:48 -07:00
Ronny Chevalier
732b7f39a2 networkctl: fix uninitialized variable
We ignore the return value of sd_device_get_devtype, then devtype could
be uninitialized when used with streq_ptr. So we need to initialize it
first.
2015-05-30 11:19:36 +02:00
Lennart Poettering
24882e06c1 util: split out signal-util.[ch] from util.[ch]
No functional changes.
2015-05-29 20:14:11 +02:00
Tom Gundersen
01d28f81a7 networkd: fix IFF_UP when ipv6 support is disabled
Passing ipv6 options (even when they should be noops) caused IFF_UP to fail when
ipv6 was supported.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90103
2015-05-25 17:41:42 +02:00
Lennart Poettering
958b66ea16 util: split all hostname related calls into hostname-util.c 2015-05-18 17:10:07 +02:00
Lennart Poettering
fe0272999c networkd: don't try to turn on ipv6 forwarding if kernel lacks IPv6 support
http://lists.freedesktop.org/archives/systemd-devel/2015-May/031598.html
2015-05-15 12:20:36 +02:00
Benedikt Morbach
505c5f6de1 networkd: don't touch global forwarding setting
This reverts commit 43c6d5abac
(and a small part of 4046d8361c)

It turns out we don't actually need to set the global ip_forward setting.
The only relevant setting is the one on each interface.

What the global toggle actually does is switch forwarding on/off for all
currently present interfaces and change the default for new ones.

That means that by setting the global ip_forward we

  - Introduce a race condition, because if the interface with IPForward=yes
    is brought up after one with IPForward=no, both will have forwarding
    enabled, because the global switch turns it on for all interfaces.
    If the other interface comes up first networkd correctly sets forward=0
    and it doesn't get overridden.

  - Change the forwarding setting for interfaces that networkd is not
    configured to touch, even if the user disabled forwarding via sysctl,
    either globally or per-interface

As forwarding works fine without this, as long as all relevant interfacest
individually set IPForward=yes:  just drop it

This means that non-networkd interfaces use the global default while
networkd interfaces default to off if IPForward isn't given.
2015-05-15 12:13:35 +02:00
Thomas Hindoe Paaboel Andersen
7185d80558 networkd: remove dead initialization 2015-05-13 23:44:20 +02:00
Tom Gundersen
24c083dfcb networkd: network_get - allow udev_device to be NULL
In containers we never have udev devices, so drop the assert.

This fixes an assertion introduced in af3aa30274.
2015-05-12 00:43:45 +02:00
Lennart Poettering
f2341e0a87 core,network: major per-object logging rework
This changes log_unit_info() (and friends) to take a real Unit* object
insted of just a unit name as parameter. The call will now prefix all
logged messages with the unit name, thus allowing the unit name to be
dropped from the various passed romat strings, simplifying invocations
drastically, and unifying log output across messages. Also, UNIT= vs.
USER_UNIT= is now derived from the Manager object attached to the Unit
object, instead of getpid(). This has the benefit of correcting the
field for --test runs.

Also contains a couple of other logging improvements:

- Drops a couple of strerror() invocations in favour of using %m.

- Not only .mount units now warn if a symlinks exist for the mount
  point already, .automount units do that too, now.

- A few invocations of log_struct() that didn't actually pass any
  additional structured data have been replaced by simpler invocations
  of log_unit_info() and friends.

- For structured data a new LOG_UNIT_MESSAGE() macro has been added,
  that works like LOG_MESSAGE() but prefixes the message with the unit
  name. Similar, there's now LOG_LINK_MESSAGE() and
  LOG_NETDEV_MESSAGE().

- For structured data new LOG_UNIT_ID(), LOG_LINK_INTERFACE(),
  LOG_NETDEV_INTERFACE() macros have been added that generate the
  necessary per object fields. The old log_unit_struct() call has been
  removed in favour of these new macros used in raw log_struct()
  invocations. In addition to removing one more function call this
  allows generated structured log messages that contain two object
  fields, as necessary for example for network interfaces that are
  joined into another network interface, and whose messages shall be
  indexed by both.

- The LOG_ERRNO() macro has been removed, in favour of
  log_struct_errno(). The latter has the benefit of ensuring that %m in
  format strings is properly resolved to the specified error number.

- A number of logging messages have been converted to use
  log_unit_info() instead of log_info()

- The client code in sysv-generator no longer #includes core code from
  src/core/.

- log_unit_full_errno() has been removed, log_unit_full() instead takes
  an errno now, too.

- log_unit_info(), log_link_info(), log_netdev_info() and friends, now
  avoid double evaluation of their parameters
2015-05-11 22:24:45 +02:00
Patrik Flykt
be3a09b7ff network: Implement fallback DHCPv6 prefix handling for older kernels
When setting IPv6 addresses acquired by DHCPv6, systemd-networkd sets
the IFA_F_NOPREFIXROUTE flag in the IFA_FLAGS netlink attribute. As
the flag and the attribute are present starting with Linux 3.14, older
kernels will need systemd-network to manage prefix route expiry.

By default, DHCPv6 addresses are first assigned setting the
IFA_F_NOPREFIXROUTE flag in the IFA_FLAGS netlink attribute. Should
the address assignment fail, the same assignment is tried without
the IFA_FLAGS attribute. Should also the second attempt fail, an error
is printed and address assignment ends with failure. As successful use
of the IFA_FLAGS netlink attribute is recorded in the Link structure,
the DHCPv6 code will know if the kernel or systemd-network fallback
code handles expiring prefixes.

The prefix expiration and IPv6 address updating fallback code is
resurrected from the parts deleted with commit
47d45d3cde.

This patch can be removed once the minimum kernel requirements are
greater than or equal to 3.14.
2015-05-04 09:42:37 +03:00
Susant Sahani
9011ce771f networkd: introduce vti6 tunnel
This patch add support to create vti6 tunnel

test:

vt6.network
[Match]
Name=wlan0

[Network]
Tunnel=ip6vti

vti6.netdev
[NetDev]
Name=ip6vti
Kind=vti6

[Tunnel]
Local=2a00:ffde:4567:edde::4987
Remote=2001:473:fece:cafe::5179

ip link

11: ip6_vti0@NONE: <NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT
group default
    link/tunnel6 :: brd ::
12: ip6vti@wlan0: <POINTOPOINT,NOARP> mtu 1500 qdisc noop state DOWN
mode DEFAULT group default
    link/tunnel6 2a00:ffde:4567:edde::4987 peer 2001:473:fece:cafe::5179
2015-04-29 21:54:00 +02:00
Susant Sahani
5289f3ff07 networkd: tunnel improve logging
Replaces a lof ot strerror() usage with log_netdev_error_errno()
2015-04-29 21:54:00 +02:00
Lennart Poettering
190700621f sd-bus: drop bus parameter from message callback prototype
This should simplify the prototype a bit. The bus parameter is redundant
in most cases, and in the few where it matters it can be derived from
the message via sd_bus_message_get_bus().
2015-04-29 18:36:25 +02:00
Lennart Poettering
8519d8f58e networkd-fdb: indentation/whitespace fixes 2015-04-21 17:43:55 +02:00
Lennart Poettering
6a7a4e4d0a networkd: improve how networkd logs things
This makes adds a couple of fixes:

- Introduces log_netdev_error_errno() and friends, which takes an error
  number, and matches what log_link_error_errno() and friends do.

- Replaces a lof ot strerror() usage with log_netdev_error_errno(),
  log_link_error_errno() and log_erro_errno()

- Uppercases the first character of many log messages, after all this is
  supposed to be english language

- Drops manual negating of error codes before passing them to log
  functions, the log functions all do that internally anyway.

Some other minor fixes.

Behaviour should not change really.
2015-04-21 17:43:55 +02:00
Susant Sahani
38422da754 networkd man: fix man and config name.
Rename bond confs and man as well.

[tomegun: dropped a stray comma]
2015-04-21 11:17:37 +02:00
Lennart Poettering
98b3255670 networkd: fix confusion between log_netdev_error() but log_warning_netdev()
We should always name the object first, the level second, like
everywhere else in the sources.
2015-04-21 01:26:59 +02:00
Susant Sahani
81bd37a85f networkd: Add support for bond option.
This patch adds configurational support for bond option.

Test conf:

bond.netdev

 ---
[NetDev]
Name=bond1
Kind=bond

[Bond]
ArpAllTargets=all
PrimaryReselect=better
ArpIntervalSec=10s
ArpIpTargets= 192.168.8.102 192.168.8.101 192.168.8.102
 ---

$cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
ARP Polling Interval (ms): 10000
ARP IP target/s (n.n.n.n form): 192.168.8.100, 192.168.8.101, 192.168.8.102
2015-04-20 20:14:34 +02:00
Susant Sahani
cffacc741c networkd vxlan: Add support for enabling UDP checksums
Add UDPCheckSum option to enable transmitting UDP checksums when doing
VXLAN/IPv4. Add UDP6ZeroChecksumRx, and UDP6ZeroChecksumTx
options to enable sending zero checksums and receiving zero
checksums in VXLAN/IPv6

[tomegun: rebase manpage due to whitespace changes]
2015-04-20 20:09:32 +02:00
Ronny Chevalier
288a74cce5 shared: add terminal-util.[ch] 2015-04-11 00:34:02 +02:00
Thomas Hindoe Paaboel Andersen
8489a3b769 networkd: do not assign the variable twice 2015-04-09 00:05:58 +02:00
Tom Gundersen
cdfee94318 networkd: improve logging when processing links and addresses 2015-04-03 15:35:07 +02:00
Tom Gundersen
914d6c09f1 networkctl: port from libudev to sd-device 2015-04-02 00:18:27 +02:00
Tom Gundersen
af3aa30274 network: don't pass NULL to udev_device_get_driver() 2015-03-27 16:23:46 +01:00
Harald Hoyer
a7f7d1bde4 fix gcc warnings about uninitialized variables
like:

src/shared/install.c: In function ‘unit_file_lookup_state’:
src/shared/install.c:1861:16: warning: ‘r’ may be used uninitialized in
this function [-Wmaybe-uninitialized]
         return r < 0 ? r : state;
                ^
src/shared/install.c:1796:13: note: ‘r’ was declared here
         int r;
             ^
2015-03-27 14:57:38 +01:00
Patrik Flykt
47d45d3cde networkd-dhcp6: Do not handle prefix expiry
Expiring prefixes need not be handled anymore as the kernel has been
instructed not to create routes for DHCPv6 assigned addresses via the
IFA_F_NOPREFIXROUTE flag.
2015-03-27 13:57:24 +02:00
Patrik Flykt
851c9f8273 systemd-networkd: Use IFA_F_NOPREFIXROUTE with IPv6 addresses
The IFA_F_NOPREFIXROUTE flag prevents the kernel from creating new onlink
prefixes when a DHCPv6 IPv6 address with a prefix length is set from user
space. IPv6 routing will follow the onlink status from Router Advertisment
Prefix Information options or any manually set route, which is the correct
thing to do.

As this flag has a larger value than what fits into an unsigned char, update
the flag attribute to an uint32_t and set it with an IFA_FLAGS attribute
when writing netlink messages to the kernel.
2015-03-27 13:57:13 +02:00
Zbigniew Jędrzejewski-Szmek
8bde1d0c9d networkd: use LOG_WARN not LOG_ERR for non-fatal errors 2015-03-21 11:51:43 -04:00
Michael Marineau
301f4073fe network: add UseNTP DHCP option
Despite having the internal logic in place to enable/disable using NTP
servers provided by DHCP the network config didn't expose the option.
2015-03-15 17:26:58 -04:00
Zbigniew Jędrzejewski-Szmek
dc75168823 Use space after a silencing (void)
We were using a space more often than not, and this way is
codified in CODING_STYLE.
2015-03-13 23:42:17 -04:00
Zbigniew Jędrzejewski-Szmek
b4e3d5e14c networkctl: avoid leak if a field was specified twice
The input data would have to be borked, so this is unlikely to happen,
but since we have a nice helper function to do it properly... why not?

CID #1261390.
2015-03-07 14:06:35 -05:00
Jan Janssen
3e43b2cd97 networkd: Make DHCP client ID creation configurable 2015-03-04 11:01:39 +01:00
Tom Gundersen
ff88a301e9 networkd: netdev - inform when we take over an existing netdev
The crucial point here is that we will not change the settings of a netdev created by someone else
we simply use it as is and trust it was set up as intended.

This is confusing in the case of the pre-created netdev's (bond0 etc.), the solution should probably
be to simply make the kernel stop creating these devices as they are pretty useless.
2015-03-04 11:01:39 +01:00
Alin Rauta
0d4ad91dd4 networkd: add support for Uplink Failure Detection
Introduce BindCarrier= to indicate the set of links that determine if
the current link should be brought UP or DOWN.

[tomegun: add a bit to commit message]
2015-02-27 13:58:30 -05:00
Thomas Hindoe Paaboel Andersen
2eec67acbb remove unused includes
This patch removes includes that are not used. The removals were found with
include-what-you-use which checks if any of the symbols from a header is
in use.
2015-02-23 23:53:42 +01:00
Tom Gundersen
60c3556660 networkd: network - rename ipv6token parser
Too generic name.
2015-02-14 00:32:56 +01:00
Tom Gundersen
56fd6bf795 networkd: .network - rename LinkLocal to LinkLocalAddressing
Makes it a bit less ambiguous.
2015-02-14 00:32:26 +01:00
Tom Gundersen
5c3072eab6 networkd: explicitly enable/disable ipv6ll addresses
The kernel does not like getting an empty container, so just always pass the parameter, even if
it is the default.
2015-02-12 14:23:02 +01:00
Tom Gundersen
a245ced0d7 networkd: fdb - fix const warning 2015-02-11 13:13:50 +01:00
Tom Gundersen
f806f64c74 networkd: don't do exit-on-idle if there is something wrong with the dbus connection
Just fall back to plain old event loop in this (highly unlikely) case.

In the glorious future when kdbus is upstream we can of course drop all this.
2015-02-11 13:13:49 +01:00
Paul Martin
804319344b networkd DHCPv4 logging endian fix
On Tue, Feb 10, 2015 at 08:10:43PM +0100, Lennart Poettering wrote:

> Hmm, I think it would be nicer to use be32toh() here instead, since it
> ensures the macro is (to a limited degree) typesafe.
>
> Any chance you could rework that?

From: Paul Martin <paul.martin@codethink.co.uk>
Date: Wed, 11 Feb 2015 11:47:16 +0000
Subject: [PATCH] networkd dhcpv4 logging endian fix

On a big-endian host, systemd-networkd prints out IPv4 network
addresses byte reversed:

Feb 10 16:43:32 hostname systemd-networkd[151]: eth0 : DHCPv4 address 158.1.24.10/16 via 1.1.24.10

The address obtained is 10.24.1.158/16 and the route is

  10.24.0.0/16 dev eth0  src 10.24.1.187

The macro ADDRESS_FMT_VAL() unpacks a "struct in_addr" in a
little-endian specific manner.

This patch forces the passed address into host order, then unpacks it.

On an x86 later than i486, compiled with -O2, the only extra overhead
is a single bswap instruction.
2015-02-11 12:57:17 +01:00
Tom Gundersen
5256e00e8b net: support globbing and disjunction in Match logic
Match{Name,OrginalName,Type,Driver,Path} can now take a space-separated glob of matches.
2015-02-10 22:30:35 +01:00
Tom Gundersen
ea6ec096db networkd: fdb - refactor a bit
Pass around Link objcets rather than FdbEntry objects. The link objects have an up-to-date
ifname we can use for logging. match_name sholud _never_ be used for anything except
matching. Firstly, it may be unset (usually is), and secondly it may not be up-to-date.
2015-02-10 22:30:35 +01:00
Tom Gundersen
9198e12ca3 networkd: bus - expose MatchMAC 2015-02-10 22:30:35 +01:00
Tom Gundersen
f6f8d466bd networkd: network-bus - use sd_bus_path_{en,de}code 2015-02-10 22:30:35 +01:00
Tom Gundersen
1c11181458 networkd: link_object_find - don't accept invalid input
Reported by Zbigniew.
2015-02-09 22:02:32 +01:00
Tom Gundersen
769b56a308 networkd: support route scopes
For now we only support the hardcoded values RT_SCOPE_{UNIVERSE,LOCAL,HOST},
and not numerical values or values from /etc/iproute2/rt_scopes.

This addresses https://bugs.freedesktop.org/show_bug.cgi?id=88508.
2015-02-09 16:53:54 +01:00
Torstein Husebø
e2acdb6b0f treewide: correct typos and use consistent "MAC" spelling 2015-02-09 14:32:49 +01:00
Tom Gundersen
c8f5edeab0 networkd: bus - switch to properly escaped object paths 2015-02-09 12:20:10 +01:00
Tom Gundersen
7f77697a17 networkd: add support for IPv6 tokens
This allows the admin to set the host-specific part of IPv6 addresses, but still
receive the prefix via SLAAC.

.network file snippet:

[Network]
IPv6Token=::12

gives:

$ ip token
token ::12 dev eth0

This closes https://bugs.freedesktop.org/show_bug.cgi?id=81177.
2015-02-09 12:20:10 +01:00
Tom Gundersen
d0d6a4cd70 networkd: generalize IPv4LL to LinkLocal
This allows both IPv4 and IPv6 link-local addresses to be enabled or disabled. By default
we still enable IPv6LL and disable IPv4LL. The old config option is kept for backwards
compatibility, but removed from the documentation.
2015-02-09 12:20:10 +01:00
Tom Gundersen
3175fcdec5 networkd: add basic org.freedesktop.network1.Network interface 2015-02-08 20:15:37 +01:00
Tom Gundersen
dbffab87f1 networkd: add network_get_by_name 2015-02-08 20:15:37 +01:00
Mantas Mikulėnas
02f500532e networkd: use valid bus paths
Object path components must start with [A-Za-z_] (AFAIK).
Also the value of 'p' is undefined if asprintf fails.
Compare to user_bus_path() in src/login/logind-user-dbus.c:281.
2015-02-08 16:34:27 +01:00
Tom Gundersen
8f203c166e networkd: move the connection to the bus out of manager_new (again)
This would otherwise make the tests fail as we cannot grab the bus name.
2015-02-05 18:02:42 +01:00
Tom Gundersen
4852e15970 networkd: gracefully handle failure to emit signals when dbus is not connected
When we get kdbus we don't need these hackse.
2015-02-05 18:02:42 +01:00
Tom Gundersen
a97dcc12e4 networkd: exit on idle
We will be woken up on rtnl or dbus activity, so let's just quit if some time has passed and that is the only thing that can happen.

Note that we will always stay around if we expect network activity (e.g. DHCP is enabled), as we are not restarted on that.
2015-02-05 12:04:19 +01:00
Tom Gundersen
3f171cabad networkd: don't unlink state files on exit
Only unlink state files on DELLINK. This allows sd-network to be used even when networkd is not running.
2015-02-05 11:50:46 +01:00
Tom Gundersen
e331e24649 networkd: add basic dbus API
Only the very basics, more to come.

For now:

$ busctl tree org.freedesktop.network1
└─/org/freedesktop/network1
  └─/org/freedesktop/network1/link
    ├─/org/freedesktop/network1/link/1
    ├─/org/freedesktop/network1/link/2
    ├─/org/freedesktop/network1/link/3
    ├─/org/freedesktop/network1/link/4
    ├─/org/freedesktop/network1/link/5
    ├─/org/freedesktop/network1/link/6
    ├─/org/freedesktop/network1/link/7
    ├─/org/freedesktop/network1/link/8
    └─/org/freedesktop/network1/link/9

$ busctl introspect org.freedesktop.network1 /org/freedesktop/network1
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.network1.Manager    interface -         -            -
.OperationalState                   property  s         "carrier" emits-change

$ busctl introspect org.freedesktop.network1 /org/freedesktop/network1/link/1
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.network1.Link       interface -         -            -
.AdministrativeState                property  s         "unmanaged" emits-change
.OperationalState                   property  s         "carrier" emits-change
2015-02-05 11:50:34 +01:00
Tom Gundersen
6a24f1484f networkd: don't warn about missing links unnecessarily
If we get a NEWLINK + NEWADDR between enumerating the links and enumerating the addresses, we
would get a warning that the link corresponding to the address does not exist. This is a false
warning as both the NEWLINK and NEWADDR would be processed after enumerating completed, so drop
it.
2015-02-05 11:50:34 +01:00
Tom Gundersen
73432d67b5 networkd: log when finished enumerating links and addresses 2015-02-05 11:50:34 +01:00
Tom Gundersen
5fae368bda networkd: refactor socket activation a bit 2015-02-03 22:20:38 +01:00
Tom Gundersen
9c0a72f961 networkd: handle suspend events 2015-02-03 22:20:38 +01:00
Zbigniew Jędrzejewski-Szmek
6cb8e687f0 network-address,test-network: avoid undefined behaviour 2015-02-02 21:34:35 -05:00
Lennart Poettering
63c372cb9d util: rework strappenda(), and rename it strjoina()
After all it is now much more like strjoin() than strappend(). At the
same time, add support for NULL sentinels, even if they are normally not
necessary.
2015-02-03 02:05:59 +01:00
Lennart Poettering
44de0efc6e networkd: minor simplification
Let's return the fd we found as return value in systemd_netlink_fd(),
instead of using call-by-reference.
2015-02-02 23:27:33 +01:00
Tom Gundersen
5544ee8516 networkd: support socket activation
Still keep the non-socket activation code around for starting from the commandline, but
will likely drop that too in the future.
2015-02-02 11:57:52 +01:00
Tom Gundersen
e56cdb7ae2 networkd-wait-online: add timeout
Default to timing out after 120 seconds without a network connection. Setting a
timeout of 0 disables the timeout.
2015-02-02 11:57:52 +01:00
Tom Gundersen
5d8689d749 networkd-wait-online: support globbing for ignored devices 2015-02-02 11:57:52 +01:00
Tom Gundersen
d4cdbea555 networkd: dhcp-server - start as soon as addresses have been set
We would otherwise wait for the interface to be completely configured, which
could take considerable time with IPv4LL. As a result nspawn was very slow
at obtaining IP addresses.
2015-01-31 15:26:08 +01:00
Tom Gundersen
79b1f37d95 networkd-wait-online: allow specific devices to be ignored
In addition to the loopback device, also explicitly configured devices to be ignored.

Suggested by Charles Devereaux <systemd@guylhem.net>.
2015-01-31 15:26:08 +01:00
Tom Gundersen
73b23bea86 networkd: tunnel - call tunnel modes ipip6, not ip4ipv6 to match ip(8) 2015-01-28 21:35:54 +01:00
Patrik Flykt
c62c4628d9 networkd-dhcp6: Assign DHCPv6 addresses and prefix lengths
Once IPv6 addresses have been acquired, assign these to the interface
with the prefix lengths taken from the ICMPv6 Router Advertisement
handling code. The preferred and valid IPv6 address lifetimes are
handed to the kernel which will clean up them if not renewed in time.

When a prefix announced via Router Advertisements expires, find all
addresses that match that prefix and update the address to have a
prefix length of 128 causing the prefix to be off-link.
2015-01-27 09:35:24 +02:00
Susant Sahani
b16492f86f networkd: Introduce ip6gre and ip6gretap
This patch introduces ipv6 gre and gretap.

test:

ip6gre.netdev:
[NetDev]
Name=ip6gretap
Kind=ip6gretap

[Tunnel]
Local=2a00:ffde:4567:edde::4987
Remote=2001:473:fece:cafe::5179

ip6gre.network:
[Match]
Name=eno16777736

[Network]
Tunnel=ip6gretap

ip link

6: ip6gre@eno16777736: <POINTOPOINT,NOARP> mtu 1448 qdisc noop state
DOWN mode DEFAULT group default
    link/gre6 2a:00:ff🇩🇪45:67:ed🇩🇪00:00:00:00:00:00:49:87 peer
20:01:04:73:fe:ce:ca:fe:00:00:00:00:00:00:51:79
2015-01-22 21:29:42 +01:00
Susant Sahani
855ee1a1d2 networkd: Introduce IP6 tunnel
This patch enables networkd to create IP6 tunnels

example conf:

ipip6.netdev:
[NetDev]
Name=ipip6-tunnel
Kind=ip6tnl

[Tunnel]
Mode=ip4ipv6
Local=2a00:ffde:4567:edde::4987
Remote=2001:473:fece:cafe::5179

ipip6.network
[Match]
Name=wlan0

[Network]
Tunnel=ipip6-tunnel

23: ipip6-tunnel@wlan0: <POINTOPOINT,NOARP> mtu 1452 qdisc noop state
DOWN mode DEFAULT group default
    link/tunnel6 2a00:ffde:4567:edde::4987 peer 2001:473:fece:cafe::5179
2015-01-22 21:29:42 +01:00
Susant Sahani
1af2536acf networkd: introduce gretap
This patch introdeces gretap to networkd
2015-01-22 21:29:41 +01:00
Tom Gundersen
07e10d1a7c networkd: plug lldp leak 2015-01-21 23:02:22 +01:00
Rami Rosen
6fb2f9ab6b networkd: fix a typo in networkd-wait-online-manager.
subscibe->subscribe
2015-01-20 09:45:34 +01:00
Zbigniew Jędrzejewski-Szmek
d9000fd3b3 man: add networkctl(1) 2015-01-19 21:44:53 -05:00
Tom Gundersen
c4a5ddc9f2 networkd: netdev - add ipvlan support 2015-01-19 23:25:16 +01:00
Lennart Poettering
43c6d5abac networkd: propagate IPFoward= per-interface setting also to /proc/sys/net/ipv4/ip_forward
We need to turn on /proc/sys/net/ipv4/ip_forward before the
per-interface forwarding setting is useful, hence let's propagate the
per-interface setting once to the system-wide setting.

Due to the unclear ownership rules of that flag, and the fact that
turning it on also has effects on other sysctl flags we try to minimize
changes to the flag, and only turn it on once. There's no logic to
turning it off again, but this should be fairly unproblematic as the
per-interface setting defaults to off anyway.
2015-01-13 20:55:13 +01:00
Lennart Poettering
769d324c99 networkd: make IP forwarding for IPv4 and IPv6 individually configurable 2015-01-13 20:17:07 +01:00
Lennart Poettering
fd6d906cf4 networkd: rename misnamed boolean 2015-01-13 20:17:07 +01:00
Lennart Poettering
cb9fc36a12 networkd: introduce an AddressFamilyBoolean enum type
This introduces am AddressFamilyBoolean type that works more or less
like a booleaan, but can optionally turn on/off things for ipv4 and ipv6
independently. THis also ports the DHCP field over to it.
2015-01-13 20:17:06 +01:00
Lennart Poettering
5a8bcb674f networkd: add minimal IP forwarding and masquerading support to .network files
This adds two new settings to networkd's .network files:
IPForwarding=yes and IPMasquerade=yes. The former controls the
"forwarding" sysctl setting of the interface, thus controlling whether
IP forwarding shall be enabled on the specific interface. The latter
controls whether a firewall rule shall be installed that exposes traffic
coming from the interface as coming from the local host to all other
interfaces.

This also enables both options by default for container network
interfaces, thus making "systemd-nspawn --network-veth" have network
connectivity out of the box.
2015-01-13 13:55:15 +01:00
Zbigniew Jędrzejewski-Szmek
1e39ff926f network: apply static addresses in specified order
https://bugs.freedesktop.org/show_bug.cgi?id=83270
2015-01-11 18:17:33 -05:00
Zbigniew Jędrzejewski-Szmek
ba52f15a58 networkctl: avoid potential use of unitialized variables
Those values are based on a file we read from disk, so we should
verify everything we receive, and make sure everything we print
is sensible.

Also, print fractional seconds for TTL.
2015-01-01 13:36:44 -05:00
Zbigniew Jędrzejewski-Szmek
1bf7dd6e7d networkctl: remove unused variable 2015-01-01 13:36:43 -05:00
Zbigniew Jędrzejewski-Szmek
ef75325319 network: fix scanf/printf format
usec_t is defined as 64 bit wide, but long is 32 bit on many archs.
2015-01-01 13:36:43 -05:00
David Herrmann
fbee1d8587 networkctl: fix strappend() error checking
Make sure to test the right variable for NULL.
2014-12-31 15:56:11 +01:00
Tom Gundersen
bfcdba8d56 networkd: link - plug leak 2014-12-19 08:34:04 +01:00
Tom Gundersen
19727828d2 networkctl: lldp - respect arg_legend 2014-12-19 08:33:46 +01:00
Susant Sahani
49699bac94 LLDP: Add support for networkctl 2014-12-19 08:15:05 +05:30
Susant Sahani
ce43e48446 networkd: integrate LLDP
This patch integrates LLDP with networkd.

Example conf:
file : lldp.network

[Match]
Name=em1

[Network]
LLDP=yes
2014-12-19 08:02:45 +05:30
Tom Gundersen
266b538958 networkctl: port to verbs helper 2014-12-19 03:16:45 +01:00
Alin Rauta
b98b483bac networkd: add FDB support 2014-12-18 15:28:16 +01:00
Tom Gundersen
81fd1dd3a2 networkctl: port from libudev to sd-hwdb 2014-12-15 20:40:09 +01:00
Tom Gundersen
17d1f37d0d networkd: failing to track links is a serious problem so log at warning level rather than debug 2014-12-15 17:57:51 +01:00
Thomas Hindoe Paaboel Andersen
b7378b89d2 networkctl: remove unused variable 2014-12-12 21:57:44 +01:00
Lennart Poettering
b1acce80cd networkctl: also draw a nice unicode cirlce when "networkctl status" is run without parameters 2014-12-12 19:11:35 +01:00
Lennart Poettering
1693a943ca networkctl: show interface names next to IP addresses if we dump adresses from all interfaces 2014-12-12 19:07:26 +01:00
Lennart Poettering
69fb1176c4 networkctl: also show gateway address when "networkctl status" without further arguments is passed 2014-12-12 18:57:15 +01:00
Lennart Poettering
888943fc62 networkctl: show MAC address OUI vendor next to MAC addresses 2014-12-12 18:56:35 +01:00
Torstein Husebø
d076c6f9e4 networkd/resolved: correct spacing near eol in code comments 2014-12-11 15:04:43 +01:00
Lennart Poettering
7303ec8f30 networkd: rename section [BridgePort] → [Bridge]
Let's stick to generic sections that describe the general technology,
instead of specific per-object sections, unless we really have a reason
to do that otherwise.
2014-12-10 19:07:48 +01:00
Patrik Flykt
85bd849f09 networkd-dhcp6: Support ICMPv6 Other information
When ICMPv6 Other information is received, enable Information request
in DHCPv6. If the DHCPv6 client already exists, only update the client
if there is a transition from Other to Managed state.
2014-12-10 18:31:21 +01:00
Patrik Flykt
5c79bd7983 networkd-dhcp6: Move ICMPv6 and DHCPv6 configuration to new file
Handle all aspects of ICMPv6 and DHCPv6 in a file of its own as is done
with DHCPv4 and IPv4LL.
2014-12-10 18:31:21 +01:00
Thomas Hindoe Paaboel Andersen
1372d5eff4 networkd: remove unused variable
It is no longer used after 45af44d47d
2014-12-09 20:51:58 +01:00
Tom Gundersen
45af44d47d networkd: manager - enumerate addresses globally, rather than per-link
The kernel always returns all addresses, rather than only for the given link, so let's only enumerate once.
2014-12-08 22:13:40 +01:00
Tom Gundersen
1e19f35297 networkd: link - typo 2014-12-08 18:38:55 +01:00
Tom Gundersen
935c0d26f7 networkd: route - ignore unknown address family 2014-12-08 18:38:55 +01:00
Tom Gundersen
ca6038b896 udev: link-config - simplify net-match 2014-12-08 18:38:55 +01:00
Dave Reisner
285760fedf Check return value from reading name_assign_type attr
This file won't exist on kernels earlier than 3.17.
2014-12-08 18:38:55 +01:00
Tom Gundersen
32bc8adcd8 net_setup/networkd: warn if matching is done on possibly unstable ifname 2014-12-05 16:01:18 +01:00
Tom Gundersen
c106cc36b9 networkd: add basic [Link] settings to .network files
This allows the default link settings (set in .link files) to be overridden per Network. Only MTU and MACAddress is supported for now.
2014-12-05 00:38:10 +01:00
Tom Gundersen
7eb08da4b3 udev: net_setup - allow matching on OriginalName=
This has been requested repeatedly, so let's give it a go. We explicitly do not allow matching
on names that have already been changed (from a previous udev run, or otherwise), and matching
on unpredictable names (ethX) is discouraged (but not currently disallowed).

We also currently allow:

[Match]
Name=veth0

[Link]
Name=my-name0
SomeOtherSetting=true

Which means that the link file will be applied the first time it is invoked, but
not on subsequent invocations, which may be surprising.
2014-12-04 18:53:47 +01:00
Tom Gundersen
7bdb04298f networkd: tunnel - allow INADDR_ANY as the local address 2014-12-04 16:02:05 +01:00
Tom Gundersen
9e7e440835 networkd: add support for source routing 2014-12-04 16:02:05 +01:00
Tom Gundersen
00e8d83a5a networkd: fix compile
Rebase failure on my side.
2014-12-04 12:19:57 +01:00
Tom Gundersen
b6a3ca6d87 networkctl: use the shared functions for enumerating the local gateways 2014-12-04 12:19:27 +01:00
Susant Sahani
e1853b00ef networkd: Add bridge port path cost
This patch add support to specify path cost of the
bridge port to be configured via conf file.

Exampe: conf

file: br.netdev

[NetDev]
Name=br-test
Kind=bridge

file: br.network
[Match]
Name=em1

[Network]
Bridge=br-test

[BridgePort]
Cost=332

 bridge link
2: em1 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master
br-test state disabled priority 32 cost 332
2014-12-04 11:13:32 +01:00
Susant Sahani
85a8eeee36 networkd: support vxlan parameters
V3: fix copy paste error
V4: Make manual and config more readable

Add vxlan paramertes to config.
2014-12-04 11:13:32 +01:00
Lennart Poettering
1d050e1e0a rtnl: when querying local addresses and gateways, take address family into account 2014-12-04 01:42:42 +01:00
Thomas Hindoe Paaboel Andersen
6c03d27d9f networkctl: remove unused variable 2014-12-03 23:51:56 +01:00
Torstein Husebø
144232a8e0 networkd: fix typo
V2: found another one
2014-12-03 21:36:10 +01:00
Tom Gundersen
d8500c5378 shared: add format helpers for printing MAC addresses
Use these in networctl.
2014-12-02 14:31:16 +01:00
Tom Gundersen
c09da72900 networkctl: print the Gateway in the status output
This is the IP address of the default route on the link, if present. A
description is printed when available (the manufacturer of the gateway NIC based
on its MAC address).

In the future we should prefer LLDP information over MAC info.
2014-12-02 10:46:22 +01:00