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

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

?? util_sock.c

?? MC Linux/Unix 終端下文件管理器
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*    Unix SMB/Netbios implementation.   Version 1.9.   Samba utility functions   Copyright (C) Andrew Tridgell 1992-1998      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; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "includes.h"#ifdef WITH_SSL#include <ssl.h>#undef Realloc  /* SSLeay defines this and samba has a function of this name */extern SSL  *ssl;extern int  sslFd;#endif  /* WITH_SSL */extern int DEBUGLEVEL;BOOL passive = False;/* the client file descriptor */int Client = -1;/* the last IP received from */struct in_addr lastip;/* the last port received from */int lastport=0;int smb_read_error = 0;/****************************************************************************determine if a file descriptor is in fact a socket****************************************************************************/BOOL is_a_socket(int fd){  int v,l;  l = sizeof(int);  return(getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0);}enum SOCK_OPT_TYPES {OPT_BOOL,OPT_INT,OPT_ON};static const struct{  char *name;  int level;  int option;  int value;  int opttype;} socket_options[] = {  {"SO_KEEPALIVE",      SOL_SOCKET,    SO_KEEPALIVE,    0,                 OPT_BOOL},  {"SO_REUSEADDR",      SOL_SOCKET,    SO_REUSEADDR,    0,                 OPT_BOOL},  {"SO_BROADCAST",      SOL_SOCKET,    SO_BROADCAST,    0,                 OPT_BOOL},#ifdef TCP_NODELAY  {"TCP_NODELAY",       IPPROTO_TCP,   TCP_NODELAY,     0,                 OPT_BOOL},#endif#ifdef IPTOS_LOWDELAY  {"IPTOS_LOWDELAY",    IPPROTO_IP,    IP_TOS,          IPTOS_LOWDELAY,    OPT_ON},#endif#ifdef IPTOS_THROUGHPUT  {"IPTOS_THROUGHPUT",  IPPROTO_IP,    IP_TOS,          IPTOS_THROUGHPUT,  OPT_ON},#endif#ifdef SO_SNDBUF  {"SO_SNDBUF",         SOL_SOCKET,    SO_SNDBUF,       0,                 OPT_INT},#endif#ifdef SO_RCVBUF  {"SO_RCVBUF",         SOL_SOCKET,    SO_RCVBUF,       0,                 OPT_INT},#endif#ifdef SO_SNDLOWAT  {"SO_SNDLOWAT",       SOL_SOCKET,    SO_SNDLOWAT,     0,                 OPT_INT},#endif#ifdef SO_RCVLOWAT  {"SO_RCVLOWAT",       SOL_SOCKET,    SO_RCVLOWAT,     0,                 OPT_INT},#endif#ifdef SO_SNDTIMEO  {"SO_SNDTIMEO",       SOL_SOCKET,    SO_SNDTIMEO,     0,                 OPT_INT},#endif#ifdef SO_RCVTIMEO  {"SO_RCVTIMEO",       SOL_SOCKET,    SO_RCVTIMEO,     0,                 OPT_INT},#endif  {NULL,0,0,0,0}};	/****************************************************************************set user socket options****************************************************************************/void set_socket_options(int fd, char *options){  fstring tok;  while (next_token(&options,tok," \t,", sizeof(tok)))    {      int ret=0,i;      int value = 1;      char *p;      BOOL got_value = False;      if ((p = strchr(tok,'=')))	{	  *p = 0;	  value = atoi(p+1);	  got_value = True;	}      for (i=0;socket_options[i].name;i++)	if (strequal(socket_options[i].name,tok))	  break;      if (!socket_options[i].name)	{	  DEBUG(0,("Unknown socket option %s\n",tok));	  continue;	}      switch (socket_options[i].opttype)	{	case OPT_BOOL:	case OPT_INT:	  ret = setsockopt(fd,socket_options[i].level,			   socket_options[i].option,(char *)&value,sizeof(int));	  break;	case OPT_ON:	  if (got_value)	    DEBUG(0,("syntax error - %s does not take a value\n",tok));	  {	    int on = socket_options[i].value;	    ret = setsockopt(fd,socket_options[i].level,			     socket_options[i].option,(char *)&on,sizeof(int));	  }	  break;	  	}            if (ret != 0)	DEBUG(0,("Failed to set socket option %s\n",tok));    }}/****************************************************************************  close the socket communication****************************************************************************/void close_sockets(void ){#ifdef WITH_SSL  sslutil_disconnect(Client);#endif /* WITH_SSL */  close(Client);  Client = -1;}/****************************************************************************write to a socket****************************************************************************/ssize_t write_socket(int fd,char *buf,size_t len){  ssize_t ret=0;  if (passive)    return(len);  DEBUG(6,("write_socket(%d,%d)\n",fd,(int)len));  ret = write_data(fd,buf,len);        DEBUG(6,("write_socket(%d,%d) wrote %d\n",fd,(int)len,(int)ret));  if(ret <= 0)    DEBUG(1,("write_socket: Error writing %d bytes to socket %d: ERRNO = %s\n",        (int)len, fd, strerror(errno) ));  return(ret);}/****************************************************************************read from a socket****************************************************************************/ssize_t read_udp_socket(int fd,char *buf,size_t len){  ssize_t ret;  struct sockaddr_in sock;  int socklen;    socklen = sizeof(sock);  memset((char *)&sock,'\0',socklen);  memset((char *)&lastip,'\0',sizeof(lastip));  ret = (ssize_t)recvfrom(fd,buf,len,0,(struct sockaddr *)&sock,&socklen);  if (ret <= 0) {    DEBUG(2,("read socket failed. ERRNO=%s\n",strerror(errno)));    return(0);  }  lastip = sock.sin_addr;  lastport = ntohs(sock.sin_port);  DEBUG(10,("read_udp_socket: lastip %s lastport %d read: %d\n",             inet_ntoa(lastip), lastport, ret));  return(ret);}/****************************************************************************read data from a device with a timout in msec.mincount = if timeout, minimum to read before returningmaxcount = number to be read.time_out = timeout in milliseconds****************************************************************************/ssize_t read_with_timeout(int fd,char *buf,size_t mincnt,size_t maxcnt,unsigned int time_out){  fd_set fds;  int selrtn;  ssize_t readret;  size_t nread = 0;  struct timeval timeout;  /* just checking .... */  if (maxcnt <= 0) return(0);  smb_read_error = 0;  /* Blocking read */  if (time_out <= 0) {    if (mincnt == 0) mincnt = maxcnt;    while (nread < mincnt) {#ifdef WITH_SSL      if(fd == sslFd){        readret = SSL_read(ssl, buf + nread, maxcnt - nread);      }else{        readret = read(fd, buf + nread, maxcnt - nread);      }#else /* WITH_SSL */      readret = read(fd, buf + nread, maxcnt - nread);#endif /* WITH_SSL */      if (readret == 0) {        DEBUG(5,("read_with_timeout: blocking read. EOF from client.\n"));        smb_read_error = READ_EOF;        return -1;      }      if (readret == -1) {        DEBUG(0,("read_with_timeout: read error = %s.\n", strerror(errno) ));        smb_read_error = READ_ERROR;        return -1;      }      nread += readret;    }    return((ssize_t)nread);  }    /* Most difficult - timeout read */  /* If this is ever called on a disk file and      mincnt is greater then the filesize then     system performance will suffer severely as      select always returns true on disk files */  /* Set initial timeout */  timeout.tv_sec = (time_t)(time_out / 1000);  timeout.tv_usec = (long)(1000 * (time_out % 1000));  for (nread=0; nread < mincnt; )   {          FD_ZERO(&fds);    FD_SET(fd,&fds);          selrtn = sys_select(fd+1,&fds,&timeout);    /* Check if error */    if(selrtn == -1) {      /* something is wrong. Maybe the socket is dead? */      DEBUG(0,("read_with_timeout: timeout read. select error = %s.\n", strerror(errno) ));      smb_read_error = READ_ERROR;      return -1;    }    /* Did we timeout ? */    if (selrtn == 0) {      DEBUG(10,("read_with_timeout: timeout read. select timed out.\n"));      smb_read_error = READ_TIMEOUT;      return -1;    }      #ifdef WITH_SSL    if(fd == sslFd){      readret = SSL_read(ssl, buf + nread, maxcnt - nread);    }else{      readret = read(fd, buf + nread, maxcnt - nread);    }#else /* WITH_SSL */    readret = read(fd, buf+nread, maxcnt-nread);#endif /* WITH_SSL */    if (readret == 0) {      /* we got EOF on the file descriptor */      DEBUG(5,("read_with_timeout: timeout read. EOF from client.\n"));      smb_read_error = READ_EOF;      return -1;    }    if (readret == -1) {      /* the descriptor is probably dead */      DEBUG(0,("read_with_timeout: timeout read. read error = %s.\n", strerror(errno) ));      smb_read_error = READ_ERROR;      return -1;    }          nread += readret;  }  /* Return the number we got */  return((ssize_t)nread);}/****************************************************************************send a keepalive packet (rfc1002)****************************************************************************/BOOL send_keepalive(int client){  unsigned char buf[4];  buf[0] = 0x85;  buf[1] = buf[2] = buf[3] = 0;  return(write_data(client,(char *)buf,4) == 4);}/****************************************************************************  read data from the client, reading exactly N bytes. ****************************************************************************/ssize_t read_data(int fd,char *buffer,size_t N){  ssize_t  ret;  size_t total=0;     smb_read_error = 0;  while (total < N)  {#ifdef WITH_SSL    if(fd == sslFd){      ret = SSL_read(ssl, buffer + total, N - total);    }else{      ret = read(fd,buffer + total,N - total);    }#else /* WITH_SSL */    ret = read(fd,buffer + total,N - total);#endif /* WITH_SSL */    if (ret == 0)    {      DEBUG(10,("read_data: read of %d returned 0. Error = %s\n", (int)(N - total), strerror(errno) ));      smb_read_error = READ_EOF;      return 0;    }    if (ret == -1)    {      DEBUG(0,("read_data: read failure for %d. Error = %s\n", (int)(N - total), strerror(errno) ));      smb_read_error = READ_ERROR;      return -1;    }    total += ret;  }  return (ssize_t)total;}/****************************************************************************  write data to a fd ****************************************************************************/ssize_t write_data(int fd,char *buffer,size_t N){  size_t total=0;  ssize_t ret;  while (total < N)  {#ifdef WITH_SSL    if(fd == sslFd){      ret = SSL_write(ssl,buffer + total,N - total);    }else{      ret = write(fd,buffer + total,N - total);    }#else /* WITH_SSL */    ret = write(fd,buffer + total,N - total);#endif /* WITH_SSL */    if (ret == -1) {      DEBUG(1,("write_data: write failure. Error = %s\n", strerror(errno) ));      return -1;    }    if (ret == 0) return total;    total += ret;  }  return (ssize_t)total;}/****************************************************************************read 4 bytes of a smb packet and return the smb length of the packetstore the result in the bufferThis version of the function will return a length of zero on receivinga keepalive packet.timeout is in milliseconds.****************************************************************************/static ssize_t read_smb_length_return_keepalive(int fd,char *inbuf,unsigned int timeout){  ssize_t len=0;  int msg_type;  BOOL ok = False;  while (!ok)  {    if (timeout > 0)      ok = (read_with_timeout(fd,inbuf,4,4,timeout) == 4);    else       ok = (read_data(fd,inbuf,4) == 4);    if (!ok)      return(-1);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄色小说综合网站| 亚洲国产欧美日韩另类综合| 欧美久久久一区| 在线影视一区二区三区| 色天天综合久久久久综合片| 一本久道中文字幕精品亚洲嫩| 99视频一区二区三区| 成人动漫精品一区二区| 99re这里只有精品6| 在线精品视频一区二区三四| 欧洲av在线精品| 欧美精品一卡二卡| 欧美一级夜夜爽| 精品播放一区二区| 欧美激情在线免费观看| 国产精品女主播在线观看| 中文字幕在线观看一区| 亚洲综合色在线| 丝袜亚洲精品中文字幕一区| 韩国一区二区在线观看| 不卡一区二区在线| 精品视频免费看| 日韩精品在线看片z| 国产免费久久精品| 又紧又大又爽精品一区二区| 秋霞电影网一区二区| 高清成人免费视频| 在线免费观看成人短视频| 日韩一级二级三级| 国产精品人成在线观看免费| 亚洲电影中文字幕在线观看| 国产一本一道久久香蕉| 一本久久a久久精品亚洲| 日韩美女视频一区二区在线观看| 国产精品天美传媒| 亚洲.国产.中文慕字在线| 国产主播一区二区| 欧美在线啊v一区| 久久综合色婷婷| 亚洲国产一区二区视频| 丁香另类激情小说| 欧美男人的天堂一二区| 国产精品色在线观看| 日韩av电影一区| 91在线观看视频| 久久女同性恋中文字幕| 亚洲大片在线观看| 97精品国产露脸对白| 久久综合精品国产一区二区三区 | 91色婷婷久久久久合中文| 91.xcao| 国产精品传媒视频| 久久99精品久久久| 欧美三级韩国三级日本一级| 国产精品的网站| 国产很黄免费观看久久| 91精品国产一区二区三区香蕉| 亚洲人成网站影音先锋播放| 国产精品99久久久久久有的能看| 欧美高清激情brazzers| 一区二区三区欧美视频| 成人h版在线观看| 久久免费视频一区| 久久国产综合精品| 91精品国产综合久久久久久久| 一区二区三区不卡视频| 99久精品国产| 亚洲欧洲精品一区二区三区| 成人精品gif动图一区| 26uuu精品一区二区在线观看| 视频一区在线视频| 欧美日本一区二区| 视频一区国产视频| 欧美日韩国产综合一区二区| 午夜一区二区三区在线观看| 色婷婷久久久综合中文字幕| 一区二区免费看| 91国偷自产一区二区三区成为亚洲经典| 国产精品久久久久久久浪潮网站 | 欧美精品 国产精品| 亚洲综合在线观看视频| 色香色香欲天天天影视综合网| 综合欧美一区二区三区| 日本乱人伦一区| 一区二区三区蜜桃网| 在线精品视频免费观看| 亚洲国产日韩精品| 91麻豆精品国产91| 精品亚洲成a人| 国产亚洲一区二区三区| 成人免费视频视频| 一区二区三区影院| 欧美久久久久免费| 黑人巨大精品欧美黑白配亚洲| 国产亚洲欧美日韩俺去了| 成人午夜伦理影院| 一区二区三区四区av| 欧美一区二区三区免费大片 | 亚洲精品国产一区二区精华液| 91麻豆免费观看| 无码av免费一区二区三区试看| 日韩免费电影一区| heyzo一本久久综合| 亚洲无线码一区二区三区| 精品剧情在线观看| bt7086福利一区国产| 午夜免费欧美电影| 国产亚洲制服色| 欧美亚洲日本一区| 国产乱码精品一区二区三 | 欧美女孩性生活视频| 国产一区福利在线| 一区二区三区在线影院| 欧美一区二区三区系列电影| 国产成人av一区二区三区在线 | 亚洲中国最大av网站| 精品盗摄一区二区三区| 欧美在线你懂得| 国产精品一二三在| 三级影片在线观看欧美日韩一区二区 | 国产精品入口麻豆九色| 欧美精品少妇一区二区三区| 大胆亚洲人体视频| 免费观看91视频大全| 亚洲女与黑人做爰| 久久精品视频免费| 欧美精品v日韩精品v韩国精品v| 久久aⅴ国产欧美74aaa| 亚洲高清免费一级二级三级| 国产精品无遮挡| 亚洲精品一线二线三线| 欧美日韩黄视频| 91日韩精品一区| 国产成人一区二区精品非洲| 蜜臀av一区二区| 亚洲国产aⅴ成人精品无吗| 一区在线观看视频| 日本一区二区三区在线观看| 亚洲精品一区二区精华| 69久久夜色精品国产69蝌蚪网| 色网综合在线观看| 99热99精品| 成人福利视频在线| 国产成人免费在线观看| 久久99精品久久久| 九色综合国产一区二区三区| 午夜伦欧美伦电影理论片| 亚洲一线二线三线久久久| 国产精品久久久久久久久图文区 | 91亚洲精品久久久蜜桃| 成人深夜在线观看| 国产电影精品久久禁18| 国产在线不卡一区| 激情图片小说一区| 久久av资源站| 国产精品一区二区三区网站| 国产精品一区二区不卡| 国产精品白丝jk黑袜喷水| 国产精品性做久久久久久| 国产 欧美在线| 成人污污视频在线观看| av成人免费在线观看| 成人精品一区二区三区中文字幕| 成人丝袜高跟foot| 成人高清av在线| 欧美在线观看18| 日韩一区和二区| 久久―日本道色综合久久| 国产夜色精品一区二区av| 国产亚洲1区2区3区| 中文字幕高清不卡| 亚洲色图欧美在线| 亚洲国产日韩av| 免费在线看成人av| 国产高清久久久久| 日本高清不卡aⅴ免费网站| 欧洲亚洲精品在线| 欧美日韩国产免费一区二区 | 首页亚洲欧美制服丝腿| 石原莉奈在线亚洲三区| 激情五月激情综合网| 国产91在线看| 欧美制服丝袜第一页| 日韩美一区二区三区| 亚洲视频中文字幕| 天堂成人免费av电影一区| 国产福利一区二区三区视频在线 | 成人av在线一区二区三区| 一本大道久久a久久综合婷婷| 91精品在线观看入口| 国产亚洲欧美日韩俺去了| 一区二区三区**美女毛片| 久久国产夜色精品鲁鲁99| 99国产精品国产精品久久| 日韩一区二区三区av| 亚洲色图视频网站| 狠狠久久亚洲欧美| 欧美久久免费观看| 国产精品久久网站| 久久精品国产99国产精品|