{
BUG_TRAP(!atomic_read(&sk->sk_rmem_alloc));
BUG_TRAP(!atomic_read(&sk->sk_wmem_alloc));
+ BUG_ON(sk->sk_nx_info);
+ BUG_ON(sk->sk_vx_info);
if (!sock_flag(sk, SOCK_DEAD)) {
printk("Attempt to release alive packet socket: %p\n", sk);
sk = pt->af_packet_priv;
po = pkt_sk(sk);
+ if ((int) sk->sk_xid > 0 && sk->sk_xid != skb->xid)
+ goto drop;
+
skb->dev = dev;
if (dev->hard_header) {
}
#endif
+ clr_vx_info(&sk->sk_vx_info);
+ clr_nx_info(&sk->sk_nx_info);
+
/*
* Now the socket is dead. No more input will appear.
*/
sk->sk_destruct = packet_sock_destruct;
atomic_inc(&packet_socks_nr);
+ set_vx_info(&sk->sk_vx_info, current->vx_info);
+ sk->sk_xid = vx_current_xid();
+ set_nx_info(&sk->sk_nx_info, current->nx_info);
+ sk->sk_nid = nx_current_nid();
+
/*
* Attach a protocol block
*/
.mmap = packet_mmap,
.sendpage = sock_no_sendpage,
};
+EXPORT_SYMBOL(packet_ops);
-static struct net_proto_family packet_family_ops = {
+struct net_proto_family packet_family_ops = {
.family = PF_PACKET,
.create = packet_create,
.owner = THIS_MODULE,
};
+EXPORT_SYMBOL(packet_family_ops);
static struct notifier_block packet_netdev_notifier = {
.notifier_call =packet_notifier,