diff options
Diffstat (limited to 'app/openvpn/src/openvpn/lzo.h')
| -rw-r--r-- | app/openvpn/src/openvpn/lzo.h | 222 | 
1 files changed, 3 insertions, 219 deletions
| diff --git a/app/openvpn/src/openvpn/lzo.h b/app/openvpn/src/openvpn/lzo.h index 472204d0..f33e587a 100644 --- a/app/openvpn/src/openvpn/lzo.h +++ b/app/openvpn/src/openvpn/lzo.h @@ -32,14 +32,13 @@   */ -#ifdef ENABLE_LZO +#if defined(ENABLE_LZO)  /**   * @addtogroup compression   * @{   */ -#ifndef ENABLE_LZO_STUB  #if defined(HAVE_LZO_LZOUTIL_H)  #include "lzo/lzoutil.h"  #elif defined(HAVE_LZOUTIL_H) @@ -50,28 +49,16 @@  #elif defined(HAVE_LZO1X_H)  #include "lzo1x.h"  #endif -#endif  #include "buffer.h"  #include "mtu.h"  #include "common.h"  #include "status.h" -/**************************************************************************/ -/** @name Bit-flags which control data channel packet compression *//******/ -/** @{ */ -#define LZO_SELECTED   (1<<0)   /**< Bit-flag indicating that compression -                                 *   of data channel packets is enabled. */ -#define LZO_ON         (1<<1)   /**< Bit-flag indicating that compression -                                 *   of data channel packets is active. */ -#define LZO_ADAPTIVE   (1<<2)   /**< Bit-flag indicating that adaptive -                                 *   compression of data channel packets -                                 *   has been selected. */ -/** @} name Bit-flags which control data channel packet compression *//****/ +extern const struct compress_alg lzo_alg;  /**************************************************************************/  /** @name LZO library interface defines *//** @{ *//***********************/ -#ifndef ENABLE_LZO_STUB  #define LZO_COMPRESS    lzo1x_1_15_compress                                  /**< LZO library compression function.                                   * @@ -93,36 +80,11 @@                                   *   verify the integrity of incoming                                   *   packets, you might want to consider                                   *   using the non-safe version. */ -#endif /* ENABLE_LZO_STUB */  /** @} name LZO library interface *//**************************************/  /**************************************************************************/ -/** @name Miscellaneous compression defines *//** @{ *//*******************/ -#define LZO_EXTRA_BUFFER(len) ((len)/8 + 128 + 3) -                                /**< LZO 2.0 worst-case size expansion. */ -#ifndef ENABLE_LZO_STUB -#define COMPRESS_THRESHOLD 100  /**< Minimum packet size to attempt -                                 *   compression. */ -#endif /* ENABLE_LZO_STUB */ -/** @} name Miscellaneous compression defines *//**************************/ - - -/**************************************************************************/ -/** @name Compression header defines *//** @{ *//**************************/ -#define LZO_PREFIX_LEN 1        /**< Length in bytes of prepended -                                 *   compression header. */ -#define YES_COMPRESS 0x66       /**< Single-byte compression header -                                 *   indicating this packet has been -                                 *   compressed. */ -#define NO_COMPRESS  0xFA       /**< Single-byte compression header -                                 *   indicating this packet has not been -                                 *   compressed. */ -/** @} name Compression header defines *//*********************************/ - -/**************************************************************************/  /** @name Adaptive compression defines *//** @{ *//************************/ -#ifndef ENABLE_LZO_STUB  #define AC_SAMP_SEC    2        /**< Number of seconds in a sample period. */  #define AC_MIN_BYTES   1000     /**< Minimum number of bytes a sample                                   *   period must contain for it to be @@ -132,11 +94,8 @@                                   *   turned off. */  #define AC_OFF_SEC     60       /**< Seconds to wait after compression has                                   *   been turned off before retesting. */ -#endif /* ENABLE_LZO_STUB */  /** @} name Adaptive compression defines *//*******************************/ -#ifndef ENABLE_LZO_STUB -  /**   * Adaptive compression state.   */ @@ -147,8 +106,6 @@ struct lzo_adaptive_compress {    int n_comp;  }; -#endif /* ENABLE_LZO_STUB */ -  /**   * State for the compression and decompression routines. @@ -162,186 +119,13 @@ struct lzo_adaptive_compress {   */  struct lzo_compress_workspace  { -  bool defined; -  unsigned int flags; -#ifndef ENABLE_LZO_STUB    lzo_voidp wmem;    int wmem_size;    struct lzo_adaptive_compress ac; - -  /* statistics */ -  counter_type pre_decompress; -  counter_type post_decompress; -  counter_type pre_compress; -  counter_type post_compress; -#endif  }; - -/**************************************************************************/ -/** @name Functions for initialization and cleanup *//** @{ *//************/ - -/** - * Adjust %frame parameters for data channel payload compression. - * - * Data channel packet compression requires a single-byte header to - * indicate whether a packet has been compressed or not. The packet - * handling buffers must also allow for worst-case payload compression - * where the compressed content size is actually larger than the original - * content size. This function adjusts the parameters of a given frame - * structure to include the header and allow for worst-case compression - * expansion. - * - * @param frame        - The frame structure to adjust. - */ -void lzo_adjust_frame_parameters(struct frame *frame); - -/** - * Initialize a compression workspace structure. - * - * This function initializes the given workspace structure \a lzowork. - * This includes allocating a work buffer for internal use and setting its - * flags to the given value of \a flags. - * - * This function also initializes the lzo library. - * - * @param lzowork      - A pointer to the workspace structure to - *                       initialize. - * @param flags        - The initial flags to set in the workspace - *                       structure. - */ -void lzo_compress_init (struct lzo_compress_workspace *lzowork, unsigned int flags); - -/** - * Cleanup a compression workspace structure. - * - * This function cleans up the given workspace structure \a lzowork.  This - * includes freeing the structure's internal work buffer. - * - * @param lzowork      - A pointer to the workspace structure to clean up. - */ -void lzo_compress_uninit (struct lzo_compress_workspace *lzowork); - -/** - * Set a workspace structure's flags. - * - * @param lzowork      - The workspace structure of which to modify the - *                       flags. - * @param flags        - The new value to assign to the workspace - *                       structure's flags. - */ -void lzo_modify_flags (struct lzo_compress_workspace *lzowork, unsigned int flags); - -/** @} name Functions for initialization and cleanup *//*******************/ - - -/**************************************************************************/ -/** @name Function for packets to be sent to a remote OpenVPN peer *//*****/ -/** @{ */ - -/** - * Process an outgoing packet according to a VPN tunnel's settings. - * @ingroup compression - * - * This function processes the packet contained in \a buf.  Its behavior - * depends on the settings contained within \a lzowork.  If compression is - * enabled and active, this function compresses the packet.  After - * compression, the size of the uncompressed and compressed packets are - * compared, and the smallest is used. - * - * This function prepends a one-byte header indicating whether the packet - * was or was not compressed, so as to let the peer know how to handle the - * packet. - * - * If an error occurs during processing, an error message is logged and - * the length of \a buf is set to zero. - * - * @param buf          - A pointer to the buffer containing the outgoing - *                       packet.  This pointer will be modified to point - *                       to the processed packet on return. - * @param work         - A preallocated working buffer. - * @param lzowork      - The compression workspace structure associated - *                       with this VPN tunnel. - * @param frame        - The frame parameters of this tunnel. - * - * @return Void.\n  On return, \a buf will point to a buffer containing - *     the processed, possibly compressed, packet data with a compression - *     header prepended. - */ -void lzo_compress (struct buffer *buf, struct buffer work, -		   struct lzo_compress_workspace *lzowork, -		   const struct frame* frame); - -/** @} name Function for packets to be sent to a remote OpenVPN peer *//***/ - - -/**************************************************************************/ -/** @name Function for packets received from a remote OpenVPN peer *//*****/ -/** @{ */ - -/** - * Inspect an incoming packet and decompress if it is compressed. - * - * This function inspects the incoming packet contained in \a buf.  If its - * one-byte compression header indicates that it was compressed (i.e. \c - * YES_COMPRESS), then it will be decompressed.  If its header indicates - * that it was not compressed (i.e. \c NO_COMPRESS), then the buffer is - * not modified except for removing the compression header. - * - * If an error occurs during processing, for example if the compression - * header has a value other than \c YES_COMPRESS or \c NO_COMPRESS, then - * the error is logged and the length of \a buf is set to zero. - * - * @param buf          - A pointer to the buffer containing the incoming - *                       packet.  This pointer will be modified to point - *                       to the processed packet on return. - * @param work         - A preallocated working buffer. - * @param lzowork      - The compression workspace structure associated - *                       with this VPN tunnel. - * @param frame        - The frame parameters of this tunnel. - * - * @return Void.\n  On return, \a buf will point to a buffer containing - *     the uncompressed packet data and the one-byte compression header - *     will have been removed. - */ -void lzo_decompress (struct buffer *buf, struct buffer work, -		     struct lzo_compress_workspace *lzowork, -		     const struct frame* frame); - -/** @} name Function for packets received from a remote OpenVPN peer *//***/ - - -/**************************************************************************/ -/** @name Utility functions *//** @{ *//***********************************/ - -/** - * Print statistics on compression and decompression performance. - * - * @param lzo_compwork - The workspace structure from which to get the - *                       statistics. - * @param so           - The status output structure to which to write the - *                       statistics. - */ -void lzo_print_stats (const struct lzo_compress_workspace *lzo_compwork, struct status_output *so); - -/** - * Check whether compression is enabled for a workspace structure. - * - * @param lzowork      - The workspace structure to check. - * - * @return true if compression is enabled; false otherwise. - */ -static inline bool -lzo_defined (const struct lzo_compress_workspace *lzowork) -{ -  return lzowork->defined; -} - -/** @} name Utility functions *//******************************************/ - -  /** @} addtogroup compression */ -#endif /* ENABLE_LZO */ +#endif /* ENABLE_LZO && USE_COMP */  #endif | 
