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

« back to all changes in this revision

Viewing changes to src/compat/compat-inet_pton.c

  • 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) 2011 - David Sommerseth <davids@redhat.com>
 
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
#ifdef HAVE_CONFIG_H
 
26
#include "config.h"
 
27
#elif defined(_MSC_VER)
 
28
#include "config-msvc.h"
 
29
#endif
 
30
 
 
31
#ifndef HAVE_INET_PTON
 
32
 
 
33
#include "compat.h"
 
34
 
 
35
#ifdef WIN32
 
36
 
 
37
#include <windows.h>
 
38
#include <string.h>
 
39
 
 
40
/*
 
41
 * inet_ntop() and inet_pton() wrap-implementations using
 
42
 * WSAAddressToString() and WSAStringToAddress() functions
 
43
 *
 
44
 * this is needed as long as we support running OpenVPN on WinXP
 
45
 */
 
46
 
 
47
 
 
48
int
 
49
inet_pton(int af, const char *src, void *dst)
 
50
{
 
51
  struct sockaddr_storage ss;
 
52
  int size = sizeof(ss);
 
53
  char src_copy[INET6_ADDRSTRLEN+1];
 
54
 
 
55
  ZeroMemory(&ss, sizeof(ss));
 
56
  /* stupid non-const API */
 
57
  strncpy (src_copy, src, INET6_ADDRSTRLEN+1);
 
58
  src_copy[INET6_ADDRSTRLEN] = 0;
 
59
 
 
60
  if (WSAStringToAddress(src_copy, af, NULL, (struct sockaddr *)&ss, &size) == 0) {
 
61
    switch(af) {
 
62
      case AF_INET:
 
63
        *(struct in_addr *)dst = ((struct sockaddr_in *)&ss)->sin_addr;
 
64
        return 1;
 
65
      case AF_INET6:
 
66
        *(struct in6_addr *)dst = ((struct sockaddr_in6 *)&ss)->sin6_addr;
 
67
        return 1;
 
68
    }
 
69
  }
 
70
  return 0;
 
71
}
 
72
 
 
73
#else
 
74
 
 
75
#error no emulation for inet_ntop
 
76
 
 
77
#endif
 
78
 
 
79
#endif