~ubuntu-branches/ubuntu/saucy/openvpn/saucy-proposed

« back to all changes in this revision

Viewing changes to src/openvpn/occ.h

  • Committer: Package Import Robot
  • Author(s): Stéphane Graber
  • Date: 2013-05-24 17:42:45 UTC
  • mfrom: (1.1.19) (10.2.22 sid)
  • Revision ID: package-import@ubuntu.com-20130524174245-g9y6wlforycufqy5
Tags: 2.3.1-2ubuntu1
* Merge from Debian unstable. Remaining changes:
  - debian/openvpn.init.d:
    + Do not use start-stop-daemon and </dev/null to avoid blocking boot.
    + Show per-VPN result messages.
    + Add "--script-security 2" by default for backwards compatabliity.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  OpenVPN -- An application to securely tunnel IP networks
 
3
 *             over a single TCP/UDP port, with support for SSL/TLS-based
 
4
 *             session authentication and key exchange,
 
5
 *             packet encryption, packet authentication, and
 
6
 *             packet compression.
 
7
 *
 
8
 *  Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
 
9
 *
 
10
 *  This program is free software; you can redistribute it and/or modify
 
11
 *  it under the terms of the GNU General Public License version 2
 
12
 *  as published by the Free Software Foundation.
 
13
 *
 
14
 *  This program is distributed in the hope that it will be useful,
 
15
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
 *  GNU General Public License for more details.
 
18
 *
 
19
 *  You should have received a copy of the GNU General Public License
 
20
 *  along with this program (see the file COPYING included with this
 
21
 *  distribution); if not, write to the Free Software Foundation, Inc.,
 
22
 *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
23
 */
 
24
 
 
25
#ifndef OCC_H
 
26
#define OCC_H
 
27
 
 
28
#ifdef ENABLE_OCC
 
29
 
 
30
#include "forward.h"
 
31
 
 
32
/* OCC_STRING_SIZE must be set to sizeof (occ_magic) */
 
33
#define OCC_STRING_SIZE 16
 
34
 
 
35
/*
 
36
 * OCC (OpenVPN Configuration Control) protocol opcodes.
 
37
 */
 
38
 
 
39
#define OCC_REQUEST   0         /* request options string from peer */
 
40
#define OCC_REPLY     1         /* deliver options string to peer */
 
41
 
 
42
/*
 
43
 * Send an OCC_REQUEST once every OCC_INTERVAL
 
44
 * seconds until a reply is received.
 
45
 *
 
46
 * If we haven't received a reply after
 
47
 * OCC_N_TRIES, give up.
 
48
 */
 
49
#define OCC_INTERVAL_SECONDS 10
 
50
#define OCC_N_TRIES          12
 
51
 
 
52
/*
 
53
 * Other OCC protocol opcodes used to estimate the MTU empirically.
 
54
 */
 
55
#define OCC_MTU_LOAD_REQUEST   2        /* Ask peer to send a big packet to us */
 
56
#define OCC_MTU_LOAD           3        /* Send a big packet to peer */
 
57
#define OCC_MTU_REQUEST        4        /* Ask peer to tell us the largest
 
58
                                           packet it has received from us so far */
 
59
#define OCC_MTU_REPLY          5        /* Send largest packet size to peer */
 
60
 
 
61
/*
 
62
 * Process one command from mtu_load_test_sequence
 
63
 * once every n seconds, if --mtu-test is specified.
 
64
 */
 
65
#define OCC_MTU_LOAD_INTERVAL_SECONDS 3
 
66
 
 
67
/*
 
68
 * Send an exit message to remote.
 
69
 */
 
70
#define OCC_EXIT               6
 
71
 
 
72
/*
 
73
 * Used to conduct a load test command sequence
 
74
 * of UDP connection for empirical MTU measurement.
 
75
 */
 
76
struct mtu_load_test
 
77
{
 
78
  int op;                       /* OCC opcode to send to peer */
 
79
  int delta;                    /* determine packet size to send by using
 
80
                                   this delta against currently
 
81
                                   configured MTU */
 
82
};
 
83
 
 
84
extern const uint8_t occ_magic[];
 
85
 
 
86
static inline bool
 
87
is_occ_msg (const struct buffer* buf)
 
88
{
 
89
  return buf_string_match_head (buf, occ_magic, OCC_STRING_SIZE);
 
90
}
 
91
 
 
92
void process_received_occ_msg (struct context *c);
 
93
 
 
94
#endif
 
95
#endif