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

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

?? sockets.c

?? lwip-1.4.0
?? C
?? 第 1 頁 / 共 5 頁
字號:
      break;#endif /* LWIP_IGMP */    default:      LWIP_ASSERT("unhandled optname", 0);      break;    }  /* switch (optname) */    break;#if LWIP_TCP/* Level: IPPROTO_TCP */  case IPPROTO_TCP:    switch (optname) {    case TCP_NODELAY:      *(int*)optval = tcp_nagle_disabled(sock->conn->pcb.tcp);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_TCP, TCP_NODELAY) = %s\n",                  s, (*(int*)optval)?"on":"off") );      break;    case TCP_KEEPALIVE:      *(int*)optval = (int)sock->conn->pcb.tcp->keep_idle;      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPALIVE) = %d\n",                  s, *(int *)optval));      break;#if LWIP_TCP_KEEPALIVE    case TCP_KEEPIDLE:      *(int*)optval = (int)(sock->conn->pcb.tcp->keep_idle/1000);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPIDLE) = %d\n",                  s, *(int *)optval));      break;    case TCP_KEEPINTVL:      *(int*)optval = (int)(sock->conn->pcb.tcp->keep_intvl/1000);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPINTVL) = %d\n",                  s, *(int *)optval));      break;    case TCP_KEEPCNT:      *(int*)optval = (int)sock->conn->pcb.tcp->keep_cnt;      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPCNT) = %d\n",                  s, *(int *)optval));      break;#endif /* LWIP_TCP_KEEPALIVE */    default:      LWIP_ASSERT("unhandled optname", 0);      break;    }  /* switch (optname) */    break;#endif /* LWIP_TCP */#if LWIP_UDP && LWIP_UDPLITE  /* Level: IPPROTO_UDPLITE */  case IPPROTO_UDPLITE:    switch (optname) {    case UDPLITE_SEND_CSCOV:      *(int*)optval = sock->conn->pcb.udp->chksum_len_tx;      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV) = %d\n",                  s, (*(int*)optval)) );      break;    case UDPLITE_RECV_CSCOV:      *(int*)optval = sock->conn->pcb.udp->chksum_len_rx;      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV) = %d\n",                  s, (*(int*)optval)) );      break;    default:      LWIP_ASSERT("unhandled optname", 0);      break;    }  /* switch (optname) */    break;#endif /* LWIP_UDP */  default:    LWIP_ASSERT("unhandled level", 0);    break;  } /* switch (level) */  sys_sem_signal(&sock->conn->op_completed);}intlwip_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen){  struct lwip_sock *sock = get_socket(s);  err_t err = ERR_OK;  struct lwip_setgetsockopt_data data;  if (!sock) {    return -1;  }  if (NULL == optval) {    sock_set_errno(sock, EFAULT);    return -1;  }  /* Do length and type checks for the various options first, to keep it readable. */  switch (level) {/* Level: SOL_SOCKET */  case SOL_SOCKET:    switch (optname) {    case SO_BROADCAST:    /* UNIMPL case SO_DEBUG: */    /* UNIMPL case SO_DONTROUTE: */    case SO_KEEPALIVE:    /* UNIMPL case case SO_CONTIMEO: */    /* UNIMPL case case SO_SNDTIMEO: */#if LWIP_SO_RCVTIMEO    case SO_RCVTIMEO:#endif /* LWIP_SO_RCVTIMEO */#if LWIP_SO_RCVBUF    case SO_RCVBUF:#endif /* LWIP_SO_RCVBUF */    /* UNIMPL case SO_OOBINLINE: */    /* UNIMPL case SO_SNDBUF: */    /* UNIMPL case SO_RCVLOWAT: */    /* UNIMPL case SO_SNDLOWAT: */#if SO_REUSE    case SO_REUSEADDR:    case SO_REUSEPORT:#endif /* SO_REUSE */    /* UNIMPL case SO_USELOOPBACK: */      if (optlen < sizeof(int)) {        err = EINVAL;      }      break;    case SO_NO_CHECK:      if (optlen < sizeof(int)) {        err = EINVAL;      }#if LWIP_UDP      if ((sock->conn->type != NETCONN_UDP) ||          ((udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_UDPLITE) != 0)) {        /* this flag is only available for UDP, not for UDP lite */        err = EAFNOSUPPORT;      }#endif /* LWIP_UDP */      break;    default:      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, SOL_SOCKET, UNIMPL: optname=0x%x, ..)\n",                  s, optname));      err = ENOPROTOOPT;    }  /* switch (optname) */    break;/* Level: IPPROTO_IP */  case IPPROTO_IP:    switch (optname) {    /* UNIMPL case IP_HDRINCL: */    /* UNIMPL case IP_RCVDSTADDR: */    /* UNIMPL case IP_RCVIF: */    case IP_TTL:    case IP_TOS:      if (optlen < sizeof(int)) {        err = EINVAL;      }      break;#if LWIP_IGMP    case IP_MULTICAST_TTL:      if (optlen < sizeof(u8_t)) {        err = EINVAL;      }      if (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_UDP) {        err = EAFNOSUPPORT;      }      break;    case IP_MULTICAST_IF:      if (optlen < sizeof(struct in_addr)) {        err = EINVAL;      }      if (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_UDP) {        err = EAFNOSUPPORT;      }      break;    case IP_MULTICAST_LOOP:      if (optlen < sizeof(u8_t)) {        err = EINVAL;      }      if (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_UDP) {        err = EAFNOSUPPORT;      }      break;    case IP_ADD_MEMBERSHIP:    case IP_DROP_MEMBERSHIP:      if (optlen < sizeof(struct ip_mreq)) {        err = EINVAL;      }      if (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_UDP) {        err = EAFNOSUPPORT;      }      break;#endif /* LWIP_IGMP */      default:        LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IP, UNIMPL: optname=0x%x, ..)\n",                    s, optname));        err = ENOPROTOOPT;    }  /* switch (optname) */    break;#if LWIP_TCP/* Level: IPPROTO_TCP */  case IPPROTO_TCP:    if (optlen < sizeof(int)) {      err = EINVAL;      break;    }    /* If this is no TCP socket, ignore any options. */    if (sock->conn->type != NETCONN_TCP)      return 0;    switch (optname) {    case TCP_NODELAY:    case TCP_KEEPALIVE:#if LWIP_TCP_KEEPALIVE    case TCP_KEEPIDLE:    case TCP_KEEPINTVL:    case TCP_KEEPCNT:#endif /* LWIP_TCP_KEEPALIVE */      break;    default:      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, UNIMPL: optname=0x%x, ..)\n",                  s, optname));      err = ENOPROTOOPT;    }  /* switch (optname) */    break;#endif /* LWIP_TCP */#if LWIP_UDP && LWIP_UDPLITE/* Level: IPPROTO_UDPLITE */  case IPPROTO_UDPLITE:    if (optlen < sizeof(int)) {      err = EINVAL;      break;    }    /* If this is no UDP lite socket, ignore any options. */    if (sock->conn->type != NETCONN_UDPLITE)      return 0;    switch (optname) {    case UDPLITE_SEND_CSCOV:    case UDPLITE_RECV_CSCOV:      break;    default:      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_UDPLITE, UNIMPL: optname=0x%x, ..)\n",                  s, optname));      err = ENOPROTOOPT;    }  /* switch (optname) */    break;#endif /* LWIP_UDP && LWIP_UDPLITE *//* UNDEFINED LEVEL */  default:    LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, level=0x%x, UNIMPL: optname=0x%x, ..)\n",                s, level, optname));    err = ENOPROTOOPT;  }  /* switch (level) */  if (err != ERR_OK) {    sock_set_errno(sock, err);    return -1;  }  /* Now do the actual option processing */  data.sock = sock;#ifdef LWIP_DEBUG  data.s = s;#endif /* LWIP_DEBUG */  data.level = level;  data.optname = optname;  data.optval = (void*)optval;  data.optlen = &optlen;  data.err = err;  tcpip_callback(lwip_setsockopt_internal, &data);  sys_arch_sem_wait(&sock->conn->op_completed, 0);  /* maybe lwip_setsockopt_internal has changed err */  err = data.err;  sock_set_errno(sock, err);  return err ? -1 : 0;}static voidlwip_setsockopt_internal(void *arg){  struct lwip_sock *sock;#ifdef LWIP_DEBUG  int s;#endif /* LWIP_DEBUG */  int level, optname;  const void *optval;  struct lwip_setgetsockopt_data *data;  LWIP_ASSERT("arg != NULL", arg != NULL);  data = (struct lwip_setgetsockopt_data*)arg;  sock = data->sock;#ifdef LWIP_DEBUG  s = data->s;#endif /* LWIP_DEBUG */  level = data->level;  optname = data->optname;  optval = data->optval;  switch (level) {/* Level: SOL_SOCKET */  case SOL_SOCKET:    switch (optname) {    /* The option flags */    case SO_BROADCAST:    /* UNIMPL case SO_DEBUG: */    /* UNIMPL case SO_DONTROUTE: */    case SO_KEEPALIVE:    /* UNIMPL case SO_OOBINCLUDE: */#if SO_REUSE    case SO_REUSEADDR:    case SO_REUSEPORT:#endif /* SO_REUSE */    /* UNIMPL case SO_USELOOPBACK: */      if (*(int*)optval) {        sock->conn->pcb.ip->so_options |= optname;      } else {        sock->conn->pcb.ip->so_options &= ~optname;      }      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, SOL_SOCKET, optname=0x%x, ..) -> %s\n",                  s, optname, (*(int*)optval?"on":"off")));      break;#if LWIP_SO_RCVTIMEO    case SO_RCVTIMEO:      netconn_set_recvtimeout(sock->conn, *(int*)optval);      break;#endif /* LWIP_SO_RCVTIMEO */#if LWIP_SO_RCVBUF    case SO_RCVBUF:      netconn_set_recvbufsize(sock->conn, *(int*)optval);      break;#endif /* LWIP_SO_RCVBUF */#if LWIP_UDP    case SO_NO_CHECK:      if (*(int*)optval) {        udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) | UDP_FLAGS_NOCHKSUM);      } else {        udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) & ~UDP_FLAGS_NOCHKSUM);      }      break;#endif /* LWIP_UDP */    default:      LWIP_ASSERT("unhandled optname", 0);      break;    }  /* switch (optname) */    break;/* Level: IPPROTO_IP */  case IPPROTO_IP:    switch (optname) {    case IP_TTL:      sock->conn->pcb.ip->ttl = (u8_t)(*(int*)optval);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IP, IP_TTL, ..) -> %d\n",                  s, sock->conn->pcb.ip->ttl));      break;    case IP_TOS:      sock->conn->pcb.ip->tos = (u8_t)(*(int*)optval);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IP, IP_TOS, ..)-> %d\n",                  s, sock->conn->pcb.ip->tos));      break;#if LWIP_IGMP    case IP_MULTICAST_TTL:      sock->conn->pcb.udp->ttl = (u8_t)(*(u8_t*)optval);      break;    case IP_MULTICAST_IF:      inet_addr_to_ipaddr(&sock->conn->pcb.udp->multicast_ip, (struct in_addr*)optval);      break;    case IP_MULTICAST_LOOP:      if (*(u8_t*)optval) {        udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) | UDP_FLAGS_MULTICAST_LOOP);      } else {        udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) & ~UDP_FLAGS_MULTICAST_LOOP);      }      break;    case IP_ADD_MEMBERSHIP:    case IP_DROP_MEMBERSHIP:      {        /* If this is a TCP or a RAW socket, ignore these options. */        struct ip_mreq *imr = (struct ip_mreq *)optval;        ip_addr_t if_addr;        ip_addr_t multi_addr;        inet_addr_to_ipaddr(&if_addr, &imr->imr_interface);        inet_addr_to_ipaddr(&multi_addr, &imr->imr_multiaddr);        if(optname == IP_ADD_MEMBERSHIP){          data->err = igmp_joingroup(&if_addr, &multi_addr);        } else {          data->err = igmp_leavegroup(&if_addr, &multi_addr);        }        if(data->err != ERR_OK) {          data->err = EADDRNOTAVAIL;        }      }      break;#endif /* LWIP_IGMP */    default:      LWIP_ASSERT("unhandled optname", 0);      break;    }  /* switch (optname) */    break;#if LWIP_TCP/* Level: IPPROTO_TCP */  case IPPROTO_TCP:    switch (optname) {    case TCP_NODELAY:      if (*(int*)optval) {        tcp_nagle_disable(sock->conn->pcb.tcp);      } else {        tcp_nagle_enable(sock->conn->pcb.tcp);      }      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_NODELAY) -> %s\n",                  s, (*(int *)optval)?"on":"off") );      break;    case TCP_KEEPALIVE:      sock->conn->pcb.tcp->keep_idle = (u32_t)(*(int*)optval);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPALIVE) -> %"U32_F"\n",                  s, sock->conn->pcb.tcp->keep_idle));      break;#if LWIP_TCP_KEEPALIVE    case TCP_KEEPIDLE:      sock->conn->pcb.tcp->keep_idle = 1000*(u32_t)(*(int*)optval);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPIDLE) -> %"U32_F"\n",                  s, sock->conn->pcb.tcp->keep_idle));      break;    case TCP_KEEPINTVL:      sock->conn->pcb.tcp->keep_intvl = 1000*(u32_t)(*(int*)optval);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPINTVL) -> %"U32_F"\n",                  s, sock->conn->pcb.tcp->keep_intvl));      break;    case TCP_KEEPCNT:      sock->conn->pcb.tcp->keep_cnt = (u32_t)(*(int*)optval);      LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPCNT) -> %"U32_F"\n",                  s, sock->conn->pcb.tcp->keep_cnt));      break;#endif /* LWIP_TCP_KEEPALIVE *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲麻豆av一区二区| 大美女一区二区三区| 欧美日韩国产成人在线免费| 樱桃视频在线观看一区| 欧美在线三级电影| 亚洲香肠在线观看| 欧美一卡二卡在线| 国产一区二三区| 国产精品情趣视频| 色哟哟亚洲精品| 日韩高清电影一区| 久久久另类综合| 成a人片亚洲日本久久| 亚洲免费观看高清完整| 欧美精品三级日韩久久| 久久成人久久爱| 国产精品视频在线看| 欧美日韩一区高清| 另类小说综合欧美亚洲| 国产精品伦理一区二区| 欧美日韩免费在线视频| 久久99日本精品| 亚洲三级在线播放| 日韩色在线观看| jizz一区二区| 三级在线观看一区二区| 国产欧美日韩另类一区| 欧美自拍丝袜亚洲| 国产一区二区成人久久免费影院 | 欧美一区二区三区的| 国产一区二区久久| 一区二区三区欧美激情| 精品99999| 欧美视频中文一区二区三区在线观看| 日产国产欧美视频一区精品| 欧美国产激情二区三区| 制服丝袜亚洲色图| 99在线精品视频| 久久精品国产免费| 亚洲综合视频网| 国产精品家庭影院| 精品国产99国产精品| 欧美性极品少妇| 成人高清在线视频| 久久国产成人午夜av影院| 夜夜嗨av一区二区三区四季av | 亚洲va国产va欧美va观看| 26uuu另类欧美亚洲曰本| 欧美色精品在线视频| 成人国产免费视频| 黄页网站大全一区二区| 亚洲大片在线观看| 亚洲精品免费一二三区| 中国av一区二区三区| 26uuu亚洲综合色欧美| 欧美日韩精品专区| 色拍拍在线精品视频8848| 国产精品一区二区久久不卡| 蜜臀av一级做a爰片久久| 亚洲va天堂va国产va久| 一区二区三区.www| 日韩一区在线看| 中文av字幕一区| 亚洲国产精品精华液2区45| 日韩欧美亚洲另类制服综合在线| 蜜桃视频在线观看一区| 日韩激情在线观看| 婷婷成人综合网| 亚洲午夜羞羞片| 亚洲综合色噜噜狠狠| 亚洲精品国产第一综合99久久| 国产精品水嫩水嫩| 国产精品欧美精品| 国产精品欧美经典| 专区另类欧美日韩| 亚洲精品亚洲人成人网| 亚洲免费成人av| 亚洲视频狠狠干| 亚洲精品国产成人久久av盗摄| 亚洲视频一区二区在线观看| 亚洲欧洲国产专区| 亚洲欧美激情一区二区| 悠悠色在线精品| 天堂成人免费av电影一区| 香蕉乱码成人久久天堂爱免费| 亚洲小说欧美激情另类| 青青国产91久久久久久| 麻豆一区二区三| 国产美女在线观看一区| 国产白丝网站精品污在线入口| 国产精品1024久久| caoporen国产精品视频| 在线视频观看一区| 欧美日韩成人高清| www久久精品| 欧美激情一区二区在线| 亚洲乱码国产乱码精品精的特点 | 欧美午夜片在线观看| 欧美丰满嫩嫩电影| 欧美精品一区二区久久久| 久久久久国产成人精品亚洲午夜| 国产女同性恋一区二区| 一区二区久久久久久| 亚洲电影一级黄| 久久国产精品第一页| 国产河南妇女毛片精品久久久| 不卡av免费在线观看| 欧美三级视频在线播放| 欧美r级在线观看| 中日韩av电影| 日韩av一区二区三区四区| 国内精品免费在线观看| 91网址在线看| 欧美一区二区大片| 国产精品国产a| 日本强好片久久久久久aaa| 国产伦精品一区二区三区免费| 99久久久久久| 欧美色图在线观看| 国产丝袜欧美中文另类| 亚洲一区在线电影| 国产乱人伦精品一区二区在线观看| youjizz久久| 欧美哺乳videos| 亚洲一二三专区| 成人一区二区三区中文字幕| 欧美人体做爰大胆视频| 国产精品污网站| 蜜臀精品一区二区三区在线观看| 91免费国产视频网站| 欧美成人猛片aaaaaaa| 亚洲在线成人精品| 成人av网站在线| 欧美变态凌虐bdsm| 偷偷要91色婷婷| 一本高清dvd不卡在线观看| 2024国产精品| 日本亚洲天堂网| 91国偷自产一区二区三区成为亚洲经典| 精品国产第一区二区三区观看体验| 亚洲综合在线五月| jizzjizzjizz欧美| 国产亚洲va综合人人澡精品| 婷婷亚洲久悠悠色悠在线播放 | 国产精品一区一区三区| 91麻豆精品国产91久久久久久久久 | 欧美午夜精品理论片a级按摩| 久久久噜噜噜久噜久久综合| 男人操女人的视频在线观看欧美| 91女神在线视频| 中文字幕av不卡| 国产xxx精品视频大全| 久久久综合视频| 蜜臀av亚洲一区中文字幕| 欧美美女视频在线观看| 亚洲二区视频在线| 色哟哟一区二区三区| 日韩理论片在线| 91日韩精品一区| 国产精品久久久久精k8 | 在线观看亚洲成人| 日韩理论片中文av| 99久久久久免费精品国产| 国产精品久久久久影院色老大 | 成人av综合在线| 国产日产欧美一区二区三区 | 99久久精品情趣| 中文字幕不卡在线| 成人黄色软件下载| 日韩伦理免费电影| 在线这里只有精品| 亚洲高清免费观看高清完整版在线观看| 日本精品视频一区二区| 一区二区成人在线视频| 欧美性生活影院| 天天综合日日夜夜精品| 91精品国产色综合久久不卡蜜臀| 日韩综合小视频| 欧美成人免费网站| 国产福利一区在线观看| 国产精品日日摸夜夜摸av| 成人激情视频网站| 亚洲图片激情小说| 欧美体内she精视频| 日本欧美一区二区在线观看| 日韩视频中午一区| 久久99精品一区二区三区 | 91看片淫黄大片一级在线观看| 亚洲欧洲精品一区二区三区| 在线精品视频小说1| 日本亚洲三级在线| 久久久久九九视频| 色婷婷综合久久久久中文一区二区| 一区二区久久久| 欧美一区二区三区男人的天堂| 国产一区二区伦理| 一区二区三区不卡视频在线观看 | 久久只精品国产| 一本色道久久综合精品竹菊| 日本成人在线网站|