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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pool.c

?? OpenVPN is a robust and highly flexible tunneling application that uses all of the encryption, authe
?? C
字號(hào):
/* *  OpenVPN -- An application to securely tunnel IP networks *             over a single TCP/UDP port, with support for SSL/TLS-based *             session authentication and key exchange, *             packet encryption, packet authentication, and *             packet compression. * *  Copyright (C) 2002-2004 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 */#ifdef WIN32#include "config-win32.h"#else#include "config.h"#endif#include "syshead.h"#include "pool.h"#include "buffer.h"#include "error.h"#include "socket.h"#include "otime.h"#include "memdbg.h"#if P2MPstatic voidifconfig_pool_entry_free (struct ifconfig_pool_entry *ipe, bool hard){  ipe->in_use = false;  if (hard && ipe->common_name)    {      free (ipe->common_name);      ipe->common_name = NULL;    }  if (hard)    ipe->last_release = 0;  else    ipe->last_release = now;}static intifconfig_pool_find (struct ifconfig_pool *pool, const char *common_name){  int i;  int n = 0;  time_t earliest_release = 0;  int previous_usage = -1;  int new_usage = -1;  for (i = 0; i < pool->size; ++i)    {      struct ifconfig_pool_entry *ipe = &pool->list[i];      if (!ipe->in_use)	{	  /*	   * Keep track of the unused IP address entry which	   * was released earliest.	   */	  if (!n || ipe->last_release < earliest_release)	    {	      earliest_release = ipe->last_release;	      new_usage = i;	    }	  /*	   * Keep track of a possible allocation to us	   * from an earlier session.	   */	  if (previous_usage < 0	      && common_name	      && ipe->common_name	      && !strcmp (common_name, ipe->common_name))	    previous_usage = i;	  ++n;	}    }  if (previous_usage >= 0)    return previous_usage;  if (new_usage >= 0)    return new_usage;  return -1;}struct ifconfig_pool *ifconfig_pool_init (int type, in_addr_t start, in_addr_t end){  struct gc_arena gc = gc_new ();  struct ifconfig_pool *pool = NULL;  ASSERT (start <= end && end - start < IFCONFIG_POOL_MAX);  ALLOC_OBJ (pool, struct ifconfig_pool);  pool->type = type;  switch (type)    {    case IFCONFIG_POOL_30NET:      pool->base = start & ~3;      pool->size = (((end | 3) + 1) - pool->base) >> 2;      break;    case IFCONFIG_POOL_INDIV:      pool->base = start;      pool->size = end - start + 1;      break;    default:      ASSERT (0);    }  ALLOC_ARRAY_CLEAR (pool->list, struct ifconfig_pool_entry, pool->size);  msg (D_IFCONFIG_POOL, "IFCONFIG POOL: base=%s size=%d",       print_in_addr_t (pool->base, false, &gc),       pool->size);  gc_free (&gc);  return pool;}voidifconfig_pool_free (struct ifconfig_pool *pool){  if (pool)    {      int i;      for (i = 0; i < pool->size; ++i)	ifconfig_pool_entry_free (&pool->list[i], true);      free (pool->list);      free (pool);    }}ifconfig_pool_handleifconfig_pool_acquire (struct ifconfig_pool *pool, in_addr_t *local, in_addr_t *remote, const char *common_name){  int i;  i = ifconfig_pool_find (pool, common_name);  if (i >= 0)    {      struct ifconfig_pool_entry *ipe = &pool->list[i];      ASSERT (!ipe->in_use);      ifconfig_pool_entry_free (ipe, true);      ipe->in_use = true;      if (common_name)	ipe->common_name = string_alloc (common_name, NULL);      switch (pool->type)	{	case IFCONFIG_POOL_30NET:	  {	    in_addr_t b = pool->base + (i << 2);	    *local = b + 1;	    *remote = b + 2;	    break;	  }	case IFCONFIG_POOL_INDIV:	  {	    in_addr_t b = pool->base + i;	    *local = 0;	    *remote = b;	    break;	  }	default:	  ASSERT (0);	}    }  return i;}boolifconfig_pool_release (struct ifconfig_pool* pool, ifconfig_pool_handle hand){  bool ret = false;  if (pool && hand >= 0 && hand < pool->size)    {      ifconfig_pool_entry_free (&pool->list[hand], false);      ret = true;    }  return ret;}#ifdef IFCONFIG_POOL_TESTvoidifconfig_pool_test (in_addr_t start, in_addr_t end){  struct gc_arena gc = gc_new ();  struct ifconfig_pool *p = ifconfig_pool_init (IFCONFIG_POOL_30NET, start, end);   //struct ifconfig_pool *p = ifconfig_pool_init (IFCONFIG_POOL_INDIV, start, end);  ifconfig_pool_handle array[256];  int i;  CLEAR (array);  msg (M_INFO | M_NOPREFIX, "************ 1");  for (i = 0; i < (int) SIZE (array); ++i)    {      ifconfig_pool_handle h;      in_addr_t local, remote;      char buf[256];      openvpn_snprintf (buf, sizeof(buf), "common-name-%d", i);       h = ifconfig_pool_acquire (p, &local, &remote, buf);      if (h < 0)	break;      msg (M_INFO | M_NOPREFIX, "IFCONFIG_POOL TEST pass 1: l=%s r=%s cn=%s",	   print_in_addr_t (local, false, &gc),	   print_in_addr_t (remote, false, &gc),	   buf);      array[i] = h;          }  msg (M_INFO | M_NOPREFIX, "************* 2");  for (i = (int) SIZE (array) / 16; i < (int) SIZE (array) / 8; ++i)    {      msg (M_INFO, "Attempt to release %d cn=%s", array[i], p->list[i].common_name);      if (!ifconfig_pool_release (p, array[i]))	break;      msg (M_INFO, "Succeeded");    }  CLEAR (array);  msg (M_INFO | M_NOPREFIX, "**************** 3");  for (i = 0; i < (int) SIZE (array); ++i)    {      ifconfig_pool_handle h;      in_addr_t local, remote;      char buf[256];      snprintf (buf, sizeof(buf), "common-name-%d", i+24);       h = ifconfig_pool_acquire (p, &local, &remote, buf);      if (h < 0)	break;      msg (M_INFO | M_NOPREFIX, "IFCONFIG_POOL TEST pass 3: l=%s r=%s cn=%s",	   print_in_addr_t (local, false, &gc),	   print_in_addr_t (remote, false, &gc),	   buf);      array[i] = h;          }  ifconfig_pool_free (p);  gc_free (&gc);}#endif#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色中色一区二区| 欧美性色综合网| 精品国产91洋老外米糕| 看片的网站亚洲| 国产日韩一级二级三级| 国产999精品久久久久久| 欧美国产丝袜视频| 91在线免费播放| 午夜精品久久久久久久| 日韩你懂的在线观看| 国产精品一区专区| 国产精品福利一区二区| 91久久国产最好的精华液| 亚洲h精品动漫在线观看| 欧美极品aⅴ影院| 91浏览器打开| 丝袜诱惑亚洲看片| 国产欧美一区视频| 91麻豆国产福利精品| 五月婷婷久久综合| 久久综合九色综合欧美98| 丁香一区二区三区| 亚洲欧美激情小说另类| 欧美一区二区三区人| 国产盗摄女厕一区二区三区| 中日韩免费视频中文字幕| 欧美日韩激情一区| 国产a视频精品免费观看| 夜夜亚洲天天久久| 久久久久久免费毛片精品| 在线看不卡av| 国产剧情在线观看一区二区| 一区二区三区不卡视频在线观看| 欧美不卡视频一区| 色成人在线视频| 国产综合久久久久影院| 亚洲女爱视频在线| 久久亚洲综合色一区二区三区 | 亚洲成人一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 成人app在线观看| 奇米一区二区三区| 一区二区在线看| 久久色.com| 555夜色666亚洲国产免| 色综合网色综合| 国产尤物一区二区| 午夜视频在线观看一区二区三区| 欧美国产欧美综合| 欧美大片在线观看一区二区| 日本精品一区二区三区高清| 国产一区二区三区不卡在线观看| 亚洲a一区二区| 亚洲摸摸操操av| 国产欧美中文在线| 久久精品日产第一区二区三区高清版 | 国产又黄又大久久| 日本在线不卡视频一二三区| 亚洲日本丝袜连裤袜办公室| 国产午夜亚洲精品理论片色戒 | 精品在线视频一区| 日本成人超碰在线观看| 亚洲国产精品一区二区www在线 | 国产99久久久国产精品| 欧美三级日韩在线| 91免费视频网| av在线不卡网| gogo大胆日本视频一区| 国产高清不卡一区二区| 国产精品一区二区91| 精品一区二区免费看| 久久66热re国产| 精品一区二区在线播放| 麻豆精品在线播放| 久久不见久久见中文字幕免费| 青青草原综合久久大伊人精品 | 亚洲综合视频在线观看| 国产精品成人在线观看| 亚洲欧洲成人自拍| 国产精品国产三级国产aⅴ入口| 国产欧美久久久精品影院| 国产色爱av资源综合区| 久久影院视频免费| 久久久久久99久久久精品网站| 久久久不卡网国产精品一区| 久久久99免费| 中文字幕一区二区在线观看| 亚洲欧美偷拍三级| 亚洲h在线观看| 捆绑调教美女网站视频一区| 黄色日韩网站视频| 成人免费观看av| 色婷婷综合久久久久中文| 欧美日韩亚洲高清一区二区| 欧美日本一道本在线视频| 91精品国产入口| 久久免费电影网| 亚洲视频精选在线| 天天操天天干天天综合网| 久久99精品国产麻豆不卡| 风间由美一区二区三区在线观看| 99精品在线免费| 欧美日韩视频专区在线播放| 日韩视频免费观看高清完整版 | 国产午夜精品一区二区三区四区| 欧美国产精品v| 亚洲一区在线观看网站| 另类人妖一区二区av| 懂色av一区二区三区蜜臀| 色婷婷精品大视频在线蜜桃视频| 717成人午夜免费福利电影| 精品精品欲导航| 最新久久zyz资源站| 天天影视涩香欲综合网 | 蜜桃一区二区三区在线| 成人性视频网站| 欧美精品日韩精品| 国产日韩欧美不卡在线| 亚洲一二三区不卡| 精品午夜久久福利影院| 色激情天天射综合网| 精品精品欲导航| 一区二区三区不卡视频在线观看| 裸体歌舞表演一区二区| 91亚洲精品一区二区乱码| 日韩视频免费观看高清完整版在线观看| 中文字幕在线不卡国产视频| 美国毛片一区二区| 色综合久久中文字幕综合网| 精品不卡在线视频| 亚洲成人先锋电影| aa级大片欧美| 2023国产精品| 日韩av成人高清| 色噜噜夜夜夜综合网| 国产区在线观看成人精品| 亚洲bt欧美bt精品777| 99re热视频精品| 国产午夜精品在线观看| 裸体一区二区三区| 欧美在线观看一区二区| 国产精品视频一区二区三区不卡| 美女免费视频一区| 欧美色手机在线观看| 亚洲人成网站精品片在线观看| 国产精品夜夜爽| 欧美成人精品福利| 日本视频免费一区| 欧美嫩在线观看| 亚洲福利电影网| 色菇凉天天综合网| 亚洲欧美日韩国产成人精品影院 | 日韩欧美一区二区免费| 亚洲第一福利视频在线| 色婷婷激情综合| 亚洲青青青在线视频| 97精品国产露脸对白| 国产欧美日韩在线看| 国产精一区二区三区| 久久精品视频在线免费观看 | 中文字幕中文字幕在线一区| 国产91露脸合集magnet| 久久亚洲一区二区三区明星换脸| 蜜臀av一区二区在线免费观看 | 另类欧美日韩国产在线| 91精品久久久久久久99蜜桃| 婷婷久久综合九色综合伊人色| 欧美视频一区二区三区在线观看| 一区二区三区在线播放| 97久久人人超碰| 亚洲乱码精品一二三四区日韩在线| 91色在线porny| 一区二区三区在线免费| 欧美日韩色综合| 免费观看日韩电影| 精品国产一区二区三区av性色 | 成人一级片在线观看| 国产精品看片你懂得| 99精品国产热久久91蜜凸| 亚洲欧美偷拍三级| 精品视频全国免费看| 日产国产高清一区二区三区| 欧美大片一区二区三区| 国产乱一区二区| 中文字幕亚洲在| 欧美日韩三级视频| 日韩国产在线一| 精品国产1区二区| 大白屁股一区二区视频| 亚洲人成7777| 欧美人牲a欧美精品| 狠狠色狠狠色合久久伊人| 国产精品美女久久久久久久久久久 | 午夜精品视频一区| 亚洲精品午夜久久久| 欧美精品日日鲁夜夜添| 国产一区二三区好的| 亚洲日本青草视频在线怡红院| 欧美午夜宅男影院| 国内偷窥港台综合视频在线播放|