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

Comparing gvpe/src/vpn_dns.C (file contents):
Revision 1.44 by pcg, Tue Dec 4 14:55:59 2007 UTC vs.
Revision 1.48 by pcg, Tue Jul 28 00:42:14 2009 UTC

1/* 1/*
2 vpn_dns.C -- handle the dns tunnel part of the protocol. 2 vpn_dns.C -- handle the dns tunnel part of the protocol.
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// TODO: EDNS0 option to increase dns mtu? 32// TODO: EDNS0 option to increase dns mtu?
23// TODO: re-write dns packet parsing/creation using a safe mem-buffer 33// TODO: re-write dns packet parsing/creation using a safe mem-buffer
24// to ensure no buffer overflows or similar problems. 34// to ensure no buffer overflows or similar problems.
73#define MAX_PKT_SIZE 512 83#define MAX_PKT_SIZE 512
74 84
75#define RR_TYPE_A 1 85#define RR_TYPE_A 1
76#define RR_TYPE_NULL 10 86#define RR_TYPE_NULL 10
77#define RR_TYPE_TXT 16 87#define RR_TYPE_TXT 16
88#define RR_TYPE_AAAA 28
78#define RR_TYPE_ANY 255 89#define RR_TYPE_ANY 255
79 90
80#define RR_CLASS_IN 1 91#define RR_CLASS_IN 1
81 92
82#define CMD_IP_1 207 93#define CMD_IP_1 207
560 vector<dns_rcv *> rcvpq; 571 vector<dns_rcv *> rcvpq;
561 572
562 byte_stream rcvdq; int rcvseq; int repseq; 573 byte_stream rcvdq; int rcvseq; int repseq;
563 byte_stream snddq; int sndseq; 574 byte_stream snddq; int sndseq;
564 575
565 void time_cb (ev::timer &w, int revents); ev::timer tw; 576 inline void time_cb (ev::timer &w, int revents); ev::timer tw;
566 void receive_rep (dns_rcv *r); 577 void receive_rep (dns_rcv *r);
567 578
568 dns_connection (connection *c); 579 dns_connection (connection *c);
569 ~dns_connection (); 580 ~dns_connection ();
570}; 581};
725 736
726dns_connection::dns_connection (connection *c) 737dns_connection::dns_connection (connection *c)
727: c (c) 738: c (c)
728, rcvdq (MAX_BACKLOG * 2) 739, rcvdq (MAX_BACKLOG * 2)
729, snddq (MAX_BACKLOG) 740, snddq (MAX_BACKLOG)
730, tw (this, &dns_connection::time_cb)
731{ 741{
742 tw.set<dns_connection, &dns_connection::time_cb> (this);
743
732 vpn = c->vpn; 744 vpn = c->vpn;
733 745
734 established = false; 746 established = false;
735 747
736 rcvseq = repseq = sndseq = 0; 748 rcvseq = repseq = sndseq = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines