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

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

?? tun.c

?? OpenVPN is a robust and highly flexible tunneling application that uses all of the encryption, authe
?? C
?? 第 1 頁 / 共 5 頁
字號:
	 */	openvpn_snprintf (command_line, sizeof (command_line),			  IPROUTE_PATH " link set dev %s up mtu %d",			  actual,			  tun_mtu			  );	  msg (M_INFO, "%s", command_line);	  system_check (command_line, "Linux ip link set failed", true);	if (tun) {		/*		 * Set the address for the device		 */		openvpn_snprintf (command_line, sizeof (command_line),				  IPROUTE_PATH " addr add dev %s local %s peer %s",				  actual,				  ifconfig_local,				  ifconfig_remote_netmask				  );		  msg (M_INFO, "%s", command_line);		  system_check (command_line, "Linux ip addr add failed", true);	} else {		openvpn_snprintf (command_line, sizeof (command_line),				  IPROUTE_PATH " addr add dev %s %s/%d broadcast %s",				  actual,				  ifconfig_local,				  count_netmask_bits(ifconfig_remote_netmask),				  ifconfig_broadcast				  );		  msg (M_INFO, "%s", command_line);		  system_check (command_line, "Linux ip addr add failed", true);	}	tt->did_ifconfig = true;#else      if (tun)	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s pointopoint %s mtu %d",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );      else	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s netmask %s mtu %d broadcast %s",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu,			  ifconfig_broadcast			  );      msg (M_INFO, "%s", command_line);      system_check (command_line, "Linux ifconfig failed", true);      tt->did_ifconfig = true;#endif /*CONFIG_FEATURE_IPROUTE*/#elif defined(TARGET_SOLARIS)      /* example: ifconfig tun2 10.2.0.2 10.2.0.1 mtu 1450 netmask 255.255.255.255 up */      if (tun)	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s %s mtu %d netmask 255.255.255.255 up",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );      else	no_tap_ifconfig ();      msg (M_INFO, "%s", command_line);      if (!system_check (command_line, "Solaris ifconfig failed", false))	{	  openvpn_snprintf (command_line, sizeof (command_line),			    IFCONFIG_PATH " %s unplumb",			    actual			    );	  msg (M_INFO, "%s", command_line);	  system_check (command_line, "Solaris ifconfig unplumb failed", false);	  msg (M_FATAL, "ifconfig failed");	}      tt->did_ifconfig = true;#elif defined(TARGET_OPENBSD)      /*       * OpenBSD tun devices appear to be persistent by default.  It seems in order       * to make this work correctly, we need to delete the previous instance       * (if it exists), and re-ifconfig.  Let me know if you know a better way.       */      openvpn_snprintf (command_line, sizeof (command_line),			IFCONFIG_PATH " %s delete",			actual);      msg (M_INFO, "%s", command_line);      system_check (command_line, NULL, false);      msg (M_INFO, "NOTE: Tried to delete pre-existing tun/tap instance -- No Problem if failure");      /* example: ifconfig tun2 10.2.0.2 10.2.0.1 mtu 1450 netmask 255.255.255.255 up */      if (tun)	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s %s mtu %d netmask 255.255.255.255 up",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );      else	no_tap_ifconfig ();      msg (M_INFO, "%s", command_line);      system_check (command_line, "OpenBSD ifconfig failed", true);      tt->did_ifconfig = true;#elif defined(TARGET_NETBSD)      if (tun)	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s %s mtu %d netmask 255.255.255.255 up",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );      else	no_tap_ifconfig ();      msg (M_INFO, "%s", command_line);      system_check (command_line, "NetBSD ifconfig failed", true);      tt->did_ifconfig = true;#elif defined(TARGET_DARWIN)      /*       * Darwin (i.e. Mac OS X) seems to exhibit similar behaviour to OpenBSD...       */      openvpn_snprintf (command_line, sizeof (command_line),			IFCONFIG_PATH " %s delete",			actual);      msg (M_INFO, "%s", command_line);      system_check (command_line, NULL, false);      msg (M_INFO, "NOTE: Tried to delete pre-existing tun/tap instance -- No Problem if failure");      /* example: ifconfig tun2 10.2.0.2 10.2.0.1 mtu 1450 netmask 255.255.255.255 up */      if (tun)	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s %s mtu %d netmask 255.255.255.255 up",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );      else	no_tap_ifconfig ();      msg (M_INFO, "%s", command_line);      system_check (command_line, "Mac OS X ifconfig failed", true);      tt->did_ifconfig = true;#elif defined(TARGET_FREEBSD)      /* example: ifconfig tun2 10.2.0.2 10.2.0.1 mtu 1450 netmask 255.255.255.255 up */      if (tun)	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s %s mtu %d netmask 255.255.255.255 up",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );      else	openvpn_snprintf (command_line, sizeof (command_line),			  IFCONFIG_PATH " %s %s netmask %s mtu %d up",			  actual,			  ifconfig_local,			  ifconfig_remote_netmask,			  tun_mtu			  );	      msg (M_INFO, "%s", command_line);      system_check (command_line, "FreeBSD ifconfig failed", true);      tt->did_ifconfig = true;#elif defined (WIN32)      {	const char *netmask;	/*	 * Make sure that both ifconfig addresses are part of the	 * same .252 subnet.	 */	if (tun)	  {	    verify_255_255_255_252 (tt->local, tt->remote_netmask);	    tt->adapter_netmask = ~3;	    netmask = print_in_addr_t (tt->adapter_netmask, false, &gc);	  }	else	  {	    netmask = ifconfig_remote_netmask;	    tt->adapter_netmask = tt->remote_netmask;	  }	/* example: netsh interface ip set address my-tap static 10.3.0.1 255.255.255.0 */	openvpn_snprintf (command_line, sizeof (command_line),			  "netsh interface ip set address \"%s\" static %s %s",			  actual,			  ifconfig_local,			  netmask);		switch (tt->options.ip_win32_type)	  {	  case IPW32_SET_MANUAL:	    msg (M_INFO, "******** NOTE:  Please manually set the IP/netmask of '%s' to %s/%s (if it is not already set)",		 actual,		 ifconfig_local,		 netmask);	    break;	  case IPW32_SET_NETSH:	    netcmd_semaphore_lock ();	    msg (M_INFO, "%s", command_line);	    system_check (command_line, "ERROR: netsh command failed", true);	    netcmd_semaphore_release ();	    break;	  }	tt->did_ifconfig = true;      }#else      msg (M_FATAL, "Sorry, but I don't know how to do 'ifconfig' commands on this operating system.  You should ifconfig your TUN/TAP device manually or use an --up script.");#endif    }  gc_free (&gc);}voidclear_tuntap (struct tuntap *tuntap){  CLEAR (*tuntap);#ifdef WIN32  tuntap->hand = NULL;#else  tuntap->fd = -1;#endif#ifdef TARGET_SOLARIS  tuntap->ip_fd = -1;#endif  tuntap->ipv6 = false;}static voidopen_null (struct tuntap *tt){  tt->actual_name = string_alloc ("null", NULL);}#ifndef WIN32static voidopen_tun_generic (const char *dev, const char *dev_type, const char *dev_node,		  bool ipv6, bool ipv6_explicitly_supported, bool dynamic,		  struct tuntap *tt){  char tunname[256];  char dynamic_name[256];  bool dynamic_opened = false;  ipv6_support (ipv6, ipv6_explicitly_supported, tt);  if (tt->type == DEV_TYPE_NULL)    {      open_null (tt);    }  else    {      /*       * --dev-node specified, so open an explicit device node       */      if (dev_node)	{	  openvpn_snprintf (tunname, sizeof (tunname), "%s", dev_node);	}      else	{	  /*	   * dynamic open is indicated by --dev specified without	   * explicit unit number.  Try opening /dev/[dev]n	   * where n = [0, 255].	   */	  if (dynamic && !has_digit(dev))	    {	      int i;	      for (i = 0; i < 256; ++i)		{		  openvpn_snprintf (tunname, sizeof (tunname),				    "/dev/%s%d", dev, i);		  openvpn_snprintf (dynamic_name, sizeof (dynamic_name),				    "%s%d", dev, i);		  if ((tt->fd = open (tunname, O_RDWR)) > 0)		    {		      dynamic_opened = true;		      break;		    }		  msg (D_READ_WRITE | M_ERRNO, "Tried opening %s (failed)", tunname);		}	      if (!dynamic_opened)		msg (M_FATAL, "Cannot allocate TUN/TAP dev dynamically");	    }	  /*	   * explicit unit number specified	   */	  else	    {	      openvpn_snprintf (tunname, sizeof (tunname), "/dev/%s", dev);	    }	}      if (!dynamic_opened)	{	  if ((tt->fd = open (tunname, O_RDWR)) < 0)	    msg (M_ERR, "Cannot open TUN/TAP dev %s", tunname);	}      set_nonblock (tt->fd);      set_cloexec (tt->fd); /* don't pass fd to scripts */      msg (M_INFO, "TUN/TAP device %s opened", tunname);      /* tt->actual_name is passed to up and down scripts and used as the ifconfig dev name */      tt->actual_name = string_alloc (dynamic_opened ? dynamic_name : dev, NULL);    }}static voidclose_tun_generic (struct tuntap *tt){  if (tt->fd >= 0)    close (tt->fd);  if (tt->actual_name)    free (tt->actual_name);  clear_tuntap (tt);}#endif#if defined(TARGET_LINUX)#ifdef HAVE_LINUX_IF_TUN_H	/* New driver support */#ifndef HAVE_LINUX_SOCKIOS_H#error header file linux/sockios.h required#endif#if defined(HAVE_TUN_PI) && defined(HAVE_IPHDR) && defined(HAVE_IOVEC) && defined(ETH_P_IPV6) && defined(ETH_P_IP) && defined(HAVE_READV) && defined(HAVE_WRITEV)#define LINUX_IPV6 1/* #warning IPv6 ON */#else#define LINUX_IPV6 0/* #warning IPv6 OFF */#endifvoidopen_tun (const char *dev, const char *dev_type, const char *dev_node, bool ipv6, struct tuntap *tt){  struct ifreq ifr;  /*   * Set tt->ipv6 to true if   * (a) we have the capability of supporting --tun-ipv6, and   * (b) --tun-ipv6 was specified.   */  ipv6_support (ipv6, LINUX_IPV6, tt);  /*   * We handle --dev null specially, we do not open /dev/null for this.   */  if (tt->type == DEV_TYPE_NULL)    {      open_null (tt);    }  else    {      /*       * Process --dev-node       */      const char *node = dev_node;      if (!node)	node = "/dev/net/tun";      /*       * Open the interface       */      if ((tt->fd = open (node, O_RDWR)) < 0)	{	  msg (M_WARN | M_ERRNO, "Note: Cannot open TUN/TAP dev %s", node);	  goto linux_2_2_fallback;	}      /*       * Process --tun-ipv6       */      CLEAR (ifr);      if (!tt->ipv6)	ifr.ifr_flags = IFF_NO_PI;#if defined(IFF_ONE_QUEUE) && defined(SIOCSIFTXQLEN)      ifr.ifr_flags |= IFF_ONE_QUEUE;#endif      /*       * Figure out if tun or tap device       */      if (tt->type == DEV_TYPE_TUN)	{	  ifr.ifr_flags |= IFF_TUN;	}      else if (tt->type == DEV_TYPE_TAP)	{	  ifr.ifr_flags |= IFF_TAP;	}      else	{	  msg (M_FATAL, "I don't recognize device %s as a tun or tap device",	       dev);	}      /*       * Set an explicit name, if --dev is not tun or tap       */      if (strcmp(dev, "tun") && strcmp(dev, "tap"))	strncpynt (ifr.ifr_name, dev, IFNAMSIZ);      /*       * Use special ioctl that configures tun/tap device with the parms       * we set in ifr       */      if (ioctl (tt->fd, TUNSETIFF, (void *) &ifr) < 0)	{	  msg (M_WARN | M_ERRNO, "Note: Cannot ioctl TUNSETIFF %s", dev);	  goto linux_2_2_fallback;	}      msg (M_INFO, "TUN/TAP device %s opened", ifr.ifr_name);      /*       * Try making the TX send queue bigger       */#if defined(IFF_ONE_QUEUE) && defined(SIOCSIFTXQLEN)      {	struct ifreq netifr;	int ctl_fd;	if ((ctl_fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0)	  {	    CLEAR (netifr);	    strncpynt (netifr.ifr_name, ifr.ifr_name, IFNAMSIZ);	    netifr.ifr_qlen = tt->options.txqueuelen;	    if (ioctl (ctl_fd, SIOCSIFTXQLEN, (void *) &netifr) >= 0)	      msg (D_OSBUF, "TUN/TAP TX queue length set to %d", tt->options.txqueuelen);	    else	      msg (M_WARN | M_ERRNO, "Note: Cannot set tx queue length on %s", ifr.ifr_name);	    close (ctl_fd);	  }	else	  {	    msg (M_WARN | M_ERRNO, "Note: Cannot open control socket on %s", ifr.ifr_name);	  }      }#endif      set_nonblock (tt->fd);      set_cloexec (tt->fd);      tt->actual_name = string_alloc (ifr.ifr_name, NULL);    }  return; linux_2_2_fallback:  msg (M_INFO, "Note: Attempting fallback to kernel 2.2 TUN/TAP interface");  if (tt->fd >= 0)    {      close (tt->fd);      tt->fd = -1;    }  open_tun_generic (dev, dev_type, dev_node, ipv6, false, true, tt);}#elsevoidopen_tun (const char *dev, const char *dev_type, const char *dev_node, bool ipv6, struct tuntap *tt){  open_tun_generic (dev, dev_type, dev_node, ipv6, false, true, tt);}#endif /* HAVE_LINUX_IF_TUN_H */#ifdef TUNSETPERSISTvoidtuncfg (const char *dev, const char *dev_type, const char *dev_node, bool ipv6, int persist_mode){  struct tuntap *tt;  ALLOC_OBJ (tt, struct tuntap);  clear_tuntap (tt);  tt->type = dev_type_enum (dev, dev_type);  open_tun (dev, dev_type, dev_node, ipv6, tt);  if (ioctl (tt->fd, TUNSETPERSIST, persist_mode) < 0)    msg (M_ERR, "Cannot ioctl TUNSETPERSIST(%d) %s", persist_mode, dev);  close_tun (tt);  msg (M_INFO, "Persist state set to: %s", (persist_mode ? "ON" : "OFF"));}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日骚欧美日韩| 欧美激情一区二区在线| 亚洲综合在线免费观看| 波多野结衣中文一区| 久久久久免费观看| 国产精品一区久久久久| 精品国产网站在线观看| 日本在线不卡视频一二三区| 欧美调教femdomvk| 日本不卡视频在线| 精品国产伦一区二区三区观看体验| 婷婷综合久久一区二区三区| 欧美日韩免费不卡视频一区二区三区| 亚洲一二三区不卡| 欧美成人官网二区| 国产精品亚洲第一区在线暖暖韩国 | 夜色激情一区二区| 国产大片一区二区| 日韩精品一区二区三区在线观看| 亚洲天堂久久久久久久| 91欧美一区二区| 国产主播一区二区三区| 怡红院av一区二区三区| 日韩av网站在线观看| 欧美日韩另类国产亚洲欧美一级| 精品在线播放免费| 亚洲成人免费视| 亚洲资源中文字幕| 亚洲天堂a在线| 中文字幕色av一区二区三区| 久久久九九九九| 欧美精品一区二区在线观看| 国产精品一区二区三区乱码| 亚洲精品国产品国语在线app| 欧美视频在线观看一区二区| 国产激情一区二区三区四区| 一区av在线播放| 亚洲国产精品传媒在线观看| 欧美日韩免费不卡视频一区二区三区| 久久精品国产免费看久久精品| 国产精品第四页| 精品三级av在线| 欧美日韩极品在线观看一区| 国产69精品久久777的优势| 午夜国产精品一区| 成人欧美一区二区三区小说| 欧美精品一区二区三区一线天视频| 一本色道久久综合亚洲精品按摩| 国产毛片精品一区| 免费高清在线一区| 日韩国产高清影视| 亚洲国产精品一区二区尤物区| 国产精品久久久久久久久图文区| 欧美成人一区二区三区在线观看 | 亚洲高清不卡在线| 一区二区三区小说| 亚洲人成网站在线| 乱一区二区av| 亚洲美女电影在线| 日韩一区在线免费观看| 中文字幕电影一区| 国产精品盗摄一区二区三区| 国产精品素人一区二区| 国产蜜臀av在线一区二区三区 | 国产高清不卡二三区| 美女被吸乳得到大胸91| 丝袜美腿亚洲一区| 日韩国产欧美一区二区三区| 天堂蜜桃91精品| 精品一区二区成人精品| 韩国成人在线视频| 国产黄色精品视频| 91在线视频免费观看| 色综合久久综合网欧美综合网| 91蜜桃在线免费视频| 欧美性大战久久久| 日韩欧美国产一区二区三区| 日韩女优视频免费观看| 国产午夜精品久久久久久久| 最新成人av在线| 视频一区在线播放| 国产在线播放一区三区四| fc2成人免费人成在线观看播放| 91视频www| 日韩欧美中文一区二区| 国产日韩精品一区| 一区二区日韩电影| 国产一区二区三区四| 日本高清无吗v一区| 日韩三区在线观看| 综合久久综合久久| 美女一区二区视频| 91激情五月电影| 久久久久久久国产精品影院| 亚洲在线免费播放| 国产乱对白刺激视频不卡| 91在线看国产| 欧美日韩一级片在线观看| 制服.丝袜.亚洲.中文.综合| 国产拍欧美日韩视频二区| 中文子幕无线码一区tr| 一区二区三区欧美久久| 欧美aaaaa成人免费观看视频| 国产精品996| 欧美三片在线视频观看| 国产亚洲精品资源在线26u| 午夜伊人狠狠久久| 欧美人xxxx| 一区二区三区小说| 精品一区二区三区久久| 欧美美女一区二区在线观看| 成人欧美一区二区三区1314 | 国产精品久久久久婷婷| 韩国一区二区视频| 精品一区二区三区影院在线午夜| 日本中文字幕不卡| 5566中文字幕一区二区电影| 国产精品国产三级国产aⅴ中文 | 欧美三级在线视频| 国产精品久久久久久亚洲毛片| 激情小说亚洲一区| 精品va天堂亚洲国产| 国产麻豆91精品| 国产午夜亚洲精品理论片色戒| 国产在线观看一区二区| 精品国产91久久久久久久妲己 | 欧美浪妇xxxx高跟鞋交| 亚洲电影一区二区| 91精品婷婷国产综合久久竹菊| 欧美性欧美巨大黑白大战| 亚洲黄色在线视频| 欧美系列日韩一区| 日本在线不卡一区| 久久久久久久久久久黄色| voyeur盗摄精品| 亚洲美女淫视频| 欧美私人免费视频| 欧美bbbbb| 国产精品人妖ts系列视频| 91香蕉视频mp4| 亚洲一区二区偷拍精品| 日韩一级在线观看| 成人黄色a**站在线观看| 亚洲免费观看高清完整| 欧美二区乱c少妇| 国产精一区二区三区| 一区二区三区日韩在线观看| 日韩视频免费观看高清在线视频| 国产一区二区在线电影| 亚洲图片另类小说| 91精品国产欧美一区二区| 国产98色在线|日韩| 亚洲成av人在线观看| 国产欧美日韩在线看| 欧美日本在线播放| 岛国精品一区二区| 日本强好片久久久久久aaa| 国产精品久久久久久久裸模| 91精品国产综合久久久久久久久久 | 91精品婷婷国产综合久久性色| 国产福利91精品一区| 亚洲chinese男男1069| 国产精品美女久久久久久2018| 欧美一区二区福利在线| 欧美系列在线观看| 99久久精品免费看| 国产精品资源站在线| 日韩极品在线观看| 亚洲综合在线电影| 亚洲免费伊人电影| 国产精品欧美极品| 久久亚洲精华国产精华液| 日韩免费观看高清完整版 | 欧美影视一区二区三区| 国产91精品精华液一区二区三区 | 欧美性受极品xxxx喷水| 91免费观看视频在线| 91丨九色丨蝌蚪丨老版| 成人午夜av电影| 成人美女视频在线观看| 国产高清久久久久| 成人激情动漫在线观看| 91香蕉视频污| 在线亚洲+欧美+日本专区| 色www精品视频在线观看| 在线亚洲免费视频| 欧美色精品天天在线观看视频| 欧美精品九九99久久| 欧美最新大片在线看| 欧洲国内综合视频| 91精品麻豆日日躁夜夜躁| 欧美一区二区在线免费播放| 制服丝袜在线91| 久久久久高清精品| 亚洲丝袜制服诱惑| 午夜精品国产更新| 九九**精品视频免费播放| 成人一区二区三区在线观看 | 国产成人亚洲综合a∨婷婷| 91偷拍与自偷拍精品|