133b95bd3e15a66c8081499a489b910116f27bdf
[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
24
25
26 #ifndef _OLSR_NET
27 #define _OLSR_NET
28
29 #include "defs.h"
30 #include "process_routes.h"
31 #include <arpa/inet.h>
32 #include <net/if.h>
33
34 /* Packet transform functions */
35
36 struct ptf
37 {
38   int (*function)(char *, int *);
39   struct ptf *next;
40 };
41
42 struct ptf *ptf_list;
43
44 void
45 init_net();
46
47 inline int
48 net_outbuffer_bytes_left();
49
50 int
51 net_set_maxmsgsize(olsr_u16_t);
52
53 inline olsr_u16_t
54 net_get_maxmsgsize();
55
56 int
57 net_outbuffer_push(olsr_u8_t *, olsr_u16_t);
58
59 int
60 net_fwdbuffer_push(olsr_u8_t *, olsr_u16_t);
61
62 int
63 net_output(struct interface*);
64
65 int
66 net_forward();
67
68 int
69 net_sendroute(struct rt_entry *, struct sockaddr *);
70
71 int
72 olsr_prefix_to_netmask(union olsr_ip_addr *, olsr_u16_t);
73
74 olsr_u16_t
75 olsr_netmask_to_prefix(union olsr_ip_addr *);
76
77 char *
78 sockaddr_to_string(struct sockaddr *);
79
80 char *
81 ip_to_string(olsr_u32_t *);
82
83 char *
84 ip6_to_string(struct in6_addr *);
85
86 char *
87 olsr_ip_to_string(union olsr_ip_addr *);
88
89 int
90 join_mcast(struct interface *, int);
91
92 int
93 add_ptf(int (*)(char *, int *));
94
95 int
96 del_ptf(int (*f)(char *, int *));
97
98
99 /* OS dependent functions */
100
101 int
102 bind_socket_to_device(int, char *);
103
104 int
105 convert_ip_to_mac(union olsr_ip_addr *, struct sockaddr *, char *);
106
107 int
108 disable_redirects(char *, int, int);
109
110 int
111 deactivate_spoof(char *, int, int);
112
113 int
114 restore_settings(int);
115
116 int
117 enable_ip_forwarding(int);
118
119 int  
120 getsocket(struct sockaddr *, int, char *);
121
122 int  
123 getsocket6(struct sockaddr_in6 *, int, char *);
124
125
126 #endif