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

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

?? util_sock.c

?? MC Linux/Unix 終端下文件管理器
?? C
?? 第 1 頁 / 共 2 頁
字號:
    len = smb_len(inbuf);    msg_type = CVAL(inbuf,0);    if (msg_type == 0x85)       DEBUG(5,("Got keepalive packet\n"));  }  DEBUG(10,("got smb length of %d\n",len));  return(len);}/****************************************************************************read 4 bytes of a smb packet and return the smb length of the packetstore the result in the buffer. This version of the function willnever return a session keepalive (length of zero).timeout is in milliseconds.****************************************************************************/ssize_t read_smb_length(int fd,char *inbuf,unsigned int timeout){  ssize_t len;  for(;;)  {    len = read_smb_length_return_keepalive(fd, inbuf, timeout);    if(len < 0)      return len;    /* Ignore session keepalives. */    if(CVAL(inbuf,0) != 0x85)      break;  }  DEBUG(10,("read_smb_length: got smb length of %d\n",len));  return len;}/****************************************************************************  read an smb from a fd. Note that the buffer *MUST* be of size  BUFFER_SIZE+SAFETY_MARGIN.  The timeout is in milliseconds.   This function will return on a  receipt of a session keepalive packet.****************************************************************************/BOOL receive_smb(int fd,char *buffer, unsigned int timeout){  ssize_t len,ret;  smb_read_error = 0;  memset(buffer,'\0',smb_size + 100);  len = read_smb_length_return_keepalive(fd,buffer,timeout);  if (len < 0)  {    DEBUG(10,("receive_smb: length < 0!\n"));    return(False);  }  if (len > BUFFER_SIZE) {    DEBUG(0,("Invalid packet length! (%d bytes).\n",len));    if (len > BUFFER_SIZE + (SAFETY_MARGIN/2))    {	exit(1);    }  }  if(len > 0) {    ret = read_data(fd,buffer+4,len);    if (ret != len) {      smb_read_error = READ_ERROR;      return False;    }  }  return(True);}/****************************************************************************  read an smb from a fd ignoring all keepalive packets. Note that the buffer   *MUST* be of size BUFFER_SIZE+SAFETY_MARGIN.  The timeout is in milliseconds  This is exactly the same as receive_smb except that it never returns  a session keepalive packet (just as receive_smb used to do).  receive_smb was changed to return keepalives as the oplock processing means this call  should never go into a blocking read.****************************************************************************/BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout){  BOOL ret;  for(;;)  {    ret = receive_smb(fd, buffer, timeout);    if (!ret)    {      DEBUG(10,("client_receive_smb failed\n"));      show_msg(buffer);      return ret;    }    /* Ignore session keepalive packets. */    if(CVAL(buffer,0) != 0x85)      break;  }  show_msg(buffer);  return ret;}/****************************************************************************  send an null session message to a fd****************************************************************************/BOOL send_null_session_msg(int fd){  ssize_t ret;  uint32 blank = 0;  size_t len = 4;  size_t nwritten=0;  char *buffer = (char *)&blank;  while (nwritten < len)  {    ret = write_socket(fd,buffer+nwritten,len - nwritten);    if (ret <= 0)    {      DEBUG(0,("send_null_session_msg: Error writing %d bytes to client. %d. Exiting\n",(int)len,(int)ret));      close_sockets();      exit(1);    }    nwritten += ret;  }  DEBUG(10,("send_null_session_msg: sent 4 null bytes to client.\n"));  return True;}/****************************************************************************  send an smb to a fd ****************************************************************************/BOOL send_smb(int fd,char *buffer){  size_t len;  size_t nwritten=0;  ssize_t ret;  len = smb_len(buffer) + 4;  while (nwritten < len)  {    ret = write_socket(fd,buffer+nwritten,len - nwritten);    if (ret <= 0)    {      DEBUG(0,("Error writing %d bytes to client. %d. Exiting\n",(int)len,(int)ret));      close_sockets();      exit(1);    }    nwritten += ret;  }  return True;}/****************************************************************************send a single packet to a port on another machine****************************************************************************/BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type){  BOOL ret;  int out_fd;  struct sockaddr_in sock_out;  if (passive)    return(True);  /* create a socket to write to */  out_fd = socket(AF_INET, type, 0);  if (out_fd == -1)     {      DEBUG(0,("socket failed"));      return False;    }  /* set the address and port */  memset((char *)&sock_out,'\0',sizeof(sock_out));  putip((char *)&sock_out.sin_addr,(char *)&ip);  sock_out.sin_port = htons( port );  sock_out.sin_family = AF_INET;    if (DEBUGLEVEL > 0)    DEBUG(3,("sending a packet of len %d to (%s) on port %d of type %s\n",	     len,inet_ntoa(ip),port,type==SOCK_DGRAM?"DGRAM":"STREAM"));	  /* send it */  ret = (sendto(out_fd,buf,len,0,(struct sockaddr *)&sock_out,sizeof(sock_out)) >= 0);  if (!ret)    DEBUG(0,("Packet send to %s(%d) failed ERRNO=%s\n",	     inet_ntoa(ip),port,strerror(errno)));  close(out_fd);  return(ret);}/****************************************************************************open a socket of the specified type, port and address for incoming data****************************************************************************/int open_socket_in(int type, int port, int dlevel,uint32 socket_addr, BOOL rebind){  struct hostent *hp;  struct sockaddr_in sock;  pstring host_name;  int res;  /* get my host name */  if (gethostname(host_name, MAXHOSTNAMELEN) == -1)     { DEBUG(0,("gethostname failed\n")); return -1; }   /* get host info */  if ((hp = Get_Hostbyname(host_name)) == 0)     {      DEBUG(0,( "Get_Hostbyname: Unknown host %s\n",host_name));      return -1;    }    memset((char *)&sock,'\0',sizeof(sock));  memcpy((char *)&sock.sin_addr,(char *)hp->h_addr, hp->h_length);#ifdef HAVE_SOCK_SIN_LEN  sock.sin_len = sizeof(sock);#endif  sock.sin_port = htons( port );  sock.sin_family = hp->h_addrtype;  sock.sin_addr.s_addr = socket_addr;  res = socket(hp->h_addrtype, type, 0);  if (res == -1)     { DEBUG(0,("socket failed\n")); return -1; }  {    int val=1;	if(rebind)		val=1;	else		val=0;    setsockopt(res,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val));  }  /* now we've got a socket - we need to bind it */  if (bind(res, (struct sockaddr * ) &sock,sizeof(sock)) < 0)     {       if (port) {	if (port == SMB_PORT || port == NMB_PORT)	  DEBUG(dlevel,("bind failed on port %d socket_addr=%s (%s)\n",			port,inet_ntoa(sock.sin_addr),strerror(errno))); 	close(res); 	if (dlevel > 0 && port < 1000)	  port = 7999;	if (port >= 1000 && port < 9000)	  return(open_socket_in(type,port+1,dlevel,socket_addr,rebind));      }      return(-1);     }  DEBUG(3,("bind succeeded on port %d\n",port));  return res;}/****************************************************************************  create an outgoing socket. timeout is in milliseconds.  **************************************************************************/int open_socket_out(int type, struct in_addr *addr, int port ,int timeout){  struct sockaddr_in sock_out;  int res,ret;  int connect_loop = 250; /* 250 milliseconds */  int loops = (timeout) / connect_loop;  /* create a socket to write to */  res = socket(PF_INET, type, 0);  if (res == -1)     { DEBUG(0,("socket error\n")); return -1; }  if (type != SOCK_STREAM) return(res);    memset((char *)&sock_out,'\0',sizeof(sock_out));  putip((char *)&sock_out.sin_addr,(char *)addr);    sock_out.sin_port = htons( port );  sock_out.sin_family = PF_INET;  /* set it non-blocking */  set_blocking(res,False);  DEBUG(3,("Connecting to %s at port %d\n",inet_ntoa(*addr),port));    /* and connect it to the destination */connect_again:  ret = connect(res,(struct sockaddr *)&sock_out,sizeof(sock_out));  /* Some systems return EAGAIN when they mean EINPROGRESS */  if (ret < 0 && (errno == EINPROGRESS || errno == EALREADY ||        errno == EAGAIN) && loops--) {    msleep(connect_loop);    goto connect_again;  }  if (ret < 0 && (errno == EINPROGRESS || errno == EALREADY ||         errno == EAGAIN)) {      DEBUG(1,("timeout connecting to %s:%d\n",inet_ntoa(*addr),port));      close(res);      return -1;  }#ifdef EISCONN  if (ret < 0 && errno == EISCONN) {    errno = 0;    ret = 0;  }#endif  if (ret < 0) {    DEBUG(1,("error connecting to %s:%d (%s)\n",	     inet_ntoa(*addr),port,strerror(errno)));    close(res);    return -1;  }  /* set it blocking again */  set_blocking(res,True);  return res;}/******************************************************************* Reset the 'done' variables so after a client process is created from a fork call these calls will be re-done. This should be expanded if more variables need reseting. ******************************************************************/static BOOL global_client_name_done = False;static BOOL global_client_addr_done = False;void reset_globals_after_fork(void){  global_client_name_done = False;  global_client_addr_done = False;  /*   * Re-seed the random crypto generator, so all smbd's   * started from the same parent won't generate the same   * sequence.   */  {    unsigned char dummy;    generate_random_buffer( &dummy, 1, True);  } } /******************************************************************* return the DNS name of the client  ******************************************************************/char *client_name(int fd){	struct sockaddr sa;	struct sockaddr_in *sockin = (struct sockaddr_in *) (&sa);	int     length = sizeof(sa);	static pstring name_buf;	struct hostent *hp;	static int last_fd=-1;		if (global_client_name_done && last_fd == fd) 		return name_buf;		last_fd = fd;	global_client_name_done = False;		pstrcpy(name_buf,"UNKNOWN");		if (fd == -1) {		return name_buf;	}		if (getpeername(fd, &sa, &length) < 0) {		DEBUG(0,("getpeername failed. Error was %s\n", strerror(errno) ));		return name_buf;	}		/* Look up the remote host name. */	if ((hp = gethostbyaddr((char *) &sockin->sin_addr,				sizeof(sockin->sin_addr),				AF_INET)) == 0) {		DEBUG(1,("Gethostbyaddr failed for %s\n",client_addr(fd)));		StrnCpy(name_buf,client_addr(fd),sizeof(name_buf) - 1);	} else {		StrnCpy(name_buf,(char *)hp->h_name,sizeof(name_buf) - 1);		if (!matchname(name_buf, sockin->sin_addr)) {			DEBUG(0,("Matchname failed on %s %s\n",name_buf,client_addr(fd)));			pstrcpy(name_buf,"UNKNOWN");		}	}	global_client_name_done = True;	return name_buf;}/******************************************************************* return the IP addr of the client as a string  ******************************************************************/char *client_addr(int fd){	struct sockaddr sa;	struct sockaddr_in *sockin = (struct sockaddr_in *) (&sa);	int     length = sizeof(sa);	static fstring addr_buf;	static int last_fd = -1;	if (global_client_addr_done && fd == last_fd) 		return addr_buf;	last_fd = fd;	global_client_addr_done = False;	fstrcpy(addr_buf,"0.0.0.0");	if (fd == -1) {		return addr_buf;	}		if (getpeername(fd, &sa, &length) < 0) {		DEBUG(0,("getpeername failed. Error was %s\n", strerror(errno) ));		return addr_buf;	}		fstrcpy(addr_buf,(char *)inet_ntoa(sockin->sin_addr));		global_client_addr_done = True;	return addr_buf;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲不卡一区二区三区| 欧美日本一区二区三区四区| 亚洲日本乱码在线观看| 国产精品一区二区久久精品爱涩| 99久久99久久精品免费观看 | 日本高清无吗v一区| 日韩午夜精品电影| 亚洲主播在线观看| 丁香桃色午夜亚洲一区二区三区| 欧美日韩一区二区三区高清 | 69精品人人人人| 综合分类小说区另类春色亚洲小说欧美| 日韩va欧美va亚洲va久久| 91蜜桃免费观看视频| 久久综合久久综合久久| 日本不卡中文字幕| 欧美亚州韩日在线看免费版国语版| 国产亚洲欧美中文| 蜜臀av性久久久久蜜臀aⅴ| 在线日韩国产精品| 亚洲视频狠狠干| 成人爱爱电影网址| 久久精品一区二区三区av| 美女网站一区二区| 3atv在线一区二区三区| 亚洲一级二级在线| 欧美性猛交xxxx黑人交| 成人欧美一区二区三区白人| 高清国产午夜精品久久久久久| 日韩限制级电影在线观看| 日本不卡高清视频| 678五月天丁香亚洲综合网| 一区二区三区四区蜜桃| 91亚洲国产成人精品一区二区三 | 欧美色视频在线观看| 亚洲欧美韩国综合色| 99久久国产免费看| 亚洲男人天堂一区| 欧美中文字幕不卡| 亚洲国产精品天堂| 91精品国产免费| 麻豆免费看一区二区三区| 26uuu国产电影一区二区| 激情综合色播激情啊| 久久久久久毛片| 国产成a人无v码亚洲福利| 久久精品亚洲乱码伦伦中文| 福利一区福利二区| 亚洲欧美偷拍三级| 在线视频国内一区二区| 日本不卡一区二区三区| 日韩精品一区二区三区swag| 狠狠色丁香婷婷综合| 欧美国产1区2区| 91同城在线观看| 亚洲18色成人| 精品久久久久久久人人人人传媒| 激情偷乱视频一区二区三区| 日本一区二区在线不卡| 色综合久久六月婷婷中文字幕| 亚洲国产精品综合小说图片区| 欧美精品在欧美一区二区少妇| 日韩电影在线观看一区| 国产欧美一二三区| 欧美无砖专区一中文字| 久久av资源站| 国产精品国产精品国产专区不片| 欧美中文字幕一区二区三区| 日本v片在线高清不卡在线观看| 国产日韩v精品一区二区| 91年精品国产| 欧美a级一区二区| 国产精品欧美极品| 欧美一级在线视频| 成人18精品视频| 免费欧美日韩国产三级电影| 国产精品美女久久久久aⅴ国产馆| 色综合久久久久综合体桃花网| 精品亚洲国产成人av制服丝袜 | 成人小视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 国产日韩精品一区二区浪潮av | 国产一区二区三区香蕉| 亚洲午夜视频在线观看| 中文字幕欧美国产| 欧美成人综合网站| 欧美在线视频不卡| 国产河南妇女毛片精品久久久| 久久久久88色偷偷免费| 欧美在线999| 精品一区二区三区在线视频| 国产精品国模大尺度视频| 欧美日韩精品一区视频| 国产成人亚洲综合a∨猫咪| 亚洲自拍偷拍图区| 欧美一级免费大片| 一本一道久久a久久精品| 久久精工是国产品牌吗| 亚洲三级视频在线观看| 国产精品入口麻豆九色| 91麻豆精品国产| 91在线观看美女| 精品一区二区在线观看| 亚洲一级二级三级| 国产精品二三区| 中文一区在线播放| 欧美精品一区二区不卡| 欧美主播一区二区三区| 99久久精品免费| 国产大陆亚洲精品国产| 婷婷久久综合九色综合绿巨人 | 精品久久人人做人人爽| 在线视频国内一区二区| 成人白浆超碰人人人人| 国产成人精品一区二| 久久国产日韩欧美精品| 亚洲制服丝袜一区| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧洲成人精品av97| 国产欧美综合色| 久久精品在这里| 精品剧情在线观看| 91精品国产综合久久小美女| 91视频国产资源| 99国产精品久久久久| 成人黄色网址在线观看| 成人综合婷婷国产精品久久| 国产一区二三区好的| 国产一区二区视频在线| 国产91精品一区二区麻豆亚洲| 国产一区二区三区免费看| 久久精品免费观看| 麻豆成人免费电影| 麻豆成人久久精品二区三区小说| 日本午夜一本久久久综合| 亚洲第一主播视频| 免费观看一级欧美片| 精品伊人久久久久7777人| 国产精一品亚洲二区在线视频| 激情综合网天天干| 国产美女一区二区三区| 国产真实乱子伦精品视频| 91亚洲资源网| 欧美日韩一本到| 日韩一区二区免费高清| 亚洲精品在线免费观看视频| 国产亚洲综合av| 欧美国产精品v| 亚洲美女屁股眼交3| 婷婷综合在线观看| 老司机精品视频一区二区三区| 国产真实乱偷精品视频免| 国产剧情一区在线| 欧美影院一区二区| 欧美一区二区三级| 久久精品欧美日韩| 亚洲欧美日本韩国| 日本网站在线观看一区二区三区| 国产精品正在播放| 色综合久久中文字幕综合网| 欧美日本韩国一区二区三区视频| 欧美不卡123| 中文字幕日韩欧美一区二区三区| 国产精品久久毛片| 久久国产精品区| 波多野结衣精品在线| 欧美伊人久久久久久午夜久久久久| 91精品国产麻豆国产自产在线 | 欧美丰满一区二区免费视频| 欧美精品一区二区三区蜜臀| 一色屋精品亚洲香蕉网站| 一区2区3区在线看| 韩国女主播成人在线观看| 国产98色在线|日韩| 欧美一区二区人人喊爽| 国产精品灌醉下药二区| 日韩专区一卡二卡| 国产成人亚洲精品狼色在线| 欧美色精品天天在线观看视频| 精品国产欧美一区二区| 亚洲精品乱码久久久久| 久草在线在线精品观看| 91老司机福利 在线| 精品伦理精品一区| 午夜欧美视频在线观看| 成人h动漫精品一区二| 日韩欧美亚洲另类制服综合在线| 亚洲午夜电影网| 色偷偷成人一区二区三区91| 久久这里只有精品6| 日日嗨av一区二区三区四区| 91色九色蝌蚪| 亚洲日穴在线视频| 国产成人精品免费网站| 91麻豆精品国产91久久久资源速度 | 国产精品免费网站在线观看| 日本不卡的三区四区五区| 欧洲av一区二区嗯嗯嗯啊| 日本一二三不卡| 视频一区二区中文字幕|