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

« back to all changes in this revision

Viewing changes to session_id.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 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
 
/*
26
 
 * Each session is identified by a random 8-byte session identifier.
27
 
 *
28
 
 * For efficiency, the session id is only transmitted over the control
29
 
 * channel (which only sees traffic occasionally when keys are being
30
 
 * negotiated).
31
 
 */
32
 
 
33
 
#if defined(USE_CRYPTO) && defined(USE_SSL)
34
 
 
35
 
#ifndef SESSION_ID_H
36
 
#define SESSION_ID_H
37
 
 
38
 
#include "basic.h"
39
 
#include "buffer.h"
40
 
 
41
 
struct session_id
42
 
{
43
 
  uint8_t id[8];
44
 
};
45
 
 
46
 
extern const struct session_id x_session_id_zero;
47
 
 
48
 
#define SID_SIZE (sizeof (x_session_id_zero.id))
49
 
 
50
 
static inline bool
51
 
session_id_equal (const struct session_id *sid1,
52
 
                  const struct session_id *sid2)
53
 
{
54
 
  return !memcmp (sid1->id, sid2->id, SID_SIZE);
55
 
}
56
 
 
57
 
static inline bool
58
 
session_id_defined (const struct session_id *sid1)
59
 
{
60
 
  return memcmp (sid1->id, &x_session_id_zero.id, SID_SIZE) != 0;
61
 
}
62
 
 
63
 
static inline bool
64
 
session_id_read (struct session_id *sid, struct buffer *buf)
65
 
{
66
 
  return buf_read (buf, sid->id, SID_SIZE);
67
 
}
68
 
 
69
 
static inline bool
70
 
session_id_write_prepend (const struct session_id *sid, struct buffer *buf)
71
 
{
72
 
  return buf_write_prepend (buf, sid->id, SID_SIZE);
73
 
}
74
 
 
75
 
static inline bool
76
 
session_id_write (const struct session_id *sid, struct buffer *buf)
77
 
{
78
 
  return buf_write (buf, sid->id, SID_SIZE);
79
 
}
80
 
 
81
 
void session_id_random (struct session_id *sid);
82
 
 
83
 
const char *session_id_print (const struct session_id *sid, struct gc_arena *gc);
84
 
 
85
 
#endif /* SESSION_ID_H */
86
 
#endif /* USE_CRYPTO && USE_SSL */