X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-netdev.c;h=0d08e564e57735e7248c914905f8327bcf750b9d;hb=96c907429e3224289fd360b8d9c8fdc573f4363b;hp=4439374a675490ea7b6fe09becc9f1fca6a688c7;hpb=a9f434cf00d1d36d9a013b9739efe69653dd7279;p=elogind.git diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c index 4439374a6..0d08e564e 100644 --- a/src/network/networkd-netdev.c +++ b/src/network/networkd-netdev.c @@ -39,6 +39,7 @@ static const char* const netdev_kind_table[_NETDEV_KIND_MAX] = { [NETDEV_KIND_GRE] = "gre", [NETDEV_KIND_SIT] = "sit", [NETDEV_KIND_VETH] = "veth", + [NETDEV_KIND_VTI] = "vti" }; DEFINE_STRING_TABLE_LOOKUP(netdev_kind, NetDevKind); @@ -91,6 +92,8 @@ static void netdev_free(NetDev *netdev) { free(netdev->description); free(netdev->ifname); + free(netdev->mac); + free(netdev->mac_peer); condition_free_list(netdev->match_host); condition_free_list(netdev->match_virt); @@ -300,7 +303,7 @@ static int netdev_create(NetDev *netdev, Link *link, sd_rtnl_message_handler_t c return r; } - if(netdev->mtu) { + if (netdev->mtu) { r = sd_rtnl_message_append_u32(req, IFLA_MTU, netdev->mtu); if (r < 0) { log_error_netdev(netdev, @@ -310,6 +313,16 @@ static int netdev_create(NetDev *netdev, Link *link, sd_rtnl_message_handler_t c } } + if (netdev->mac) { + r = sd_rtnl_message_append_ether_addr(req, 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(req, IFLA_LINKINFO); if (r < 0) { log_error_netdev(netdev, @@ -393,7 +406,8 @@ int netdev_enslave(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callbac if(netdev->kind == NETDEV_KIND_IPIP || netdev->kind == NETDEV_KIND_GRE || - netdev->kind == NETDEV_KIND_SIT) + netdev->kind == NETDEV_KIND_SIT || + netdev->kind == NETDEV_KIND_VTI) return netdev_create_tunnel(link, netdev_create_handler); if (netdev->state == NETDEV_STATE_READY) { @@ -606,7 +620,8 @@ static int netdev_load_one(Manager *manager, const char *filename) { netdev->kind != NETDEV_KIND_MACVLAN && netdev->kind != NETDEV_KIND_IPIP && netdev->kind != NETDEV_KIND_GRE && - netdev->kind != NETDEV_KIND_SIT) { + netdev->kind != NETDEV_KIND_SIT && + netdev->kind != NETDEV_KIND_VTI) { r = netdev_create(netdev, NULL, NULL); if (r < 0) return r;