Fix setting blackhole-routes to kernel
authorSteven Barth <steven@midlink.org>
Tue, 25 Nov 2014 22:56:39 +0000 (23:56 +0100)
committerSteven Barth <steven@midlink.org>
Tue, 25 Nov 2014 22:56:39 +0000 (23:56 +0100)
Signed-off-by: Steven Barth <steven@midlink.org>
system-linux.c

index 83827d50081deb6d66fbaf7e4820a57da90b8c78..8518f0fe4b958d1c8fc76045ec67217d13499add 100644 (file)
@@ -1412,11 +1412,16 @@ static int system_rt(struct device *dev, struct device_route *route, int cmd)
                                rtm.rtm_table = RT_TABLE_LOCAL;
                }
 
-               if (rtm.rtm_type == RTN_LOCAL || rtm.rtm_type == RTN_NAT)
+               if (rtm.rtm_type == RTN_LOCAL || rtm.rtm_type == RTN_NAT) {
                        rtm.rtm_scope = RT_SCOPE_HOST;
-               else if (rtm.rtm_type == RTN_BROADCAST || rtm.rtm_type == RTN_MULTICAST ||
-                       rtm.rtm_type == RTN_ANYCAST)
+               else if (rtm.rtm_type == RTN_BROADCAST || rtm.rtm_type == RTN_MULTICAST ||
+                               rtm.rtm_type == RTN_ANYCAST) {
                        rtm.rtm_scope = RT_SCOPE_LINK;
+               } else if (rtm.rtm_type == RTN_BLACKHOLE || rtm.rtm_type == RTN_UNREACHABLE ||
+                               rtm.rtm_type == RTN_PROHIBIT || rtm.rtm_type == RTN_FAILED_POLICY) {
+                       rtm.rtm_scope = RT_SCOPE_UNIVERSE;
+                       dev = NULL;
+               }
        }
 
        msg = nlmsg_alloc_simple(cmd, flags);