OpenVPN 3 Core Library
Loading...
Searching...
No Matches
clamp.hpp
Go to the documentation of this file.
1// OpenVPN -- An application to securely tunnel IP networks
2// over a single port, with support for SSL/TLS-based
3// session authentication and key exchange,
4// packet encryption, packet authentication, and
5// packet compression.
6//
7// Copyright (C) 2012- OpenVPN Inc.
8//
9// SPDX-License-Identifier: MPL-2.0 OR AGPL-3.0-only WITH openvpn3-openssl-exception
10//
11
12#pragma once
13
14// loose emulation of std::clamp for pre-C++17
15
16namespace openvpn {
17
18template <typename T>
19T clamp(T value, T low, T high)
20{
21 if (value < low)
22 return low;
23 else if (value > high)
24 return high;
25 else
26 return value;
27}
28
29// like clamp() above, but only clamp non-zero values
30template <typename T>
31T clamp_nonzero(T value, T low, T high)
32{
33 if (value)
34 return clamp(value, low, high);
35 else
36 return value;
37}
38} // namespace openvpn
Support deferred server-side state creation when client connects.
Definition ovpncli.cpp:95
T clamp_nonzero(T value, T low, T high)
Definition clamp.hpp:31
T clamp(T value, T low, T high)
Definition clamp.hpp:19