5622feb2fb40ea6c2df8abed9bd1c68d27e363de
[oweals/tinc.git] / src / route.h
1 /*
2     route.h -- header file for route.c
3     Copyright (C) 2000-2005 Ivo Timmermans
4                   2000-2012 Guus Sliepen <guus@tinc-vpn.org>         
5
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License along
17     with this program; if not, write to the Free Software Foundation, Inc.,
18     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #ifndef __TINC_ROUTE_H__
22 #define __TINC_ROUTE_H__
23
24 #include "net.h"
25 #include "node.h"
26
27 typedef enum rmode_t {
28         RMODE_HUB = 0,
29         RMODE_SWITCH,
30         RMODE_ROUTER,
31 } rmode_t;
32
33 typedef enum fmode_t {
34         FMODE_OFF = 0,
35         FMODE_INTERNAL,
36         FMODE_KERNEL,
37 } fmode_t;
38
39 extern rmode_t routing_mode;
40 extern fmode_t forwarding_mode;
41 extern bool decrement_ttl;
42 extern bool directonly;
43 extern bool overwrite_mac;
44 extern bool broadcast;
45 extern bool priorityinheritance;
46 extern int macexpire;
47
48 extern mac_t mymac;
49
50 extern void age_subnets(void);
51 extern void route(struct node_t *, struct vpn_packet_t *);
52
53 #endif                                                  /* __TINC_ROUTE_H__ */