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

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

?? error.c

?? OpenVPN is a robust and highly flexible tunneling application that uses all of the encryption, authe
?? C
字號:
/* *  TAP-Win32 -- A kernel driver to provide virtual tap device functionality *               on Windows.  Originally derived from the CIPE-Win32 *               project by Damion K. Wilson, with extensive modifications by *               James Yonan. * *  All source code which derives from the CIPE-Win32 project is *  Copyright (C) Damion K. Wilson, 2003, and is released under the *  GPL version 2 (see below). * *  All other source code is Copyright (C) James Yonan, 2003-2004, *  and is released under the GPL version 2 (see below). * *  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 *///-----------------// DEBUGGING OUTPUT//-----------------const char *g_LastErrorFilename;int g_LastErrorLineNumber;#if DBGDebugOutput g_Debug;BOOLEANNewlineExists (const char *str, int len){  while (len-- > 0)    {      const char c = *str++;      if (c == '\n')	return TRUE;      else if (c == '\0')	break;    }  return FALSE;}VOIDMyDebugInit (unsigned int bufsiz){  NdisZeroMemory (&g_Debug, sizeof (g_Debug));  g_Debug.text = (char *) MemAlloc (bufsiz, FALSE);  if (g_Debug.text)    g_Debug.capacity = bufsiz;}VOIDMyDebugFree (){  if (g_Debug.text)    MemFree (g_Debug.text, g_Debug.capacity);  NdisZeroMemory (&g_Debug, sizeof (g_Debug));}VOIDMyDebugPrint (const unsigned char* format, ...){  if (g_Debug.text && g_Debug.capacity > 0 && CAN_WE_PRINT)    {      BOOLEAN owned;      ACQUIRE_MUTEX_ADAPTIVE (&g_Debug.lock, owned);      if (owned)	{	  const int remaining = (int)g_Debug.capacity - (int)g_Debug.out;	  if (remaining > 0)	    {	      va_list args;	      NTSTATUS status;	      char *end;	      va_start (args, format);	      status = RtlStringCchVPrintfExA (g_Debug.text + g_Debug.out,					       remaining,					       &end,					       NULL,					       STRSAFE_NO_TRUNCATION | STRSAFE_IGNORE_NULLS,					       format,					       args);	      va_end (args);	      if (status == STATUS_SUCCESS)		g_Debug.out = end - g_Debug.text;	      else		g_Debug.error = TRUE;	    }	  else	    g_Debug.error = TRUE;	  RELEASE_MUTEX (&g_Debug.lock);	}      else	g_Debug.error = TRUE;    }}BOOLEANGetDebugLine (char *buf, const int len){  static const char *truncated = "[OUTPUT TRUNCATED]\n";  BOOLEAN ret = FALSE;  NdisZeroMemory (buf, len);  if (g_Debug.text && g_Debug.capacity > 0)    {      BOOLEAN owned;      ACQUIRE_MUTEX_ADAPTIVE (&g_Debug.lock, owned);      if (owned)	{	  int i = 0;	  if (g_Debug.error || NewlineExists (g_Debug.text + g_Debug.in, (int)g_Debug.out - (int)g_Debug.in))	    {	      while (i < (len - 1) && g_Debug.in < g_Debug.out)		{		  const char c = g_Debug.text[g_Debug.in++];		  if (c == '\n')		    break;		  buf[i++] = c;		}	      if (i < len)		buf[i] = '\0';	    }	  if (!i)	    {	      if (g_Debug.in == g_Debug.out)		{		  g_Debug.in = g_Debug.out = 0;		  if (g_Debug.error)		    {		      const unsigned int tlen = strlen (truncated);		      if (tlen < g_Debug.capacity)			{			  NdisMoveMemory (g_Debug.text, truncated, tlen+1);			  g_Debug.out = tlen;			}		      g_Debug.error = FALSE;		    }		}	    }	  else	    ret = TRUE;	  RELEASE_MUTEX (&g_Debug.lock);	}          }  return ret;}VOIDMyAssert (const unsigned char *file, int line){      DEBUGP (("MYASSERT failed %s/%d\n", file, line));      KeBugCheckEx (0x0F00BABA,		    (ULONG_PTR) line,		    (ULONG_PTR) 0,		    (ULONG_PTR) 0,		    (ULONG_PTR) 0);}VOIDPrMac (const MACADDR mac){  DEBUGP (("%x:%x:%x:%x:%x:%x",	    mac[0], mac[1], mac[2],	    mac[3], mac[4], mac[5]));}VOIDPrIP (IPADDR ip_addr){  const unsigned char *ip = (const unsigned char *) &ip_addr;  DEBUGP (("%d.%d.%d.%d",	    ip[0], ip[1], ip[2], ip[3]));}const char *PrIPProto (int proto){  switch (proto)    {    case IPPROTO_UDP:      return "UDP";    case IPPROTO_TCP:      return "TCP";    case IPPROTO_ICMP:      return "ICMP";    case IPPROTO_IGMP:      return "IGMP";    default:      return "???";    }}VOIDDumpARP (const char *prefix, const ARP_PACKET *arp){  DEBUGP (("%s ARP src=", prefix));  PrMac (arp->m_MAC_Source);  DEBUGP ((" dest="));  PrMac (arp->m_MAC_Destination);  DEBUGP ((" OP=0x%04x",	    (int)ntohs(arp->m_ARP_Operation)));  DEBUGP ((" M=0x%04x(%d)",	    (int)ntohs(arp->m_MAC_AddressType),	    (int)arp->m_MAC_AddressSize));  DEBUGP ((" P=0x%04x(%d)",	    (int)ntohs(arp->m_PROTO_AddressType),	    (int)arp->m_PROTO_AddressSize));  DEBUGP ((" MacSrc="));  PrMac (arp->m_ARP_MAC_Source);  DEBUGP ((" MacDest="));  PrMac (arp->m_ARP_MAC_Destination);  DEBUGP ((" IPSrc="));  PrIP (arp->m_ARP_IP_Source);  DEBUGP ((" IPDest="));  PrIP (arp->m_ARP_IP_Destination);  DEBUGP (("\n"));}struct ethpayload {  ETH_HEADER eth;  UCHAR payload[DEFAULT_PACKET_LOOKAHEAD];};VOIDDumpPacket2 (const char *prefix,	     const ETH_HEADER *eth,	     const unsigned char *data,	     unsigned int len){  struct ethpayload *ep = (struct ethpayload *) MemAlloc (sizeof (struct ethpayload), TRUE);  if (ep)    {      if (len > DEFAULT_PACKET_LOOKAHEAD)	len = DEFAULT_PACKET_LOOKAHEAD;      ep->eth = *eth;      NdisMoveMemory (ep->payload, data, len);      DumpPacket (prefix, (unsigned char *) ep, sizeof (ETH_HEADER) + len);      MemFree (ep, sizeof (struct ethpayload));    }}VOIDDumpPacket (const char *prefix,	    const unsigned char *data,	    unsigned int len){  const ETH_HEADER *eth = (const ETH_HEADER *) data;  const IPHDR *ip = (const IPHDR *) (data + sizeof (ETH_HEADER));  if (len < sizeof (ETH_HEADER))    {      DEBUGP (("%s TRUNCATED PACKET LEN=%d\n", prefix, len));      return;    }  // ARP Packet?  if (len >= sizeof (ARP_PACKET) && eth->proto == htons (ETH_P_ARP))    {      DumpARP (prefix, (const ARP_PACKET *) data);      return;    }  // IPv4 packet?  if (len >= (sizeof (IPHDR) + sizeof (ETH_HEADER))      && eth->proto == htons (ETH_P_IP)      && IPH_GET_VER (ip->version_len) == 4)    {      const int hlen = IPH_GET_LEN (ip->version_len);      const int blen = len - sizeof (ETH_HEADER);      BOOLEAN did = FALSE;      DEBUGP (("%s IPv4 %s[%d]", prefix, PrIPProto (ip->protocol), len));      if (!(ntohs (ip->tot_len) == blen && hlen <= blen))	{	  DEBUGP ((" XXX"));	  return;	}            // TCP packet?      if (ip->protocol == IPPROTO_TCP	  && blen - hlen >= (sizeof (TCPHDR)))	{	  const TCPHDR *tcp = (TCPHDR *) (data + sizeof (ETH_HEADER) + hlen);	  DEBUGP ((" "));	  PrIP (ip->saddr);	  DEBUGP ((":%d", ntohs (tcp->source)));	  DEBUGP ((" -> "));	  PrIP (ip->daddr);	  DEBUGP ((":%d", ntohs (tcp->dest)));	  did = TRUE;	}      // UDP packet?      else if ((ntohs (ip->frag_off) & IP_OFFMASK) == 0	       && ip->protocol == IPPROTO_UDP	       && blen - hlen >= (sizeof (UDPHDR)))	{	  const UDPHDR *udp = (UDPHDR *) (data + sizeof (ETH_HEADER) + hlen);	  	  // DHCP packet?	  if ((udp->dest == htons (BOOTPC_PORT) || udp->dest == htons (BOOTPS_PORT))	      && blen - hlen >= (sizeof (UDPHDR) + sizeof (DHCP)))	    {	      const DHCP *dhcp = (DHCP *) (data					   + hlen					   + sizeof (ETH_HEADER)					   + sizeof (UDPHDR));	      	      int optlen = len		- sizeof (ETH_HEADER)		- hlen		- sizeof (UDPHDR)		- sizeof (DHCP);	      if (optlen < 0)		optlen = 0;	      DumpDHCP (eth, ip, udp, dhcp, optlen);	      did = TRUE;	    }	  if (!did)	    {	      DEBUGP ((" "));	      PrIP (ip->saddr);	      DEBUGP ((":%d", ntohs (udp->source)));	      DEBUGP ((" -> "));	      PrIP (ip->daddr);	      DEBUGP ((":%d", ntohs (udp->dest)));	      did = TRUE;	    }	}      if (!did)	{	  DEBUGP ((" ipproto=%d ", ip->protocol));	  PrIP (ip->saddr);	  DEBUGP ((" -> "));	  PrIP (ip->daddr);	}      DEBUGP (("\n"));      return;    }  {    DEBUGP (("%s ??? src=", prefix));    PrMac (eth->src);    DEBUGP ((" dest="));    PrMac (eth->dest);    DEBUGP ((" proto=0x%04x len=%d\n",	      (int) ntohs(eth->proto),	      len));  }}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合自拍偷拍| 蜜桃久久久久久| 欧美福利视频一区| 夜夜精品视频一区二区 | 国内精品免费在线观看| 91精品国产综合久久久久久久| 一区二区三区欧美日| 国产精品久久久久久户外露出| 一区二区三区四区不卡在线 | 亚洲激情自拍视频| 国产激情一区二区三区| 欧美日韩精品是欧美日韩精品| 国产日韩欧美一区二区三区综合| 日韩高清一区在线| 色域天天综合网| 欧美韩国日本综合| 国内成人免费视频| 欧美一级一级性生活免费录像| 一区二区三区中文字幕电影| 丁香网亚洲国际| 久久蜜臀中文字幕| 久久99久久久久久久久久久| 欧美老肥妇做.爰bbww视频| 亚洲人成精品久久久久| 国产91精品一区二区麻豆亚洲| 精品日韩99亚洲| 亚洲夂夂婷婷色拍ww47| 色综合激情久久| 亚洲精品写真福利| av电影在线观看不卡 | 制服.丝袜.亚洲.另类.中文| 一区二区三区在线观看视频| 91免费版在线看| 日韩久久一区二区| 成人国产视频在线观看| 中文字幕高清不卡| av在线播放不卡| 亚洲日本免费电影| 欧美亚洲综合色| 午夜久久久影院| 91麻豆精品国产综合久久久久久| 日韩综合一区二区| 欧美一区二区高清| 精品一区二区三区久久久| www久久久久| 国产成人av电影在线观看| 国产精品美日韩| www.欧美亚洲| 亚洲影视在线播放| 7777精品伊人久久久大香线蕉完整版 | 国产成人精品www牛牛影视| 国产亚洲欧美一区在线观看| 国产成人a级片| 亚洲欧美电影一区二区| 欧美日韩一区在线观看| 亚洲国产毛片aaaaa无费看| 在线播放视频一区| 国产精品一区三区| 亚洲三级在线播放| 欧美日韩另类一区| 国产乱码精品一区二区三| 国产精品电影一区二区| 欧美日韩视频在线一区二区| 久久av中文字幕片| 中文字幕一区在线观看| 欧美日本国产一区| 国产精品一品视频| 亚洲国产视频在线| 日本一区二区成人| 69av一区二区三区| 成人av网址在线| 日本在线播放一区二区三区| 国产欧美一区二区三区鸳鸯浴| 91福利在线免费观看| 毛片基地黄久久久久久天堂| 亚洲欧洲av一区二区三区久久| 91麻豆精品国产91久久久久久久久| 国产一区二区久久| 亚洲一区二区三区四区在线| 亚洲精品一区二区三区蜜桃下载| 色综合久久66| 国产99精品视频| 亚洲v日本v欧美v久久精品| 中文字幕不卡的av| 日韩一区二区不卡| 91精品福利视频| 高清国产一区二区| 久久精品久久99精品久久| 亚洲欧美日韩一区二区| 久久久久9999亚洲精品| 5566中文字幕一区二区电影| 99re免费视频精品全部| 国产美女精品人人做人人爽| 三级影片在线观看欧美日韩一区二区| 国产精品素人视频| 欧美一级片在线| 欧美日韩精品一区二区三区| 色天使色偷偷av一区二区| 国产高清久久久| 精品在线观看视频| 婷婷国产v国产偷v亚洲高清| 亚洲丝袜自拍清纯另类| 国产婷婷色一区二区三区| 精品国产乱子伦一区| 欧美日韩精品福利| 精品福利一二区| 日韩一区二区电影| 欧美一区二区三区四区久久| 欧美三级电影网站| 在线观看一区二区精品视频| 一本久久a久久精品亚洲| 成人av在线网站| 成人毛片视频在线观看| 国产99久久久国产精品潘金网站| 国产伦精品一区二区三区免费迷 | 五月婷婷久久综合| 一区二区三区国产| 亚洲精品国产视频| 曰韩精品一区二区| 亚洲一区二区三区美女| 亚洲高清免费在线| 亚洲成a人片综合在线| 偷拍日韩校园综合在线| 视频在线观看国产精品| 青青草精品视频| 日本va欧美va精品| 伦理电影国产精品| 国产真实精品久久二三区| 国产精品自拍三区| av男人天堂一区| 色94色欧美sute亚洲线路一久| 91搞黄在线观看| 欧美一区二区日韩| www国产精品av| 国产精品狼人久久影院观看方式| 136国产福利精品导航| 一区二区三区 在线观看视频| 五月天欧美精品| 精品夜夜嗨av一区二区三区| 丰满白嫩尤物一区二区| 91视频观看免费| 7777精品久久久大香线蕉| 久久久激情视频| 中文字幕一区二区日韩精品绯色| 夜夜精品视频一区二区| 精品一区二区免费在线观看| 成人一区在线看| 欧美区一区二区三区| 2023国产精品| 夜夜亚洲天天久久| 久久99久久99精品免视看婷婷| 成人国产精品免费网站| 欧美日韩在线播放一区| 国产欧美综合在线观看第十页| 一区二区免费视频| 国产精品一区二区在线播放| 欧美性视频一区二区三区| 精品国产伦一区二区三区观看体验| 综合网在线视频| 精品一区二区三区不卡| 91国产视频在线观看| 久久久久综合网| 亚洲高清免费观看高清完整版在线观看| 久久精品国产一区二区三| 91在线播放网址| 精品99一区二区三区| 午夜影院在线观看欧美| 国产精品一二三四区| 欧美顶级少妇做爰| 日韩一区欧美小说| 国产精品 日产精品 欧美精品| 欧美日韩日日夜夜| 最新中文字幕一区二区三区| 久88久久88久久久| 欧美日韩三级在线| 亚洲女女做受ⅹxx高潮| 成人性生交大合| 精品国产91久久久久久久妲己 | 精品视频一区二区三区免费| 国产丝袜在线精品| 国精品**一区二区三区在线蜜桃| 欧美日韩五月天| 亚洲愉拍自拍另类高清精品| www.亚洲在线| 国产欧美一区二区精品性| 美女免费视频一区二区| 欧美精品久久一区| 亚洲一区二区三区四区在线观看| 91在线小视频| 国产精品久久免费看| 国产成人啪午夜精品网站男同| 日韩一区二区三区av| 日本女人一区二区三区| 欧美日韩第一区日日骚| 亚洲国产综合91精品麻豆| 欧美午夜免费电影| 亚洲国产视频一区| 欧美日韩成人综合在线一区二区| 亚洲一区二区视频在线观看| 色欧美88888久久久久久影院|