亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lzo.c

?? 一個開源的VPN原碼
?? C
字號:
/* *  OpenVPN -- An application to securely tunnel IP networks *             over a single UDP port, with support for TLS-based *             session authentication and key exchange, *             packet encryption, packet authentication, and *             packet compression. * *  Copyright (C) 2002 James Yonan <jim@yonan.net> * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program (see the file COPYING included with this *  distribution); if not, write to the Free Software Foundation, Inc., *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include "config.h"#ifdef USE_LZO#include "syshead.h"#include "lzo.h"#include "error.h"#include "memdbg.h"static boollzo_adaptive_compress_test(struct lzo_adaptive_compress *ac, const time_t time){  const bool save = ac->compress_state;  if (!ac->enabled)    return true;  if (!ac->compress_state)    {      if (time >= ac->next)	{	  if (ac->n_total > AC_MIN_BYTES	      && (ac->n_total - ac->n_comp) < (ac->n_total / (100 / AC_SAVE_PCT)))	    {	      ac->compress_state = true;	      ac->next = time + AC_OFF_SEC;	    }	  else	    {	      ac->next = time + AC_SAMP_SEC;	    }	  msg (D_COMP, "lzo_adaptive_compress_test: comp=%d total=%d", ac->n_comp, ac->n_total);	  ac->n_total = ac->n_comp = 0;	}    }  else     {      if (time >= ac->next)	{	  ac->next = time + AC_SAMP_SEC;	  ac->n_total = ac->n_comp = 0;	  ac->compress_state = false;	}    }  if (ac->compress_state != save)    msg (D_COMP_LOW, "Adaptive compression state %s", (ac->compress_state ? "OFF" : "ON"));  return !ac->compress_state;}inline static voidlzo_adaptive_compress_data(struct lzo_adaptive_compress *ac, int n_total, int n_comp){  if (ac->enabled)    {      ac->n_total += n_total;      ac->n_comp += n_comp;    }}void lzo_adjust_frame_parameters(struct frame *frame){  /* Leave room for our one-byte compressed/didn't-compress flag. */  ++frame->extra_frame;  /* Leave room for compression buffer to expand in worst case scenario     where data is totally uncompressible */  frame->extra_buffer += LZO_EXTRA_BUFFER( MTU_EXTRA_SIZE(frame));}voidlzo_compress_init (struct lzo_compress_workspace *lzowork, bool adaptive){  CLEAR (*lzowork);  lzowork->wmem_size = LZO_WORKSPACE;  lzowork->ac.enabled = adaptive;  if (lzo_init () != LZO_E_OK)    msg (M_FATAL, "Cannot initialize LZO compression library");  if (!(lzowork->wmem = lzo_malloc (lzowork->wmem_size)))    msg (M_FATAL, "Cannot allocate memory for LZO compression library");  msg (M_INFO, "LZO compression initialized");}voidlzo_compress_uninit (struct lzo_compress_workspace *lzowork){  lzo_free (lzowork->wmem);  lzowork->wmem = NULL;}/* Magic numbers to tell our peer if we compressed or not */#define YES_COMPRESS 0x66#define NO_COMPRESS  0xFAvoidlzo_compress (struct buffer *buf, struct buffer work,	      struct lzo_compress_workspace *lzowork,	      const struct frame* frame,	      const time_t current){  int zlen = 0;  int err;  bool compressed = false;  if (buf->len <= 0)    return;  /*   * In order to attempt compression, length must be at least COMPRESS_THRESHOLD,   * and our adaptive level must give the OK.   */  if (buf->len >= COMPRESS_THRESHOLD && lzo_adaptive_compress_test(&lzowork->ac, current))    {      ASSERT (buf_init (&work, EXTRA_FRAME (frame)));      ASSERT (buf_safe (&work, LZO_EXTRA_BUFFER (MTU_SIZE (frame))));      ASSERT (buf->len <= MTU_SIZE (frame));      err = LZO_COMPRESS (BPTR (buf), BLEN (buf), BPTR (&work), &zlen, lzowork->wmem);      if (err != LZO_E_OK)	{	  msg (D_COMP_ERRORS, "LZO compression error: %d", err);	  buf->len = 0;	  return;	}      ASSERT (buf_safe (&work, zlen));      work.len = zlen;      compressed = true;      msg (D_COMP, "compress %d -> %d", buf->len, work.len);      lzowork->pre_compress += buf->len;      lzowork->post_compress += work.len;      /* tell adaptive level about our success or lack thereof in getting any size reduction */      lzo_adaptive_compress_data(&lzowork->ac, buf->len, work.len);    }  /* did compression save us anything ? */  if (compressed && work.len < buf->len)    {      uint8_t *header = buf_prepend (&work, 1);      *header = YES_COMPRESS;      *buf = work;    }  else    {      uint8_t *header = buf_prepend (buf, 1);      *header = NO_COMPRESS;    }}voidlzo_decompress (struct buffer *buf, struct buffer work,		struct lzo_compress_workspace *lzowork,		const struct frame* frame){  int zlen = MTU_EXTRA_SIZE (frame);  uint8_t c;		/* flag indicating whether or not our peer compressed */  int err;  if (buf->len <= 0)    return;  ASSERT (buf_init (&work, EXTRA_FRAME (frame)));  c = *BPTR (buf);  ASSERT (buf_advance (buf, 1));  if (c == YES_COMPRESS)	/* packet was compressed */    {      ASSERT (buf_safe (&work, zlen));      err = LZO_DECOMPRESS (BPTR (buf), BLEN (buf), BPTR (&work), &zlen,			    lzowork->wmem);      if (err != LZO_E_OK)	{	  msg (D_COMP_ERRORS, "LZO decompression error: %d", err);	  buf->len = 0;	  return;	}      ASSERT (buf_safe (&work, zlen));      work.len = zlen;      msg (D_COMP, "decompress %d -> %d", buf->len, work.len);      lzowork->pre_decompress += buf->len;      lzowork->post_decompress += work.len;      *buf = work;    }  else if (c == NO_COMPRESS)	/* packet was not compressed */    {      ;    }  else    {      msg (D_COMP_ERRORS, "Bad LZO decompression header byte: %d", c);      buf->len = 0;    }}/* * Print statistics */void lzo_print_stats (struct lzo_compress_workspace *lzo_compwork){  msg (M_INFO, " pre-compress bytes:   " counter_format, lzo_compwork->pre_compress);  msg (M_INFO, " post-compress bytes:  " counter_format, lzo_compwork->post_compress);  msg (M_INFO, " pre-decompress bytes: " counter_format, lzo_compwork->pre_decompress);  msg (M_INFO, " post-decompress bytes:" counter_format, lzo_compwork->post_decompress);}#endif /* USE_LZO */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
爽好久久久欧美精品| 色综合久久久网| 不卡一卡二卡三乱码免费网站| 久久 天天综合| 成人18视频日本| 日韩一区二区三区高清免费看看| 国产欧美一区二区精品久导航 | 亚洲成人你懂的| 国产盗摄精品一区二区三区在线| 欧美综合天天夜夜久久| 中文字幕高清一区| 乱一区二区av| 欧美日韩国产天堂| 日韩美女视频一区| 国产精品资源在线看| 欧美日韩午夜在线| 亚洲精品免费在线观看| 国产精品一区专区| 欧美tickle裸体挠脚心vk| 亚洲综合免费观看高清完整版| 国产美女视频一区| 日韩免费观看高清完整版在线观看| 一区二区三区不卡在线观看 | 综合婷婷亚洲小说| 国内外成人在线| 日韩精品一区二区三区中文不卡 | 亚洲精品中文字幕在线观看| 国产乱对白刺激视频不卡| 日韩限制级电影在线观看| 一区二区高清视频在线观看| 91视视频在线观看入口直接观看www | 亚洲色图视频免费播放| 成人v精品蜜桃久久一区| 欧美国产欧美综合| 成人高清免费观看| 中文字幕欧美一| 色综合一个色综合| 亚洲乱码国产乱码精品精的特点| 99久久亚洲一区二区三区青草| 国产精品全国免费观看高清| 成人白浆超碰人人人人| 亚洲乱码国产乱码精品精98午夜| 91激情五月电影| 亚洲国产欧美一区二区三区丁香婷| 欧美性xxxxx极品少妇| 亚洲成va人在线观看| 日韩午夜三级在线| 国产一区二区三区在线观看精品| 欧美精品一区二区蜜臀亚洲| 精品在线播放免费| 欧美国产一区在线| 色婷婷久久综合| 视频在线观看一区| 久久女同性恋中文字幕| 成年人午夜久久久| 五月激情六月综合| 久久影院视频免费| 91福利视频久久久久| 免费在线观看精品| 亚洲国产精品成人综合| 91福利精品第一导航| 麻豆视频一区二区| 中文字幕亚洲一区二区av在线| 色欧美片视频在线观看| 捆绑紧缚一区二区三区视频| 国产精品嫩草影院com| 欧美三级资源在线| 国产精品69久久久久水密桃| 亚洲理论在线观看| 日韩精品综合一本久道在线视频| 成人激情开心网| 美国毛片一区二区| 亚洲日本在线天堂| 欧美成人精品二区三区99精品| 成人av在线资源网站| 日韩av不卡在线观看| 中文在线一区二区| 6080亚洲精品一区二区| 99久久综合国产精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品美女一区二区| 欧美丰满嫩嫩电影| 99久久久久久| 国产成人综合在线观看| 日本成人超碰在线观看| 一区二区在线免费观看| 国产视频一区二区在线| 日韩欧美精品在线视频| 欧美日韩一区在线观看| av在线免费不卡| 韩国女主播成人在线| 天天综合日日夜夜精品| 亚洲免费av高清| 日本一区二区成人| 欧美精品一区二区三区久久久 | 麻豆免费看一区二区三区| 综合亚洲深深色噜噜狠狠网站| 久久综合视频网| 欧美一区二区三区不卡| 在线亚洲+欧美+日本专区| 99久久久国产精品| 成人黄色一级视频| 粉嫩一区二区三区性色av| 国内偷窥港台综合视频在线播放| 日本亚洲电影天堂| 青青草国产成人av片免费| 亚洲v中文字幕| 亚洲小少妇裸体bbw| 亚洲制服丝袜一区| 尤物视频一区二区| 亚洲最快最全在线视频| 亚洲精品中文字幕在线观看| 亚洲女同ⅹxx女同tv| 亚洲欧美aⅴ...| 一区二区三国产精华液| 亚洲国产精品一区二区www | 欧美午夜精品一区二区三区| 91美女在线看| 91麻豆自制传媒国产之光| aaa国产一区| 91小视频免费观看| 欧美在线不卡一区| 制服丝袜亚洲精品中文字幕| 欧美男生操女生| 欧美成人a视频| 欧美va天堂va视频va在线| 久久色视频免费观看| 国产欧美日韩亚州综合| 亚洲同性gay激情无套| 一区二区三区在线播放| 婷婷中文字幕一区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 视频一区二区三区在线| 日韩av一二三| 国模少妇一区二区三区| 成人黄色综合网站| 色综合久久久久综合体| 51精品秘密在线观看| 精品国产成人系列| 日本一区二区免费在线观看视频| 国产精品美女一区二区在线观看| 亚洲欧美日韩国产综合在线| 午夜精品久久久| 国产精品一区二区三区网站| av一区二区三区在线| 欧美日韩mp4| 欧美激情艳妇裸体舞| 亚洲小说欧美激情另类| 国产乱子伦视频一区二区三区| 色综合网站在线| 欧美电视剧在线观看完整版| 国产精品免费av| 日韩精品乱码免费| 丰满白嫩尤物一区二区| 欧美精选在线播放| 日本一区二区三区电影| 日韩影院在线观看| k8久久久一区二区三区| 欧美一区二区三区性视频| 中文字幕一区二区三区精华液 | 欧美成人精品福利| 一区二区三区丝袜| 国产一区二区不卡在线 | 五月婷婷综合在线| 成人一区二区三区| 日韩欧美专区在线| 亚洲蜜臀av乱码久久精品蜜桃| 精品一区二区三区在线观看| 在线免费观看视频一区| 国产午夜精品久久| 奇米精品一区二区三区在线观看一| a亚洲天堂av| 久久奇米777| 美女网站视频久久| 欧美色视频在线观看| 国产精品福利一区| 国产在线一区观看| 日韩精品一区二区三区视频播放| 亚洲伊人伊色伊影伊综合网| 成人性生交大片免费看中文| 欧美大片在线观看一区| 亚洲成人在线免费| 欧美亚洲国产一区二区三区va| 国产精品区一区二区三| 国产精品99久久久| 久久天堂av综合合色蜜桃网| 毛片av中文字幕一区二区| 91精品在线免费| 亚洲国产精品精华液网站| 色偷偷一区二区三区| 亚洲免费观看高清完整版在线| 成人免费黄色大片| 精品剧情在线观看| 蜜臀av一级做a爰片久久| 欧美一区二区三区在线看| 亚洲一区二区三区美女| 欧美日韩一区二区三区在线看| 亚洲精品一二三四区| 欧美日韩在线不卡| 石原莉奈在线亚洲三区|