provide olsr_if pointer in interface
[olsrd.git] / src / olsr_niit.c
1 /*
2  * olsr_niit.c
3  *
4  *  Created on: 02.02.2010
5  *      Author: henning
6  */
7
8 #include "defs.h"
9 #include "kernel_routes.h"
10 #include "net_os.h"
11 #include "olsr_niit.h"
12
13 #include <net/if.h>
14
15 #ifdef linux
16 int olsr_init_niit(void) {
17   olsr_cnf->niit4to6_if_index = if_nametoindex(DEF_NIIT4TO6_IFNAME);
18   if (olsr_cnf->niit4to6_if_index <= 0 || !olsr_if_isup(DEF_NIIT4TO6_IFNAME)) {
19     OLSR_PRINTF(1, "Warning, %s device is not available, deactivating NIIT\n", DEF_NIIT4TO6_IFNAME);
20     olsr_cnf->use_niit = false;
21     return 0;
22   }
23   olsr_cnf->niit6to4_if_index = if_nametoindex(DEF_NIIT6TO4_IFNAME);
24   if (olsr_cnf->niit6to4_if_index <= 0 || !olsr_if_isup(DEF_NIIT6TO4_IFNAME)) {
25     OLSR_PRINTF(1, "Warning, %s device is not available, deactivating NIIT\n", DEF_NIIT6TO4_IFNAME);
26     olsr_cnf->use_niit = false;
27     return 0;
28   }
29   return 0;
30 }
31
32 void olsr_setup_niit_routes(void) {
33   struct ip_prefix_list *h;
34   for (h = olsr_cnf->hna_entries; h != NULL; h = h->next) {
35     olsr_netlink_static_niit_routes(&h->net, true);
36   }
37 }
38
39 void olsr_cleanup_niit_routes(void) {
40   struct ip_prefix_list *h;
41   for (h = olsr_cnf->hna_entries; h != NULL; h = h->next) {
42     olsr_netlink_static_niit_routes(&h->net, false);
43   }
44 }
45 #endif