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

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

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

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

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

示例1: nr_queue_rx_frame

static int nr_queue_rx_frame(struct sock *sk, struct sk_buff *skb, int more){	struct sk_buff *skbo, *skbn = skb;	skb_pull(skb, NR_NETWORK_LEN + NR_TRANSPORT_LEN);	nr_start_idletimer(sk);	if (more) {		sk->protinfo.nr->fraglen += skb->len;		skb_queue_tail(&sk->protinfo.nr->frag_queue, skb);		return 0;	}	if (!more && sk->protinfo.nr->fraglen > 0) {	/* End of fragment */		sk->protinfo.nr->fraglen += skb->len;		skb_queue_tail(&sk->protinfo.nr->frag_queue, skb);		if ((skbn = alloc_skb(sk->protinfo.nr->fraglen, GFP_ATOMIC)) == NULL)			return 1;		skbn->h.raw = skbn->data;		while ((skbo = skb_dequeue(&sk->protinfo.nr->frag_queue)) != NULL) {			memcpy(skb_put(skbn, skbo->len), skbo->data, skbo->len);			kfree_skb(skbo);		}		sk->protinfo.nr->fraglen = 0;			}	return sock_queue_rcv_skb(sk, skbn);}
开发者ID:JBTech,项目名称:ralink_rt5350,代码行数:33,


示例2: raw_rcv

static void raw_rcv(struct sk_buff *skb, void *data){	struct sock *sk = (struct sock *)data;	struct raw_sock *ro = raw_sk(sk);	struct sockaddr_can *addr;	/* check the received tx sock reference */	if ((!ro->recv_own_msgs) && (skb->sk == sk))		return;	/* clone the given skb to be able to enqueue it into the rcv queue */	skb = skb_clone(skb, GFP_ATOMIC);	if (!skb)		return;	/*	 *  Put the datagram to the queue so that raw_recvmsg() can	 *  get it from there.  We need to pass the interface index to	 *  raw_recvmsg().  We pass a whole struct sockaddr_can in skb->cb	 *  containing the interface index.	 */	BUILD_BUG_ON(sizeof(skb->cb) < sizeof(struct sockaddr_can));	addr = (struct sockaddr_can *)skb->cb;	memset(addr, 0, sizeof(*addr));	addr->can_family  = AF_CAN;	addr->can_ifindex = skb->dev->ifindex;	if (sock_queue_rcv_skb(sk, skb) < 0)		kfree_skb(skb);}
开发者ID:hermixy,项目名称:SocketCAN,代码行数:31,


示例3: raw_rcv

static void raw_rcv(struct sk_buff *oskb, void *data){	struct sock *sk = (struct sock *)data;	struct raw_sock *ro = raw_sk(sk);	struct sockaddr_can *addr;	struct sk_buff *skb;	unsigned int *pflags;		if (!ro->recv_own_msgs && oskb->sk == sk)		return;		skb = skb_clone(oskb, GFP_ATOMIC);	if (!skb)		return;	BUILD_BUG_ON(sizeof(skb->cb) < sizeof(struct sockaddr_can));	addr = (struct sockaddr_can *)skb->cb;	memset(addr, 0, sizeof(*addr));	addr->can_family  = AF_CAN;	addr->can_ifindex = skb->dev->ifindex;		pflags = raw_flags(skb);	*pflags = 0;	if (oskb->sk)		*pflags |= MSG_DONTROUTE;	if (oskb->sk == sk)		*pflags |= MSG_CONFIRM;	if (sock_queue_rcv_skb(sk, skb) < 0)		kfree_skb(skb);}
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:35,


示例4: l2cap_data_channel

static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb){	struct sock *sk;	sk = l2cap_get_chan_by_scid(&conn->chan_list, cid);	if (!sk) {		BT_DBG("unknown cid 0x%4.4x", cid);		goto drop;	}	BT_DBG("sk %p, len %d", sk, skb->len);	if (sk->state != BT_CONNECTED)		goto drop;	if (l2cap_pi(sk)->imtu < skb->len)		goto drop;	/* If socket recv buffers overflows we drop data here 	 * which is *bad* because L2CAP has to be reliable. 	 * But we don't have any other choice. L2CAP doesn't 	 * provide flow control mechanism */ 		if (!sock_queue_rcv_skb(sk, skb))		goto done;drop:	kfree_skb(skb);done:	if (sk) bh_unlock_sock(sk);	return 0;}
开发者ID:JBTech,项目名称:ralink_rt5350,代码行数:33,


示例5: l2cap_conless_channel

static inline int l2cap_conless_channel(struct l2cap_conn *conn, __u16 psm, struct sk_buff *skb){	struct sock *sk;	sk = l2cap_get_sock_by_psm(0, psm, conn->src);	if (!sk)		goto drop;	BT_DBG("sk %p, len %d", sk, skb->len);	if (sk->state != BT_BOUND && sk->state != BT_CONNECTED)		goto drop;	if (l2cap_pi(sk)->imtu < skb->len)		goto drop;	if (!sock_queue_rcv_skb(sk, skb))		goto done;drop:	kfree_skb(skb);done:	if (sk) bh_unlock_sock(sk);	return 0;}
开发者ID:JBTech,项目名称:ralink_rt5350,代码行数:26,


示例6: rawsock_data_exchange_complete

static void rawsock_data_exchange_complete(void *context, struct sk_buff *skb,								int err){	struct sock *sk = (struct sock *) context;	BUG_ON(in_irq());	nfc_dbg("sk=%p err=%d", sk, err);	if (err)		goto error;	err = rawsock_add_header(skb);	if (err)		goto error;	err = sock_queue_rcv_skb(sk, skb);	if (err)		goto error;	spin_lock_bh(&sk->sk_write_queue.lock);	if (!skb_queue_empty(&sk->sk_write_queue))		schedule_work(&nfc_rawsock(sk)->tx_work);	else		nfc_rawsock(sk)->tx_work_scheduled = false;	spin_unlock_bh(&sk->sk_write_queue.lock);	sock_put(sk);	return;error:	rawsock_report_error(sk, err);	sock_put(sk);}
开发者ID:Andrew-Gazizov,项目名称:linux-3.2.1-kpp,代码行数:34,


示例7: pn_backlog_rcv

/* Queue an skb for a sock. */static int pn_backlog_rcv(struct sock *sk, struct sk_buff *skb){	int err = sock_queue_rcv_skb(sk, skb);	if (err < 0)		kfree_skb(skb);	return err ? NET_RX_DROP : NET_RX_SUCCESS;}
开发者ID:3null,项目名称:linux,代码行数:9,


示例8: ax25_rx_iframe

/* *	This is where all valid I frames are sent to, to be dispatched to *	whichever protocol requires them. */int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb){	int (*func)(struct sk_buff *, ax25_cb *);	volatile int queued = 0;	unsigned char pid;	if (skb == NULL) return 0;	ax25_start_idletimer(ax25);	pid = *skb->data;#ifdef CONFIG_INET	if (pid == AX25_P_IP) {		/* working around a TCP bug to keep additional listeners		 * happy. TCP re-uses the buffer and destroys the original		 * content.		 */		struct sk_buff *skbn = skb_copy(skb, GFP_ATOMIC);		if (skbn != NULL) {			kfree_skb(skb);			skb = skbn;		}		skb_pull(skb, 1);	/* Remove PID */		skb->h.raw    = skb->data;		skb->nh.raw   = skb->data;		skb->dev      = ax25->ax25_dev->dev;		skb->pkt_type = PACKET_HOST;		skb->protocol = htons(ETH_P_IP);		ip_rcv(skb, skb->dev, NULL);	/* Wrong ptype */		return 1;	}#endif	if (pid == AX25_P_SEGMENT) {		skb_pull(skb, 1);	/* Remove PID */		return ax25_rx_fragment(ax25, skb);	}	if ((func = ax25_protocol_function(pid)) != NULL) {		skb_pull(skb, 1);	/* Remove PID */		return (*func)(skb, ax25);	}	if (ax25->sk != NULL && ax25->ax25_dev->values[AX25_VALUES_CONMODE] == 2) {		if ((!ax25->pidincl && ax25->sk->sk_protocol == pid) ||		    ax25->pidincl) {			if (sock_queue_rcv_skb(ax25->sk, skb) == 0)				queued = 1;			else				ax25->condition |= AX25_COND_OWN_RX_BUSY;		}	}	return queued;}
开发者ID:Dronevery,项目名称:JetsonTK1-kernel,代码行数:60,


示例9: vsock_queue_rcv_skb

static int vsock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb){	int err;	err = sock_queue_rcv_skb(sk, skb);	if (err)		kfree_skb(skb);	return err;}
开发者ID:SantoshShilimkar,项目名称:linux,代码行数:10,


示例10: raw_rcv_skb

static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb){	/* Charge it to the socket. */	if (sock_queue_rcv_skb(sk, skb) < 0) {		kfree_skb(skb);		return NET_RX_DROP;	}	return NET_RX_SUCCESS;}
开发者ID:A2109devs,项目名称:lenovo_a2109a_kernel,代码行数:11,


示例11: raw_rcv_skb

static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb){	/* Charge it to the socket. */		if (sock_queue_rcv_skb(sk, skb) < 0) {		/* FIXME: increment a raw drops counter here */		kfree_skb(skb);		return NET_RX_DROP;	}	return NET_RX_SUCCESS;}
开发者ID:OpenHMR,项目名称:Open-HMR600,代码行数:12,


示例12: rawv6_rcv_skb

static inline int rawv6_rcv_skb(struct sock * sk, struct sk_buff * skb){	/* Charge it to the socket. */	if (sock_queue_rcv_skb(sk,skb)<0) {		ipv6_statistics.Ip6InDiscards++;		kfree_skb(skb);		return 0;	}	ipv6_statistics.Ip6InDelivers++;	return 0;}
开发者ID:GNUHurdTR,项目名称:hurd,代码行数:12,


示例13: raw_rcv_skb

static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb){		ipv4_pktinfo_prepare(skb);	if (sock_queue_rcv_skb(sk, skb) < 0) {		kfree_skb(skb);		return NET_RX_DROP;	}	return NET_RX_SUCCESS;}
开发者ID:Leoyzen,项目名称:Charm-Eye,代码行数:12,


示例14: raw_rcv_skb

static int raw_rcv_skb(struct sock * sk, struct sk_buff * skb){	/* Charge it to the socket. */		if (sock_queue_rcv_skb(sk, skb) < 0) {		IP_INC_STATS(IpInDiscards);		kfree_skb(skb);		return NET_RX_DROP;	}	IP_INC_STATS(IpInDelivers);	return NET_RX_SUCCESS;}
开发者ID:ProjectZeroSlackr,项目名称:linux-2.4.32-ipod,代码行数:13,


示例15: raw_rcv

static void raw_rcv(struct sk_buff *oskb, void *data){	struct sock *sk = (struct sock *)data;	struct raw_sock *ro = raw_sk(sk);	struct sockaddr_can *addr;	struct sk_buff *skb;	unsigned int *pflags;	/* check the received tx sock reference */	if (!ro->recv_own_msgs && oskb->sk == sk)		return;	/* do not pass frames with DLC > 8 to a legacy socket */	if (!ro->fd_frames) {		struct canfd_frame *cfd = (struct canfd_frame *)oskb->data;		if (unlikely(cfd->len > CAN_MAX_DLEN))			return;	}	/* clone the given skb to be able to enqueue it into the rcv queue */	skb = skb_clone(oskb, GFP_ATOMIC);	if (!skb)		return;	/*	 *  Put the datagram to the queue so that raw_recvmsg() can	 *  get it from there.  We need to pass the interface index to	 *  raw_recvmsg().  We pass a whole struct sockaddr_can in skb->cb	 *  containing the interface index.	 */	BUILD_BUG_ON(sizeof(skb->cb) < sizeof(struct sockaddr_can));	addr = (struct sockaddr_can *)skb->cb;	memset(addr, 0, sizeof(*addr));	addr->can_family  = AF_CAN;	addr->can_ifindex = skb->dev->ifindex;	/* add CAN specific message flags for raw_recvmsg() */	pflags = raw_flags(skb);	*pflags = 0;	if (oskb->sk)		*pflags |= MSG_DONTROUTE;	if (oskb->sk == sk)		*pflags |= MSG_CONFIRM;	if (sock_queue_rcv_skb(sk, skb) < 0)		kfree_skb(skb);}
开发者ID:AiWinters,项目名称:linux,代码行数:49,


示例16: hci_send_to_sock

/* Send frame to RAW socket */void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb){	struct sock * sk;	BT_DBG("hdev %p len %d", hdev, skb->len);	read_lock(&hci_sk_list.lock);	for (sk = hci_sk_list.head; sk; sk = sk->next) {		struct hci_filter *flt;		struct sk_buff *nskb;		if (sk->state != BT_BOUND || hci_pi(sk)->hdev != hdev)			continue;		/* Don't send frame to the socket it came from */		if (skb->sk == sk)			continue;		/* Apply filter */		flt = &hci_pi(sk)->filter;		if (!hci_test_bit((skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask))			continue;		if (skb->pkt_type == HCI_EVENT_PKT) {			register int evt = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS);						if (!hci_test_bit(evt, &flt->event_mask))				continue;			if (flt->opcode && ((evt == EVT_CMD_COMPLETE && 					flt->opcode != *(__u16 *)(skb->data + 3)) ||					(evt == EVT_CMD_STATUS && 					flt->opcode != *(__u16 *)(skb->data + 4))))				continue;		}		if (!(nskb = skb_clone(skb, GFP_ATOMIC)))			continue;		/* Put type byte before the data */		memcpy(skb_push(nskb, 1), &nskb->pkt_type, 1);		if (sock_queue_rcv_skb(sk, nskb))			kfree_skb(nskb);	}	read_unlock(&hci_sk_list.lock);}
开发者ID:ProjectZeroSlackr,项目名称:linux-2.4.32-ipod,代码行数:49,


示例17: mISDN_send

static intmISDN_send(struct mISDNchannel *ch, struct sk_buff *skb){	struct mISDN_sock *msk;	int	err;	msk = container_of(ch, struct mISDN_sock, ch);	if (*debug & DEBUG_SOCKET)		printk(KERN_DEBUG "%s len %d %p/n", __func__, skb->len, skb);	if (msk->sk.sk_state == MISDN_CLOSED)		return -EUNATCH;	__net_timestamp(skb);	err = sock_queue_rcv_skb(&msk->sk, skb);	if (err)		printk(KERN_WARNING "%s: error %d/n", __func__, err);	return err;}
开发者ID:johnny,项目名称:CobraDroidBeta,代码行数:17,


示例18: ax25_rx_iframe

/* *	This is where all valid I frames are sent to, to be dispatched to *	whichever protocol requires them. */static int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb){	int (*func)(struct sk_buff *, ax25_cb *);	struct sk_buff *skbn;	volatile int queued = 0;	unsigned char pid;	if (skb == NULL) return 0;	ax25->idletimer = ax25->idle;	pid = *skb->data;#ifdef CONFIG_INET	if (pid == AX25_P_IP) {		if ((skbn = skb_copy(skb, GFP_ATOMIC)) != NULL) {			kfree_skb(skb, FREE_READ);			skb = skbn;		}		skb_pull(skb, 1);	/* Remove PID */		skb->h.raw = skb->data;		ip_rcv(skb, ax25->device, NULL);	/* Wrong ptype */		return 1;	}#endif	if (pid == AX25_P_SEGMENT) {		skb_pull(skb, 1);	/* Remove PID */		return ax25_rx_fragment(ax25, skb);	}	if ((func = ax25_protocol_function(pid)) != NULL) {		skb_pull(skb, 1);	/* Remove PID */		return (*func)(skb, ax25);	}	if (ax25->sk != NULL && ax25_dev_get_value(ax25->device, AX25_VALUES_CONMODE) == 2) {		if ((!ax25->pidincl && ax25->sk->protocol == pid) || ax25->pidincl) {			if (sock_queue_rcv_skb(ax25->sk, skb) == 0)				queued = 1;			else				ax25->condition |= AX25_COND_OWN_RX_BUSY;		}	}	return queued;}
开发者ID:shattered,项目名称:linux-m68k,代码行数:50,


示例19: udp_mhost_rcv

/* corresponds to __udp4_lib_rcv */int udp_mhost_rcv(struct sk_buff *skb){    int ret;    struct sock *sk;    struct udphdr *uh;    unsigned short ulen;    int saddr, daddr;    printk(KERN_INFO "udp_mhost_rcv called/n");//    if (!pskb_may_pull(skb, sizeof(struct udphdr)))//        goto drop;    uh = (struct udphdr *) skb_transport_header(skb);    ulen = ntohs(uh->len);        // SMS: FIND A BETTER FIX FOR THIS!!!    skb->len = ulen;        // eh?    saddr = 0;    daddr = 0;        //    INT CORRESPONDS TO dev_get_by_index OR dev->ifindex!!!    /* first we need to lookup the socket... *///    sk = udp4_lib_lookup(dev_net(skb->dev), saddr, uh->source, daddr, uh->dest, (skb->dev)->ifindex);    sk = udp_table_lookup(uh->dest);        /* check for multicast here */        if (sk != NULL) {        ret = sock_queue_rcv_skb(sk, skb);        if (ret < 0) {            kfree_skb(skb);        }        return ret;    }        /* no socket wants it, so drop silently */    printk(KERN_INFO "mnet error: sk NULL!/n");    kfree_skb(skb);    return 0;}
开发者ID:spencersevilla,项目名称:mnet,代码行数:44,


示例20: sco_recv_frame

static inline void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb){	struct sock *sk = sco_chan_get(conn);	if (!sk)		goto drop;	BT_DBG("sk %p len %d", sk, skb->len);	if (sk->state != BT_CONNECTED)		goto drop;	if (!sock_queue_rcv_skb(sk, skb))		return;drop:	kfree_skb(skb);	return;}
开发者ID:niubl,项目名称:camera_project,代码行数:19,


示例21: packet_rcv

int packet_rcv(struct sk_buff *skb, struct device *dev,  struct packet_type *pt){	struct sock *sk;		/*	 *	When we registered the protocol we saved the socket in the data	 *	field for just this event.	 */	sk = (struct sock *) pt->data;			/*	 *	Yank back the headers [hope the device set this	 *	right or kerboom...]	 */	 	skb_push(skb,skb->data-skb->mac.raw);	/*	 *	The SOCK_PACKET socket receives _all_ frames.	 */	 	skb->dev = dev;	/*	 *	Charge the memory to the socket. This is done specifically	 *	to prevent sockets using all the memory up.	 */	 	if(sock_queue_rcv_skb(sk,skb)<0)	{		skb->sk = NULL;		kfree_skb(skb, FREE_READ);		return 0;	}	/*	 *	Processing complete.	 */	 	return(0);}
开发者ID:liexusong,项目名称:linux2.0-comment,代码行数:41,



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


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