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

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

?? util_sock.c

?? MC Linux/Unix 終端下文件管理器
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*    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
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产一二三| 国产日韩欧美一区二区三区乱码| 日韩色视频在线观看| 亚洲国产精品精华液ab| 日日夜夜精品视频免费| 99久久久精品| 久久久亚洲高清| 日韩vs国产vs欧美| 在线免费一区三区| 国产精品毛片无遮挡高清| 日本不卡的三区四区五区| 97精品国产露脸对白| 国产欧美日产一区| 蜜臀av性久久久久蜜臀aⅴ | 欧美三级日韩三级| 国产精品日日摸夜夜摸av| 久久国产婷婷国产香蕉| 欧美三级视频在线| 一区二区三区蜜桃网| www.日本不卡| 国产欧美精品一区| 国产精品18久久久久久久网站| 欧美一区二区视频在线观看2022| 亚洲欧美日韩系列| 99精品一区二区| 成人欧美一区二区三区黑人麻豆| 国产.欧美.日韩| 国产欧美日韩视频在线观看| 国产美女主播视频一区| 欧美精品一区男女天堂| 美女视频黄频大全不卡视频在线播放| 9191成人精品久久| 日韩经典中文字幕一区| 777亚洲妇女| 美国精品在线观看| 精品国产一区二区亚洲人成毛片| 久久99久久久久久久久久久| 日韩欧美成人激情| 国产一区二区三区久久久| 久久免费偷拍视频| 丁香天五香天堂综合| 亚洲色图另类专区| 欧美亚洲图片小说| 热久久一区二区| 久久男人中文字幕资源站| 成人国产一区二区三区精品| 一区精品在线播放| 欧美伊人精品成人久久综合97| 亚瑟在线精品视频| 精品国产一区二区三区久久久蜜月| 精品写真视频在线观看| 国产精品色婷婷久久58| 一本色道久久综合狠狠躁的推荐 | 91丨九色丨国产丨porny| 国产精品成人一区二区艾草| 在线视频你懂得一区| 日本色综合中文字幕| 国产欧美日韩另类视频免费观看| 91影院在线观看| 日产欧产美韩系列久久99| 久久久亚洲精品一区二区三区| av中文字幕在线不卡| 日韩电影在线观看一区| 亚洲国产精华液网站w| 在线观看免费成人| 国产一区在线不卡| 一区二区三区在线免费播放 | 美女高潮久久久| 国产精品国产三级国产普通话三级| 日本道色综合久久| 国产一区二区三区久久悠悠色av| 亚洲三级视频在线观看| 欧美成人video| 91久久精品国产91性色tv| 久久精品国产精品青草| 亚洲日本一区二区三区| 日韩精品资源二区在线| 国产精品18久久久久久vr | 久久久天堂av| 欧美久久久久久久久久| 成人国产精品免费| 美国精品在线观看| 亚洲第一电影网| 欧美日韩日本视频| 欧美片在线播放| 99国产欧美另类久久久精品| 另类小说图片综合网| 一区二区三区在线免费视频| 久久久国产午夜精品| 日韩欧美国产午夜精品| 欧美亚洲一区二区在线观看| 成人毛片在线观看| 经典三级在线一区| 日本不卡一区二区三区| 亚洲国产精品久久人人爱| 中文字幕欧美日本乱码一线二线| 日韩欧美一级二级三级久久久| 欧美伊人久久大香线蕉综合69| av高清不卡在线| 成人性生交大片免费| 国产激情偷乱视频一区二区三区| 美女任你摸久久| 日本欧美在线看| 日韩不卡手机在线v区| 午夜精品久久久久久久蜜桃app| 亚洲欧洲日韩综合一区二区| 国产精品女同一区二区三区| 久久奇米777| 国产亚洲一区二区三区在线观看| 日韩欧美国产三级电影视频| 日韩欧美在线不卡| 日韩一区二区在线播放| 91精品国模一区二区三区| 欧美美女黄视频| 欧美精品日韩一区| 欧美一区二区成人6969| 91麻豆精品国产自产在线 | 国产成人超碰人人澡人人澡| 国产精品一区二区91| 国产剧情一区二区三区| 粉嫩高潮美女一区二区三区 | 久久超碰97人人做人人爱| 久草精品在线观看| 国产一区二区日韩精品| 国产91在线看| 99久久精品国产精品久久| 色偷偷成人一区二区三区91 | 97se亚洲国产综合在线| 一本到三区不卡视频| 欧美专区亚洲专区| 欧美人成免费网站| 精品国产乱码久久久久久闺蜜 | 中文天堂在线一区| 亚洲欧美激情在线| 天天综合天天综合色| 黑人精品欧美一区二区蜜桃| 国产盗摄视频一区二区三区| 亚洲亚洲人成综合网络| 美女免费视频一区二区| 成人高清在线视频| 欧美亚洲禁片免费| 欧美变态凌虐bdsm| 国产精品久99| 三级影片在线观看欧美日韩一区二区| 久久91精品国产91久久小草| 成人精品视频一区二区三区尤物| 欧美性大战久久久久久久蜜臀| 日韩欧美高清一区| 中文字幕佐山爱一区二区免费| 婷婷综合久久一区二区三区| 国产成人在线免费观看| 欧美色图天堂网| 久久精品一区二区| 亚洲成人一区在线| 成人在线视频一区| 欧美一区在线视频| 亚洲视频免费观看| 国产在线精品一区二区夜色| 在线亚洲一区观看| 久久久亚洲精品一区二区三区| 一区二区不卡在线播放 | 韩国毛片一区二区三区| 91官网在线免费观看| 久久久亚洲高清| 偷拍与自拍一区| 92国产精品观看| 久久久精品人体av艺术| 亚洲va韩国va欧美va| 99久久婷婷国产综合精品电影 | 日韩久久一区二区| 精品一区二区三区视频 | 成人av第一页| 26uuu欧美| 日韩av电影免费观看高清完整版| 成人免费高清视频| 26uuu精品一区二区在线观看| 一区二区三区久久久| 风间由美性色一区二区三区| 日韩区在线观看| 日韩精品一卡二卡三卡四卡无卡| 91免费版在线| 中文字幕av一区 二区| 麻豆视频一区二区| 欧美一区二区三区免费视频| 亚洲午夜精品在线| 91免费国产在线观看| 中文字幕电影一区| 国产精品 欧美精品| 久久婷婷综合激情| 精品一区二区三区不卡| 日韩一级片在线观看| 日韩av一级片| 91精品国产综合久久福利| 一区二区三区免费看视频| 一本大道综合伊人精品热热| 亚洲色图色小说| 色域天天综合网| 亚洲图片欧美综合| 欧美日韩亚洲综合| 同产精品九九九|