The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/8238
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Fixes log message "No path for static route 0.0.0.0/0; next hop n.n.n.n" when creating/editing network. Also only add default routes and SNAT rules if logical router has external IPs. Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com>
From 55e2051f529070acd275e399771ffd1e719a9801 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Thu, 10 Dec 2020 16:04:38 +0000 Subject: [PATCH] lxd/network/driver/ovn: Only add default route and SNAT rules to router after adding external router port Fixes log message "No path for static route 0.0.0.0/0; next hop n.n.n.n" when creating/editing network. Also only add default routes and SNAT rules if logical router has external IPs. Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/network/driver_ovn.go | 60 +++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/lxd/network/driver_ovn.go b/lxd/network/driver_ovn.go index 0c01386158..7b64b778c7 100644 --- a/lxd/network/driver_ovn.go +++ b/lxd/network/driver_ovn.go @@ -1499,36 +1499,6 @@ func (n *ovn) setup(update bool) error { // Configure logical router. - // Add default routes. - if uplinkNet.routerExtGwIPv4 != nil { - err = client.LogicalRouterRouteAdd(n.getRouterName(), &net.IPNet{IP: net.IPv4zero, Mask: net.CIDRMask(0, 32)}, uplinkNet.routerExtGwIPv4, false) - if err != nil { - return errors.Wrapf(err, "Failed adding IPv4 default route") - } - } - - if uplinkNet.routerExtGwIPv6 != nil { - err = client.LogicalRouterRouteAdd(n.getRouterName(), &net.IPNet{IP: net.IPv6zero, Mask: net.CIDRMask(0, 128)}, uplinkNet.routerExtGwIPv6, false) - if err != nil { - return errors.Wrapf(err, "Failed adding IPv6 default route") - } - } - - // Add SNAT rules. - if shared.IsTrue(n.config["ipv4.nat"]) && routerIntPortIPv4Net != nil && routerExtPortIPv4 != nil { - err = client.LogicalRouterSNATAdd(n.getRouterName(), routerIntPortIPv4Net, routerExtPortIPv4) - if err != nil { - return err - } - } - - if shared.IsTrue(n.config["ipv6.nat"]) && routerIntPortIPv6Net != nil && routerExtPortIPv6 != nil { - err = client.LogicalRouterSNATAdd(n.getRouterName(), routerIntPortIPv6Net, routerExtPortIPv6) - if err != nil { - return err - } - } - // Generate external router port IPs (in CIDR format). extRouterIPs := []*net.IPNet{} if routerExtPortIPv4Net != nil { @@ -1593,6 +1563,36 @@ func (n *ovn) setup(update bool) error { if err != nil { return errors.Wrapf(err, "Failed linking external switch provider port to external provider network") } + + // Add SNAT rules. + if shared.IsTrue(n.config["ipv4.nat"]) && routerIntPortIPv4Net != nil && routerExtPortIPv4 != nil { + err = client.LogicalRouterSNATAdd(n.getRouterName(), routerIntPortIPv4Net, routerExtPortIPv4) + if err != nil { + return err + } + } + + if shared.IsTrue(n.config["ipv6.nat"]) && routerIntPortIPv6Net != nil && routerExtPortIPv6 != nil { + err = client.LogicalRouterSNATAdd(n.getRouterName(), routerIntPortIPv6Net, routerExtPortIPv6) + if err != nil { + return err + } + } + + // Add default routes. + if uplinkNet.routerExtGwIPv4 != nil { + err = client.LogicalRouterRouteAdd(n.getRouterName(), &net.IPNet{IP: net.IPv4zero, Mask: net.CIDRMask(0, 32)}, uplinkNet.routerExtGwIPv4, false) + if err != nil { + return errors.Wrapf(err, "Failed adding IPv4 default route") + } + } + + if uplinkNet.routerExtGwIPv6 != nil { + err = client.LogicalRouterRouteAdd(n.getRouterName(), &net.IPNet{IP: net.IPv6zero, Mask: net.CIDRMask(0, 128)}, uplinkNet.routerExtGwIPv6, false) + if err != nil { + return errors.Wrapf(err, "Failed adding IPv6 default route") + } + } } // Create internal logical switch if not updating.
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel