Allow broadcast packets to be sent directly instead of via the MST.
[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 typedef enum bmode_t {
40         BMODE_NONE = 0,
41         BMODE_MST,
42         BMODE_DIRECT,
43 } bmode_t;
44
45 extern rmode_t routing_mode;
46 extern fmode_t forwarding_mode;
47 extern bmode_t broadcast_mode;
48 extern bool decrement_ttl;
49 extern bool directonly;
50 extern bool overwrite_mac;
51 extern bool priorityinheritance;
52 extern int macexpire;
53
54 extern mac_t mymac;
55
56 extern void age_subnets(void);
57 extern void route(struct node_t *, struct vpn_packet_t *);
58
59 #endif                                                  /* __TINC_ROUTE_H__ */