📄 socket_bind6.c
字号:
#include <sys/param.h>#include "sockaddr_in6.h"#include "byte.h"#include "socket.h"#include "ip6.h"#include "haveip6.h"#include "error.h"int socket_bind6(int s,const char ip[16],uint16 port,uint32 scope_id){#ifdef LIBC_HAS_IP6 struct sockaddr_in6 sa; if (noipv6) {#endif int i; for (i=0; i<16; i++) if (ip[i]!=0) break; if (i==16 || ip6_isv4mapped(ip)) return socket_bind4(s,ip+12,port);#ifdef LIBC_HAS_IP6 } byte_zero(&sa,sizeof sa); sa.sin6_family = AF_INET6; uint16_pack_big((char *) &sa.sin6_port,port);/* implicit: sa.sin6_flowinfo = 0; */ byte_copy((char *) &sa.sin6_addr,16,ip); sa.sin6_scope_id=scope_id; return bind(s,(struct sockaddr *) &sa,sizeof sa);#else errno=error_proto; return -1;#endif}int socket_bind6_reuse(int s,const char ip[16],uint16 port,uint32 scope_id){ int opt = 1; setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof opt); return socket_bind6(s,ip,port,scope_id);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -