diff options
-rw-r--r-- | clatd.c | 3 | ||||
-rw-r--r-- | setroute.c | 44 | ||||
-rw-r--r-- | setroute.h | 1 |
3 files changed, 0 insertions, 48 deletions
@@ -475,9 +475,6 @@ int main(int argc, char **argv) { configure_interface(uplink_interface, plat_prefix, &tunnel); - // turning on forwarding in linux has a side effect of calling rt6_purge_dflt_routers - // workaround: turn the RA-learned default route into a static route - set_default_ipv6_route(uplink_interface); set_forwarding(forwarding_fd,"1\n"); // Loop until someone sends us a signal or brings down the tun interface. @@ -140,47 +140,3 @@ cleanup: return retval; } - -/* function: set_default_ipv6_route - * copies the default route on an interface (turns an RA route into a static - * route), which is needed to keep the route when forwarding is turned on - * device - interface to be the default route - */ -void set_default_ipv6_route(const char *device) { - struct in6_addr default_6 = IN6ADDR_ANY_INIT; - struct default_route_data default_route; - int status; - void *gateway = NULL; - - memset(&default_route, '\0', sizeof(default_route)); - default_route.request_family = AF_INET6; - default_route.request_interface_id = if_nametoindex(device); - if(default_route.request_interface_id == 0) { - logmsg(ANDROID_LOG_FATAL, "set_default_ipv6_route failed: no interface %s found", device); - exit(1); - } - - status = get_default_route(&default_route); - if(status < 0) { - logmsg(ANDROID_LOG_FATAL, "set_default_ipv6_route/get_default_route failed: returned %d", status); - exit(1); - } - - if(!default_route.reply_found_route) { - logmsg(ANDROID_LOG_FATAL, "set_default_ipv6_route/get_default_route failed: no default route found for %s", device); - exit(1); - } - - if(default_route.reply_has_gateway) { - gateway = &default_route.reply_gateway.ip6; - } - - if((status = if_route(device, AF_INET6, &default_6, 0, gateway, 1, 0, ROUTE_REPLACE)) < 0) { - if(status == -EEXIST) { - logmsg(ANDROID_LOG_WARN,"set_default_ipv6_route/if_route failed due to the route already existing"); - } else { - logmsg(ANDROID_LOG_FATAL,"set_default_ipv6_route/if_route failed: %s",strerror(-status)); - exit(1); - } - } -} @@ -23,6 +23,5 @@ #define ROUTE_REPLACE 1 #define ROUTE_CREATE 2 int if_route(const char *ifname, int family, const void *destination, int cidr, const void *gateway, int metric, int mtu, int change_type); -void set_default_ipv6_route(const char *device); #endif |