nlh = NLMSG_PUT(skb, c->pid, c->seq, c->event, sizeof(*p)); 
nlh = NLMSG_PUT(skb, c->pid, c->seq, c->event, headlen); 
static int xfrm_notify_sa(struct xfrm_state *x, struct km_event *c){	struct xfrm_usersa_info *p;	struct nlmsghdr *nlh;	struct sk_buff *skb;	unsigned char *b;	int len = xfrm_sa_len(x);	skb = alloc_skb(len, GFP_ATOMIC);	if (skb == NULL)		return -ENOMEM;	b = skb->tail;	nlh = NLMSG_PUT(skb, c->pid, c->seq, c->event, sizeof(*p));	nlh->nlmsg_flags = 0;	p = NLMSG_DATA(nlh);	copy_to_user_state(x, p);	if (x->aalg)		RTA_PUT(skb, XFRMA_ALG_AUTH,			sizeof(*(x->aalg))+(x->aalg->alg_key_len+7)/8, x->aalg);	if (x->ealg)		RTA_PUT(skb, XFRMA_ALG_CRYPT,			sizeof(*(x->ealg))+(x->ealg->alg_key_len+7)/8, x->ealg);	if (x->calg)		RTA_PUT(skb, XFRMA_ALG_COMP, sizeof(*(x->calg)), x->calg);	if (x->encap)		RTA_PUT(skb, XFRMA_ENCAP, sizeof(*x->encap), x->encap);	nlh->nlmsg_len = skb->tail - b;	return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_SA, GFP_ATOMIC);nlmsg_failure:rtattr_failure:	kfree_skb(skb);	return -1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0603eac0d6b77acac5924a2734228cbaf072f993/xfrm_user.c/clean/net/xfrm/xfrm_user.c