do not use onlink flag, for network routes without gateway (e.g. smartgateway default...
authorMarkus Kittenberger <Markus.Kittenberger@gmx.at>
Wed, 21 Sep 2011 09:12:19 +0000 (11:12 +0200)
committerMarkus Kittenberger <Markus.Kittenberger@gmx.at>
Wed, 21 Sep 2011 09:12:19 +0000 (11:12 +0200)
src/linux/kernel_routes.c

index 04d60e3..dde10a5 100644 (file)
@@ -429,8 +429,14 @@ static int olsr_new_netlink_route(int family, int rttable, int if_index, int met
     olsr_netlink_addreq(&req.n, sizeof(req), RTA_GATEWAY, gw, family_size);
   }
   else {
-    /* use destination as gateway, to 'force' linux kernel to do proper source address selection */
-    olsr_netlink_addreq(&req.n, sizeof(req), RTA_GATEWAY, &dst->prefix, family_size);
+    if ( dst->prefix_len == 32 ) {
+      /* use destination as gateway, to 'force' linux kernel to do proper source address selection */
+      olsr_netlink_addreq(&req.n, sizeof(req), RTA_GATEWAY, &dst->prefix, family_size);
+    }
+    else {
+      /*do not use onlink on such routes(no gateway, but no hostroute aswell) -  e.g. smartgateway default route over an ptp tunnel interface*/
+      req.r.rtm_flags &= (~RTNH_F_ONLINK);
+    }
   }
 
   /* add destination */