From: Yu Watanabe Date: Sun, 7 Nov 2021 07:27:33 +0000 (+0900) Subject: network/netdev: introduce .iftype to netdev vtable X-Git-Tag: v250-rc1~131^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9f0cf80dd007491698978dbfe38158d74c1c9526;p=thirdparty%2Fsystemd.git network/netdev: introduce .iftype to netdev vtable And disable .generate_mac flag for non-ether interfaces. --- diff --git a/src/network/netdev/bareudp.c b/src/network/netdev/bareudp.c index 8c0c895a0df..8ff0eb13601 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 +#include + #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 1d12fc79cc2..f42f572a367 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 +#include #include +#include #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 1b66ed837cf..5d94aa1d68e 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 +#include + #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 a4d68985b84..2d60e441ec3 100644 --- a/src/network/netdev/bridge.c +++ b/src/network/netdev/bridge.c @@ -2,6 +2,7 @@ #include #include +#include #include #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 754ee989520..00df1d27873 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 + #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 46f5ea41c89..224c17e979a 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 +#include +#include #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 16ff49d7f0e..d7ff44cb9ea 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 + #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 92a8f583e3b..d15766cd7bb 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 +#include +#include #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 b50d93710db..72689742fb1 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 +#include #include #include #include @@ -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 c295cae2cd4..c41be6e78f5 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 +#include +#include #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 10dff0177fa..c47ec4306ba 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 b2814284a4a..15d5c132f96 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 + #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 a8faed5b245..b6e2a405795 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 + #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 cae2ef1a909..98986f4dc67 100644 --- a/src/network/netdev/tunnel.c +++ b/src/network/netdev/tunnel.c @@ -2,8 +2,9 @@ #include #include -#include +#include #include +#include #include #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 bb5a6b0cf51..e8310f6c9a1 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 3621d4c5d86..380547ee1e8 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 + #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 8236a433158..ae52ae8efd2 100644 --- a/src/network/netdev/veth.c +++ b/src/network/netdev/veth.c @@ -2,6 +2,8 @@ #include #include +#include +#include #include #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 de3eb721e9b..af3e77963e5 100644 --- a/src/network/netdev/vlan.c +++ b/src/network/netdev/vlan.c @@ -2,6 +2,7 @@ #include #include +#include #include #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 1ba1916f1ac..b1b6707441b 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 +#include +#include #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 e4e32ff3909..a0ba048eb14 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 +#include #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 6829017f808..30b08555982 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 +#include +#include #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 1e90cad2e71..3734fa51c5c 100644 --- a/src/network/netdev/wireguard.c +++ b/src/network/netdev/wireguard.c @@ -5,6 +5,8 @@ #include #include +#include +#include #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 a407c54da4b..4b7e73b37a7 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 + #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, };