X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-netdev.c;h=4439374a675490ea7b6fe09becc9f1fca6a688c7;hb=a9f434cf00d1d36d9a013b9739efe69653dd7279;hp=3bd6c078226d98bff4f5453ef84b0039c2b86fe1;hpb=af4e9e2c563047d524b207e0e3d6816385693a16;p=elogind.git diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c index 3bd6c0782..4439374a6 100644 --- a/src/network/networkd-netdev.c +++ b/src/network/networkd-netdev.c @@ -19,6 +19,8 @@ along with systemd; If not, see . ***/ +#include + #include "networkd.h" #include "network-internal.h" #include "path-util.h" @@ -36,6 +38,7 @@ static const char* const netdev_kind_table[_NETDEV_KIND_MAX] = { [NETDEV_KIND_IPIP] = "ipip", [NETDEV_KIND_GRE] = "gre", [NETDEV_KIND_SIT] = "sit", + [NETDEV_KIND_VETH] = "veth", }; DEFINE_STRING_TABLE_LOOKUP(netdev_kind, NetDevKind); @@ -222,7 +225,7 @@ static int netdev_create_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userda if (r == -EEXIST) log_debug_netdev(netdev, "netdev exists, using existing"); else if (r < 0) { - log_warning_netdev(netdev, "netdev could not be greated: %s", strerror(-r)); + log_warning_netdev(netdev, "netdev could not be created: %s", strerror(-r)); netdev_drop(netdev); return 1; @@ -446,7 +449,6 @@ int netdev_set_ifindex(NetDev *netdev, sd_rtnl_message *message) { return r; } - if (netdev->ifindex > 0) { if (netdev->ifindex != ifindex) { log_error_netdev(netdev, "Could not set ifindex to %d, already set to %d", @@ -505,6 +507,8 @@ int netdev_set_ifindex(NetDev *netdev, sd_rtnl_message *message) { netdev->ifindex = ifindex; + log_debug_netdev(netdev, "netdev has index %d", netdev->ifindex); + netdev_enter_ready(netdev); return 0; @@ -541,8 +545,9 @@ static int netdev_load_one(Manager *manager, const char *filename) { netdev->kind = _NETDEV_KIND_INVALID; netdev->macvlan_mode = _NETDEV_MACVLAN_MODE_INVALID; netdev->vlanid = VLANID_MAX + 1; + netdev->tunnel_pmtudisc = true; - r = config_parse(NULL, filename, file, "Match\0NetDev\0VLAN\0MACVLAN\0Tunnel\0", + r = config_parse(NULL, filename, file, "Match\0NetDev\0VLAN\0MACVLAN\0Tunnel\0Peer\0", config_item_perf_lookup, (void*) network_netdev_gperf_lookup, false, false, netdev); if (r < 0) { @@ -594,6 +599,9 @@ static int netdev_load_one(Manager *manager, const char *filename) { LIST_HEAD_INIT(netdev->callbacks); + if(netdev->kind == NETDEV_KIND_VETH) + return netdev_create_veth(netdev, netdev_create_handler); + if (netdev->kind != NETDEV_KIND_VLAN && netdev->kind != NETDEV_KIND_MACVLAN && netdev->kind != NETDEV_KIND_IPIP &&