f2cc20a1b7383cf989ef4937b3737bfaa2adfa09
[olsrd.git] / src / net.h
1
2 /*
3  * OLSR ad-hoc routing table management protocol
4  * Copyright (C) 2003 Andreas T√łnnesen (andreto@ifi.uio.no)
5  *
6  * This file is part of the olsr.org OLSR daemon.
7  *
8  * olsr.org is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * olsr.org is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with olsr.org; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  * 
22  * 
23  * $ Id $
24  *
25  */
26
27
28
29 #ifndef _OLSR_NET
30 #define _OLSR_NET
31
32 #include "defs.h"
33 #include "process_routes.h"
34 #include <arpa/inet.h>
35 #include <net/if.h>
36
37 /* Packet transform functions */
38
39 struct ptf
40 {
41   int (*function)(char *, int *);
42   struct ptf *next;
43 };
44
45 struct ptf *ptf_list;
46
47 void
48 init_net();
49
50 inline int
51 net_outbuffer_bytes_left();
52
53 int
54 net_set_maxmsgsize(olsr_u16_t);
55
56 inline olsr_u16_t
57 net_get_maxmsgsize();
58
59 int
60 net_outbuffer_push(olsr_u8_t *, olsr_u16_t);
61
62 int
63 net_fwdbuffer_push(olsr_u8_t *, olsr_u16_t);
64
65 int
66 net_output(struct interface*);
67
68 int
69 net_forward();
70
71 int
72 net_sendroute(struct rt_entry *, struct sockaddr *);
73
74 int
75 olsr_prefix_to_netmask(union olsr_ip_addr *, olsr_u16_t);
76
77 olsr_u16_t
78 olsr_netmask_to_prefix(union olsr_ip_addr *);
79
80 char *
81 sockaddr_to_string(struct sockaddr *);
82
83 char *
84 ip_to_string(olsr_u32_t *);
85
86 char *
87 ip6_to_string(struct in6_addr *);
88
89 char *
90 olsr_ip_to_string(union olsr_ip_addr *);
91
92 int
93 join_mcast(struct interface *, int);
94
95 int
96 add_ptf(int (*)(char *, int *));
97
98 int
99 del_ptf(int (*f)(char *, int *));
100
101
102 /* OS dependent functions */
103
104 int
105 bind_socket_to_device(int, char *);
106
107 int
108 convert_ip_to_mac(union olsr_ip_addr *, struct sockaddr *, char *);
109
110 int
111 disable_redirects(char *, int, int);
112
113 int
114 deactivate_spoof(char *, int, int);
115
116 int
117 restore_settings(int);
118
119 int
120 enable_ip_forwarding(int);
121
122 int  
123 getsocket(struct sockaddr *, int, char *);
124
125 int  
126 getsocket6(struct sockaddr_in6 *, int, char *);
127
128
129 #endif