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

« back to all changes in this revision

Viewing changes to src/openvpn/shaper.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) 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
#ifdef HAVE_CONFIG_H
 
26
#include "config.h"
 
27
#elif defined(_MSC_VER)
 
28
#include "config-msvc.h"
 
29
#endif
 
30
 
 
31
#include "syshead.h"
 
32
#include "shaper.h"
 
33
#include "memdbg.h"
 
34
 
 
35
#ifdef ENABLE_FEATURE_SHAPER
 
36
 
 
37
/*
 
38
 * We want to wake up in delay microseconds.  If timeval is larger
 
39
 * than delay, set timeval to delay.
 
40
 */
 
41
bool
 
42
shaper_soonest_event (struct timeval *tv, int delay)
 
43
{
 
44
  bool ret = false;
 
45
  if (delay < 1000000)
 
46
    {
 
47
      if (tv->tv_sec)
 
48
        {
 
49
          tv->tv_sec = 0;
 
50
          tv->tv_usec = delay;
 
51
          ret = true;
 
52
        }
 
53
      else if (delay < tv->tv_usec)
 
54
        {
 
55
          tv->tv_usec = delay;
 
56
          ret = true;
 
57
        }
 
58
    }
 
59
  else
 
60
    {
 
61
      const int sec = delay / 1000000;
 
62
      const int usec = delay % 1000000;
 
63
 
 
64
      if (sec < tv->tv_sec)
 
65
        {
 
66
          tv->tv_sec = sec;
 
67
          tv->tv_usec = usec;
 
68
          ret = true;
 
69
        }
 
70
      else if (sec == tv->tv_sec)
 
71
        {
 
72
          if (usec < tv->tv_usec)
 
73
            {
 
74
              tv->tv_usec = usec;
 
75
              ret = true;
 
76
            }
 
77
        }
 
78
    }
 
79
#ifdef SHAPER_DEBUG
 
80
  dmsg (D_SHAPER_DEBUG, "SHAPER shaper_soonest_event sec=%d usec=%d ret=%d",
 
81
       (int)tv->tv_sec, (int)tv->tv_usec, (int)ret);
 
82
#endif
 
83
  return ret;
 
84
}
 
85
 
 
86
void
 
87
shaper_reset_wakeup (struct shaper *s)
 
88
{
 
89
  CLEAR (s->wakeup);
 
90
}
 
91
 
 
92
void
 
93
shaper_msg (struct shaper *s)
 
94
{
 
95
  msg (M_INFO, "Output Traffic Shaping initialized at %d bytes per second",
 
96
       s->bytes_per_second);
 
97
}
 
98
 
 
99
#else
 
100
static void dummy(void) {}
 
101
#endif /* ENABLE_FEATURE_SHAPER */