pud: the best uplink gateway is the same as the current (smart) gateway
[olsrd.git] / lib / pud / src / uplinkGateway.c
1 #include "uplinkGateway.h"
2
3 /* Plugin includes */
4
5 /* OLSRD includes */
6 #include "gateway.h"
7 #include "tc_set.h"
8 #include "lq_plugin.h"
9
10 /* System includes */
11
12 /**
13  * Determine the best gateway for uplink: this is the cluster leader.
14  *
15  * We simply use the current gateway that the smart gateway system determined.
16  * When no best gateway is found then we return ourselves so that the behaviour
17  * degrades gracefully.
18  *
19  * @param bestGateway
20  * a pointer to the variable in which to store the best gateway
21  */
22 void getBestUplinkGateway(union olsr_ip_addr * bestGateway) {
23   struct gateway_entry *gw_best = olsr_get_inet_gateway(olsr_cnf->ip_version != AF_INET);
24   if (!gw_best) {
25     /* degrade gracefully */
26     *bestGateway = olsr_cnf->main_addr;
27     return;
28   }
29
30   *bestGateway = gw_best->originator;
31 }