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

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

?? smbproto.c

?? Sanos Operating System Kernel ----------------------------- Sanos is an OS kernel for use in PC base
?? C
?? 第 1 頁 / 共 2 頁
字號:
  if (rc < 0) return rc;

  return 0;
}

int smb_connect_tree(struct smb_share *share)
{
  struct smb *smb;
  int rc;
  char *p;
  char buf[SMB_NAMELEN];

  // Connect to share
  smb = smb_init(share, 1);
  smb->params.req.connect.andx.cmd = 0xFF;
  smb->params.req.connect.password_length = strlen(share->server->password) + 1;

  p = buf;
  p = addstrz(p, share->server->password);
  p = addstrz(p, share->sharename);
  p = addstrz(p, SMB_SERVICE_DISK);

  rc = smb_request(share, smb, SMB_COM_TREE_CONNECT_ANDX, 4, buf, p - buf, 0);
  if (rc < 0) return rc;

  share->tid = smb->tid;
  share->mounttime = time(0);

  return 0;
}

int smb_disconnect_tree(struct smb_share *share)
{
  struct smb *smb;

  // Disconnect from share
  smb = smb_init(share, 1);
  smb_request(share, smb, SMB_COM_TREE_DISCONNECT, 0, NULL, 0, 0);
  share->tid = 0xFFFF;

  return 0;
}

int smb_connect(struct smb_share *share)
{
  struct smb_server *server = share->server;
  struct smb *smb;
  struct sockaddr_in sin;
  int rc;
  unsigned short max_mpx_count;
  char *p;
  char buf[SMB_NAMELEN];

  // Connect to SMB server on port 445
  rc = socket(AF_INET, SOCK_STREAM, IPPROTO_IP, &server->sock);
  if (rc < 0) return rc;

  memset(&sin, 0, sizeof(sin));
  sin.sin_family = AF_INET;
  sin.sin_addr.s_addr = server->ipaddr.addr;
  sin.sin_port = htons(445);
  
  rc = connect(server->sock, (struct sockaddr *) &sin, sizeof(sin));
  if (rc < 0) goto error;

  // Negotiate protocol version
  smb = smb_init(share, 1);
  rc = smb_request(share, smb, SMB_COM_NEGOTIATE, 0, "\002NT LM 0.12", 12, 0); 
  if (rc < 0) goto error;

  if (smb->params.rsp.negotiate.dialect_index == 0xFFFF) 
  {
    rc = -EREMOTEIO;
    goto error;
  }

  server->tzofs = smb->params.rsp.negotiate.server_timezone * 60;
  server->server_caps = smb->params.rsp.negotiate.capabilities;
  server->max_buffer_size = smb->params.rsp.negotiate.max_buffer_size;
  max_mpx_count = smb->params.rsp.negotiate.max_mpx_count;

  // Setup session
  smb = smb_init(share, 1);
  smb->params.req.setup.andx.cmd = 0xFF;
  smb->params.req.setup.max_buffer_size = (unsigned short) SMB_MAX_BUFFER;
  smb->params.req.setup.max_mpx_count = max_mpx_count;
  smb->params.req.setup.ansi_password_length = strlen(server->password) + 1;
  smb->params.req.setup.unicode_password_length = 0;
  smb->params.req.setup.capabilities = SMB_CAP_NT_SMBS;

  p = buf;
  p = addstrz(p, server->password);
  p = addstrz(p, server->username);
  p = addstrz(p, server->domain);
  p = addstrz(p, SMB_CLIENT_OS);
  p = addstrz(p, SMB_CLIENT_LANMAN);

  rc = smb_request(share, smb, SMB_COM_SESSION_SETUP_ANDX, 13, buf, p - buf, 0); 
  if (rc < 0) goto error;

  server->uid = smb->uid;

  return 0;

error:
  if (server->sock)
  {
    closesocket(server->sock);
    server->sock = NULL;
  }

  return rc;
}

int smb_disconnect(struct smb_share *share)
{
  struct smb_server *server = share->server;
  struct smb *smb;

  if (server->sock)
  {
    // Logoff server
    if (server->uid != 0xFFFF)
    {
      smb = smb_init(share, 1);
      smb->params.andx.cmd = 0xFF;
      smb_request(share, smb, SMB_COM_LOGOFF_ANDX, 2, NULL, 0, 0);
      server->uid = 0xFFFF;
    }

    // Close socket
    closesocket(server->sock);
    server->sock = NULL;
  }

  return 0;
}

int smb_get_connection(struct smb_share *share, struct ip_addr *ipaddr, char *domain, char *username, char *password)
{
  struct smb_server *server;
  int rc;

  // Try to find existing connection to server
  server = servers;
  while (server)
  {
    if (ip_addr_cmp(&server->ipaddr, ipaddr))
    {
      // Add share to server
      share->server = server;
      share->next = server->shares;
      server->shares = share;
      server->refcnt++;

      return 0;
    }

    server = server->next;
  }

  // Allocate new server block
  server = (struct smb_server *) kmalloc(sizeof(struct smb_server));
  if (!server) return -ENOMEM;
  memset(server, 0, sizeof(struct smb_server));

  server->ipaddr = *ipaddr;
  strcpy(server->domain, domain); 
  strcpy(server->username, username); 
  strcpy(server->password, password);
  server->uid = 0xFFFF;
  init_mutex(&server->lock, 0);

  // Add share to server
  share->tid = 0xFFFF;
  share->server = server;
  share->next = server->shares;
  server->shares = share;
  server->refcnt++;

  // Connect to server
  rc = smb_connect(share);
  if (rc < 0)
  {
    share->server = NULL;
    kfree(server);
    return rc;
  }

  // Add server to server list
  server->next = servers;
  servers = server;

  return 0;
}

int smb_release_connection(struct smb_share *share)
{
  struct smb_server *server = share->server;

  if (!server) return 0;

  if (--server->refcnt > 0)
  {
    // Remove share from server list
    if (server->shares == share)
      server->shares = share->next;
    else
    {
      struct smb_share *s;

      for (s = server->shares; s != NULL; s = s->next)
      {
	if (s->next == share)
	{
	  s->next = share->next;
	  break;
	}
      }
    }

    share->server = NULL;
    return 0;
  }

  // Disconnect from server
  smb_disconnect(share);

  // Remove server block
  if (servers == server)
   servers = server->next;
  else
  {
    struct smb_server *s;

    for (s = servers; s != NULL; s = s->next)
    {
      if (s->next == server)
      {
	s->next = server->next;
	break;
      }
    }
  }

  kfree(server);
  share->server = NULL;

  return 0;
}

int smb_check_connection(struct smb_share *share)
{
  struct smb_server *server = share->server;
  int rc;

  if (!server->sock)
  {
    // Create new connection to server
    rc = smb_connect(share);
    if (rc < 0) return rc;
  }

  if (share->tid == 0xFFFF)
  {
    // Reconnect share
    rc = smb_connect_tree(share);
    if (rc < 0) return rc;
  }

  return 0;
}

int smb_reconnect(struct smb_share *share)
{
  struct smb_server *server = share->server;
  struct smb_share *s;
  int rc;

  s = server->shares;
  while (s)
  {
    s->tid = 0xFFFF;
    s = s->next;
  }
  server->uid = 0xFFFF;

  if (server->sock) smb_disconnect(share);

  rc = smb_connect(share);
  if (rc < 0) return rc;

  rc = smb_connect_tree(share);
  if (rc < 0) return rc;

  return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩电影| 一区二区在线免费观看| 欧美在线|欧美| 色综合久久久久综合99| 99久久99久久久精品齐齐| 成人综合激情网| 99久久精品国产网站| 成人高清免费观看| 91在线小视频| 欧美亚洲一区二区在线| 欧美综合亚洲图片综合区| 欧美在线观看18| 在线成人午夜影院| 精品少妇一区二区三区| 久久精品人人做人人综合 | 国产欧美一区二区精品久导航 | 国产精品污网站| 中文字幕亚洲在| 亚洲高清一区二区三区| 石原莉奈在线亚洲二区| 寂寞少妇一区二区三区| 成人夜色视频网站在线观看| 91色|porny| 91精品国产手机| 日本一区二区三区在线不卡| 亚洲欧美日韩在线| 免费观看在线综合| 99久久国产综合精品女不卡| 欧美日韩色一区| 国产亚洲精品免费| 亚洲国产精品嫩草影院| 精品一区二区av| 91久久精品日日躁夜夜躁欧美| 欧美日韩激情一区| 久久久不卡网国产精品二区| 亚洲三级在线免费观看| 乱一区二区av| 色哟哟国产精品免费观看| 欧美成人精品1314www| 亚洲欧美日韩成人高清在线一区| 日韩国产在线观看| 91亚洲大成网污www| 日韩精品一区二区三区四区视频| 国产精品国产三级国产aⅴ中文| 午夜一区二区三区视频| 成人午夜在线播放| 欧美xxxxx牲另类人与| 亚洲免费在线观看视频| 国产成人无遮挡在线视频| 欧美日韩免费一区二区三区视频| 国产丝袜欧美中文另类| 日本不卡的三区四区五区| 色综合天天综合色综合av | 国产精品久久久久aaaa| 蜜桃传媒麻豆第一区在线观看| 99精品国产热久久91蜜凸| 欧美一级精品在线| 天堂影院一区二区| 日本精品一级二级| 亚洲天堂精品在线观看| 国产99久久久国产精品潘金| 日韩欧美一级精品久久| 午夜精品福利一区二区三区av | 欧美成人精品二区三区99精品| 亚洲黄色性网站| 99久久伊人精品| 国产午夜精品一区二区三区嫩草| 久热成人在线视频| 日韩写真欧美这视频| 午夜电影一区二区三区| 欧美另类变人与禽xxxxx| 亚洲成人久久影院| 欧美久久一二三四区| 亚洲在线成人精品| 欧美日韩在线电影| 日韩电影在线观看网站| 欧美一卡2卡三卡4卡5免费| 日韩精品一级中文字幕精品视频免费观看 | 在线不卡一区二区| 午夜精品一区二区三区免费视频| 色综合久久六月婷婷中文字幕| 亚洲青青青在线视频| 色妹子一区二区| 亚洲综合视频网| 欧美理论电影在线| 免费精品视频在线| 久久久久久久久99精品| 粉嫩在线一区二区三区视频| 亚洲国产精品成人久久综合一区| 成人午夜av电影| 亚洲欧美日韩一区二区三区在线观看| 91尤物视频在线观看| 一区二区三区免费看视频| 欧美美女网站色| 蜜臀av亚洲一区中文字幕| www亚洲一区| 不卡电影免费在线播放一区| 亚洲日本韩国一区| 91精品国产综合久久久久久久| 麻豆精品一区二区| 国产区在线观看成人精品| 91丝袜高跟美女视频| 欧美aaaaaa午夜精品| 国产日韩欧美激情| 欧美系列日韩一区| 国内不卡的二区三区中文字幕| 国产精品美女久久久久高潮| 欧美视频你懂的| 国产一二精品视频| 亚洲一区二区三区国产| 日韩一级片在线播放| 成人黄色电影在线 | 日韩精品中午字幕| av成人老司机| 久久综合综合久久综合| 亚洲三级在线免费| 精品国产凹凸成av人导航| 一本一道久久a久久精品综合蜜臀| 五月天欧美精品| 中文字幕一区二区日韩精品绯色| 欧美另类z0zxhd电影| av欧美精品.com| 久久99国产精品免费网站| 一个色综合av| 国产精品乱码一区二区三区软件| 欧美喷潮久久久xxxxx| 99久久精品99国产精品| 国产一区二区在线观看视频| 亚洲第一会所有码转帖| 国产精品的网站| 久久久久久亚洲综合影院红桃| 欧美三级中文字| 欧美日韩在线不卡| av在线免费不卡| 国产成人久久精品77777最新版本| 亚洲国产成人精品视频| 国产精品进线69影院| 久久精品视频一区二区三区| 欧美一区二区免费| 7777精品伊人久久久大香线蕉 | 久久久亚洲国产美女国产盗摄 | 激情图片小说一区| 免费久久99精品国产| 亚洲123区在线观看| 亚洲视频一区在线观看| 国产精品欧美久久久久无广告| 欧美精品一区二区三区在线播放| 69堂国产成人免费视频| 欧美另类z0zxhd电影| 欧美精品一二三| 在线电影一区二区三区| 欧美日韩免费一区二区三区视频| 在线观看视频欧美| 色就色 综合激情| 91豆麻精品91久久久久久| 色婷婷精品久久二区二区蜜臀av | 视频精品一区二区| 日韩综合小视频| 欧美aaaaa成人免费观看视频| 日韩电影一区二区三区四区| 日精品一区二区三区| 麻豆免费精品视频| 国产在线看一区| 国产69精品久久777的优势| 国产在线精品一区二区夜色 | gogo大胆日本视频一区| 99久久综合精品| 欧美日韩精品一区二区| 777午夜精品视频在线播放| 日韩一二三区视频| xnxx国产精品| 国产精品白丝在线| 亚洲一区二区三区美女| 蜜臀av一区二区在线免费观看| 国内不卡的二区三区中文字幕| 国产高清不卡一区| 色一情一乱一乱一91av| 欧美一区二区三区男人的天堂| 精品欧美一区二区在线观看| 国产精品视频一二三区| 亚洲成人动漫精品| 国产在线观看免费一区| 91在线视频播放地址| 欧美妇女性影城| 亚洲国产高清在线观看视频| 亚洲激情图片小说视频| 久久99久久99精品免视看婷婷| 成人少妇影院yyyy| 欧美丝袜丝nylons| 国产欧美一区二区精品性| 性做久久久久久久免费看| 国产麻豆日韩欧美久久| 欧美性视频一区二区三区| 精品国产麻豆免费人成网站| 最新热久久免费视频| 美女视频第一区二区三区免费观看网站 | 亚洲日本va午夜在线影院| 美腿丝袜亚洲三区| 91网站在线播放| 久久久美女毛片|