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()
1709 pfk->registered &= ~(1<<hdr->sadb_msg_satype); in pfkey_register()
1790 struct pfkey_sock *pfk = ptr; in dump_sa() local
1794 if (!pfkey_can_dump(&pfk->sk)) in dump_sa()
1802 out_hdr->sadb_msg_version = pfk->dump.msg_version; in dump_sa()
1808 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; in dump_sa()
1810 if (pfk->dump.skb) in dump_sa()
1811 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in dump_sa()
1812 &pfk->sk, sock_net(&pfk->sk)); in dump_sa()
1813 pfk->dump.skb = out_skb; in dump_sa()
1818 static int pfkey_dump_sa(struct pfkey_sock *pfk) in pfkey_dump_sa() argument
1820 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sa()
1821 return xfrm_state_walk(net, &pfk->dump.u.state, dump_sa, (void *) pfk); in pfkey_dump_sa()
1824 static void pfkey_dump_sa_done(struct pfkey_sock *pfk) in pfkey_dump_sa_done() argument
1826 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sa_done()
1828 xfrm_state_walk_done(&pfk->dump.u.state, net); in pfkey_dump_sa_done()
1835 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_dump() local
1837 mutex_lock(&pfk->dump_lock); in pfkey_dump()
1838 if (pfk->dump.dump != NULL) { in pfkey_dump()
1839 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1845 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1854 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1867 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_dump()
1868 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_dump()
1869 pfk->dump.dump = pfkey_dump_sa; in pfkey_dump()
1870 pfk->dump.done = pfkey_dump_sa_done; in pfkey_dump()
1871 xfrm_state_walk_init(&pfk->dump.u.state, proto, filter); in pfkey_dump()
1872 mutex_unlock(&pfk->dump_lock); in pfkey_dump()
1874 return pfkey_do_dump(pfk); in pfkey_dump()
1879 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_promisc() local
1887 pfk->promisc = satype; in pfkey_promisc()
2680 struct pfkey_sock *pfk = ptr; in dump_sp() local
2685 if (!pfkey_can_dump(&pfk->sk)) in dump_sp()
2699 out_hdr->sadb_msg_version = pfk->dump.msg_version; in dump_sp()
2704 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; in dump_sp()
2706 if (pfk->dump.skb) in dump_sp()
2707 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE, in dump_sp()
2708 &pfk->sk, sock_net(&pfk->sk)); in dump_sp()
2709 pfk->dump.skb = out_skb; in dump_sp()
2714 static int pfkey_dump_sp(struct pfkey_sock *pfk) in pfkey_dump_sp() argument
2716 struct net *net = sock_net(&pfk->sk); in pfkey_dump_sp()
2717 return xfrm_policy_walk(net, &pfk->dump.u.policy, dump_sp, (void *) pfk); in pfkey_dump_sp()
2720 static void pfkey_dump_sp_done(struct pfkey_sock *pfk) in pfkey_dump_sp_done() argument
2722 struct net *net = sock_net((struct sock *)pfk); in pfkey_dump_sp_done()
2724 xfrm_policy_walk_done(&pfk->dump.u.policy, net); in pfkey_dump_sp_done()
2729 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_spddump() local
2731 mutex_lock(&pfk->dump_lock); in pfkey_spddump()
2732 if (pfk->dump.dump != NULL) { in pfkey_spddump()
2733 mutex_unlock(&pfk->dump_lock); in pfkey_spddump()
2737 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_spddump()
2738 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_spddump()
2739 pfk->dump.dump = pfkey_dump_sp; in pfkey_spddump()
2740 pfk->dump.done = pfkey_dump_sp_done; in pfkey_spddump()
2741 xfrm_policy_walk_init(&pfk->dump.u.policy, XFRM_POLICY_TYPE_MAIN); in pfkey_spddump()
2742 mutex_unlock(&pfk->dump_lock); in pfkey_spddump()
2744 return pfkey_do_dump(pfk); in pfkey_spddump()
3688 struct pfkey_sock *pfk = pfkey_sk(sk); in pfkey_recvmsg() local
3715 if (pfk->dump.dump != NULL && in pfkey_recvmsg()
3717 pfkey_do_dump(pfk); in pfkey_recvmsg()