]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/netdev: introduce .iftype to netdev vtable
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 7 Nov 2021 07:27:33 +0000 (16:27 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 26 Nov 2021 21:38:26 +0000 (06:38 +0900)
And disable .generate_mac flag for non-ether interfaces.

23 files changed:
src/network/netdev/bareudp.c
src/network/netdev/batadv.c
src/network/netdev/bond.c
src/network/netdev/bridge.c
src/network/netdev/dummy.c
src/network/netdev/geneve.c
src/network/netdev/ifb.c
src/network/netdev/ipvlan.c
src/network/netdev/macsec.c
src/network/netdev/macvlan.c
src/network/netdev/netdev.h
src/network/netdev/netdevsim.c
src/network/netdev/nlmon.c
src/network/netdev/tunnel.c
src/network/netdev/tuntap.c
src/network/netdev/vcan.c
src/network/netdev/veth.c
src/network/netdev/vlan.c
src/network/netdev/vrf.c
src/network/netdev/vxcan.c
src/network/netdev/vxlan.c
src/network/netdev/wireguard.c
src/network/netdev/xfrm.c

index 8c0c895a0dfd56c8e155b426cb919207650b7840..8ff0eb13601fdafcc960a4be1c9e73a0f8f521b5 100644 (file)
@@ -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,
 };
index 1d12fc79cc270d14061a2611efa5dfb4cfc91b41..f42f572a36774c50bb107e18894b9de5aea0e40b 100644 (file)
@@ -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,
 };
index 1b66ed837cf02cd7f249d44d1f89cab554ef5c87..5d94aa1d68e11f37933e20114b23a2df872153c7 100644 (file)
@@ -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,
 };
index a4d68985b8410a833449717f343817f652e7f910..2d60e441ec3e30386d5af42b41661b75c0449f44 100644 (file)
@@ -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,
 };
index 754ee989520224978ba8f92a377945852d116d61..00df1d2787371bc8fc29c17f2cc09abba2b97e66 100644 (file)
@@ -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,
 };
index 46f5ea41c89379ab048eeaa619d0d73b57746a9f..224c17e979a765e196f322c9cad06beda4438720 100644 (file)
@@ -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,
 };
index 16ff49d7f0e7080f104471e08717203ed42d7b0f..d7ff44cb9ea683fab3a4154511619b1608d125cf 100644 (file)
@@ -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,
 };
index 92a8f583e3b11381fd623f06615990d33b6a0391..d15766cd7bb05dce1168c1d479b531dd01e1cc00 100644 (file)
@@ -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,
 };
 
index b50d93710db43028472a336c0650ff555d66b37f..72689742fb1ca0de38159fec8b31a8f64c263691 100644 (file)
@@ -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,
 };
index c295cae2cd4ad99c161e9fca07ea4bd70f690d4f..c41be6e78f594bb89f58ef67eefbb8cf2c8e2f28 100644 (file)
@@ -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,
 };
index 10dff0177fae55c9f621ab43014cb2ef6a43d163..c47ec4306bab645b757cae0b1281349c0c2099ac 100644 (file)
@@ -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;
index b2814284a4a9d20f49b52776a636f5f6ad6bdc6b..15d5c132f96719534a1da83a3390ea4b65a0cecd 100644 (file)
@@ -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,
 };
index a8faed5b24580cffbc6421e7dc99b729e3114cce..b6e2a405795a30fda3dfca9b55ad479baeba202f 100644 (file)
@@ -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,
 };
index cae2ef1a909b381d07c65bf8c289de0ebc656891..98986f4dc6766b0dbb93b53afcc2f08f88e0058c 100644 (file)
@@ -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,
 };
index bb5a6b0cf515fe45997372782ca30652509f6679..e8310f6c9a158e127d7e5193fa854936e466d775 100644 (file)
@@ -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,
 };
index 3621d4c5d86257874f480e13ea21417fedfeeae6..380547ee1e856281984f18ac668876cfb6ba5c5a 100644 (file)
@@ -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,
 };
index 8236a433158c175883854ba44eb03d9812c1c17e..ae52ae8efd2cf319146a34c98a1af724ffff3ff1 100644 (file)
@@ -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,
 };
index de3eb721e9b854552391d50f9cb1a07adc166f01..af3e77963e529d6ca788c0fe7ab8d2048e1af3bc 100644 (file)
@@ -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,
 };
index 1ba1916f1ac816a01bff3bb20362ece205ece005..b1b6707441b56a764cc5f399092e30b9a714bde8 100644 (file)
@@ -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,
 };
index e4e32ff3909a0bf0359c8f08b917b19f86dc1f82..a0ba048eb1444761dfc23cc37a2e70e5581eb6ac 100644 (file)
@@ -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,
 };
index 6829017f808e37e875eefcc0c8415ec4e2c264f1..30b08555982271ba996afdb1cbe6e89d10ce7cd1 100644 (file)
@@ -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,
 };
index 1e90cad2e7129672f158c60104c79d3d7c8b6ad5..3734fa51c5c6f62c79ffd7773261a3a37df9d373 100644 (file)
@@ -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,
 };
index a407c54da4b9fdd3f434246ff1407eaee0aed8d9..4b7e73b37a738e688f541c69c6737991b9e6b38f 100644 (file)
@@ -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,
 };