From 96c907429e3224289fd360b8d9c8fdc573f4363b Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Sat, 14 Jun 2014 15:38:35 +0200 Subject: networkd: netdev - allow setting MACAddress in .netdev files It may sometimes be necessary to specify the MAC address of a netdev. Let us set the correct one from the get-go, rather than having the kernel generate a random one, and then change it after. --- src/network/networkd-tunnel.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/network/networkd-tunnel.c') diff --git a/src/network/networkd-tunnel.c b/src/network/networkd-tunnel.c index 60b16ba849..885347ab25 100644 --- a/src/network/networkd-tunnel.c +++ b/src/network/networkd-tunnel.c @@ -60,6 +60,16 @@ static int netdev_fill_ipip_rtnl_message(Link *link, sd_rtnl_message *m) { } } + if (netdev->mac) { + r = sd_rtnl_message_append_ether_addr(m, IFLA_ADDRESS, netdev->mac); + if (r < 0) { + log_error_netdev(netdev, + "Colud not append IFLA_ADDRESS attribute: %s", + strerror(-r)); + return r; + } + } + r = sd_rtnl_message_open_container(m, IFLA_LINKINFO); if (r < 0) { log_error_netdev(netdev, @@ -157,6 +167,16 @@ static int netdev_fill_sit_rtnl_message(Link *link, sd_rtnl_message *m) { } } + if (netdev->mac) { + r = sd_rtnl_message_append_ether_addr(m, IFLA_ADDRESS, netdev->mac); + if (r < 0) { + log_error_netdev(netdev, + "Colud not append IFLA_ADDRESS attribute: %s", + strerror(-r)); + return r; + } + } + r = sd_rtnl_message_open_container(m, IFLA_LINKINFO); if (r < 0) { log_error_netdev(netdev, @@ -262,6 +282,16 @@ static int netdev_fill_ipgre_rtnl_message(Link *link, sd_rtnl_message *m) { } } + if (netdev->mac) { + r = sd_rtnl_message_append_ether_addr(m, IFLA_ADDRESS, netdev->mac); + if (r < 0) { + log_error_netdev(netdev, + "Colud not append IFLA_ADDRESS attribute: %s", + strerror(-r)); + return r; + } + } + r = sd_rtnl_message_open_container(m, IFLA_LINKINFO); if (r < 0) { log_error_netdev(netdev, @@ -367,6 +397,16 @@ static int netdev_fill_vti_rtnl_message(Link *link, sd_rtnl_message *m) { } } + if (netdev->mac) { + r = sd_rtnl_message_append_ether_addr(m, IFLA_ADDRESS, netdev->mac); + if (r < 0) { + log_error_netdev(netdev, + "Colud not append IFLA_ADDRESS attribute: %s", + strerror(-r)); + return r; + } + } + r = sd_rtnl_message_open_container(m, IFLA_LINKINFO); if (r < 0) { log_error_netdev(netdev, -- cgit v1.2.3-54-g00ecf