Add TODOs for smartgw
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 17 Mar 2010 07:08:53 +0000 (08:08 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 17 Mar 2010 07:08:53 +0000 (08:08 +0100)
src/gateway.c

index f528586..a8b4a3f 100644 (file)
@@ -93,6 +93,7 @@ olsr_init_gateways(void) {
   if (olsr_os_init_iptunnel()) {
     return 1;
   }
+
   /*
    * initialize default gateway handler,
    * can be overwritten with olsr_set_inetgw_handler
@@ -134,6 +135,9 @@ void olsr_cleanup_gateways(void) {
   if (current_ipv6_gw) {
     olsr_os_del_ipip_tunnel(v6gw_tunnel);
   }
+
+  // TODO: add olsr_remove_ifchange_handler() for both tunnels
+
   olsr_os_cleanup_iptunnel();
 }
 
@@ -241,6 +245,8 @@ olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6, bool
     if ((v4gw_tunnel = olsr_os_add_ipip_tunnel(&current_ipv4_gw->originator, true)) != NULL) {
       olsr_os_inetgw_tunnel_route(v4gw_tunnel->if_index, true, true);
       v4gw_choosen_external = external;
+
+      // TODO: add olsr_add_ifchange_handler() for new ipv4 tunnel
     }
     else {
       // TODO: what to do now ? Choose another one ? Fire up a timer ?
@@ -248,6 +254,8 @@ olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6, bool
     }
     if (oldV4 != NULL) {
       olsr_os_del_ipip_tunnel(tunnelV4);
+
+      // TODO: add olsr_remove_ifchange_handler() for old ipv4 tunnel
     }
   }
   /* handle IPv6 */
@@ -255,6 +263,8 @@ olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6, bool
     if ((v6gw_tunnel = olsr_os_add_ipip_tunnel(&current_ipv6_gw->originator, false)) != NULL) {
       olsr_os_inetgw_tunnel_route(v6gw_tunnel->if_index, false, true);
       v6gw_choosen_external = external;
+
+      // TODO: add olsr_add_ifchange_handler() for new ipv6 tunnel
     }
     else {
       // TODO: what to do now ? Choose another one ? Fire up a timer ?
@@ -262,6 +272,8 @@ olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6, bool
     }
     if (oldV6 != NULL) {
       olsr_os_del_ipip_tunnel(tunnelV6);
+
+      // TODO: add olsr_remove_ifchange_handler() for old ipv6 tunnel
     }
   }
   return (ipv4 && current_ipv4_gw == NULL) || (ipv6 && current_ipv6_gw == NULL);
@@ -417,16 +429,21 @@ olsr_delete_gateway_entry(union olsr_ip_addr *originator, uint8_t prefixlen) {
 
       /* handle gateway loss */
       gw_handler->handle_delete_gw(gw);
+
       /* cleanup gateway if necessary */
       if (current_ipv4_gw == gw) {
         olsr_os_inetgw_tunnel_route(v4gw_tunnel->if_index, true, false);
         olsr_os_del_ipip_tunnel(v4gw_tunnel);
+
+        // TODO: add olsr_remove_ifchange_handler() for ipv4 tunnel
         current_ipv4_gw = NULL;
         v4gw_tunnel = NULL;
       }
       if (current_ipv6_gw == gw) {
         olsr_os_inetgw_tunnel_route(v6gw_tunnel->if_index, false, false);
         olsr_os_del_ipip_tunnel(v6gw_tunnel);
+
+        // TODO: add olsr_remove_ifchange_handler() for ipv6 tunnel
         current_ipv6_gw = NULL;
         v6gw_tunnel = NULL;
       }