[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(¤t_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(¤t_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