ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/connection.h
(Generate patch)

Comparing gvpe/src/connection.h (file contents):
Revision 1.30 by pcg, Thu Aug 7 16:34:21 2008 UTC vs.
Revision 1.36 by root, Sun Mar 6 19:40:28 2011 UTC

1/* 1/*
2 connection.h -- header for connection.C 2 connection.h -- header for connection.C
3 Copyright (C) 2003-2005 Marc Lehmann <gvpe@schmorp.de> 3 Copyright (C) 2003-2008 Marc Lehmann <gvpe@schmorp.de>
4 4
5 This file is part of GVPE. 5 This file is part of GVPE.
6 6
7 GVPE is free software; you can redistribute it and/or modify 7 GVPE is free software; you can redistribute it and/or modify it
8 it under the terms of the GNU General Public License as published by 8 under the terms of the GNU General Public License as published by the
9 the Free Software Foundation; either version 2 of the License, or 9 Free Software Foundation; either version 3 of the License, or (at your
10 (at your option) any later version. 10 option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful, but
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
15 GNU General Public License for more details. 15 Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License along
18 along with gvpe; if not, write to the Free Software 18 with this program; if not, see <http://www.gnu.org/licenses/>.
19 Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19
20 Additional permission under GNU GPL version 3 section 7
21
22 If you modify this Program, or any covered work, by linking or
23 combining it with the OpenSSL project's OpenSSL library (or a modified
24 version of that library), containing parts covered by the terms of the
25 OpenSSL or SSLeay licenses, the licensors of this Program grant you
26 additional permission to convey the resulting work. Corresponding
27 Source for a non-source form of such a combination shall include the
28 source code for the parts of OpenSSL used as well as that of the
29 covered work.
20*/ 30*/
21 31
22#ifndef GVPE_CONNECTION_H__ 32#ifndef GVPE_CONNECTION_H__
23#define GVPE_CONNECTION_H__ 33#define GVPE_CONNECTION_H__
24 34
71 PT_PING, PT_PONG, // wasting namespace space? ;) 81 PT_PING, PT_PONG, // wasting namespace space? ;)
72 PT_AUTH_REQ, // authentification request 82 PT_AUTH_REQ, // authentification request
73 PT_AUTH_RES, // authentification response 83 PT_AUTH_RES, // authentification response
74 PT_CONNECT_REQ, // want other node to contact me 84 PT_CONNECT_REQ, // want other node to contact me
75 PT_CONNECT_INFO, // request connection to some node 85 PT_CONNECT_INFO, // request connection to some node
76 PT_DATA_BRIDGED, // uncompressed packet with foreign mac pot. larger than path mtu 86 PT_DATA_BRIDGED, // uncompressed packet with foreign mac pot. larger than path mtu (NYI)
77 PT_MAX 87 PT_MAX
78 }; 88 };
79 89
80 u8 type; 90 u8 type;
81 u8 srcdst, src1, dst1; 91 u8 srcdst, src1, dst1;
142 152
143 sockinfo si; // the current(!) destination ip to send packets to 153 sockinfo si; // the current(!) destination ip to send packets to
144 int retry_cnt; 154 int retry_cnt;
145 155
146 tstamp last_activity; // time of last packet received 156 tstamp last_activity; // time of last packet received
157 tstamp last_establish_attempt;
158 //tstamp last_si_change; // time we last changed the socket address
147 159
148 u32 oseqno; 160 u32 oseqno;
149 sliding_window iseqno; 161 sliding_window iseqno;
150 162
151 u8 protocol; 163 u8 protocol;
152 u8 features; 164 u8 features;
165 bool is_direct; // current connection (si) is direct?
153 166
154 pkt_queue data_queue, vpn_queue; 167 pkt_queue data_queue, vpn_queue;
155 168
156 crypto_ctx *octx, *ictx; 169 crypto_ctx *octx, *ictx;
157 170
158#if ENABLE_DNS 171#if ENABLE_DNS
159 struct dns_connection *dns; 172 struct dns_connection *dns;
160
161 void dnsv4_reset_connection ();
162#endif 173#endif
163 174
164 enum conf_node::connectmode connectmode; 175 enum conf_node::connectmode connectmode;
165 u8 prot_minor; // minor number of other side 176 u8 prot_minor; // minor number of other side
166 177
181 void send_connect_info (int rid, const sockinfo &rsi, u8 rprotocols); 192 void send_connect_info (int rid, const sockinfo &rsi, u8 rprotocols);
182 void send_reset (const sockinfo &dsi); 193 void send_reset (const sockinfo &dsi);
183 void send_ping (const sockinfo &dsi, u8 pong = 0); 194 void send_ping (const sockinfo &dsi, u8 pong = 0);
184 void send_data_packet (tap_packet *pkt); 195 void send_data_packet (tap_packet *pkt);
185 196
197 void post_inject_queue ();
186 void inject_data_packet (tap_packet *pkt, bool broadcast = false); 198 void inject_data_packet (tap_packet *pkt);
187 void inject_vpn_packet (vpn_packet *pkt, int tos = 0); // for forwarding 199 void inject_vpn_packet (vpn_packet *pkt, int tos = 0); // for forwarding
188 200
189 void recv_vpn_packet (vpn_packet *pkt, const sockinfo &rsi); 201 void recv_vpn_packet (vpn_packet *pkt, const sockinfo &rsi);
190 void send_vpn_packet (vpn_packet *pkt, const sockinfo &si, int tos = 0); 202 void send_vpn_packet (vpn_packet *pkt, const sockinfo &si, int tos = 0);
191 203
192 void script_init_env (const char *ext); 204 void script_init_env (const char *ext);
193 void script_init_connect_env (); 205 void script_init_connect_env ();
194 const char *script_node_up (); 206 const char *script_node_up ();
207 const char *script_node_change ();
195 const char *script_node_down (); 208 const char *script_node_down ();
196 209
197 void dump_status (); 210 void dump_status ();
198 211
199 connection (struct vpn *vpn, conf_node *conf); 212 connection (struct vpn *vpn, conf_node *conf);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines