skb = alloc_skb(sizeof(struct xfrm_user_expire) + 16, GFP_ATOMIC); if (skb == NULL) return -ENOMEM;
switch (c->event) { case XFRM_SAP_EXPIRED: return xfrm_exp_state_notify(x, c); case XFRM_SAP_DELETED: case XFRM_SAP_UPDATED: case XFRM_SAP_ADDED: return xfrm_notify_sa(x, c); case XFRM_SAP_FLUSHED: return xfrm_notify_sa_flush(c); default: printk("xfrm_user: Unknown SA event %d\n", c->event); break; }
static int xfrm_send_state_notify(struct xfrm_state *x, int hard){	struct sk_buff *skb;	skb = alloc_skb(sizeof(struct xfrm_user_expire) + 16, GFP_ATOMIC);	if (skb == NULL)		return -ENOMEM;	if (build_expire(skb, x, hard) < 0)		BUG();	NETLINK_CB(skb).dst_groups = XFRMGRP_EXPIRE;	return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_EXPIRE, GFP_ATOMIC);}