[Olsr-dev] [PATCH v1 04/19] gateway: remove 'unused' v{4, 6}gw_choosen_external

Henning Rogge (spam-protected)
Fri Aug 24 09:29:48 CEST 2012


On 08/23/2012 03:12 PM, Ferry Huberts wrote:
> From: Ferry Huberts <(spam-protected)>

I think the idea behind the "external" flag was that a user/plugin can 
"pin" the gateway to a certain node without having the gateway selector 
to choose another one instantly.

But this could also be implemented by implementing a different gateway 
selector in the plugin.

Henning

> Signed-off-by: Ferry Huberts <(spam-protected)>
> ---
>   lib/jsoninfo/src/olsrd_jsoninfo.c |  4 ++--
>   lib/pud/src/uplinkGateway.c       |  4 ++--
>   lib/txtinfo/src/olsrd_txtinfo.c   |  4 ++--
>   src/gateway.c                     | 30 +++++-------------------------
>   src/gateway.h                     |  6 +++---
>   src/gateway_default_handler.c     | 16 ++++++++--------
>   6 files changed, 22 insertions(+), 42 deletions(-)
>
> diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.c b/lib/jsoninfo/src/olsrd_jsoninfo.c
> index 1deba79..e577d63 100644
> --- a/lib/jsoninfo/src/olsrd_jsoninfo.c
> +++ b/lib/jsoninfo/src/olsrd_jsoninfo.c
> @@ -771,14 +771,14 @@ ipc_print_gateways(struct autobuf *abuf)
>         continue;
>       }
>
> -    if (gw == olsr_get_ipv4_inet_gateway(&autoV4)) {
> +    if (gw == olsr_get_ipv4_inet_gateway()) {
>         v4 = autoV4 ? "auto" : "s";
>       } else if (gw->ipv4 && (olsr_cnf->ip_version == AF_INET || olsr_cnf->use_niit)
>                  && (olsr_cnf->smart_gw_allow_nat || !gw->ipv4nat)) {
>         v4 = "u";
>       }
>
> -    if (gw == olsr_get_ipv6_inet_gateway(&autoV6)) {
> +    if (gw == olsr_get_ipv6_inet_gateway()) {
>         v6 = autoV6 ? "auto" : "s";
>       } else if (gw->ipv6 && olsr_cnf->ip_version == AF_INET6) {
>         v6 = "u";
> diff --git a/lib/pud/src/uplinkGateway.c b/lib/pud/src/uplinkGateway.c
> index 9ff91f2..4a3296b 100644
> --- a/lib/pud/src/uplinkGateway.c
> +++ b/lib/pud/src/uplinkGateway.c
> @@ -60,7 +60,7 @@ void getBestUplinkGateway(union olsr_ip_addr * bestGateway) {
>   			continue;
>   		}
>
> -		if (gw == olsr_get_ipv4_inet_gateway(NULL)) {
> +		if (gw == olsr_get_ipv4_inet_gateway()) {
>   			eval4 = true;
>   		} else if (gw->ipv4
>   				&& (olsr_cnf->ip_version == AF_INET || olsr_cnf->use_niit)
> @@ -68,7 +68,7 @@ void getBestUplinkGateway(union olsr_ip_addr * bestGateway) {
>   			eval4 = true;
>   		}
>
> -		if (gw == olsr_get_ipv6_inet_gateway(NULL)) {
> +		if (gw == olsr_get_ipv6_inet_gateway()) {
>   			eval6 = true;
>   		} else if (gw->ipv6 && olsr_cnf->ip_version == AF_INET6) {
>   			eval6 = true;
> diff --git a/lib/txtinfo/src/olsrd_txtinfo.c b/lib/txtinfo/src/olsrd_txtinfo.c
> index 07fad39..56eb8ad 100644
> --- a/lib/txtinfo/src/olsrd_txtinfo.c
> +++ b/lib/txtinfo/src/olsrd_txtinfo.c
> @@ -579,7 +579,7 @@ ipc_print_gateway(struct autobuf *abuf)
>         continue;
>       }
>
> -    if (gw == olsr_get_ipv4_inet_gateway(&autoV4)) {
> +    if (gw == olsr_get_ipv4_inet_gateway()) {
>         v4 = autoV4 ? 'a' : 's';
>       }
>       else if (gw->ipv4 && (olsr_cnf->ip_version == AF_INET || olsr_cnf->use_niit)
> @@ -587,7 +587,7 @@ ipc_print_gateway(struct autobuf *abuf)
>         v4 = 'u';
>       }
>
> -    if (gw == olsr_get_ipv6_inet_gateway(&autoV6)) {
> +    if (gw == olsr_get_ipv6_inet_gateway()) {
>         v6 = autoV6 ? 'a' : 's';
>       }
>       else if (gw->ipv6 && olsr_cnf->ip_version == AF_INET6) {
> diff --git a/src/gateway.c b/src/gateway.c
> index 1e57ae6..127e9d8 100644
> --- a/src/gateway.c
> +++ b/src/gateway.c
> @@ -43,18 +43,12 @@ static struct gateway_entry *current_ipv4_gw;
>   /** the tunnel of the current IPv4  gateway */
>   static struct olsr_iptunnel_entry *v4gw_tunnel;
>
> -/** true if a change of the IPv4 gateway was triggered directly by a user */
> -static bool v4gw_choosen_external;
> -
>   /** the current IPv6 gateway */
>   static struct gateway_entry *current_ipv6_gw;
>
>   /** the tunnel of the current IPv6  gateway */
>   static struct olsr_iptunnel_entry *v6gw_tunnel;
>
> -/** true if a change of the IPv6 gateway was triggered directly by a user */
> -static bool v6gw_choosen_external;
> -
>   /*
>    * Helper Functions
>    */
> @@ -181,11 +175,9 @@ int olsr_init_gateways(void) {
>
>     current_ipv4_gw = NULL;
>     v4gw_tunnel = NULL;
> -  v4gw_choosen_external = false;
>
>     current_ipv6_gw = NULL;
>     v6gw_tunnel = NULL;
> -  v6gw_choosen_external = false;
>
>     gw_handler = NULL;
>
> @@ -506,11 +498,9 @@ void olsr_set_inetgw_handler(struct olsr_gw_handler *h) {
>    * @param originator ip address of the node with the new gateway
>    * @param ipv4 set ipv4 gateway
>    * @param ipv6 set ipv6 gateway
> - * @param external true if change was triggered directly by an user,
> - *   false if triggered by automatic lookup.
>    * @return true if an error happened, false otherwise
>    */
> -bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6, bool external) {
> +bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6) {
>     struct gateway_entry *entry;
>     struct gateway_entry *oldV4 = current_ipv4_gw;
>     struct gateway_entry *oldV6 = current_ipv6_gw;
> @@ -543,7 +533,6 @@ bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6,
>     if (oldV4 != current_ipv4_gw) {
>       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;
>       } else {
>         /* adding the tunnel failed, we try again in the next cycle */
>         current_ipv4_gw = NULL;
> @@ -556,7 +545,6 @@ bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6,
>     if (oldV6 != current_ipv6_gw) {
>       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;
>       } else {
>         /* adding the tunnel failed, we try again in the next cycle */
>         current_ipv6_gw = NULL;
> @@ -570,25 +558,17 @@ bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6,
>
>   /**
>    * @return a pointer to the gateway_entry of the current ipv4 internet gw or
> - * NULL if not set. Also updates *ext (if not NULL) to indicate whether or not
> - * the gw was chosen externally.
> + * NULL if not set.
>    */
> -struct gateway_entry *olsr_get_ipv4_inet_gateway(bool *ext) {
> -  if (ext) {
> -    *ext = v4gw_choosen_external;
> -  }
> +struct gateway_entry *olsr_get_ipv4_inet_gateway(void) {
>     return current_ipv4_gw;
>   }
>
>   /**
>    * @return a pointer to the gateway_entry of the current ipv4 internet gw or
> - * NULL if not set. Also updates *ext (if not NULL) to indicate whether or not
> - * the gw was chosen externally.
> + * NULL if not set.
>    */
> -struct gateway_entry *olsr_get_ipv6_inet_gateway(bool *ext) {
> -  if (ext) {
> -    *ext = v6gw_choosen_external;
> -  }
> +struct gateway_entry *olsr_get_ipv6_inet_gateway(void) {
>     return current_ipv6_gw;
>   }
>
> diff --git a/src/gateway.h b/src/gateway.h
> index 5b84149..91e8d45 100644
> --- a/src/gateway.h
> +++ b/src/gateway.h
> @@ -128,8 +128,8 @@ void olsr_trigger_gatewayloss_check(void);
>    */
>
>   void olsr_set_inetgw_handler(struct olsr_gw_handler *l);
> -bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6, bool external);
> -struct gateway_entry *olsr_get_ipv4_inet_gateway(bool *);
> -struct gateway_entry *olsr_get_ipv6_inet_gateway(bool *);
> +bool olsr_set_inet_gateway(union olsr_ip_addr *originator, bool ipv4, bool ipv6);
> +struct gateway_entry *olsr_get_ipv4_inet_gateway(void);
> +struct gateway_entry *olsr_get_ipv6_inet_gateway(void);
>
>   #endif /* GATEWAY_H_ */
> diff --git a/src/gateway_default_handler.c b/src/gateway_default_handler.c
> index c729e5a..35462a7 100644
> --- a/src/gateway_default_handler.c
> +++ b/src/gateway_default_handler.c
> @@ -166,7 +166,7 @@ static void gw_default_choose_gateway(void) {
>     if (olsr_cnf->smart_gw_thresh) {
>       /* determine the path cost thresholds */
>
> -    gw = olsr_get_ipv4_inet_gateway(NULL);
> +    gw = olsr_get_ipv4_inet_gateway();
>       if (gw) {
>         tc = olsr_lookup_tc_entry(&gw->originator);
>         if (tc) {
> @@ -175,7 +175,7 @@ static void gw_default_choose_gateway(void) {
>           eval_cost_ipv4_threshold = true;
>         }
>       }
> -    gw = olsr_get_ipv6_inet_gateway(NULL);
> +    gw = olsr_get_ipv6_inet_gateway();
>       if (gw) {
>         tc = olsr_lookup_tc_entry(&gw->originator);
>         if (tc) {
> @@ -229,11 +229,11 @@ static void gw_default_choose_gateway(void) {
>
>     if (inet_ipv4) {
>       /* we are dealing with an IPv4 or dual stack gateway */
> -    olsr_set_inet_gateway(&inet_ipv4->originator, true, dual, false);
> +    olsr_set_inet_gateway(&inet_ipv4->originator, true, dual);
>     }
>     if (inet_ipv6 && !dual) {
>       /* we are dealing with an IPv6-only gateway */
> -    olsr_set_inet_gateway(&inet_ipv6->originator, false, true, false);
> +    olsr_set_inet_gateway(&inet_ipv6->originator, false, true);
>     }
>
>     if ((olsr_cnf->smart_gw_thresh == 0) && gw_def_finished_ipv4 && gw_def_finished_ipv6) {
> @@ -355,9 +355,9 @@ static void gw_default_choosegw_handler(bool ipv4, bool ipv6) {
>    * @param gw the gateway entry
>    */
>   static void gw_default_update_handler(struct gateway_entry *gw) {
> -  bool v4changed = gw && (gw == olsr_get_ipv4_inet_gateway(NULL))
> +  bool v4changed = gw && (gw == olsr_get_ipv4_inet_gateway())
>         && (!gw->ipv4 || (gw->ipv4nat && !olsr_cnf->smart_gw_allow_nat));
> -  bool v6changed = gw && (gw == olsr_get_ipv6_inet_gateway(NULL)) && !gw->ipv6;
> +  bool v6changed = gw && (gw == olsr_get_ipv6_inet_gateway()) && !gw->ipv6;
>
>     if (v4changed || v6changed) {
>       olsr_gw_default_lookup_gateway(v4changed, v6changed);
> @@ -370,8 +370,8 @@ static void gw_default_update_handler(struct gateway_entry *gw) {
>    * @param gw the gateway entry
>    */
>   static void gw_default_delete_handler(struct gateway_entry *gw) {
> -  bool isv4 = gw && (gw == olsr_get_ipv4_inet_gateway(NULL));
> -  bool isv6 = gw && (gw == olsr_get_ipv6_inet_gateway(NULL));
> +  bool isv4 = gw && (gw == olsr_get_ipv4_inet_gateway());
> +  bool isv6 = gw && (gw == olsr_get_ipv6_inet_gateway());
>
>     if (isv4 || isv6) {
>       olsr_gw_default_lookup_gateway(isv4, isv6);
>


-- 
Diplom-Informatiker Henning Rogge , Fraunhofer-Institut für
Kommunikation, Informationsverarbeitung und Ergonomie FKIE
Kommunikationssysteme (KOM)
Neuenahrer Straße 20, 53343 Wachtberg, Germany
Telefon +49 228 9435-961,   Fax +49 228 9435 685
mailto:(spam-protected) http://www.fkie.fraunhofer.de
GPG: E1C6 0914 490B 3909 D944 F80D 4487 C67C 55EC CFE0

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6169 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.olsr.org/pipermail/olsr-dev/attachments/20120824/fcafb022/attachment.bin>


More information about the Olsr-dev mailing list