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_INLINE_H 26#define OCC_INLINE_H 27 28#ifdef ENABLE_OCC 29 30/* 31 * Inline functions 32 */ 33 34static inline int 35occ_reset_op () 36{ 37 return -1; 38} 39 40/* 41 * Should we send an OCC_REQUEST message? 42 */ 43static inline void 44check_send_occ_req (struct context *c) 45{ 46 void check_send_occ_req_dowork (struct context *c); 47 if (event_timeout_defined (&c->c2.occ_interval) 48 && event_timeout_trigger (&c->c2.occ_interval, 49 &c->c2.timeval, 50 (!TO_LINK_DEF(c) && c->c2.occ_op < 0) ? ETT_DEFAULT : 0)) 51 check_send_occ_req_dowork (c); 52} 53 54/* 55 * Should we send an MTU load test? 56 */ 57static inline void 58check_send_occ_load_test (struct context *c) 59{ 60 void check_send_occ_load_test_dowork (struct context *c); 61 if (event_timeout_defined (&c->c2.occ_mtu_load_test_interval) 62 && event_timeout_trigger (&c->c2.occ_mtu_load_test_interval, 63 &c->c2.timeval, 64 (!TO_LINK_DEF(c) && c->c2.occ_op < 0) ? ETT_DEFAULT : 0)) 65 check_send_occ_load_test_dowork (c); 66} 67 68/* 69 * Should we send an OCC message? 70 */ 71static inline void 72check_send_occ_msg (struct context *c) 73{ 74 void check_send_occ_msg_dowork (struct context *c); 75 if (c->c2.occ_op >= 0) 76 { 77 if (!TO_LINK_DEF(c)) 78 check_send_occ_msg_dowork (c); 79 else 80 tv_clear (&c->c2.timeval); /* ZERO-TIMEOUT */ 81 } 82} 83 84#endif 85#endif 86