Lines Matching refs:pfk

85 static void pfkey_terminate_dump(struct pfkey_sock *pfk)  in pfkey_terminate_dump()  argument
87 if (pfk->dump.dump) { in pfkey_terminate_dump()
88 if (pfk->dump.skb) { in pfkey_terminate_dump()
89 kfree_skb(pfk->dump.skb); in pfkey_terminate_dump()
90 pfk->dump.skb = NULL; in pfkey_terminate_dump()
92 pfk->dump.done(pfk); in pfkey_terminate_dump()
93 pfk->dump.dump = NULL; in pfkey_terminate_dump()
94 pfk->dump.done = NULL; in pfkey_terminate_dump()
147 struct pfkey_sock *pfk; in pfkey_create() local
162 pfk = pfkey_sk(sk); in pfkey_create()
163 mutex_init(&pfk->dump_lock); in pfkey_create()
248 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_broadcast() local
255 if (pfk->promisc) in pfkey_broadcast()
265 !pfk->registered) in pfkey_broadcast()
288 static int pfkey_do_dump(struct pfkey_sock *pfk) in pfkey_do_dump() argument
293 mutex_lock(&pfk->dump_lock); in pfkey_do_dump()
294 if (!pfk->dump.dump) { in pfkey_do_dump()
299 rc = pfk->dump.dump(pfk); in pfkey_do_dump()
305 if (pfk->dump.skb) { in pfkey_do_dump()
306 if (!pfkey_can_dump(&pfk->sk)) { in pfkey_do_dump()
311 hdr = (struct sadb_msg *) pfk->dump.skb->data; in pfkey_do_dump()
314 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in pfkey_do_dump()
315 &pfk->sk, sock_net(&pfk->sk)); in pfkey_do_dump()
316 pfk->dump.skb = NULL; in pfkey_do_dump()
319 pfkey_terminate_dump(pfk); in pfkey_do_dump()
322 mutex_unlock(&pfk->dump_lock); in pfkey_do_dump()
1708 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_register() local
1715 if (pfk->registered&(1<<hdr->sadb_msg_satype)) in pfkey_register()
1717 pfk->registered |= (1<<hdr->sadb_msg_satype); in pfkey_register()
1725 pfk->registered &= ~(1<<hdr->sadb_msg_satype); in pfkey_register()
1806 struct pfkey_sock *pfk = ptr; in dump_sa() local
1810 if (!pfkey_can_dump(&pfk->sk)) in dump_sa()
1818 out_hdr->sadb_msg_version = pfk->dump.msg_version; in dump_sa()
1824 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; in dump_sa()
1826 if (pfk->dump.skb) in dump_sa()
1827 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in dump_sa()
1828 &pfk->sk, sock_net(&pfk->sk)); in dump_sa()
1829 pfk->dump.skb = out_skb; in dump_sa()
1834 static int pfkey_dump_sa(struct pfkey_sock *pfk) in pfkey_dump_sa() argument
1836 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sa()
1837 return xfrm_state_walk(net, &pfk->dump.u.state, dump_sa, (void *) pfk); in pfkey_dump_sa()
1840 static void pfkey_dump_sa_done(struct pfkey_sock *pfk) in pfkey_dump_sa_done() argument
1842 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sa_done()
1844 xfrm_state_walk_done(&pfk->dump.u.state, net); in pfkey_dump_sa_done()
1851 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_dump() local
1853 mutex_lock(&pfk->dump_lock); in pfkey_dump()
1854 if (pfk->dump.dump != NULL) { in pfkey_dump()
1855 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1861 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1870 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1883 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_dump()
1884 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_dump()
1885 pfk->dump.dump = pfkey_dump_sa; in pfkey_dump()
1886 pfk->dump.done = pfkey_dump_sa_done; in pfkey_dump()
1887 xfrm_state_walk_init(&pfk->dump.u.state, proto, filter); in pfkey_dump()
1888 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1890 return pfkey_do_dump(pfk); in pfkey_dump()
1895 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_promisc() local
1903 pfk->promisc = satype; in pfkey_promisc()
2692 struct pfkey_sock *pfk = ptr; in dump_sp() local
2697 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()
3698 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_recvmsg() local
3725 if (pfk->dump.dump != NULL && in pfkey_recvmsg()
3727 pfkey_do_dump(pfk); in pfkey_recvmsg()