Lines Matching refs:session
136 static struct sock *pppol2tp_session_get_sock(struct l2tp_session *session) in pppol2tp_session_get_sock() argument
138 struct pppol2tp_session *ps = l2tp_session_priv(session); in pppol2tp_session_get_sock()
154 struct l2tp_session *session; in pppol2tp_sock_to_session() local
160 session = rcu_dereference_sk_user_data(sk); in pppol2tp_sock_to_session()
161 if (session && refcount_inc_not_zero(&session->ref_count)) { in pppol2tp_sock_to_session()
163 WARN_ON_ONCE(session->magic != L2TP_SESSION_MAGIC); in pppol2tp_sock_to_session()
164 return session; in pppol2tp_sock_to_session()
207 static void pppol2tp_recv(struct l2tp_session *session, struct sk_buff *skb, int data_len) in pppol2tp_recv() argument
209 struct pppol2tp_session *ps = l2tp_session_priv(session); in pppol2tp_recv()
238 atomic_long_inc(&session->stats.rx_errors); in pppol2tp_recv()
248 pr_warn_ratelimited("%s: no socket in recv\n", session->name); in pppol2tp_recv()
266 struct l2tp_session *session; in pppol2tp_sendmsg() local
276 session = pppol2tp_sock_to_session(sk); in pppol2tp_sendmsg()
277 if (!session) in pppol2tp_sendmsg()
280 tunnel = session->tunnel; in pppol2tp_sendmsg()
287 uhlen + session->hdr_len + in pppol2tp_sendmsg()
313 l2tp_xmit_skb(session, skb); in pppol2tp_sendmsg()
316 l2tp_session_put(session); in pppol2tp_sendmsg()
321 l2tp_session_put(session); in pppol2tp_sendmsg()
343 struct l2tp_session *session; in pppol2tp_xmit() local
351 session = pppol2tp_sock_to_session(sk); in pppol2tp_xmit()
352 if (!session) in pppol2tp_xmit()
355 tunnel = session->tunnel; in pppol2tp_xmit()
361 session->hdr_len + /* L2TP header */ in pppol2tp_xmit()
372 l2tp_xmit_skb(session, skb); in pppol2tp_xmit()
375 l2tp_session_put(session); in pppol2tp_xmit()
380 l2tp_session_put(session); in pppol2tp_xmit()
400 static void pppol2tp_session_close(struct l2tp_session *session) in pppol2tp_session_close() argument
404 ps = l2tp_session_priv(session); in pppol2tp_session_close()
416 l2tp_session_put(session); in pppol2tp_session_close()
425 struct l2tp_session *session; in pppol2tp_release() local
443 session = pppol2tp_sock_to_session(sk); in pppol2tp_release()
444 if (session) { in pppol2tp_release()
445 l2tp_session_delete(session); in pppol2tp_release()
447 l2tp_session_put(session); in pppol2tp_release()
510 struct l2tp_session *session = arg; in pppol2tp_show() local
513 sk = pppol2tp_session_get_sock(session); in pppol2tp_show()
522 static void pppol2tp_session_init(struct l2tp_session *session) in pppol2tp_session_init() argument
526 session->recv_skb = pppol2tp_recv; in pppol2tp_session_init()
527 session->session_close = pppol2tp_session_close; in pppol2tp_session_init()
529 session->show = pppol2tp_show; in pppol2tp_session_init()
531 ps = l2tp_session_priv(session); in pppol2tp_session_init()
702 struct l2tp_session *session = NULL; in pppol2tp_connect() local
739 session = l2tp_session_get(sock_net(sk), tunnel->sock, tunnel->version, in pppol2tp_connect()
741 if (session) { in pppol2tp_connect()
744 if (session->pwtype != L2TP_PWTYPE_PPP) { in pppol2tp_connect()
749 ps = l2tp_session_priv(session); in pppol2tp_connect()
765 session = l2tp_session_create(sizeof(struct pppol2tp_session), in pppol2tp_connect()
768 if (IS_ERR(session)) { in pppol2tp_connect()
769 error = PTR_ERR(session); in pppol2tp_connect()
775 pppol2tp_session_init(session); in pppol2tp_connect()
776 ps = l2tp_session_priv(session); in pppol2tp_connect()
777 refcount_inc(&session->ref_count); in pppol2tp_connect()
780 error = l2tp_session_register(session, tunnel); in pppol2tp_connect()
783 l2tp_session_put(session); in pppol2tp_connect()
795 if (session->session_id == 0 && session->peer_session_id == 0) { in pppol2tp_connect()
819 rcu_assign_sk_user_data(sk, session); in pppol2tp_connect()
834 l2tp_session_delete(session); in pppol2tp_connect()
839 l2tp_session_put(session); in pppol2tp_connect()
854 struct l2tp_session *session; in pppol2tp_session_create() local
863 session = l2tp_session_create(sizeof(struct pppol2tp_session), in pppol2tp_session_create()
866 if (IS_ERR(session)) { in pppol2tp_session_create()
867 error = PTR_ERR(session); in pppol2tp_session_create()
871 pppol2tp_session_init(session); in pppol2tp_session_create()
873 error = l2tp_session_register(session, tunnel); in pppol2tp_session_create()
880 l2tp_session_put(session); in pppol2tp_session_create()
894 struct l2tp_session *session; in pppol2tp_getname() local
907 session = pppol2tp_sock_to_session(sk); in pppol2tp_getname()
908 if (!session) in pppol2tp_getname()
911 pls = l2tp_session_priv(session); in pppol2tp_getname()
912 tunnel = session->tunnel; in pppol2tp_getname()
926 sp.pppol2tp.s_session = session->session_id; in pppol2tp_getname()
927 sp.pppol2tp.d_session = session->peer_session_id; in pppol2tp_getname()
944 sp.pppol2tp.s_session = session->session_id; in pppol2tp_getname()
945 sp.pppol2tp.d_session = session->peer_session_id; in pppol2tp_getname()
962 sp.pppol2tp.s_session = session->session_id; in pppol2tp_getname()
963 sp.pppol2tp.d_session = session->peer_session_id; in pppol2tp_getname()
981 sp.pppol2tp.s_session = session->session_id; in pppol2tp_getname()
982 sp.pppol2tp.d_session = session->peer_session_id; in pppol2tp_getname()
991 l2tp_session_put(session); in pppol2tp_getname()
1025 struct l2tp_session *session; in pppol2tp_tunnel_copy_stats() local
1035 session = l2tp_session_get(tunnel->l2tp_net, tunnel->sock, tunnel->version, in pppol2tp_tunnel_copy_stats()
1037 if (!session) in pppol2tp_tunnel_copy_stats()
1040 if (session->pwtype != L2TP_PWTYPE_PPP) { in pppol2tp_tunnel_copy_stats()
1041 l2tp_session_put(session); in pppol2tp_tunnel_copy_stats()
1045 pppol2tp_copy_stats(stats, &session->stats); in pppol2tp_tunnel_copy_stats()
1046 l2tp_session_put(session); in pppol2tp_tunnel_copy_stats()
1055 struct l2tp_session *session; in pppol2tp_ioctl() local
1060 session = sock->sk->sk_user_data; in pppol2tp_ioctl()
1061 if (!session) in pppol2tp_ioctl()
1064 if (WARN_ON(session->magic != L2TP_SESSION_MAGIC)) in pppol2tp_ioctl()
1068 if (!session->session_id && !session->peer_session_id) in pppol2tp_ioctl()
1077 session = sock->sk->sk_user_data; in pppol2tp_ioctl()
1078 if (!session) in pppol2tp_ioctl()
1081 if (WARN_ON(session->magic != L2TP_SESSION_MAGIC)) in pppol2tp_ioctl()
1085 if (!session->session_id && !session->peer_session_id) in pppol2tp_ioctl()
1093 session = sock->sk->sk_user_data; in pppol2tp_ioctl()
1094 if (!session) in pppol2tp_ioctl()
1097 if (WARN_ON(session->magic != L2TP_SESSION_MAGIC)) in pppol2tp_ioctl()
1101 if (!session->session_id && !session->peer_session_id) { in pppol2tp_ioctl()
1111 session->tunnel); in pppol2tp_ioctl()
1117 pppol2tp_copy_stats(&stats, &session->stats); in pppol2tp_ioctl()
1118 stats.session_id = session->session_id; in pppol2tp_ioctl()
1120 stats.tunnel_id = session->tunnel->tunnel_id; in pppol2tp_ioctl()
1121 stats.using_ipsec = l2tp_tunnel_uses_xfrm(session->tunnel); in pppol2tp_ioctl()
1168 struct l2tp_session *session, in pppol2tp_session_setsockopt() argument
1179 session->recv_seq = !!val; in pppol2tp_session_setsockopt()
1187 session->send_seq = !!val; in pppol2tp_session_setsockopt()
1194 l2tp_session_set_header_len(session, session->tunnel->version, in pppol2tp_session_setsockopt()
1195 session->tunnel->encap); in pppol2tp_session_setsockopt()
1203 session->lns_mode = !!val; in pppol2tp_session_setsockopt()
1211 session->reorder_timeout = msecs_to_jiffies(val); in pppol2tp_session_setsockopt()
1231 struct l2tp_session *session; in pppol2tp_setsockopt() local
1251 session = pppol2tp_sock_to_session(sk); in pppol2tp_setsockopt()
1252 if (!session) in pppol2tp_setsockopt()
1257 if (session->session_id == 0 && session->peer_session_id == 0) { in pppol2tp_setsockopt()
1258 tunnel = session->tunnel; in pppol2tp_setsockopt()
1261 err = pppol2tp_session_setsockopt(sk, session, optname, val); in pppol2tp_setsockopt()
1264 l2tp_session_put(session); in pppol2tp_setsockopt()
1294 struct l2tp_session *session, in pppol2tp_session_getsockopt() argument
1301 *val = session->recv_seq; in pppol2tp_session_getsockopt()
1305 *val = session->send_seq; in pppol2tp_session_getsockopt()
1309 *val = session->lns_mode; in pppol2tp_session_getsockopt()
1318 *val = (int)jiffies_to_msecs(session->reorder_timeout); in pppol2tp_session_getsockopt()
1337 struct l2tp_session *session; in pppol2tp_getsockopt() local
1359 session = pppol2tp_sock_to_session(sk); in pppol2tp_getsockopt()
1360 if (!session) in pppol2tp_getsockopt()
1364 if (session->session_id == 0 && session->peer_session_id == 0) { in pppol2tp_getsockopt()
1365 tunnel = session->tunnel; in pppol2tp_getsockopt()
1370 err = pppol2tp_session_getsockopt(sk, session, optname, &val); in pppol2tp_getsockopt()
1385 l2tp_session_put(session); in pppol2tp_getsockopt()
1403 struct l2tp_session *session; /* NULL means get next tunnel */ member
1427 if (pd->session) in pppol2tp_next_session()
1428 l2tp_session_put(pd->session); in pppol2tp_next_session()
1430 pd->session = l2tp_session_get_next(net, pd->tunnel->sock, in pppol2tp_next_session()
1435 if (!pd->session) { in pppol2tp_next_session()
1464 if (!pd->tunnel && !pd->session) in pppol2tp_seq_start()
1487 if (pd->session) { in pppol2tp_seq_stop()
1488 l2tp_session_put(pd->session); in pppol2tp_seq_stop()
1489 pd->session = NULL; in pppol2tp_seq_stop()
1517 struct l2tp_session *session = v; in pppol2tp_seq_session_show() local
1518 struct l2tp_tunnel *tunnel = session->tunnel; in pppol2tp_seq_session_show()
1532 sk = pppol2tp_session_get_sock(session); in pppol2tp_seq_session_show()
1535 user_data_ok = (session == sk->sk_user_data) ? 'Y' : 'N'; in pppol2tp_seq_session_show()
1542 session->name, ip, port, in pppol2tp_seq_session_show()
1544 session->session_id, in pppol2tp_seq_session_show()
1546 session->peer_session_id, in pppol2tp_seq_session_show()
1549 session->recv_seq ? 'R' : '-', in pppol2tp_seq_session_show()
1550 session->send_seq ? 'S' : '-', in pppol2tp_seq_session_show()
1551 session->lns_mode ? "LNS" : "LAC", in pppol2tp_seq_session_show()
1553 jiffies_to_msecs(session->reorder_timeout)); in pppol2tp_seq_session_show()
1555 session->nr, session->ns, in pppol2tp_seq_session_show()
1556 atomic_long_read(&session->stats.tx_packets), in pppol2tp_seq_session_show()
1557 atomic_long_read(&session->stats.tx_bytes), in pppol2tp_seq_session_show()
1558 atomic_long_read(&session->stats.tx_errors), in pppol2tp_seq_session_show()
1559 atomic_long_read(&session->stats.rx_packets), in pppol2tp_seq_session_show()
1560 atomic_long_read(&session->stats.rx_bytes), in pppol2tp_seq_session_show()
1561 atomic_long_read(&session->stats.rx_errors)); in pppol2tp_seq_session_show()
1586 if (!pd->session) in pppol2tp_seq_show()
1589 pppol2tp_seq_session_show(m, pd->session); in pppol2tp_seq_show()