Refactoring and cleanup of kernel_routes
[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 <net/if.h>
9
10 #include "defs.h"
11 #include "kernel_routes.h"
12 #include "net_os.h"
13 #include "olsr_niit.h"
14
15 int olsr_init_niit(void) {
16   olsr_cnf->niit4to6_if_index = if_nametoindex(DEF_NIIT4TO6_IFNAME);
17   if (olsr_cnf->niit4to6_if_index <= 0 || !olsr_if_isup(DEF_NIIT4TO6_IFNAME)) {
18     OLSR_PRINTF(1, "Warning, %s device is not available, deactivating NIIT\n", DEF_NIIT4TO6_IFNAME);
19     olsr_cnf->use_niit = false;
20     return 0;
21   }
22   olsr_cnf->niit6to4_if_index = if_nametoindex(DEF_NIIT6TO4_IFNAME);
23   if (olsr_cnf->niit6to4_if_index <= 0 || !olsr_if_isup(DEF_NIIT6TO4_IFNAME)) {
24     OLSR_PRINTF(1, "Warning, %s device is not available, deactivating NIIT\n", DEF_NIIT6TO4_IFNAME);
25     olsr_cnf->use_niit = false;
26     return 0;
27   }
28   return 0;
29 }
30
31 void olsr_setup_niit_routes(void) {
32   struct ip_prefix_list *h;
33   for (h = olsr_cnf->hna_entries; h != NULL; h = h->next) {
34     olsr_netlink_static_niit_routes(&h->net, true);
35   }
36 }
37
38 void olsr_cleanup_niit_routes(void) {
39   struct ip_prefix_list *h;
40   for (h = olsr_cnf->hna_entries; h != NULL; h = h->next) {
41     olsr_netlink_static_niit_routes(&h->net, false);
42   }
43 }