Lines Matching refs:pfk

81 static void pfkey_terminate_dump(struct pfkey_sock *pfk)
83 if (pfk->dump.dump) {
84 if (pfk->dump.skb) {
85 kfree_skb(pfk->dump.skb);
86 pfk->dump.skb = NULL;
88 pfk->dump.done(pfk);
89 pfk->dump.dump = NULL;
90 pfk->dump.done = NULL;
143 struct pfkey_sock *pfk;
158 pfk = pfkey_sk(sk);
159 mutex_init(&pfk->dump_lock);
235 struct pfkey_sock *pfk = pfkey_sk(sk);
242 if (pfk->promisc)
252 !pfk->registered)
274 static int pfkey_do_dump(struct pfkey_sock *pfk)
279 mutex_lock(&pfk->dump_lock);
280 if (!pfk->dump.dump) {
285 rc = pfk->dump.dump(pfk);
291 if (pfk->dump.skb) {
292 if (!pfkey_can_dump(&pfk->sk)) {
297 hdr = (struct sadb_msg *) pfk->dump.skb->data;
300 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE,
301 &pfk->sk, sock_net(&pfk->sk));
302 pfk->dump.skb = NULL;
305 pfkey_terminate_dump(pfk);
308 mutex_unlock(&pfk->dump_lock);
1692 struct pfkey_sock *pfk = pfkey_sk(sk);
1699 if (pfk->registered&(1<<hdr->sadb_msg_satype))
1701 pfk->registered |= (1<<hdr->sadb_msg_satype);
1712 pfk->registered &= ~(1<<hdr->sadb_msg_satype);
1793 struct pfkey_sock *pfk = ptr;
1797 if (!pfkey_can_dump(&pfk->sk))
1805 out_hdr->sadb_msg_version = pfk->dump.msg_version;
1811 out_hdr->sadb_msg_pid = pfk->dump.msg_portid;
1813 if (pfk->dump.skb)
1814 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE,
1815 &pfk->sk, sock_net(&pfk->sk));
1816 pfk->dump.skb = out_skb;
1821 static int pfkey_dump_sa(struct pfkey_sock *pfk)
1823 struct net *net = sock_net(&pfk->sk);
1824 return xfrm_state_walk(net, &pfk->dump.u.state, dump_sa, (void *) pfk);
1827 static void pfkey_dump_sa_done(struct pfkey_sock *pfk)
1829 struct net *net = sock_net(&pfk->sk);
1831 xfrm_state_walk_done(&pfk->dump.u.state, net);
1838 struct pfkey_sock *pfk = pfkey_sk(sk);
1840 mutex_lock(&pfk->dump_lock);
1841 if (pfk->dump.dump != NULL) {
1842 mutex_unlock(&pfk->dump_lock);
1848 mutex_unlock(&pfk->dump_lock);
1859 mutex_unlock(&pfk->dump_lock);
1864 mutex_unlock(&pfk->dump_lock);
1877 pfk->dump.msg_version = hdr->sadb_msg_version;
1878 pfk->dump.msg_portid = hdr->sadb_msg_pid;
1879 pfk->dump.dump = pfkey_dump_sa;
1880 pfk->dump.done = pfkey_dump_sa_done;
1881 xfrm_state_walk_init(&pfk->dump.u.state, proto, filter);
1882 mutex_unlock(&pfk->dump_lock);
1884 return pfkey_do_dump(pfk);
1889 struct pfkey_sock *pfk = pfkey_sk(sk);
1897 pfk->promisc = satype;
2694 struct pfkey_sock *pfk = ptr;
2699 if (!pfkey_can_dump(&pfk->sk))
2713 out_hdr->sadb_msg_version = pfk->dump.msg_version;
2718 out_hdr->sadb_msg_pid = pfk->dump.msg_portid;
2720 if (pfk->dump.skb)
2721 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE,
2722 &pfk->sk, sock_net(&pfk->sk));
2723 pfk->dump.skb = out_skb;
2728 static int pfkey_dump_sp(struct pfkey_sock *pfk)
2730 struct net *net = sock_net(&pfk->sk);
2731 return xfrm_policy_walk(net, &pfk->dump.u.policy, dump_sp, (void *) pfk);
2734 static void pfkey_dump_sp_done(struct pfkey_sock *pfk)
2736 struct net *net = sock_net((struct sock *)pfk);
2738 xfrm_policy_walk_done(&pfk->dump.u.policy, net);
2743 struct pfkey_sock *pfk = pfkey_sk(sk);
2745 mutex_lock(&pfk->dump_lock);
2746 if (pfk->dump.dump != NULL) {
2747 mutex_unlock(&pfk->dump_lock);
2751 pfk->dump.msg_version = hdr->sadb_msg_version;
2752 pfk->dump.msg_portid = hdr->sadb_msg_pid;
2753 pfk->dump.dump = pfkey_dump_sp;
2754 pfk->dump.done = pfkey_dump_sp_done;
2755 xfrm_policy_walk_init(&pfk->dump.u.policy, XFRM_POLICY_TYPE_MAIN);
2756 mutex_unlock(&pfk->dump_lock);
2758 return pfkey_do_dump(pfk);
3718 struct pfkey_sock *pfk = pfkey_sk(sk);
3745 if (pfk->dump.dump != NULL &&
3747 pfkey_do_dump(pfk);