您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ sock_setsockopt函数代码示例

51自学网 2021-06-03 08:06:01
  C++
这篇教程C++ sock_setsockopt函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中sock_setsockopt函数的典型用法代码示例。如果您正苦于以下问题:C++ sock_setsockopt函数的具体用法?C++ sock_setsockopt怎么用?C++ sock_setsockopt使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了sock_setsockopt函数的24个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: syslog

void *app_glue_create_socket(int family,int type){	struct timeval tv;	struct socket *sock = NULL;	if(sock_create_kern(family,type,0,&sock)) {		syslog(LOG_ERR,"cannot create socket %s %d/n",__FILE__,__LINE__);		return NULL;	}	tv.tv_sec = -1;	tv.tv_usec = 0;	if(sock_setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(char *)&tv,sizeof(tv))) {		syslog(LOG_ERR,"%s %d cannot set notimeout option/n",__FILE__,__LINE__);	}	tv.tv_sec = -1;	tv.tv_usec = 0;	if(sock_setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char *)&tv,sizeof(tv))) {		syslog(LOG_ERR,"%s %d cannot set notimeout option/n",__FILE__,__LINE__);	}	if(type != SOCK_STREAM) {		if(sock->sk) {            		sock_reset_flag(sock->sk,SOCK_USE_WRITE_QUEUE);            		sock->sk->sk_data_ready = app_glue_sock_readable;            		sock->sk->sk_write_space = app_glue_sock_write_space;            		app_glue_sock_write_space(sock->sk);		}	}	return sock;}
开发者ID:jmmcgee,项目名称:ipaugenblick,代码行数:28,


示例2: sock_tcp_server

/* * sock_tcp_server() *  Initialize a tcp server socket. On success, a valid socket number will return. */int sock_tcp_server(const char *hostname, int port){    int oldfl = 0;    int sock;        /* create a socket */    if ((sock = sock_create("tcp")) < 0)	net_error("initialize server socket failed/n");    /* set it to non-blocking operation */    oldfl = fcntl(sock, F_GETFL, 0);    if (!(oldfl & O_NONBLOCK))	fcntl(sock, F_SETFL, oldfl | O_NONBLOCK);    /* setup for a fast restart to avoid bind addr in use errors */    sock_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, 1);        /* bind it to the appropriate port */    if ((sock_bind(sock, hostname, port)) == -1)	return -1;        /* go ahead and listen to the socket */    if (listen(sock, TCP_BACKLOG) != 0)	return -1;    return sock;}
开发者ID:mimirswell,项目名称:hqemu,代码行数:31,


示例3: ksetsockopt

int ksetsockopt(ksocket_t socket, int level, int optname, void *optval, int optlen){	struct socket *sk;	int ret;#ifndef KSOCKET_ADDR_SAFE	mm_segment_t old_fs;#endif	sk = (struct socket *)socket;#ifndef KSOCKET_ADDR_SAFE	old_fs = get_fs();	set_fs(KERNEL_DS);#endif	if (level == SOL_SOCKET)		ret = sock_setsockopt(sk, level, optname, optval, optlen);	else		ret = sk->ops->setsockopt(sk, level, optname, optval, optlen);#ifndef KSOCKET_ADDR_SAFE		set_fs(old_fs);#endif	return ret;}
开发者ID:jangsoopark,项目名称:Firewall-1,代码行数:26,


示例4: libcfs_sock_create

static intlibcfs_sock_create (cfs_socket_t **sockp, int *fatal,                    __u32 local_ip, int local_port){        struct sockaddr_in  locaddr;        cfs_socket_t    *sock;        int             option;        int             optlen;        int             rc;        /* All errors are fatal except bind failure if the port is in use */        *fatal = 1;        sock = _MALLOC(sizeof(cfs_socket_t), M_TEMP, M_WAITOK|M_ZERO);        if (!sock) {                CERROR("Can't allocate cfs_socket./n");                return -ENOMEM;        }        *sockp = sock;        sock->s_magic = CFS_SOCK_MAGIC;        rc = -sock_socket(PF_INET, SOCK_STREAM, 0,                           libcfs_sock_upcall, sock, &C2B_SOCK(sock));        if (rc != 0)                 goto out;        option = 1;        optlen = sizeof(option);        rc = -sock_setsockopt(C2B_SOCK(sock), SOL_SOCKET,                               SO_REUSEADDR, &option, optlen);        if (rc != 0)                goto out;        /* can't specify a local port without a local IP */        LASSERT (local_ip == 0 || local_port != 0);        if (local_ip != 0 || local_port != 0) {                bzero (&locaddr, sizeof (locaddr));                locaddr.sin_len = sizeof(struct sockaddr_in);                locaddr.sin_family = AF_INET;                locaddr.sin_port = htons (local_port);                locaddr.sin_addr.s_addr = (local_ip != 0) ? htonl(local_ip) : INADDR_ANY;                rc = -sock_bind(C2B_SOCK(sock), (struct sockaddr *)&locaddr);                if (rc == -EADDRINUSE) {                        CDEBUG(D_NET, "Port %d already in use/n", local_port);                        *fatal = 0;                        goto out;                }                if (rc != 0) {                        CERROR("Error trying to bind to port %d: %d/n",                               local_port, rc);                        goto out;                }        }        return 0;out:        if (C2B_SOCK(sock) != NULL)                 sock_close(C2B_SOCK(sock));        FREE(sock, M_TEMP);        return rc;}
开发者ID:DCteam,项目名称:lustre,代码行数:60,


示例5: setup_tcp

static int setup_tcp(void){	struct sockaddr_in saddr = {};	mm_segment_t fs;	int buffersize = PAGE_SIZE;	int ret;	ret = sock_create_kern(AF_INET, SOCK_STREAM, IPPROTO_TCP, &server);	if (unlikely(ret < 0)) {		DBG("error creating socket");		return ret;	}	saddr.sin_family = AF_INET;	saddr.sin_port = htons(tcp_port);	saddr.sin_addr.s_addr = INADDR_ANY;	fs = get_fs();	set_fs(KERNEL_DS);	ret = sock_setsockopt(server, SOL_SOCKET, SO_SNDBUF,			(void *)&buffersize, sizeof(buffersize));	set_fs(fs);	if (unlikely(ret < 0)) {		DBG("error setting buffsize");		goto out_err;	}	ret = server->ops->bind(server, (struct sockaddr *)&saddr,				sizeof(saddr));	if (unlikely(ret < 0)) {		DBG("error binding socket");		goto out_err;	}	ret = server->ops->listen(server, 1);	if (unlikely(ret < 0)) {		DBG("error listening on socket");		goto out_err;	}	ret = sock_create_kern(PF_INET, SOCK_STREAM, IPPROTO_TCP, &client);	if (ret < 0) {		DBG("error creating accept socket");		goto out_err;	}out:	return ret;out_err:	server->ops->shutdown(server, 0);	server->ops->release(server);	goto out;}
开发者ID:arighi,项目名称:android-kernel-programming,代码行数:55,


示例6: compat_sock_setsockopt

static int compat_sock_setsockopt(struct socket *sock, int level, int optname,				char __user *optval, unsigned int optlen){	if (optname == SO_ATTACH_FILTER)		return do_set_attach_filter(sock, level, optname,					    optval, optlen);	if (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO)		return do_set_sock_timeout(sock, level, optname, optval, optlen);	return sock_setsockopt(sock, level, optname, optval, optlen);}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:11,


示例7: send

int send(struct socket *sock, struct sockaddr_in *addr, void * data, int len){		struct msghdr msg;        struct iovec iov;        mm_segment_t oldfs;        int size = 0;	u_int32_t space;        if (sock->sk==NULL)           return 0;	int interface=1;	if(sock_setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char *)&interface,sizeof(interface))<0)		{		printk(KERN_WARNING "No Broadcast");		}        iov.iov_base = (char *) data;        iov.iov_len = len;	memset(&my_work->addr, 0, sizeof(struct sockaddr));        memset(&my_work->addr_send, 0, sizeof(struct sockaddr));        my_work->addr_send.sin_family = AF_INET;        //my_work->addr_send.sin_addr.s_addr = htonl(INADDR_SEND);        my_work->addr_send.sin_addr.s_addr = in_aton("255.255.255.255");	//sock->sk->sk_flags.SOCK_BROADCAST=1;        my_work->addr_send.sin_port = htons(CONNECT_PORT);	        msg.msg_flags = 0;        msg.msg_name = (void *) & my_work->addr_send;        msg.msg_namelen  = sizeof(struct sockaddr_in);        msg.msg_control = NULL;        msg.msg_controllen = 0;        msg.msg_iov = &iov;        msg.msg_iovlen = 1;        msg.msg_control = NULL;	if((space = sock_wspace(sock->sk))<len)	{		printk(KERN_INFO "ERROR");		return -ENOMEM;	}	sock_set_flag(my_work->sock_send,SOCK_BROADCAST); 	//sock->sk->broadcast=1;        oldfs = get_fs();        set_fs(KERNEL_DS);        size = sock_sendmsg(sock,&msg,len);	if(size<0)		printk(KERN_WARNING "ERROR SEND MSG:%d:",size);        set_fs(oldfs);//	printk(KERN_INFO MODULE_NAME":Message Sent from new program");	        return size;	}
开发者ID:praveenmg,项目名称:ADHOC-HELLO,代码行数:54,


示例8: inet_setsockopt

static int inet_setsockopt(struct socket *sock, int level, int optname,		    char *optval, int optlen){  	struct sock *sk = (struct sock *) sock->data;  	if (level == SOL_SOCKET)		return sock_setsockopt(sk,level,optname,optval,optlen);	if (sk->prot->setsockopt==NULL)		return(-EOPNOTSUPP);	else		return sk->prot->setsockopt(sk,level,optname,optval,optlen);}
开发者ID:abbshr,项目名称:Notes-HIT_computer_network,代码行数:11,


示例9: sim_sock_setsockopt

int sim_sock_setsockopt (struct SimSocket *socket, int level, int optname,			 const void *optval, int optlen){  struct socket *sock = (struct socket *)socket;  char *coptval = (char *)optval;  int err;  if (level == SOL_SOCKET)    err = sock_setsockopt(sock, level, optname, coptval, optlen);  else    err = sock->ops->setsockopt(sock, level, optname, coptval, optlen);  return err;}
开发者ID:ckw1375,项目名称:mptcp,代码行数:12,


示例10: _omni_sock_setsockopt

static int _omni_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, unsigned int optlen){	mm_segment_t oldfs = get_fs();	char __user *uoptval;	int err;	uoptval = (char __user __force *) optval;	set_fs(KERNEL_DS);	if (level == SOL_SOCKET)		err = sock_setsockopt(sock, level, optname, uoptval, optlen);	else		err = sock->ops->setsockopt(sock, level, optname, uoptval, optlen);	set_fs(oldfs);	return err;}
开发者ID:passedaway,项目名称:module,代码行数:16,


示例11: do_set_attach_filter

static int do_set_attach_filter(struct socket *sock, int level, int optname,				char __user *optval, unsigned int optlen){	struct compat_sock_fprog __user *fprog32 = (struct compat_sock_fprog __user *)optval;	struct sock_fprog __user *kfprog = compat_alloc_user_space(sizeof(struct sock_fprog));	compat_uptr_t ptr;	u16 len;	if (!access_ok(VERIFY_READ, fprog32, sizeof(*fprog32)) ||	    !access_ok(VERIFY_WRITE, kfprog, sizeof(struct sock_fprog)) ||	    __get_user(len, &fprog32->len) ||	    __get_user(ptr, &fprog32->filter) ||	    __put_user(len, &kfprog->len) ||	    __put_user(compat_ptr(ptr), &kfprog->filter))		return -EFAULT;	return sock_setsockopt(sock, level, optname, (char __user *)kfprog,			      sizeof(struct sock_fprog));}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:19,


示例12: do_set_sock_timeout

static int do_set_sock_timeout(struct socket *sock, int level,		int optname, char __user *optval, unsigned int optlen){	struct compat_timeval __user *up = (struct compat_timeval __user *)optval;	struct timeval ktime;	mm_segment_t old_fs;	int err;	if (optlen < sizeof(*up))		return -EINVAL;	if (!access_ok(VERIFY_READ, up, sizeof(*up)) ||	    __get_user(ktime.tv_sec, &up->tv_sec) ||	    __get_user(ktime.tv_usec, &up->tv_usec))		return -EFAULT;	old_fs = get_fs();	set_fs(KERNEL_DS);	err = sock_setsockopt(sock, level, optname, (char *)&ktime, sizeof(ktime));	set_fs(old_fs);	return err;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:21,


示例13: setup_tcp

int setup_tcp() {	struct sockaddr_in saddr;	int r;		mm_segment_t fs;	int buffsize = PAGE_SIZE;#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,5)	r = sock_create_kern(AF_INET, SOCK_STREAM, IPPROTO_TCP, &control);#else	r = sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &control);#endif    	if (r < 0) {		DBG("Error creating control socket");		return r;	}		memset(&saddr, 0, sizeof(saddr));		saddr.sin_family = AF_INET;   	saddr.sin_port = htons(port);   	if (localhostonly) {   		saddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);   	} else {		saddr.sin_addr.s_addr = htonl(INADDR_ANY);   	}		fs = get_fs();	set_fs(KERNEL_DS);	sock_setsockopt(control, SOL_SOCKET, SO_SNDBUF, (void *) &buffsize, sizeof (int));	set_fs(fs);	if (r < 0) {		DBG("Error setting buffsize %d", r);		return r;	}	r = control->ops->bind(control,(struct sockaddr*) &saddr,sizeof(saddr));	if (r < 0) {		DBG("Error binding control socket");		return r;	}	r = control->ops->listen(control,1);	if (r) {		DBG("Error listening on socket");		return r;	}#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,5)	r = sock_create_kern(PF_INET, SOCK_STREAM, IPPROTO_TCP, &accept);#else	r = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &accept);#endif    	if (r < 0) {		DBG("Error creating accept socket");		return r;	}	r = accept->ops->accept(control,accept,0);	if (r < 0) {		DBG("Error accepting socket");		return r;	}	return 0;}
开发者ID:renethio,项目名称:LiME,代码行数:73,


示例14: libcfs_sock_read

intlibcfs_sock_read (cfs_socket_t *sock, void *buffer, int nob, int timeout){        size_t          rcvlen;        int             rc;        cfs_duration_t  to = cfs_time_seconds(timeout);        cfs_time_t      then;        struct timeval  tv;        LASSERT(nob > 0);        for (;;) {                struct iovec  iov = {                        .iov_base = buffer,                        .iov_len  = nob                };                struct  msghdr  msg = {                        .msg_name       = NULL,                        .msg_namelen    = 0,                        .msg_iov        = &iov,                        .msg_iovlen     = 1,                        .msg_control    = NULL,                        .msg_controllen = 0,                        .msg_flags      = 0,                };                cfs_duration_usec(to, &tv);                rc = -sock_setsockopt(C2B_SOCK(sock), SOL_SOCKET, SO_RCVTIMEO,                                      &tv, sizeof(tv));                if (rc != 0) {                        CERROR("Can't set socket recv timeout "                                        "%ld.%06d: %d/n",                                        (long)tv.tv_sec, (int)tv.tv_usec, rc);                        return rc;                }                then = cfs_time_current();                rc = -sock_receive(C2B_SOCK(sock), &msg, 0, &rcvlen);                to -= cfs_time_current() - then;                if (rc != 0 && rc != -EWOULDBLOCK)                        return rc;                if (rcvlen == nob)                        return 0;                if (to <= 0)                        return -EAGAIN;                buffer = ((char *)buffer) + rcvlen;                nob -= rcvlen;        }        return 0;}intlibcfs_sock_write (cfs_socket_t *sock, void *buffer, int nob, int timeout){        size_t          sndlen;        int             rc;        cfs_duration_t  to = cfs_time_seconds(timeout);        cfs_time_t      then;        struct timeval  tv;        LASSERT(nob > 0);        for (;;) {                struct iovec  iov = {                        .iov_base = buffer,                        .iov_len  = nob                };                struct  msghdr  msg = {                        .msg_name       = NULL,                        .msg_namelen    = 0,                        .msg_iov        = &iov,                        .msg_iovlen     = 1,                        .msg_control    = NULL,                        .msg_controllen = 0,                        .msg_flags      = (timeout == 0) ? MSG_DONTWAIT : 0,                };                if (timeout != 0) {                        cfs_duration_usec(to, &tv);                        rc = -sock_setsockopt(C2B_SOCK(sock), SOL_SOCKET, SO_SNDTIMEO,                                              &tv, sizeof(tv));                        if (rc != 0) {                                CERROR("Can't set socket send timeout "                                       "%ld.%06d: %d/n",                                       (long)tv.tv_sec, (int)tv.tv_usec, rc);                                return rc;                        }                }                then = cfs_time_current();                rc = -sock_send(C2B_SOCK(sock), &msg,                                 ((timeout == 0) ? MSG_DONTWAIT : 0), &sndlen);                to -= cfs_time_current() - then;                if (rc != 0 && rc != -EWOULDBLOCK)                        return rc;                if (sndlen == nob)                        return 0;//.........这里部分代码省略.........
开发者ID:DCteam,项目名称:lustre,代码行数:101,


示例15: xi_lpx_connect

int xi_lpx_connect(xi_socket_t *oso, struct sockaddr_lpx daddr, struct sockaddr_lpx saddr, int timeoutsec){    xi_socket_t so = NULL;	errno_t	error;	struct timeval timeout;#ifndef __KPI_SOCKET__	struct sockopt sopt;	boolean_t funnel_state;#endif		*oso = NULL;		error = xi_sock_socket(AF_LPX, SOCK_STREAM, 0, NULL, NULL, &so);	if(error) {		DebugPrint(1, false, "socreate error %d/n", error);        goto bad;	}	error = xi_sock_bind(so, (struct sockaddr *) &saddr);		if(error) {		DebugPrint(1, false, "xi_lpx_connect: sobind error/n");		goto bad;	}#if 0    DebugPrint(4, false, "xi_lpx_connect to ");    for(i=0; i<6; i++)        DebugPrint(4, false, "02x ", daddr.slpx_node[i]);#endif	    error = xi_sock_connect(so, (struct sockaddr *)&daddr, 0);    if(error) {        DebugPrint(4, false, "soconnect error %d/n", error);        goto bad;    }		#ifndef __KPI_SOCKET__	do {//		struct sockaddr_lpx sin;		int s;				funnel_state = thread_funnel_set(network_flock, TRUE);				s = splnet();		while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {			//        IOLog("before sleep/n");			(void) tsleep((caddr_t)&so->so_timeo, PSOCK | PCATCH, "xiscsicon", 0);			//        IOLog("after sleep/n");			break;		}		//    IOLog("so->so_error = %d/n", so->so_error);		if (so->so_error) {			error = so->so_error;			so->so_error = 0;			splx(s);			goto bad;		}		splx(s);				(void) thread_funnel_set(network_flock, FALSE);			} while(0);#endif // __KPI_SOCKET__		*oso = so;	// Set Read Timeout.	timeout.tv_sec = timeoutsec;	timeout.tv_usec = 0;	#ifdef __KPI_SOCKET__	error = sock_setsockopt(							so,							SOL_SOCKET,							SO_RCVTIMEO,							&timeout,							sizeof(struct timeval)							); #else 	sopt.sopt_dir = SOPT_SET;	sopt.sopt_level = SOL_SOCKET;	sopt.sopt_name = SO_RCVTIMEO;	sopt.sopt_val = &timeout;	sopt.sopt_valsize = sizeof(struct timeval);	sopt.sopt_p = current_proc();		funnel_state = thread_funnel_set(network_flock, TRUE);		error = sosetopt(so, &sopt);	(void) thread_funnel_set(network_flock, FALSE);#endif	if(error) {        DebugPrint(1, false, "xi_lpx_connect: Can't set Receive Time out. error %d/n", error);				goto bad;		}		//.........这里部分代码省略.........
开发者ID:dansdrivers,项目名称:ndas4mac,代码行数:101,


示例16: krpc_call

/* * Do a remote procedure call (RPC) and wait for its reply. * If from_p is non-null, then we are doing broadcast, and * the address from whence the response came is saved there. */intkrpc_call(	struct sockaddr_in *sa,	u_int sotype, u_int prog, u_int vers, u_int func,	mbuf_t *data,			/* input/output */	struct sockaddr_in *from_p)	/* output */{	socket_t so;	struct sockaddr_in *sin;	mbuf_t m, nam, mhead;	struct rpc_call *call;	struct rpc_reply *reply;	int error, timo, secs;	size_t len;	static u_int32_t xid = ~0xFF;	u_int16_t tport;	size_t maxpacket = 1<<16;	/*	 * Validate address family.	 * Sorry, this is INET specific...	 */	if (sa->sin_family != AF_INET)		return (EAFNOSUPPORT);	/* Free at end if not null. */	nam = mhead = NULL;	/*	 * Create socket and set its recieve timeout.	 */	if ((error = sock_socket(AF_INET, sotype, 0, 0, 0, &so)))		goto out1;	{		struct timeval tv;		tv.tv_sec = 1;		tv.tv_usec = 0;		if ((error = sock_setsockopt(so, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))))		    goto out;	}	/*	 * Enable broadcast if necessary.	 */	if (from_p && (sotype == SOCK_DGRAM)) {		int on = 1;		if ((error = sock_setsockopt(so, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on))))			goto out;	}	/*	 * Bind the local endpoint to a reserved port,	 * because some NFS servers refuse requests from	 * non-reserved (non-privileged) ports.	 */	if ((error = mbuf_get(MBUF_WAITOK, MBUF_TYPE_SONAME, &m)))		goto out;	sin = mbuf_data(m);	bzero(sin, sizeof(*sin));	mbuf_setlen(m, sizeof(*sin));	sin->sin_len = sizeof(*sin);	sin->sin_family = AF_INET;	sin->sin_addr.s_addr = INADDR_ANY;	tport = IPPORT_RESERVED;	do {		tport--;		sin->sin_port = htons(tport);		error = sock_bind(so, (struct sockaddr*)sin);	} while (error == EADDRINUSE &&			 tport > IPPORT_RESERVED / 2);	mbuf_freem(m);	m = NULL;	if (error) {		printf("bind failed/n");		goto out;	}	/*	 * Setup socket address for the server.	 */	if ((error = mbuf_get(MBUF_WAITOK, MBUF_TYPE_SONAME, &nam)))		goto out;	sin = mbuf_data(nam);	mbuf_setlen(nam, sa->sin_len);	bcopy((caddr_t)sa, (caddr_t)sin, sa->sin_len);	if (sotype == SOCK_STREAM) {		struct timeval tv;		tv.tv_sec = 60;		tv.tv_usec = 0;//.........这里部分代码省略.........
开发者ID:argp,项目名称:xnu,代码行数:101,


示例17: pfq_setsockopt

//.........这里部分代码省略.........                CHECK_GROUP_ACCES(so->id, tmp.gid, "group computation");                if (copy_from_user(&psize, tmp.prog, sizeof(size_t)))                        return -EFAULT;                pr_devel("[PFQ|%d] computation size: %zu/n", so->id, psize);                ucsize = sizeof(size_t) * 2 + psize * sizeof(struct pfq_functional_descr);                descr = kmalloc(ucsize, GFP_KERNEL);                if (descr == NULL) {                        pr_devel("[PFQ|%d] computation: out of memory!/n", so->id);                        return -ENOMEM;                }                if (copy_from_user(descr, tmp.prog, ucsize)) {                        pr_devel("[PFQ|%d] computation: copy_from_user error!/n", so->id);                        kfree(descr);                        return -EFAULT;                }                /* print user computation */                pr_devel_computation_descr(descr);		/* ensure the correctness of the specified functional computation */		if (pfq_validate_computation_descr(descr) < 0) {                        pr_devel("[PFQ|%d] invalid expression!/n", so->id);                        return -EFAULT;		}                /* allocate context */                context = pfq_context_alloc(descr);                if (context == NULL) {                        pr_devel("[PFQ|%d] context: alloc error!/n", so->id);                        kfree(descr);                        return -EFAULT;                }                /* allocate struct pfq_computation_tree */                comp = pfq_computation_alloc(descr);                if (comp == NULL) {                        pr_devel("[PFQ|%d] computation: alloc error!/n", so->id);                        kfree(context);                        kfree(descr);                        return -EFAULT;                }                /* link the functional computation */                if (pfq_computation_rtlink(descr, comp, context) < 0) {                        pr_devel("[PFQ|%d] computation aborted!", so->id);			kfree(context);			kfree(descr);			kfree(comp);                        return -EPERM;                }		/* print executable tree data structure */		pr_devel_computation_tree(comp);		/* exec init functions */		if (pfq_computation_init(comp) < 0) {                        pr_devel("[PFQ|%d] computation initialization aborted!", so->id);                        kfree(context);                        kfree(descr);                        kfree(comp);                        return -EPERM;		}                /* set the new program */                if (pfq_set_group_prog(tmp.gid, comp, context) < 0) {                        pr_devel("[PFQ|%d] set group program error!/n", so->id);                        kfree(context);                        kfree(descr);                        kfree(comp);                        return -EPERM;                }		kfree(descr);                return 0;        } break;        default:        {                found = false;        } break;        }        return found ? 0 : sock_setsockopt(sock, level, optname, optval, optlen);}
开发者ID:prodigeni,项目名称:PFQ,代码行数:101,


示例18: pfq_setsockopt

//.........这里部分代码省略.........			return -EACCES;		}                if (copy_from_user(&psize, tmp.prog, sizeof(size_t)))                        return -EFAULT;                pr_devel("[PFQ|%d] computation size: %zu/n", so->id.value, psize);                ucsize = sizeof(size_t) * 2 + psize * sizeof(struct pfq_functional_descr);                descr = kmalloc(ucsize, GFP_KERNEL);                if (descr == NULL) {                        printk(KERN_INFO "[PFQ|%d] computation: out of memory!/n", so->id.value);                        return -ENOMEM;                }                if (copy_from_user(descr, tmp.prog, ucsize)) {                        printk(KERN_INFO "[PFQ|%d] computation: copy_from_user error!/n", so->id.value);                        err = -EFAULT;                        goto error;                }                /* print user computation */                pr_devel_computation_descr(descr);		/* check the correctness of computation */		if (pfq_check_computation_descr(descr) < 0) {                        printk(KERN_INFO "[PFQ|%d] invalid expression!/n", so->id.value);                        err = -EFAULT;                        goto error;		}                /* allocate context */                context = pfq_context_alloc(descr);                if (context == NULL) {                        printk(KERN_INFO "[PFQ|%d] context: alloc error!/n", so->id.value);                        err = -EFAULT;                        goto error;                }                /* allocate a pfq_computation_tree */                comp = pfq_computation_alloc(descr);                if (comp == NULL) {                        printk(KERN_INFO "[PFQ|%d] computation: alloc error!/n", so->id.value);                        err = -EFAULT;                        goto error;                }                /* link functions of computation */                if (pfq_computation_rtlink(descr, comp, context) < 0) {                        printk(KERN_INFO "[PFQ|%d] computation aborted!", so->id.value);                        err = -EPERM;                        goto error;                }		/* print executable tree data structure */		pr_devel_computation_tree(comp);		/* run init functions */		if (pfq_computation_init(comp) < 0) {                        printk(KERN_INFO "[PFQ|%d] initialization of computation aborted!", so->id.value);                        pfq_computation_fini(comp);                        err = -EPERM;                        goto error;		}                /* enable functional program */                if (pfq_set_group_prog(gid, comp, context) < 0) {                        printk(KERN_INFO "[PFQ|%d] set group program error!/n", so->id.value);                        err = -EPERM;                        goto error;                }		kfree(descr);                return 0;	error:  kfree(comp);		kfree(context);		kfree(descr);		return err;        } break;        default:        {                found = false;        } break;        }        return found ? 0 : sock_setsockopt(sock, level, optname, optval, optlen);}
开发者ID:sethhall,项目名称:PFQ,代码行数:101,


示例19: sys_socketcall

//.........这里部分代码省略.........				    get_fs_long(args+2)));	case SYS_LISTEN:		er=verify_area(VERIFY_READ, args, 2 * sizeof(long));		if(er)			return er;		return(sock_listen(get_fs_long(args+0),				   get_fs_long(args+1)));	case SYS_ACCEPT:		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));		if(er)			return er;		return(sock_accept(get_fs_long(args+0),				   (struct sockaddr *)get_fs_long(args+1),				   (int *)get_fs_long(args+2)));	case SYS_GETSOCKNAME:		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));		if(er)			return er;		return(sock_getsockname(get_fs_long(args+0),					(struct sockaddr *)get_fs_long(args+1),					(int *)get_fs_long(args+2)));	case SYS_GETPEERNAME:		er=verify_area(VERIFY_READ, args, 3 * sizeof(long));		if(er)			return er;		return(sock_getpeername(get_fs_long(args+0),					(struct sockaddr *)get_fs_long(args+1),					(int *)get_fs_long(args+2)));	case SYS_SOCKETPAIR:		er=verify_area(VERIFY_READ, args, 4 * sizeof(long));		if(er)			return er;		return(sock_socketpair(get_fs_long(args+0),				       get_fs_long(args+1),				       get_fs_long(args+2),				       (unsigned long *)get_fs_long(args+3)));	case SYS_SEND:		er=verify_area(VERIFY_READ, args, 4 * sizeof(unsigned long));		if(er)			return er;		return(sock_send(get_fs_long(args+0),				 (void *)get_fs_long(args+1),				 get_fs_long(args+2),				 get_fs_long(args+3)));	case SYS_SENDTO:		er=verify_area(VERIFY_READ, args, 6 * sizeof(unsigned long));		if(er)			return er;		return(sock_sendto(get_fs_long(args+0),				   (void *)get_fs_long(args+1),				   get_fs_long(args+2),				   get_fs_long(args+3),				   (struct sockaddr *)get_fs_long(args+4),				   get_fs_long(args+5)));	case SYS_RECV:		er=verify_area(VERIFY_READ, args, 4 * sizeof(unsigned long));		if(er)			return er;		return(sock_recv(get_fs_long(args+0),				 (void *)get_fs_long(args+1),				 get_fs_long(args+2),				 get_fs_long(args+3)));	case SYS_RECVFROM:		er=verify_area(VERIFY_READ, args, 6 * sizeof(unsigned long));		if(er)			return er;		return(sock_recvfrom(get_fs_long(args+0),				     (void *)get_fs_long(args+1),				     get_fs_long(args+2),				     get_fs_long(args+3),				     (struct sockaddr *)get_fs_long(args+4),				     (int *)get_fs_long(args+5)));	case SYS_SHUTDOWN:		er=verify_area(VERIFY_READ, args, 2* sizeof(unsigned long));		if(er)			return er;		return(sock_shutdown(get_fs_long(args+0),				     get_fs_long(args+1)));	case SYS_SETSOCKOPT:		er=verify_area(VERIFY_READ, args, 5*sizeof(unsigned long));		if(er)			return er;		return(sock_setsockopt(get_fs_long(args+0),				       get_fs_long(args+1),				       get_fs_long(args+2),				       (char *)get_fs_long(args+3),				       get_fs_long(args+4)));	case SYS_GETSOCKOPT:		er=verify_area(VERIFY_READ, args, 5*sizeof(unsigned long));		if(er)			return er;		return(sock_getsockopt(get_fs_long(args+0),				       get_fs_long(args+1),				       get_fs_long(args+2),				       (char *)get_fs_long(args+3),				       (int *)get_fs_long(args+4)));	default:		return(-EINVAL);  }}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:101,


示例20: ksocknal_lib_send_iov

//.........这里部分代码省略.........                *txmem = *rxmem = *nagle = 0;                return (-ESHUTDOWN);        }        rc = libcfs_sock_getbuf(conn->ksnc_sock, txmem, rxmem);        if (rc == 0) {                len = sizeof(*nagle);                rc = -sock_getsockopt(sock, IPPROTO_TCP, TCP_NODELAY,                                      nagle, &len);        }        ksocknal_connsock_decref(conn);        if (rc == 0)                *nagle = !*nagle;        else                *txmem = *rxmem = *nagle = 0;        return (rc);}intksocknal_lib_setup_sock (cfs_socket_t *sock){        int             rc;         int             option;         int             keep_idle;         int             keep_intvl;         int             keep_count;         int             do_keepalive;         socket_t        so = C2B_SOCK(sock);        struct linger   linger;        /* Ensure this socket aborts active sends immediately when we close         * it. */        linger.l_onoff = 0;        linger.l_linger = 0;        rc = -sock_setsockopt(so, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger));        if (rc != 0) {                CERROR ("Can't set SO_LINGER: %d/n", rc);                return (rc);        }        if (!*ksocknal_tunables.ksnd_nagle) {                 option = 1;                 rc = -sock_setsockopt(so, IPPROTO_TCP, TCP_NODELAY, &option, sizeof(option));                if (rc != 0) {                         CERROR ("Can't disable nagle: %d/n", rc);                         return (rc);                }         }         rc = libcfs_sock_setbuf(sock,                                *ksocknal_tunables.ksnd_tx_buffer_size,                                *ksocknal_tunables.ksnd_rx_buffer_size);        if (rc != 0) {                CERROR ("Can't set buffer tx %d, rx %d buffers: %d/n",                        *ksocknal_tunables.ksnd_tx_buffer_size,                        *ksocknal_tunables.ksnd_rx_buffer_size, rc);                return (rc);        }        /* snapshot tunables */         keep_idle  = *ksocknal_tunables.ksnd_keepalive_idle;         keep_count = *ksocknal_tunables.ksnd_keepalive_count;         keep_intvl = *ksocknal_tunables.ksnd_keepalive_intvl;        do_keepalive = (keep_idle > 0 && keep_count > 0 && keep_intvl > 0);         option = (do_keepalive ? 1 : 0);         rc = -sock_setsockopt(so, SOL_SOCKET, SO_KEEPALIVE, &option, sizeof(option));         if (rc != 0) {                 CERROR ("Can't set SO_KEEPALIVE: %d/n", rc);                 return (rc);        }                if (!do_keepalive)                return (rc);        rc = -sock_setsockopt(so, IPPROTO_TCP, TCP_KEEPALIVE,                               &keep_idle, sizeof(keep_idle));                return (rc);}voidksocknal_lib_push_conn(ksock_conn_t *conn){         socket_t        sock;         int             val = 1;         int             rc;                 rc = ksocknal_connsock_addref(conn);         if (rc != 0)            /* being shut down */                 return;         sock = C2B_SOCK(conn->ksnc_sock);         rc = -sock_setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));         LASSERT(rc == 0);        ksocknal_connsock_decref(conn);        return;}
开发者ID:ORNL-TechInt,项目名称:lustre,代码行数:101,


示例21: process_commands

//.........这里部分代码省略.........           if(socket_satelite_data[cmd->ringset_idx].socket) {               if(!socket_satelite_data[cmd->ringset_idx].socket->buffers_available_notification_queue_present) {                   TAILQ_INSERT_TAIL(&buffers_available_notification_socket_list_head,socket_satelite_data[cmd->ringset_idx].socket,buffers_available_notification_queue_entry);                   socket_satelite_data[cmd->ringset_idx].socket->buffers_available_notification_queue_present = 1;		   if(socket_satelite_data[cmd->ringset_idx].socket->type == SOCK_DGRAM)		   	user_set_socket_tx_space(&g_ipaugenblick_sockets[socket_satelite_data[cmd->ringset_idx].ringset_idx].tx_space,sk_stream_wspace(socket_satelite_data[cmd->ringset_idx].socket->sk));               }           }           break;	case IPAUGENBLICK_ROUTE_ADD_COMMAND:   	   memset((void *)&rtentry,0,sizeof(rtentry));	   rtentry.rt_metric = cmd->u.route.metric;	   rtentry.rt_flags = RTF_UP|RTF_GATEWAY;	   p_sockaddr = (struct sockaddr_in *)&rtentry.rt_dst;	   p_sockaddr->sin_family = AF_INET;           p_sockaddr->sin_addr.s_addr = cmd->u.route.dest_ipaddr;	   p_sockaddr = (struct sockaddr_in *)&rtentry.rt_gateway;	   p_sockaddr->sin_family = AF_INET;           p_sockaddr->sin_addr.s_addr = cmd->u.route.next_hop;	   p_sockaddr = (struct sockaddr_in *)&rtentry.rt_genmask;	   p_sockaddr->sin_family = AF_INET;           p_sockaddr->sin_addr.s_addr = cmd->u.route.dest_mask;	   if(ip_rt_ioctl(&init_net,SIOCADDRT,&rtentry)) {		ipaugenblick_log(IPAUGENBLICK_LOG_ERR,"CANNOT ADD ROUTE ENTRY %x %x %x/n",			((struct sockaddr_in *)&rtentry.rt_dst)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_gateway)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_genmask)->sin_addr.s_addr);	   }	   else {		ipaugenblick_log(IPAUGENBLICK_LOG_INFO,"ROUTE ENTRY %x %x %x is added/n",			((struct sockaddr_in *)&rtentry.rt_dst)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_gateway)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_genmask)->sin_addr.s_addr);	   }	   break;    	case IPAUGENBLICK_ROUTE_DEL_COMMAND:	   memset((void *)&rtentry,0,sizeof(rtentry));	   p_sockaddr = (struct sockaddr_in *)&rtentry.rt_dst;	   p_sockaddr->sin_family = AF_INET;           p_sockaddr->sin_addr.s_addr = cmd->u.route.dest_ipaddr;	   p_sockaddr = (struct sockaddr_in *)&rtentry.rt_gateway;	   p_sockaddr->sin_family = AF_INET;           p_sockaddr->sin_addr.s_addr = cmd->u.route.next_hop;	   p_sockaddr = (struct sockaddr_in *)&rtentry.rt_genmask;	   p_sockaddr->sin_family = AF_INET;           p_sockaddr->sin_addr.s_addr = cmd->u.route.dest_mask;	   if(ip_rt_ioctl(&init_net,SIOCDELRT,&rtentry)) {		ipaugenblick_log(IPAUGENBLICK_LOG_ERR,"CANNOT DELETE ROUTE ENTRY %x %x %x/n",			((struct sockaddr_in *)&rtentry.rt_dst)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_gateway)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_genmask)->sin_addr.s_addr);	   }	   else {		ipaugenblick_log(IPAUGENBLICK_LOG_INFO,"ROUTE ENTRY %x %x %x is deleted/n",			((struct sockaddr_in *)&rtentry.rt_dst)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_gateway)->sin_addr.s_addr,			((struct sockaddr_in *)&rtentry.rt_genmask)->sin_addr.s_addr);	   }	   break;	case IPAUGENBLICK_CONNECT_CLIENT:	   if(cmd->ringset_idx >= IPAUGENBLICK_CLIENTS_POOL_SIZE) {		break;	   }	   if(!ipaugenblick_clients[cmd->ringset_idx].is_busy) {	   	TAILQ_INSERT_TAIL(&ipaugenblick_clients_list_head,&ipaugenblick_clients[cmd->ringset_idx],queue_entry);		ipaugenblick_clients[cmd->ringset_idx].is_busy = 1;		on_client_connect(cmd->ringset_idx);	   }	   break;	case IPAUGENBLICK_DISCONNECT_CLIENT:	   if(cmd->ringset_idx >= IPAUGENBLICK_CLIENTS_POOL_SIZE) {		break;	   }	   if(ipaugenblick_clients[cmd->ringset_idx].is_busy) {	   	TAILQ_REMOVE(&ipaugenblick_clients_list_head,&ipaugenblick_clients[cmd->ringset_idx],queue_entry);		ipaugenblick_clients[cmd->ringset_idx].is_busy = 0;	   }	   break;	case IPAUGENBLICK_SETSOCKOPT_COMMAND:	   if(socket_satelite_data[cmd->ringset_idx].socket) { 	   	sock_setsockopt(socket_satelite_data[cmd->ringset_idx].socket, cmd->u.setsockopt.level, cmd->u.setsockopt.optname, cmd->u.setsockopt.optval, cmd->u.setsockopt.optlen);	   }	   break;	case IPAUGENBLICK_SOCKET_SHUTDOWN_COMMAND:	   if(socket_satelite_data[cmd->ringset_idx].socket) {		inet_shutdown(socket_satelite_data[cmd->ringset_idx].socket, cmd->u.socket_shutdown.how);		user_sockets_shutdown++;	   }	   break;	case IPAUGENBLICK_SOCKET_DECLINE_COMMAND:	   user_flush_rx_tx((struct socket *)cmd->u.socket_decline.socket_descr);	   app_glue_close_socket((struct socket *)cmd->u.socket_decline.socket_descr);	   user_sockets_closed++;	   break;        default:           ipaugenblick_log(IPAUGENBLICK_LOG_ERR,"unknown cmd %d/n",cmd->cmd);           break;    }    ipaugenblick_free_command_buf(cmd);}
开发者ID:Lanyaaki,项目名称:ipaugenblick,代码行数:101,


示例22: pfq_setsockopt

//.........这里部分代码省略.........			return -EACCES;		}                if (copy_from_user(&psize, tmp.prog, sizeof(size_t)))                        return -EFAULT;                pr_devel("[PFQ|%d] computation size: %zu/n", so->id, psize);                ucsize = sizeof(size_t) * 2 + psize * sizeof(struct pfq_lang_functional_descr);                descr = kmalloc(ucsize, GFP_KERNEL);                if (descr == NULL) {                        printk(KERN_INFO "[PFQ|%d] computation: out of memory!/n", so->id);                        return -ENOMEM;                }                if (copy_from_user(descr, tmp.prog, ucsize)) {                        printk(KERN_INFO "[PFQ|%d] computation: copy_from_user error!/n", so->id);                        err = -EFAULT;                        goto error;                }                /* print user computation */                pr_devel_computation_descr(descr);		/* check the correctness of computation */		if (pfq_lang_check_computation_descr(descr) < 0) {                        printk(KERN_INFO "[PFQ|%d] invalid expression!/n", so->id);                        err = -EFAULT;                        goto error;		}                /* allocate context */                context = pfq_lang_context_alloc(descr);                if (context == NULL) {                        printk(KERN_INFO "[PFQ|%d] context: alloc error!/n", so->id);                        err = -EFAULT;                        goto error;                }                /* allocate a pfq_lang_computation_tree */                comp = pfq_lang_computation_alloc(descr);                if (comp == NULL) {                        printk(KERN_INFO "[PFQ|%d] computation: alloc error!/n", so->id);                        err = -EFAULT;                        goto error;                }                /* link functions of computation */                if (pfq_lang_computation_rtlink(descr, comp, context) < 0) {                        printk(KERN_INFO "[PFQ|%d] computation aborted!", so->id);                        err = -EPERM;                        goto error;                }		/* print executable tree data structure */		pr_devel_computation_tree(comp);		/* run init functions */		if (pfq_lang_computation_init(comp) < 0) {                        printk(KERN_INFO "[PFQ|%d] initialization of computation aborted!", so->id);                        pfq_lang_computation_destruct(comp);                        err = -EPERM;                        goto error;		}                /* enable functional program */                if (pfq_set_group_prog(gid, comp, context) < 0) {                        printk(KERN_INFO "[PFQ|%d] set group program error!/n", so->id);                        err = -EPERM;                        goto error;                }		kfree(descr);                return 0;	error:  kfree(comp);		kfree(context);		kfree(descr);		return err;        } break;        default:        {                found = false;        } break;        }        return found ? 0 : sock_setsockopt(sock, level, optname, optval, optlen);}
开发者ID:bullno1,项目名称:PFQ,代码行数:101,


示例23: ksocknal_lib_setup_sock

intksocknal_lib_setup_sock (struct socket *sock){	mm_segment_t    oldmm = get_fs ();	int	     rc;	int	     option;	int	     keep_idle;	int	     keep_intvl;	int	     keep_count;	int	     do_keepalive;	struct linger   linger;	sock->sk->sk_allocation = GFP_NOFS;	/* Ensure this socket aborts active sends immediately when we close	 * it. */	linger.l_onoff = 0;	linger.l_linger = 0;	set_fs (KERNEL_DS);	rc = sock_setsockopt (sock, SOL_SOCKET, SO_LINGER,			      (char *)&linger, sizeof (linger));	set_fs (oldmm);	if (rc != 0) {		CERROR ("Can't set SO_LINGER: %d/n", rc);		return (rc);	}	option = -1;	set_fs (KERNEL_DS);	rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_LINGER2,				    (char *)&option, sizeof (option));	set_fs (oldmm);	if (rc != 0) {		CERROR ("Can't set SO_LINGER2: %d/n", rc);		return (rc);	}	if (!*ksocknal_tunables.ksnd_nagle) {		option = 1;		set_fs (KERNEL_DS);		rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_NODELAY,					    (char *)&option, sizeof (option));		set_fs (oldmm);		if (rc != 0) {			CERROR ("Can't disable nagle: %d/n", rc);			return (rc);		}	}	rc = libcfs_sock_setbuf(sock,				*ksocknal_tunables.ksnd_tx_buffer_size,				*ksocknal_tunables.ksnd_rx_buffer_size);	if (rc != 0) {		CERROR ("Can't set buffer tx %d, rx %d buffers: %d/n",			*ksocknal_tunables.ksnd_tx_buffer_size,			*ksocknal_tunables.ksnd_rx_buffer_size, rc);		return (rc);	}/* TCP_BACKOFF_* sockopt tunables unsupported in stock kernels */	/* snapshot tunables */	keep_idle  = *ksocknal_tunables.ksnd_keepalive_idle;	keep_count = *ksocknal_tunables.ksnd_keepalive_count;	keep_intvl = *ksocknal_tunables.ksnd_keepalive_intvl;	do_keepalive = (keep_idle > 0 && keep_count > 0 && keep_intvl > 0);	option = (do_keepalive ? 1 : 0);	set_fs (KERNEL_DS);	rc = sock_setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE,			      (char *)&option, sizeof (option));	set_fs (oldmm);	if (rc != 0) {		CERROR ("Can't set SO_KEEPALIVE: %d/n", rc);		return (rc);	}	if (!do_keepalive)		return (0);	set_fs (KERNEL_DS);	rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPIDLE,				    (char *)&keep_idle, sizeof (keep_idle));	set_fs (oldmm);	if (rc != 0) {		CERROR ("Can't set TCP_KEEPIDLE: %d/n", rc);		return (rc);	}	set_fs (KERNEL_DS);	rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPINTVL,				    (char *)&keep_intvl, sizeof (keep_intvl));	set_fs (oldmm);	if (rc != 0) {		CERROR ("Can't set TCP_KEEPINTVL: %d/n", rc);		return (rc);//.........这里部分代码省略.........
开发者ID:7799,项目名称:linux,代码行数:101,


示例24: system_cloud_connect

//.........这里部分代码省略.........        switch (a->ai_family) {            case AF_INET: {                inet_inet_ntop(a->ai_family, &((sockaddr_in*)a->ai_addr)->sin_addr, serverHost, sizeof(serverHost));                serverPort = ntohs(((sockaddr_in*)a->ai_addr)->sin_port);                break;            }            case AF_INET6: {                inet_inet_ntop(a->ai_family, &((sockaddr_in6*)a->ai_addr)->sin6_addr, serverHost, sizeof(serverHost));                serverPort = ntohs(((sockaddr_in6*)a->ai_addr)->sin6_port);                break;            }        }        LOG(INFO, "Cloud socket=%d, connecting to %s#%u", s, serverHost, serverPort);        /* We are using fixed source port only for IPv6 connections */        if (protocol == IPPROTO_UDP && a->ai_family == AF_INET6) {            struct sockaddr_storage saddr = {};            saddr.s2_len = sizeof(saddr);            saddr.ss_family = a->ai_family;            /* NOTE: Always binding to 5684 by default */            switch (a->ai_family) {                case AF_INET: {                    ((sockaddr_in*)&saddr)->sin_port = htons(PORT_COAPS);                    break;                }                case AF_INET6: {                    ((sockaddr_in6*)&saddr)->sin6_port = htons(PORT_COAPS);                    break;                }            }            const int one = 1;            if (sock_setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one))) {                LOG(ERROR, "Cloud socket=%d, failed to set SO_REUSEADDR, errno=%d", s, errno);                sock_close(s);                continue;            }            /* Bind socket */            if (sock_bind(s, (const struct sockaddr*)&saddr, sizeof(saddr))) {                LOG(ERROR, "Cloud socket=%d, failed to bind, errno=%d");                sock_close(s);                continue;            }        }        /* FIXME: timeout for TCP */        /* NOTE: we do this for UDP sockets as well in order to automagically filter         * on source address and port */        r = sock_connect(s, a->ai_addr, a->ai_addrlen);        if (r) {            LOG(ERROR, "Cloud socket=%d, failed to connect to %s#%u, errno=%d", s, serverHost, serverPort, errno);            sock_close(s);            continue;        }        LOG(TRACE, "Cloud socket=%d, connected to %s#%u", s, serverHost, serverPort);        /* If we got here, we are most likely connected, however keep track of current addrinfo list         * in order to try the next address if application layer fails to establish the connection         */        if (protocol == IPPROTO_UDP &&            (type == CLOUD_SERVER_ADDRESS_TYPE_NEW_ADDRINFO ||             type == CLOUD_SERVER_ADDRESS_TYPE_CACHED_ADDRINFO)) {            if (s_state.addr) {                /* We are already iterating over a cached addrinfo list */
开发者ID:spark,项目名称:firmware,代码行数:67,



注:本文中的sock_setsockopt函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ sock_sndtimeo函数代码示例
C++ sock_send函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。