static inline void raw_rcv_skb(struct sock * sk, struct sk_buff * skb) { /* Charge it to the socket. */ if (__sock_queue_rcv_skb(sk,skb)<0) { ip_statistics.IpInDiscards++; skb->sk=NULL; kfree_skb(skb, FREE_READ); return; } ip_statistics.IpInDelivers++; }
static inline void udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) { /* * Charge it to the socket, dropping if the queue is full. */ /* I assume this includes the IP options, as per RFC1122 (4.1.3.2). */ /* If not, please let me know. -- MS */ if (__sock_queue_rcv_skb(sk,skb)<0) { udp_statistics.UdpInErrors++; ip_statistics.IpInDiscards++; ip_statistics.IpInDelivers--; skb->sk = NULL; kfree_skb(skb, FREE_WRITE); return; } udp_statistics.UdpInDatagrams++; }