diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-11-07 16:27:33 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-11-27 06:38:26 +0900 |
commit | 9f0cf80dd007491698978dbfe38158d74c1c9526 (patch) | |
tree | cfb5ace7b0ab1fcbc2bd9262acd99b5512b9ab8d | |
parent | a67e0507c313531957b2f061e5a0ce17576defc7 (diff) | |
download | systemd-9f0cf80dd007491698978dbfe38158d74c1c9526.tar.gz |
network/netdev: introduce .iftype to netdev vtable
And disable .generate_mac flag for non-ether interfaces.
-rw-r--r-- | src/network/netdev/bareudp.c | 4 | ||||
-rw-r--r-- | src/network/netdev/batadv.c | 3 | ||||
-rw-r--r-- | src/network/netdev/bond.c | 4 | ||||
-rw-r--r-- | src/network/netdev/bridge.c | 2 | ||||
-rw-r--r-- | src/network/netdev/dummy.c | 3 | ||||
-rw-r--r-- | src/network/netdev/geneve.c | 3 | ||||
-rw-r--r-- | src/network/netdev/ifb.c | 3 | ||||
-rw-r--r-- | src/network/netdev/ipvlan.c | 4 | ||||
-rw-r--r-- | src/network/netdev/macsec.c | 2 | ||||
-rw-r--r-- | src/network/netdev/macvlan.c | 4 | ||||
-rw-r--r-- | src/network/netdev/netdev.h | 3 | ||||
-rw-r--r-- | src/network/netdev/netdevsim.c | 3 | ||||
-rw-r--r-- | src/network/netdev/nlmon.c | 3 | ||||
-rw-r--r-- | src/network/netdev/tunnel.c | 20 | ||||
-rw-r--r-- | src/network/netdev/tuntap.c | 2 | ||||
-rw-r--r-- | src/network/netdev/vcan.c | 4 | ||||
-rw-r--r-- | src/network/netdev/veth.c | 3 | ||||
-rw-r--r-- | src/network/netdev/vlan.c | 2 | ||||
-rw-r--r-- | src/network/netdev/vrf.c | 3 | ||||
-rw-r--r-- | src/network/netdev/vxcan.c | 3 | ||||
-rw-r--r-- | src/network/netdev/vxlan.c | 3 | ||||
-rw-r--r-- | src/network/netdev/wireguard.c | 4 | ||||
-rw-r--r-- | src/network/netdev/xfrm.c | 5 |
23 files changed, 78 insertions, 12 deletions
diff --git a/src/network/netdev/bareudp.c b/src/network/netdev/bareudp.c index 8c0c895a0d..8ff0eb1360 100644 --- a/src/network/netdev/bareudp.c +++ b/src/network/netdev/bareudp.c @@ -1,6 +1,9 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later * Copyright © 2020 VMware, Inc. */ +#include <netinet/in.h> +#include <linux/if_arp.h> + #include "bareudp.h" #include "netlink-util.h" #include "networkd-manager.h" @@ -79,4 +82,5 @@ const NetDevVTable bare_udp_vtable = { .config_verify = netdev_bare_udp_verify, .fill_message_create = netdev_bare_udp_fill_message_create, .create_type = NETDEV_CREATE_INDEPENDENT, + .iftype = ARPHRD_NONE, }; diff --git a/src/network/netdev/batadv.c b/src/network/netdev/batadv.c index 1d12fc79cc..f42f572a36 100644 --- a/src/network/netdev/batadv.c +++ b/src/network/netdev/batadv.c @@ -1,7 +1,9 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <inttypes.h> +#include <netinet/in.h> #include <linux/genetlink.h> +#include <linux/if_arp.h> #include "batadv.h" #include "fileio.h" @@ -200,4 +202,5 @@ const NetDevVTable batadv_vtable = { .fill_message_create = netdev_batadv_fill_message_create, .post_create = netdev_batadv_post_create, .create_type = NETDEV_CREATE_MASTER, + .iftype = ARPHRD_ETHER, }; diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c index 1b66ed837c..5d94aa1d68 100644 --- a/src/network/netdev/bond.c +++ b/src/network/netdev/bond.c @@ -1,5 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include <netinet/in.h> +#include <linux/if_arp.h> + #include "alloc-util.h" #include "bond.h" #include "bond-util.h" @@ -449,5 +452,6 @@ const NetDevVTable bond_vtable = { .sections = NETDEV_COMMON_SECTIONS "Bond\0", .fill_message_create = netdev_bond_fill_message_create, .create_type = NETDEV_CREATE_MASTER, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c index a4d68985b8..2d60e441ec 100644 --- a/src/network/netdev/bridge.c +++ b/src/network/netdev/bridge.c @@ -2,6 +2,7 @@ #include <net/if.h> #include <netinet/in.h> +#include <linux/if_arp.h> #include <linux/if_bridge.h> #include "bridge.h" @@ -276,4 +277,5 @@ const NetDevVTable bridge_vtable = { .sections = NETDEV_COMMON_SECTIONS "Bridge\0", .post_create = netdev_bridge_post_create, .create_type = NETDEV_CREATE_MASTER, + .iftype = ARPHRD_ETHER, }; diff --git a/src/network/netdev/dummy.c b/src/network/netdev/dummy.c index 754ee98952..00df1d2787 100644 --- a/src/network/netdev/dummy.c +++ b/src/network/netdev/dummy.c @@ -1,10 +1,13 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include <linux/if_arp.h> + #include "dummy.h" const NetDevVTable dummy_vtable = { .object_size = sizeof(Dummy), .sections = NETDEV_COMMON_SECTIONS, .create_type = NETDEV_CREATE_INDEPENDENT, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/geneve.c b/src/network/netdev/geneve.c index 46f5ea41c8..224c17e979 100644 --- a/src/network/netdev/geneve.c +++ b/src/network/netdev/geneve.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include "alloc-util.h" #include "conf-parser.h" @@ -292,5 +294,6 @@ const NetDevVTable geneve_vtable = { .fill_message_create = netdev_geneve_fill_message_create, .create_type = NETDEV_CREATE_INDEPENDENT, .config_verify = netdev_geneve_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/ifb.c b/src/network/netdev/ifb.c index 16ff49d7f0..d7ff44cb9e 100644 --- a/src/network/netdev/ifb.c +++ b/src/network/netdev/ifb.c @@ -1,11 +1,14 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later * Copyright © 2019 VMware, Inc. */ +#include <linux/if_arp.h> + #include "ifb.h" const NetDevVTable ifb_vtable = { .object_size = sizeof(IntermediateFunctionalBlock), .sections = NETDEV_COMMON_SECTIONS, .create_type = NETDEV_CREATE_INDEPENDENT, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/ipvlan.c b/src/network/netdev/ipvlan.c index 92a8f583e3..d15766cd7b 100644 --- a/src/network/netdev/ipvlan.c +++ b/src/network/netdev/ipvlan.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include "conf-parser.h" #include "ipvlan.h" @@ -63,6 +65,7 @@ const NetDevVTable ipvlan_vtable = { .sections = NETDEV_COMMON_SECTIONS "IPVLAN\0", .fill_message_create = netdev_ipvlan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; @@ -72,6 +75,7 @@ const NetDevVTable ipvtap_vtable = { .sections = NETDEV_COMMON_SECTIONS "IPVTAP\0", .fill_message_create = netdev_ipvlan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c index b50d93710d..72689742fb 100644 --- a/src/network/netdev/macsec.c +++ b/src/network/netdev/macsec.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <netinet/in.h> +#include <linux/if_arp.h> #include <linux/if_ether.h> #include <linux/if_macsec.h> #include <linux/genetlink.h> @@ -1230,5 +1231,6 @@ const NetDevVTable macsec_vtable = { .done = macsec_done, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_macsec_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/macvlan.c b/src/network/netdev/macvlan.c index c295cae2cd..c41be6e78f 100644 --- a/src/network/netdev/macvlan.c +++ b/src/network/netdev/macvlan.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include "conf-parser.h" #include "macvlan.h" @@ -153,6 +155,7 @@ const NetDevVTable macvtap_vtable = { .sections = NETDEV_COMMON_SECTIONS "MACVTAP\0", .fill_message_create = netdev_macvlan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; @@ -163,5 +166,6 @@ const NetDevVTable macvlan_vtable = { .sections = NETDEV_COMMON_SECTIONS "MACVLAN\0", .fill_message_create = netdev_macvlan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/netdev.h b/src/network/netdev/netdev.h index 10dff0177f..c47ec4306b 100644 --- a/src/network/netdev/netdev.h +++ b/src/network/netdev/netdev.h @@ -159,6 +159,9 @@ typedef struct NetDevVTable { /* verify that compulsory configuration options were specified */ int (*config_verify)(NetDev *netdev, const char *filename); + /* expected iftype, e.g. ARPHRD_ETHER. */ + uint16_t iftype; + /* Generate MAC address when MACAddress= is not specified. */ bool generate_mac; } NetDevVTable; diff --git a/src/network/netdev/netdevsim.c b/src/network/netdev/netdevsim.c index b2814284a4..15d5c132f9 100644 --- a/src/network/netdev/netdevsim.c +++ b/src/network/netdev/netdevsim.c @@ -1,10 +1,13 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include <linux/if_arp.h> + #include "netdevsim.h" const NetDevVTable netdevsim_vtable = { .object_size = sizeof(NetDevSim), .sections = NETDEV_COMMON_SECTIONS, .create_type = NETDEV_CREATE_INDEPENDENT, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/nlmon.c b/src/network/netdev/nlmon.c index a8faed5b24..b6e2a40579 100644 --- a/src/network/netdev/nlmon.c +++ b/src/network/netdev/nlmon.c @@ -1,5 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include <linux/if_arp.h> + #include "nlmon.h" static int netdev_nlmon_verify(NetDev *netdev, const char *filename) { @@ -19,4 +21,5 @@ const NetDevVTable nlmon_vtable = { .sections = NETDEV_COMMON_SECTIONS, .create_type = NETDEV_CREATE_INDEPENDENT, .config_verify = netdev_nlmon_verify, + .iftype = ARPHRD_NETLINK, }; diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c index cae2ef1a90..98986f4dc6 100644 --- a/src/network/netdev/tunnel.c +++ b/src/network/netdev/tunnel.c @@ -2,8 +2,9 @@ #include <netinet/in.h> #include <linux/fou.h> -#include <linux/ip.h> +#include <linux/if_arp.h> #include <linux/if_tunnel.h> +#include <linux/ip.h> #include <linux/ip6_tunnel.h> #include "conf-parser.h" @@ -817,7 +818,7 @@ const NetDevVTable ipip_vtable = { .fill_message_create = netdev_ipip_sit_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_TUNNEL, }; const NetDevVTable sit_vtable = { @@ -827,7 +828,7 @@ const NetDevVTable sit_vtable = { .fill_message_create = netdev_ipip_sit_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_SIT, }; const NetDevVTable vti_vtable = { @@ -837,7 +838,7 @@ const NetDevVTable vti_vtable = { .fill_message_create = netdev_vti_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_TUNNEL, }; const NetDevVTable vti6_vtable = { @@ -847,7 +848,7 @@ const NetDevVTable vti6_vtable = { .fill_message_create = netdev_vti_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_TUNNEL6, }; const NetDevVTable gre_vtable = { @@ -857,7 +858,7 @@ const NetDevVTable gre_vtable = { .fill_message_create = netdev_gre_erspan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_IPGRE, }; const NetDevVTable gretap_vtable = { @@ -867,6 +868,7 @@ const NetDevVTable gretap_vtable = { .fill_message_create = netdev_gre_erspan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; @@ -877,7 +879,7 @@ const NetDevVTable ip6gre_vtable = { .fill_message_create = netdev_ip6gre_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_IP6GRE, }; const NetDevVTable ip6gretap_vtable = { @@ -887,6 +889,7 @@ const NetDevVTable ip6gretap_vtable = { .fill_message_create = netdev_ip6gre_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; @@ -897,7 +900,7 @@ const NetDevVTable ip6tnl_vtable = { .fill_message_create = netdev_ip6tnl_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, - .generate_mac = true, + .iftype = ARPHRD_TUNNEL6, }; const NetDevVTable erspan_vtable = { @@ -907,5 +910,6 @@ const NetDevVTable erspan_vtable = { .fill_message_create = netdev_gre_erspan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_tunnel_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/tuntap.c b/src/network/netdev/tuntap.c index bb5a6b0cf5..e8310f6c9a 100644 --- a/src/network/netdev/tuntap.c +++ b/src/network/netdev/tuntap.c @@ -152,6 +152,7 @@ const NetDevVTable tun_vtable = { .done = tuntap_done, .create = netdev_create_tuntap, .create_type = NETDEV_CREATE_INDEPENDENT, + .iftype = ARPHRD_NONE, }; const NetDevVTable tap_vtable = { @@ -161,4 +162,5 @@ const NetDevVTable tap_vtable = { .done = tuntap_done, .create = netdev_create_tuntap, .create_type = NETDEV_CREATE_INDEPENDENT, + .iftype = ARPHRD_ETHER, }; diff --git a/src/network/netdev/vcan.c b/src/network/netdev/vcan.c index 3621d4c5d8..380547ee1e 100644 --- a/src/network/netdev/vcan.c +++ b/src/network/netdev/vcan.c @@ -1,10 +1,12 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include <linux/if_arp.h> + #include "vcan.h" const NetDevVTable vcan_vtable = { .object_size = sizeof(VCan), .sections = NETDEV_COMMON_SECTIONS, .create_type = NETDEV_CREATE_INDEPENDENT, - .generate_mac = true, + .iftype = ARPHRD_CAN, }; diff --git a/src/network/netdev/veth.c b/src/network/netdev/veth.c index 8236a43315..ae52ae8efd 100644 --- a/src/network/netdev/veth.c +++ b/src/network/netdev/veth.c @@ -2,6 +2,8 @@ #include <errno.h> #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include <linux/veth.h> #include "veth.h" @@ -94,5 +96,6 @@ const NetDevVTable veth_vtable = { .fill_message_create = netdev_veth_fill_message_create, .create_type = NETDEV_CREATE_INDEPENDENT, .config_verify = netdev_veth_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/vlan.c b/src/network/netdev/vlan.c index de3eb721e9..af3e77963e 100644 --- a/src/network/netdev/vlan.c +++ b/src/network/netdev/vlan.c @@ -2,6 +2,7 @@ #include <errno.h> #include <net/if.h> +#include <linux/if_arp.h> #include <linux/if_vlan.h> #include "parse-util.h" @@ -229,4 +230,5 @@ const NetDevVTable vlan_vtable = { .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_vlan_verify, .done = vlan_done, + .iftype = ARPHRD_ETHER, }; diff --git a/src/network/netdev/vrf.c b/src/network/netdev/vrf.c index 1ba1916f1a..b1b6707441 100644 --- a/src/network/netdev/vrf.c +++ b/src/network/netdev/vrf.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include "vrf.h" @@ -28,5 +30,6 @@ const NetDevVTable vrf_vtable = { .sections = NETDEV_COMMON_SECTIONS "VRF\0", .fill_message_create = netdev_vrf_fill_message_create, .create_type = NETDEV_CREATE_MASTER, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/vxcan.c b/src/network/netdev/vxcan.c index e4e32ff390..a0ba048eb1 100644 --- a/src/network/netdev/vxcan.c +++ b/src/network/netdev/vxcan.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <linux/can/vxcan.h> +#include <linux/if_arp.h> #include "vxcan.h" @@ -70,5 +71,5 @@ const NetDevVTable vxcan_vtable = { .fill_message_create = netdev_vxcan_fill_message_create, .create_type = NETDEV_CREATE_INDEPENDENT, .config_verify = netdev_vxcan_verify, - .generate_mac = true, + .iftype = ARPHRD_CAN, }; diff --git a/src/network/netdev/vxlan.c b/src/network/netdev/vxlan.c index 6829017f80..30b0855598 100644 --- a/src/network/netdev/vxlan.c +++ b/src/network/netdev/vxlan.c @@ -1,6 +1,8 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include "conf-parser.h" #include "alloc-util.h" @@ -394,5 +396,6 @@ const NetDevVTable vxlan_vtable = { .fill_message_create = netdev_vxlan_fill_message_create, .create_type = NETDEV_CREATE_STACKED, .config_verify = netdev_vxlan_verify, + .iftype = ARPHRD_ETHER, .generate_mac = true, }; diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c index 1e90cad2e7..3734fa51c5 100644 --- a/src/network/netdev/wireguard.c +++ b/src/network/netdev/wireguard.c @@ -5,6 +5,8 @@ #include <sys/ioctl.h> #include <net/if.h> +#include <netinet/in.h> +#include <linux/if_arp.h> #include "sd-resolve.h" @@ -937,5 +939,5 @@ const NetDevVTable wireguard_vtable = { .done = wireguard_done, .create_type = NETDEV_CREATE_INDEPENDENT, .config_verify = wireguard_verify, - .generate_mac = true, + .iftype = ARPHRD_NONE, }; diff --git a/src/network/netdev/xfrm.c b/src/network/netdev/xfrm.c index a407c54da4..4b7e73b37a 100644 --- a/src/network/netdev/xfrm.c +++ b/src/network/netdev/xfrm.c @@ -1,5 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include <linux/if_arp.h> + #include "missing_network.h" #include "xfrm.h" @@ -29,5 +31,6 @@ const NetDevVTable xfrm_vtable = { .object_size = sizeof(Xfrm), .sections = NETDEV_COMMON_SECTIONS "Xfrm\0", .fill_message_create = xfrm_fill_message_create, - .create_type = NETDEV_CREATE_STACKED + .create_type = NETDEV_CREATE_STACKED, + .iftype = ARPHRD_NONE, }; |