]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: add NetDevVTable::generate_mac flag
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 23 May 2019 02:27:12 +0000 (11:27 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 28 May 2019 13:45:35 +0000 (22:45 +0900)
16 files changed:
src/network/netdev/bond.c
src/network/netdev/dummy.c
src/network/netdev/geneve.c
src/network/netdev/ipvlan.c
src/network/netdev/macsec.c
src/network/netdev/macvlan.c
src/network/netdev/netdev.c
src/network/netdev/netdev.h
src/network/netdev/netdevsim.c
src/network/netdev/tunnel.c
src/network/netdev/vcan.c
src/network/netdev/veth.c
src/network/netdev/vrf.c
src/network/netdev/vxcan.c
src/network/netdev/vxlan.c
src/network/netdev/wireguard.c

index 240cfe34e223e15569c3975323f1b249fd75019a..a85c9e33ec266e1f1ed9abf83d7edcc26c3baaf1 100644 (file)
@@ -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,
 };
index aded1c589feb0cce5cca16fdd35fb5745addecbc..091a54ff39e82ac4786012c53bbd6c767345563c 100644 (file)
@@ -6,4 +6,5 @@ const NetDevVTable dummy_vtable = {
         .object_size = sizeof(Dummy),
         .sections = "Match\0NetDev\0",
         .create_type = NETDEV_CREATE_INDEPENDENT,
+        .generate_mac = true,
 };
index 3dc8f083cc64709395d8ac7cbc21540344d37dcc..611f9b2f6d8bed7a96f37cbfcd2450c90b0be0cf 100644 (file)
@@ -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,
 };
index f48cb0231ad05f9dafc261e0838e90dd6007b6af..45dfe17777a6bcd207ceab467ca9b813ea01c73a 100644 (file)
@@ -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) {
index c82a6fd0ac16a4580eb517ddf99c5919da0a91c3..740d8853395b48514a41cb53d81c1e62487dfa93 100644 (file)
@@ -1246,4 +1246,5 @@ const NetDevVTable macsec_vtable = {
         .done = macsec_done,
         .create_type = NETDEV_CREATE_STACKED,
         .config_verify = netdev_macsec_verify,
+        .generate_mac = true,
 };
index 871f0201a87d2865f732d9ee440b1f6390b4758d..e13c3af9fd863f48a55d899bb9a58ea0224b8c7d 100644 (file)
@@ -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,
 };
index 3968ab54956c7e8c0d6d2cae499e6a777d4ee67d..1c307a3125d5c52d7eecacb312c2666fffeb4ea1 100644 (file)
@@ -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,
index dcf072ce94452ef34cc02e40cf6549e6a6ad3ef7..8295ba1966da2305adabc22d8fb2bcb749e71060 100644 (file)
@@ -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];
index 8caba676006bc86e32ba7384894f8fe06918daf0..3b9d875183e600736bd5c66e654dd5d458163f26 100644 (file)
@@ -7,4 +7,5 @@ const NetDevVTable netdevsim_vtable = {
         .object_size = sizeof(NetDevSim),
         .sections = "Match\0NetDev\0",
         .create_type = NETDEV_CREATE_INDEPENDENT,
+        .generate_mac = true,
 };
index e69a009c315a2deb1d097111885b5d963177ceae..1572836b69cc7c1eab932df8701750c3b227b876 100644 (file)
@@ -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,
 };
index 574d1cad312b43baa1145319e48694f167baf9ec..f6a4dbb098d30f139f6a448d8d21b0079f36100f 100644 (file)
@@ -6,4 +6,5 @@ const NetDevVTable vcan_vtable = {
         .object_size = sizeof(VCan),
         .sections = "Match\0NetDev\0",
         .create_type = NETDEV_CREATE_INDEPENDENT,
+        .generate_mac = true,
 };
index a0a0b8e39ec4599a4f772c6736c874f2f0cb59b0..e996b49b0a9f7694abb9f25e536f0c36edbfc155 100644 (file)
@@ -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,
 };
index 5efab537cc4f4e92a61324cd11990789b0d295ad..596a91453c0f0cf24d9ec8ff7767c23d93098ca7 100644 (file)
@@ -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,
 };
index c5dd5df51c5936a28dae8bb8b72ac2a2248bde83..79f47690adb0e1d210af575e8bbd7b951e98a3e4 100644 (file)
@@ -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,
 };
index e24537083b64fbecc18e10835906214020236bc7..bba58e8aaf4a6e9e955c309343002f85c7eca335 100644 (file)
@@ -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,
 };
index 91fcee1401b0056d7c01cb30ae300f57c309a243..154ca3b7a4490c71a1692b8c91a50059ba615cd3 100644 (file)
@@ -978,4 +978,5 @@ const NetDevVTable wireguard_vtable = {
         .done = wireguard_done,
         .create_type = NETDEV_CREATE_INDEPENDENT,
         .config_verify = wireguard_verify,
+        .generate_mac = true,
 };