diff mbox

[ovs-dev,5/6] ovs-router: Do not allow routes over loopback device.

Message ID 1457570445-68542-5-git-send-email-pshelar@ovn.org
State Changes Requested
Headers show

Commit Message

Pravin Shelar March 10, 2016, 12:40 a.m. UTC
This just avoid unnecessary routes in the ovs-router.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
---
 lib/ovs-router.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Ben Pfaff March 11, 2016, 12:51 a.m. UTC | #1
On Wed, Mar 09, 2016 at 04:40:44PM -0800, Pravin B Shelar wrote:
> This just avoid unnecessary routes in the ovs-router.
> 
> Signed-off-by: Pravin B Shelar <pshelar@nicira.com>

This also raises confusion on whether errors should be positive or
negative.
diff mbox

Patch

diff --git a/lib/ovs-router.c b/lib/ovs-router.c
index 9b64ffb..3b11512 100644
--- a/lib/ovs-router.c
+++ b/lib/ovs-router.c
@@ -130,6 +130,7 @@  get_src_addr(const struct in6_addr *ip6_dst,
 {
     struct in6_addr *mask, *addr6;
     int err, n_in6, i, max_plen = -1;
+    enum netdev_flags flags;
     struct netdev *dev;
 
     err = netdev_open(output_bridge, NULL, &dev);
@@ -137,6 +138,11 @@  get_src_addr(const struct in6_addr *ip6_dst,
         return err;
     }
 
+    err = netdev_get_flags(dev, &flags);
+    if (err || (flags & NETDEV_LOOPBACK)) {
+        return -EINVAL;
+    }
+
     err = netdev_get_addr_list(dev, &addr6, &mask, &n_in6);
     if (err) {
         goto out;