diff --git a/clatd.c b/clatd.c
index 203714c..f826d46 100644
--- a/clatd.c
+++ b/clatd.c
@@ -475,9 +475,6 @@
 
   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.
diff --git a/setroute.c b/setroute.c
index 3edfe39..f264387 100644
--- a/setroute.c
+++ b/setroute.c
@@ -140,47 +140,3 @@
 
   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);
-    }
-  }
-}
diff --git a/setroute.h b/setroute.h
index d0e7d79..58f61cf 100644
--- a/setroute.h
+++ b/setroute.h
@@ -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
