From 8f815e8b0362ca36474233feafb4d1a59c57e08f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 24 Jul 2019 18:22:43 +0900 Subject: [PATCH 1/2] tree-wide: drop netinet/ether.h from socket-util.h and sd-netlink.h --- src/basic/socket-util.h | 2 +- src/libsystemd-network/arp-util.c | 3 ++- src/libsystemd-network/sd-dhcp6-client.c | 1 + src/libsystemd-network/sd-ipv4acd.c | 1 + src/libsystemd-network/test-dhcp6-client.c | 1 + src/libsystemd-network/test-ipv4ll.c | 1 + src/network/networkd-dhcp4.c | 1 + src/network/networkd-dhcp6.c | 1 + src/network/networkd-link.c | 1 + src/network/networkd-lldp-rx.c | 1 + src/network/networkd-lldp-tx.c | 1 + src/systemd/sd-netlink.h | 1 - 12 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index 36ec422f2c0..48a22415df9 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -3,9 +3,9 @@ #include #include +#include #include #include -#include #include #include #include diff --git a/src/libsystemd-network/arp-util.c b/src/libsystemd-network/arp-util.c index 3a86f3f077d..ac601a4efaf 100644 --- a/src/libsystemd-network/arp-util.c +++ b/src/libsystemd-network/arp-util.c @@ -3,8 +3,9 @@ Copyright © 2014 Axis Communications AB. All rights reserved. ***/ -#include #include +#include +#include #include "arp-util.h" #include "fd-util.h" diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index 68b41dfb6cd..d7a5349c701 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include "sd-dhcp6-client.h" diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c index d960027a0f9..5a24f38ae9e 100644 --- a/src/libsystemd-network/sd-ipv4acd.c +++ b/src/libsystemd-network/sd-ipv4acd.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c index 00056aa9e28..0983d7b51b8 100644 --- a/src/libsystemd-network/test-dhcp6-client.c +++ b/src/libsystemd-network/test-dhcp6-client.c @@ -4,6 +4,7 @@ ***/ #include +#include #include #include #include diff --git a/src/libsystemd-network/test-ipv4ll.c b/src/libsystemd-network/test-ipv4ll.c index 2e1488cb0ab..156718f2093 100644 --- a/src/libsystemd-network/test-ipv4ll.c +++ b/src/libsystemd-network/test-ipv4ll.c @@ -4,6 +4,7 @@ ***/ #include +#include #include #include #include diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index f20254fc827..164e46675cc 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -2,6 +2,7 @@ #include #include +#include #include "alloc-util.h" #include "hostname-util.h" diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index d6262a3885f..b20aa785084 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -5,6 +5,7 @@ #include #include +#include #include "sd-radv.h" #include "sd-dhcp6-client.h" diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 17829fca9f9..61f2bcaaba2 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2,6 +2,7 @@ #include #include +#include #include #include "alloc-util.h" diff --git a/src/network/networkd-lldp-rx.c b/src/network/networkd-lldp-rx.c index 95018d37a3e..0631cc96a0b 100644 --- a/src/network/networkd-lldp-rx.c +++ b/src/network/networkd-lldp-rx.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ #include +#include #include #include "fd-util.h" diff --git a/src/network/networkd-lldp-tx.c b/src/network/networkd-lldp-tx.c index 00c4358a0a8..6a9e459494a 100644 --- a/src/network/networkd-lldp-tx.c +++ b/src/network/networkd-lldp-tx.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "alloc-util.h" diff --git a/src/systemd/sd-netlink.h b/src/systemd/sd-netlink.h index b0a51185e9c..33cd82ba5a6 100644 --- a/src/systemd/sd-netlink.h +++ b/src/systemd/sd-netlink.h @@ -19,7 +19,6 @@ #include #include -#include #include #include #include From c6ac3729c9ece63185a3c4e7bc1970b98d2feb01 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 24 Jul 2019 18:23:45 +0900 Subject: [PATCH 2/2] network: support slcan The device driver does not have IFLA_INFO_KIND attribute. So, we need to check iftype. Closes #13150. --- src/network/networkd-link.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 61f2bcaaba2..64e8bac7ae2 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -90,6 +90,13 @@ int link_sysctl_ipv6_enabled(Link *link) { return link->sysctl_ipv6_enabled; } +static bool link_is_can(Link *link) { + assert(link); + + return link->iftype == ARPHRD_CAN || + STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan"); +} + static bool link_dhcp6_enabled(Link *link) { assert(link); @@ -105,7 +112,7 @@ static bool link_dhcp6_enabled(Link *link) { if (link->network->bond) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) + if (link_is_can(link)) return false; if (link_sysctl_ipv6_enabled(link) == 0) @@ -126,7 +133,7 @@ static bool link_dhcp4_enabled(Link *link) { if (link->network->bond) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) + if (link_is_can(link)) return false; return link->network->dhcp & ADDRESS_FAMILY_IPV4; @@ -144,7 +151,7 @@ static bool link_dhcp4_server_enabled(Link *link) { if (link->network->bond) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) + if (link_is_can(link)) return false; return link->network->dhcp_server; @@ -160,9 +167,12 @@ bool link_ipv4ll_enabled(Link *link, AddressFamilyBoolean mask) { if (!link->network) return false; + if (link_is_can(link)) + return false; + if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "ip6gre","ip6tnl", "sit", "vti", - "vti6", "can", "vcan", "vxcan", "nlmon", "xfrm")) + "vti6", "nlmon", "xfrm")) return false; /* L3 or L3S mode do not support ARP. */ @@ -187,7 +197,10 @@ static bool link_ipv6ll_enabled(Link *link) { if (!link->network) return false; - if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "sit", "vti", "can", "vcan", "vxcan", "nlmon")) + if (link_is_can(link)) + return false; + + if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "sit", "vti", "nlmon")) return false; if (link->network->bond) @@ -211,7 +224,7 @@ static bool link_ipv6_enabled(Link *link) { if (link_sysctl_ipv6_enabled(link) == 0) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) + if (link_is_can(link)) return false; /* DHCPv6 client will not be started if no IPv6 link-local address is configured. */ @@ -2495,7 +2508,7 @@ static int link_configure(Link *link) { assert(link->network); assert(link->state == LINK_STATE_INITIALIZED); - if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) + if (link_is_can(link)) return link_configure_can(link); /* Drop foreign config, but ignore loopback or critical devices.