And disable .generate_mac flag for non-ether interfaces.
/* 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"
.config_verify = netdev_bare_udp_verify,
.fill_message_create = netdev_bare_udp_fill_message_create,
.create_type = NETDEV_CREATE_INDEPENDENT,
+ .iftype = ARPHRD_NONE,
};
/* 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"
.fill_message_create = netdev_batadv_fill_message_create,
.post_create = netdev_batadv_post_create,
.create_type = NETDEV_CREATE_MASTER,
+ .iftype = ARPHRD_ETHER,
};
/* 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"
.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,
};
#include <net/if.h>
#include <netinet/in.h>
+#include <linux/if_arp.h>
#include <linux/if_bridge.h>
#include "bridge.h"
.sections = NETDEV_COMMON_SECTIONS "Bridge\0",
.post_create = netdev_bridge_post_create,
.create_type = NETDEV_CREATE_MASTER,
+ .iftype = ARPHRD_ETHER,
};
/* 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,
};
/* 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"
.fill_message_create = netdev_geneve_fill_message_create,
.create_type = NETDEV_CREATE_INDEPENDENT,
.config_verify = netdev_geneve_verify,
+ .iftype = ARPHRD_ETHER,
.generate_mac = true,
};
/* 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,
};
/* 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"
.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,
};
.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,
};
/* 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>
.done = macsec_done,
.create_type = NETDEV_CREATE_STACKED,
.config_verify = netdev_macsec_verify,
+ .iftype = ARPHRD_ETHER,
.generate_mac = true,
};
/* 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"
.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,
};
.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,
};
/* 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;
/* 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,
};
/* 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) {
.sections = NETDEV_COMMON_SECTIONS,
.create_type = NETDEV_CREATE_INDEPENDENT,
.config_verify = netdev_nlmon_verify,
+ .iftype = ARPHRD_NETLINK,
};
#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"
.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 = {
.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 = {
.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 = {
.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 = {
.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 = {
.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,
};
.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 = {
.fill_message_create = netdev_ip6gre_fill_message_create,
.create_type = NETDEV_CREATE_STACKED,
.config_verify = netdev_tunnel_verify,
+ .iftype = ARPHRD_ETHER,
.generate_mac = true,
};
.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 = {
.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,
};
.done = tuntap_done,
.create = netdev_create_tuntap,
.create_type = NETDEV_CREATE_INDEPENDENT,
+ .iftype = ARPHRD_NONE,
};
const NetDevVTable tap_vtable = {
.done = tuntap_done,
.create = netdev_create_tuntap,
.create_type = NETDEV_CREATE_INDEPENDENT,
+ .iftype = ARPHRD_ETHER,
};
/* 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,
};
#include <errno.h>
#include <net/if.h>
+#include <netinet/in.h>
+#include <linux/if_arp.h>
#include <linux/veth.h>
#include "veth.h"
.fill_message_create = netdev_veth_fill_message_create,
.create_type = NETDEV_CREATE_INDEPENDENT,
.config_verify = netdev_veth_verify,
+ .iftype = ARPHRD_ETHER,
.generate_mac = true,
};
#include <errno.h>
#include <net/if.h>
+#include <linux/if_arp.h>
#include <linux/if_vlan.h>
#include "parse-util.h"
.create_type = NETDEV_CREATE_STACKED,
.config_verify = netdev_vlan_verify,
.done = vlan_done,
+ .iftype = ARPHRD_ETHER,
};
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
+#include <netinet/in.h>
+#include <linux/if_arp.h>
#include "vrf.h"
.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,
};
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/can/vxcan.h>
+#include <linux/if_arp.h>
#include "vxcan.h"
.fill_message_create = netdev_vxcan_fill_message_create,
.create_type = NETDEV_CREATE_INDEPENDENT,
.config_verify = netdev_vxcan_verify,
- .generate_mac = true,
+ .iftype = ARPHRD_CAN,
};
/* 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"
.fill_message_create = netdev_vxlan_fill_message_create,
.create_type = NETDEV_CREATE_STACKED,
.config_verify = netdev_vxlan_verify,
+ .iftype = ARPHRD_ETHER,
.generate_mac = true,
};
#include <sys/ioctl.h>
#include <net/if.h>
+#include <netinet/in.h>
+#include <linux/if_arp.h>
#include "sd-resolve.h"
.done = wireguard_done,
.create_type = NETDEV_CREATE_INDEPENDENT,
.config_verify = wireguard_verify,
- .generate_mac = true,
+ .iftype = ARPHRD_NONE,
};
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <linux/if_arp.h>
+
#include "missing_network.h"
#include "xfrm.h"
.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,
};