Lines Matching refs:pfk

81 static void pfkey_terminate_dump(struct pfkey_sock *pfk)  in pfkey_terminate_dump()  argument
83 if (pfk->dump.dump) { in pfkey_terminate_dump()
84 if (pfk->dump.skb) { in pfkey_terminate_dump()
85 kfree_skb(pfk->dump.skb); in pfkey_terminate_dump()
86 pfk->dump.skb = NULL; in pfkey_terminate_dump()
88 pfk->dump.done(pfk); in pfkey_terminate_dump()
89 pfk->dump.dump = NULL; in pfkey_terminate_dump()
90 pfk->dump.done = NULL; in pfkey_terminate_dump()
143 struct pfkey_sock *pfk; in pfkey_create() local
158 pfk = pfkey_sk(sk); in pfkey_create()
159 mutex_init(&pfk->dump_lock); in pfkey_create()
235 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_broadcast() local
242 if (pfk->promisc) in pfkey_broadcast()
252 !pfk->registered) in pfkey_broadcast()
274 static int pfkey_do_dump(struct pfkey_sock *pfk) in pfkey_do_dump() argument
279 mutex_lock(&pfk->dump_lock); in pfkey_do_dump()
280 if (!pfk->dump.dump) { in pfkey_do_dump()
285 rc = pfk->dump.dump(pfk); in pfkey_do_dump()
291 if (pfk->dump.skb) { in pfkey_do_dump()
292 if (!pfkey_can_dump(&pfk->sk)) { in pfkey_do_dump()
297 hdr = (struct sadb_msg *) pfk->dump.skb->data; in pfkey_do_dump()
300 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in pfkey_do_dump()
301 &pfk->sk, sock_net(&pfk->sk)); in pfkey_do_dump()
302 pfk->dump.skb = NULL; in pfkey_do_dump()
305 pfkey_terminate_dump(pfk); in pfkey_do_dump()
308 mutex_unlock(&pfk->dump_lock); in pfkey_do_dump()
1692 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_register() local
1699 if (pfk->registered&(1<<hdr->sadb_msg_satype)) in pfkey_register()
1701 pfk->registered |= (1<<hdr->sadb_msg_satype); in pfkey_register()
1712 pfk->registered &= ~(1<<hdr->sadb_msg_satype); in pfkey_register()
1793 struct pfkey_sock *pfk = ptr; in dump_sa() local
1797 if (!pfkey_can_dump(&pfk->sk)) in dump_sa()
1805 out_hdr->sadb_msg_version = pfk->dump.msg_version; in dump_sa()
1811 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; in dump_sa()
1813 if (pfk->dump.skb) in dump_sa()
1814 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in dump_sa()
1815 &pfk->sk, sock_net(&pfk->sk)); in dump_sa()
1816 pfk->dump.skb = out_skb; in dump_sa()
1821 static int pfkey_dump_sa(struct pfkey_sock *pfk) in pfkey_dump_sa() argument
1823 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sa()
1824 return xfrm_state_walk(net, &pfk->dump.u.state, dump_sa, (void *) pfk); in pfkey_dump_sa()
1827 static void pfkey_dump_sa_done(struct pfkey_sock *pfk) in pfkey_dump_sa_done() argument
1829 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sa_done()
1831 xfrm_state_walk_done(&pfk->dump.u.state, net); in pfkey_dump_sa_done()
1838 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_dump() local
1840 mutex_lock(&pfk->dump_lock); in pfkey_dump()
1841 if (pfk->dump.dump != NULL) { in pfkey_dump()
1842 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1848 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1859 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1864 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1877 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_dump()
1878 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_dump()
1879 pfk->dump.dump = pfkey_dump_sa; in pfkey_dump()
1880 pfk->dump.done = pfkey_dump_sa_done; in pfkey_dump()
1881 xfrm_state_walk_init(&pfk->dump.u.state, proto, filter); in pfkey_dump()
1882 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1884 return pfkey_do_dump(pfk); in pfkey_dump()
1889 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_promisc() local
1897 pfk->promisc = satype; in pfkey_promisc()
2690 struct pfkey_sock *pfk = ptr; in dump_sp() local
2695 if (!pfkey_can_dump(&pfk->sk)) in dump_sp()
2709 out_hdr->sadb_msg_version = pfk->dump.msg_version; in dump_sp()
2714 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; in dump_sp()
2716 if (pfk->dump.skb) in dump_sp()
2717 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in dump_sp()
2718 &pfk->sk, sock_net(&pfk->sk)); in dump_sp()
2719 pfk->dump.skb = out_skb; in dump_sp()
2724 static int pfkey_dump_sp(struct pfkey_sock *pfk) in pfkey_dump_sp() argument
2726 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sp()
2727 return xfrm_policy_walk(net, &pfk->dump.u.policy, dump_sp, (void *) pfk); in pfkey_dump_sp()
2730 static void pfkey_dump_sp_done(struct pfkey_sock *pfk) in pfkey_dump_sp_done() argument
2732 struct net *net = sock_net((struct sock *)pfk); in pfkey_dump_sp_done()
2734 xfrm_policy_walk_done(&pfk->dump.u.policy, net); in pfkey_dump_sp_done()
2739 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_spddump() local
2741 mutex_lock(&pfk->dump_lock); in pfkey_spddump()
2742 if (pfk->dump.dump != NULL) { in pfkey_spddump()
2743 mutex_unlock(&pfk->dump_lock); in pfkey_spddump()
2747 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_spddump()
2748 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_spddump()
2749 pfk->dump.dump = pfkey_dump_sp; in pfkey_spddump()
2750 pfk->dump.done = pfkey_dump_sp_done; in pfkey_spddump()
2751 xfrm_policy_walk_init(&pfk->dump.u.policy, XFRM_POLICY_TYPE_MAIN); in pfkey_spddump()
2752 mutex_unlock(&pfk->dump_lock); in pfkey_spddump()
2754 return pfkey_do_dump(pfk); in pfkey_spddump()
3714 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_recvmsg() local
3741 if (pfk->dump.dump != NULL && in pfkey_recvmsg()
3743 pfkey_do_dump(pfk); in pfkey_recvmsg()