network: add NetDevVTable::generate_mac flag
This commit is contained in:
@@ -592,4 +592,5 @@ const NetDevVTable bond_vtable = {
|
||||
.sections = "Match\0NetDev\0Bond\0",
|
||||
.fill_message_create = netdev_bond_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_MASTER,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -6,4 +6,5 @@ const NetDevVTable dummy_vtable = {
|
||||
.object_size = sizeof(Dummy),
|
||||
.sections = "Match\0NetDev\0",
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -355,4 +355,5 @@ const NetDevVTable geneve_vtable = {
|
||||
.create = netdev_geneve_create,
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.config_verify = netdev_geneve_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -77,6 +77,7 @@ const NetDevVTable ipvlan_vtable = {
|
||||
.sections = "Match\0NetDev\0IPVLAN\0",
|
||||
.fill_message_create = netdev_ipvlan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
const NetDevVTable ipvtap_vtable = {
|
||||
@@ -85,6 +86,7 @@ const NetDevVTable ipvtap_vtable = {
|
||||
.sections = "Match\0NetDev\0IPVTAP\0",
|
||||
.fill_message_create = netdev_ipvlan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
IPVlanMode link_get_ipvlan_mode(Link *link) {
|
||||
|
||||
@@ -1246,4 +1246,5 @@ const NetDevVTable macsec_vtable = {
|
||||
.done = macsec_done,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.config_verify = netdev_macsec_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -61,6 +61,7 @@ const NetDevVTable macvtap_vtable = {
|
||||
.sections = "Match\0NetDev\0MACVTAP\0",
|
||||
.fill_message_create = netdev_macvlan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
const NetDevVTable macvlan_vtable = {
|
||||
@@ -69,4 +70,5 @@ const NetDevVTable macvlan_vtable = {
|
||||
.sections = "Match\0NetDev\0MACVLAN\0",
|
||||
.fill_message_create = netdev_macvlan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -734,7 +734,7 @@ int netdev_load_one(Manager *manager, const char *filename) {
|
||||
if (!netdev->filename)
|
||||
return log_oom();
|
||||
|
||||
if (!netdev->mac && !IN_SET(netdev->kind, NETDEV_KIND_VLAN, NETDEV_KIND_BRIDGE)) {
|
||||
if (!netdev->mac && NETDEV_VTABLE(netdev)->generate_mac) {
|
||||
r = netdev_get_mac(netdev->ifname, &netdev->mac);
|
||||
if (r < 0)
|
||||
return log_netdev_error_errno(netdev, r,
|
||||
|
||||
@@ -131,6 +131,9 @@ typedef struct NetDevVTable {
|
||||
|
||||
/* verify that compulsory configuration options were specified */
|
||||
int (*config_verify)(NetDev *netdev, const char *filename);
|
||||
|
||||
/* Generate MAC address or not When MACAddress= is not specified. */
|
||||
bool generate_mac;
|
||||
} NetDevVTable;
|
||||
|
||||
extern const NetDevVTable * const netdev_vtable[_NETDEV_KIND_MAX];
|
||||
|
||||
@@ -7,4 +7,5 @@ const NetDevVTable netdevsim_vtable = {
|
||||
.object_size = sizeof(NetDevSim),
|
||||
.sections = "Match\0NetDev\0",
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -778,6 +778,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,
|
||||
};
|
||||
|
||||
const NetDevVTable sit_vtable = {
|
||||
@@ -787,6 +788,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,
|
||||
};
|
||||
|
||||
const NetDevVTable vti_vtable = {
|
||||
@@ -796,6 +798,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,
|
||||
};
|
||||
|
||||
const NetDevVTable vti6_vtable = {
|
||||
@@ -805,6 +808,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,
|
||||
};
|
||||
|
||||
const NetDevVTable gre_vtable = {
|
||||
@@ -814,6 +818,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,
|
||||
};
|
||||
|
||||
const NetDevVTable gretap_vtable = {
|
||||
@@ -823,6 +828,7 @@ const NetDevVTable gretap_vtable = {
|
||||
.fill_message_create = netdev_gre_erspan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.config_verify = netdev_tunnel_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
const NetDevVTable ip6gre_vtable = {
|
||||
@@ -832,6 +838,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,
|
||||
};
|
||||
|
||||
const NetDevVTable ip6gretap_vtable = {
|
||||
@@ -841,6 +848,7 @@ const NetDevVTable ip6gretap_vtable = {
|
||||
.fill_message_create = netdev_ip6gre_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.config_verify = netdev_tunnel_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
const NetDevVTable ip6tnl_vtable = {
|
||||
@@ -850,6 +858,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,
|
||||
};
|
||||
|
||||
const NetDevVTable erspan_vtable = {
|
||||
@@ -859,4 +868,5 @@ const NetDevVTable erspan_vtable = {
|
||||
.fill_message_create = netdev_gre_erspan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.config_verify = netdev_tunnel_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -6,4 +6,5 @@ const NetDevVTable vcan_vtable = {
|
||||
.object_size = sizeof(VCan),
|
||||
.sections = "Match\0NetDev\0",
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -92,4 +92,5 @@ const NetDevVTable veth_vtable = {
|
||||
.fill_message_create = netdev_veth_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.config_verify = netdev_veth_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -30,4 +30,5 @@ const NetDevVTable vrf_vtable = {
|
||||
.sections = "Match\0NetDev\0VRF\0",
|
||||
.fill_message_create = netdev_vrf_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_MASTER,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -70,4 +70,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,
|
||||
};
|
||||
|
||||
@@ -380,4 +380,5 @@ const NetDevVTable vxlan_vtable = {
|
||||
.fill_message_create = netdev_vxlan_fill_message_create,
|
||||
.create_type = NETDEV_CREATE_STACKED,
|
||||
.config_verify = netdev_vxlan_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
@@ -978,4 +978,5 @@ const NetDevVTable wireguard_vtable = {
|
||||
.done = wireguard_done,
|
||||
.create_type = NETDEV_CREATE_INDEPENDENT,
|
||||
.config_verify = wireguard_verify,
|
||||
.generate_mac = true,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user