len += NLMSG_SPACE(sizeof(struct xfrm_userpolicy_info)); 
int headlen;  headlen = sizeof(*p); if (c->event == XFRM_MSG_DELPOLICY) { len += RTA_SPACE(headlen); headlen = sizeof(*id); } len += NLMSG_SPACE(headlen); 
static int xfrm_notify_policy(struct xfrm_policy *xp, int dir, struct km_event *c){	struct xfrm_userpolicy_info *p;	struct nlmsghdr *nlh;	struct sk_buff *skb;	unsigned char *b;	int len = RTA_SPACE(sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr);	len += NLMSG_SPACE(sizeof(struct xfrm_userpolicy_info));	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));	p = NLMSG_DATA(nlh);	nlh->nlmsg_flags = 0;	copy_to_user_policy(xp, p, dir);	if (copy_to_user_tmpl(xp, skb) < 0)		goto nlmsg_failure;	nlh->nlmsg_len = skb->tail - b;	return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_POLICY, GFP_ATOMIC);nlmsg_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