Lines Matching refs:session
95 pipex_session_list, /* [L] master session list */
96 pipex_close_wait_list, /* [L] expired session list */
145 struct pipex_session *session, *session_tmp;
149 LIST_FOREACH_SAFE(session, &pipex_session_list, session_list,
151 if (session->flags & PIPEX_SFLAGS_ITERATOR)
153 if (session->ownersc == ownersc) {
154 KASSERT((session->flags & PIPEX_SFLAGS_PPPX) == 0);
155 pipex_unlink_session_locked(session);
156 pipex_rele_session(session);
196 struct pipex_session *session;
205 session = m->m_pkthdr.ph_cookie;
207 ifp = if_get(session->proto.pppoe.over_ifidx);
214 ifp->if_output(ifp, m, &session->peer.sa, NULL);
215 counters_pkt(session->stat_counters, pxc_opackets,
219 counters_inc(session->stat_counters, pxc_oerrors);
223 pipex_rele_session(session);
234 struct pipex_session *session;
313 /* prepare a new session */
314 session = pool_get(&pipex_session_pool, PR_WAITOK | PR_ZERO);
315 refcnt_init(&session->pxs_refcnt);
316 mtx_init(&session->pxs_mtx, IPL_SOFTNET);
317 session->state = PIPEX_STATE_INITIAL;
318 session->protocol = req->pr_protocol;
319 session->session_id = req->pr_session_id;
320 session->peer_session_id = req->pr_peer_session_id;
321 session->peer_mru = req->pr_peer_mru;
322 session->timeout_sec = req->pr_timeout_sec;
323 session->ppp_flags = req->pr_ppp_flags;
324 session->ppp_id = req->pr_ppp_id;
326 session->stat_counters = counters_alloc(pxc_ncounters);
328 session->ip_address.sin_family = AF_INET;
329 session->ip_address.sin_len = sizeof(struct sockaddr_in);
330 session->ip_address.sin_addr = req->pr_ip_address;
332 session->ip_netmask.sin_family = AF_INET;
333 session->ip_netmask.sin_len = sizeof(struct sockaddr_in);
334 session->ip_netmask.sin_addr = req->pr_ip_netmask;
336 if (session->ip_netmask.sin_addr.s_addr == 0L)
337 session->ip_netmask.sin_addr.s_addr = 0xffffffffL;
338 session->ip_address.sin_addr.s_addr &=
339 session->ip_netmask.sin_addr.s_addr;
342 memcpy(&session->peer, &req->pr_peer_address,
343 MIN(req->pr_peer_address.ss_len, sizeof(session->peer)));
345 memcpy(&session->local, &req->pr_local_address,
346 MIN(req->pr_local_address.ss_len, sizeof(session->local)));
349 session->proto.pppoe.over_ifidx = over_ifp->if_index;
355 struct pipex_pptp_session *sess_pptp = &session->proto.pptp;
373 struct pipex_l2tp_session *sess_l2tp = &session->proto.l2tp;
375 /* session keys */
395 pipex_session_init_mppe_recv(session,
400 pipex_session_init_mppe_send(session,
406 *rsession = session;
412 pipex_rele_session(struct pipex_session *session)
414 if (refcnt_rele(&session->pxs_refcnt) == 0)
417 if (session->mppe_recv.old_session_keys)
418 pool_put(&mppe_key_pool, session->mppe_recv.old_session_keys);
419 counters_free(session->stat_counters, pxc_ncounters);
420 pool_put(&pipex_session_pool, session);
424 pipex_link_session(struct pipex_session *session, struct ifnet *ifp,
438 if (pipex_lookup_by_session_id_locked(session->protocol,
439 session->session_id)) {
444 session->ownersc = ownersc;
445 session->ifindex = ifp->if_index;
447 session->flags |= PIPEX_SFLAGS_PPPX;
449 if ((session->flags & PIPEX_SFLAGS_PPPX) == 0 &&
450 !in_nullhost(session->ip_address.sin_addr)) {
452 session->ip_address.sin_addr) != NULL) {
456 rn = rn_addroute(&session->ip_address, &session->ip_netmask,
457 pipex_rd_head4, session->ps4_rn, RTP_STATIC);
464 LIST_INSERT_HEAD(&pipex_session_list, session, session_list);
465 chain = PIPEX_ID_HASHTABLE(session->session_id);
466 LIST_INSERT_HEAD(chain, session, id_chain);
468 switch (session->protocol) {
472 pipex_sockaddr_hash_key(&session->peer.sa));
473 LIST_INSERT_HEAD(chain, session, peer_addr_chain);
477 /* if first session is added, start timer */
478 if (LIST_NEXT(session, session_list) == NULL)
480 session->state = PIPEX_STATE_OPENED;
489 pipex_unlink_session_locked(struct pipex_session *session)
495 session->ifindex = 0;
497 if (session->state == PIPEX_STATE_CLOSED)
499 if ((session->flags & PIPEX_SFLAGS_PPPX) == 0 &&
500 !in_nullhost(session->ip_address.sin_addr)) {
502 rn = rn_delete(&session->ip_address, &session->ip_netmask,
503 pipex_rd_head4, (struct radix_node *)session);
507 LIST_REMOVE(session, id_chain);
509 switch (session->protocol) {
512 LIST_REMOVE(session, peer_addr_chain);
516 if (session->state == PIPEX_STATE_CLOSE_WAIT)
517 LIST_REMOVE(session, state_list);
518 LIST_REMOVE(session, session_list);
519 session->state = PIPEX_STATE_CLOSED;
521 /* if final session is destroyed, stop timer */
527 pipex_unlink_session(struct pipex_session *session)
530 pipex_unlink_session_locked(session);
535 pipex_notify_close_session(struct pipex_session *session)
539 session->state = PIPEX_STATE_CLOSE_WAIT;
540 session->idle_time = 0;
541 LIST_INSERT_HEAD(&pipex_close_wait_list, session, state_list);
547 pipex_export_session_stats(struct pipex_session *session,
554 counters_read(session->stat_counters, counters, pxc_ncounters, NULL);
561 stats->idle_time = session->idle_time;
567 struct pipex_session *session;
570 session = pipex_lookup_by_session_id(req->psr_protocol,
572 if (session == NULL)
575 if (session->ownersc == ownersc)
576 pipex_export_session_stats(session, &req->psr_stat);
580 pipex_rele_session(session);
588 struct pipex_session *session, *session_tmp;
594 LIST_FOREACH_SAFE(session, &pipex_close_wait_list, state_list,
596 if (session->flags & PIPEX_SFLAGS_ITERATOR)
598 if (session->ownersc != ownersc)
600 req->plr_ppp_id[req->plr_ppp_id_count++] = session->ppp_id;
601 LIST_REMOVE(session, state_list);
602 session->state = PIPEX_STATE_CLOSE_WAIT2;
618 struct pipex_session *session;
635 session = (struct pipex_session *)rn_lookup(&pipex_in4, &pipex_in4mask,
639 if (session == NULL) {
642 PIPEX_DBG((NULL, LOG_DEBUG, "<%s> session not found (addr=%s)",
647 return (session);
653 struct pipex_session *session;
657 session = pipex_lookup_by_ip_address_locked(addr);
658 if (session != NULL)
659 refcnt_take(&session->pxs_refcnt);
663 return (session);
671 struct pipex_session *session;
676 LIST_FOREACH(session, list, id_chain) {
677 if (session->protocol == protocol &&
678 session->session_id == session_id)
683 if (session == NULL)
685 "<%s> session not found (session_id=%d)", __func__,
689 return (session);
695 struct pipex_session *session;
699 session = pipex_lookup_by_session_id_locked(protocol, session_id);
700 if (session != NULL)
701 refcnt_take(&session->pxs_refcnt);
705 return (session);
728 struct pipex_session *session, *session_tmp;
732 LIST_FOREACH_SAFE(session, &pipex_session_list, session_list,
734 if (session->flags & PIPEX_SFLAGS_ITERATOR)
736 switch (session->state) {
738 if (session->timeout_sec == 0)
741 session->idle_time++;
742 if (session->idle_time < session->timeout_sec)
745 pipex_notify_close_session(session);
751 session->idle_time++;
752 if (session->idle_time < PIPEX_CLOSE_TIMEOUT)
755 pipex_unlink_session_locked(session);
756 KASSERTMSG((session->flags & PIPEX_SFLAGS_PPPX) == 0,
757 "FIXME session must not be released when pppx");
758 pipex_rele_session(session);
777 pipex_iterator(struct pipex_session *session,
784 if (session)
785 session_tmp = LIST_NEXT(session, session_list);
799 if (session)
810 if (session)
811 pipex_rele_session(session);
817 pipex_ip_output(struct mbuf *m0, struct pipex_session *session)
821 if ((session->flags & PIPEX_SFLAGS_MULTICAST) == 0) {
827 if (session->timeout_sec != 0) {
835 if (session->state == PIPEX_STATE_OPENED)
836 session->idle_time = 0;
842 if ((session->ppp_flags & PIPEX_PPP_ADJUST_TCPMSS) != 0) {
843 m0 = adjust_tcp_mss(m0, session->peer_mru);
848 pipex_ppp_output(m0, session, PPP_IP);
859 session_tmp = pipex_iterator(NULL, &iter, session->ownersc);
869 &iter, session->ownersc);
877 counters_inc(session->stat_counters, pxc_oerrors);
881 pipex_ppp_output(struct mbuf *m0, struct pipex_session *session, int proto)
886 if (pipex_session_is_mppe_enabled(session)) {
888 m0 = pipex_mppe_output(m0, session, PPP_IP);
897 if (session->protocol != PIPEX_PROTO_PPPOE) {
909 switch (session->protocol) {
912 pipex_pppoe_output(m0, session);
917 mtx_enter(&session->pxs_mtx);
918 pipex_pptp_output(m0, session, 1, 1);
919 mtx_leave(&session->pxs_mtx);
924 pipex_l2tp_output(m0, session);
934 counters_inc(session->stat_counters, pxc_oerrors);
938 pipex_ppp_input(struct mbuf *m0, struct pipex_session *session, int decrypted)
948 proto = pipex_ppp_proto(m0, session, 0, &hlen);
955 KASSERT(pipex_session_is_mppe_accepted(session));
958 m0 = pipex_mppe_input(m0, session);
973 if ((ifp = if_get(session->ifindex)) != NULL) {
981 pipex_ccp_input(m0, session);
996 if (!decrypted && pipex_session_is_mppe_required(session))
1002 pipex_ip_input(m0, session);
1006 if (!decrypted && pipex_session_is_mppe_required(session))
1012 pipex_ip6_input(m0, session);
1027 counters_inc(session->stat_counters, pxc_ierrors);
1031 pipex_ip_input(struct mbuf *m0, struct pipex_session *session)
1039 m0->m_pkthdr.ph_ifidx = session->ifindex;
1041 if (ISSET(session->ppp_flags, PIPEX_PPP_INGRESS_FILTER)) {
1047 if ((ip->ip_src.s_addr & session->ip_netmask.sin_addr.s_addr) !=
1048 session->ip_address.sin_addr.s_addr) {
1051 pipex_session_log(session, LOG_DEBUG,
1059 if (session->timeout_sec != 0) {
1067 if (session->state == PIPEX_STATE_OPENED)
1068 session->idle_time = 0;
1074 if (session->ppp_flags & PIPEX_PPP_ADJUST_TCPMSS) {
1075 m0 = adjust_tcp_mss(m0, session->peer_mru);
1086 if ((ifp = if_get(session->ifindex)) == NULL)
1095 counters_pkt(session->stat_counters, pxc_ipackets, pxc_ibytes, len);
1103 counters_inc(session->stat_counters, pxc_ierrors);
1108 pipex_ip6_input(struct mbuf *m0, struct pipex_session *session)
1114 m0->m_pkthdr.ph_ifidx = session->ifindex;
1134 if ((ifp = if_get(session->ifindex)) == NULL)
1143 counters_pkt(session->stat_counters, pxc_ipackets, pxc_ibytes, len);
1151 counters_inc(session->stat_counters, pxc_ierrors);
1156 pipex_common_input(struct pipex_session *session, struct mbuf *m0, int hlen,
1165 mtx_leave(&session->pxs_mtx);
1169 proto = pipex_ppp_proto(m0, session, hlen, &ppphlen);
1181 if (pipex_session_is_mppe_accepted(session))
1195 mtx_leave(&session->pxs_mtx);
1211 pipex_ppp_input(m0, session, 0);
1217 counters_inc(session->stat_counters, pxc_ierrors);
1228 pipex_ppp_proto(struct mbuf *m0, struct pipex_session *session, int off,
1238 if (pipex_session_has_acf(session)) {
1242 else if (!pipex_session_is_acfc_accepted(session))
1243 PIPEX_DBG((session, LOG_DEBUG,
1248 if (!pipex_session_is_pfc_accepted(session)) {
1249 PIPEX_DBG((session, LOG_DEBUG, "Received a broken ppp "
1275 struct pipex_session *session;
1285 session = pipex_lookup_by_session_id(PIPEX_PROTO_PPPOE,
1288 if (session == NULL)
1289 PIPEX_DBG((NULL, LOG_DEBUG, "<%s> session not found (id=%d)",
1292 if (session && session->proto.pppoe.over_ifidx !=
1294 pipex_rele_session(session);
1295 session = NULL;
1298 return (session);
1302 pipex_pppoe_input(struct mbuf *m0, struct pipex_session *session)
1315 m0 = pipex_common_input(session, m0, hlen, ntohs(pppoe.length), 0);
1319 counters_inc(session->stat_counters, pxc_ierrors);
1327 pipex_pppoe_output(struct mbuf *m0, struct pipex_session *session)
1340 counters_inc(session->stat_counters, pxc_oerrors);
1352 pppoe->session_id = htons(session->session_id);
1355 m0->m_pkthdr.ph_ifidx = session->proto.pppoe.over_ifidx;
1356 refcnt_take(&session->pxs_refcnt);
1357 m0->m_pkthdr.ph_cookie = session;
1361 counters_inc(session->stat_counters, pxc_oerrors);
1362 pipex_rele_session(session);
1373 pipex_pptp_output(struct mbuf *m0, struct pipex_session *session,
1381 MUTEX_ASSERT_LOCKED(&session->pxs_mtx);
1416 ip->ip_src = session->local.sin4.sin_addr;
1417 ip->ip_dst = session->peer.sin4.sin_addr;
1426 gre->call_id = htons(session->peer_session_id);
1433 PUTLONG(session->proto.pptp.snd_nxt, cp);
1434 session->proto.pptp.snd_nxt++;
1435 session->proto.pptp.snd_gap++;
1439 session->proto.pptp.rcv_acked = session->proto.pptp.rcv_nxt - 1;
1440 PUTLONG(session->proto.pptp.rcv_acked, cp);
1444 m0->m_pkthdr.ph_ifidx = session->ifindex;
1448 counters_pkt(session->stat_counters, pxc_opackets,
1454 counters_inc(session->stat_counters, pxc_oerrors);
1460 struct pipex_session *session;
1507 /* lookup pipex session table */
1509 session = pipex_lookup_by_session_id(PIPEX_PROTO_PPTP, id);
1510 if (session == NULL) {
1512 "<%s> session not found (id=%d)", __func__, id));
1516 if (!(session->peer.sa.sa_family == AF_INET &&
1517 session->peer.sin4.sin_addr.s_addr == ip.ip_src.s_addr)) {
1519 "<%s> the source address of the session is not matched",
1524 return (session);
1531 pipex_pptp_input(struct mbuf *m0, struct pipex_session *session)
1543 pptp_session = &session->proto.pptp;
1560 PIPEX_DBG((session, LOG_DEBUG, "pullup failed."));
1572 mtx_enter(&session->pxs_mtx);
1601 pipex_session_log(session, LOG_DEBUG,
1614 pipex_pptp_output(NULL, session, 0, 1);
1625 session->proto.pptp.rcv_gap += nseq;
1626 m0 = pipex_common_input(session, m0, hlen, ntohs(gre->len), 1);
1639 session->proto.pptp.rcv_gap -= nseq;
1655 ack -= session->proto.pptp.snd_gap;
1669 mtx_leave(&session->pxs_mtx);
1673 pipex_session_log(session, LOG_DEBUG,
1679 mtx_leave(&session->pxs_mtx);
1684 counters_inc(session->stat_counters, pxc_ierrors);
1722 struct pipex_session *session;
1750 /* lookup pipex session table */
1756 LIST_FOREACH(session, list, peer_addr_chain) {
1757 if (pipex_sockaddr_compar_addr(&session->peer.sa, sa) != 0)
1759 if (session->peer_session_id == id)
1763 if (session != NULL)
1764 refcnt_take(&session->pxs_refcnt);
1769 if (session == NULL) {
1771 "<%s> session not found (,call_id=%d)",
1775 return (session);
1782 pipex_pptp_userland_output(struct mbuf *m0, struct pipex_session *session)
1802 PIPEX_DBG((session, LOG_DEBUG, "gre header is too short."));
1809 mtx_enter(&session->pxs_mtx);
1818 val32 += session->proto.pptp.snd_gap;
1820 session->proto.pptp.snd_nxt++;
1825 val32 += session->proto.pptp.rcv_gap;
1827 if (SEQ32_GT(val32, session->proto.pptp.rcv_acked))
1828 session->proto.pptp.rcv_acked = val32;
1831 mtx_leave(&session->pxs_mtx);
1842 pipex_l2tp_output(struct mbuf *m0, struct pipex_session *session)
1855 ((pipex_session_is_l2tp_data_sequencing_on(session))
1859 ((session->peer.sin6.sin6_family == AF_INET6)
1880 hlen = (session->peer.sin6.sin6_family == AF_INET6)
1886 ((pipex_session_is_l2tp_data_sequencing_on(session))
1893 l2tp->tunnel_id = htons(session->proto.l2tp.peer_tunnel_id);
1894 l2tp->session_id = htons(session->peer_session_id);
1895 if (pipex_session_is_l2tp_data_sequencing_on(session)) {
1899 mtx_enter(&session->pxs_mtx);
1900 seq->ns = htons(session->proto.l2tp.ns_nxt);
1901 session->proto.l2tp.ns_nxt++;
1902 session->proto.l2tp.ns_gap++;
1903 session->proto.l2tp.nr_acked = session->proto.l2tp.nr_nxt - 1;
1904 seq->nr = htons(session->proto.l2tp.nr_acked);
1905 mtx_leave(&session->pxs_mtx);
1911 udp->uh_sport = session->local.sin6.sin6_port;
1912 udp->uh_dport = session->peer.sin6.sin6_port;
1917 m0->m_pkthdr.ph_ifidx = session->ifindex;
1921 switch (session->peer.sin6.sin6_family) {
1925 ip->ip_src = session->local.sin4.sin_addr;
1926 ip->ip_dst = session->peer.sin4.sin_addr;
1932 mtx_enter(&session->pxs_mtx);
1933 if (session->proto.l2tp.ipsecflowinfo > 0) {
1936 mtx_leave(&session->pxs_mtx);
1941 session->proto.l2tp.ipsecflowinfo;
1944 mtx_leave(&session->pxs_mtx);
1956 ip6->ip6_src = session->local.sin6.sin6_addr;
1957 in6_embedscope(&ip6->ip6_dst, &session->peer.sin6, NULL, NULL);
1968 counters_pkt(session->stat_counters, pxc_opackets,
1975 counters_inc(session->stat_counters, pxc_oerrors);
1981 struct pipex_session *session;
2010 GETSHORT(session_id, cp); /* get session-id field */
2012 /* lookup pipex session table */
2013 session = pipex_lookup_by_session_id(PIPEX_PROTO_L2TP, session_id);
2014 if (session == NULL) {
2016 "<%s> session not found (id=%d)", __func__, session_id));
2021 if (session->peer.sa.sa_family == AF_INET &&
2022 session->peer.sin4.sin_addr.s_addr ==
2028 if (session->peer.sa.sa_family == AF_INET6 &&
2029 IN6_ARE_ADDR_EQUAL(&session->peer.sin6.sin6_addr,
2037 "<%s> the source address of the session is not matched",
2042 return (session);
2049 pipex_l2tp_input(struct mbuf *m0, int off0, struct pipex_session *session,
2058 mtx_enter(&session->pxs_mtx);
2060 l2tp_session = &session->proto.l2tp;
2063 pipex_session_log(session, LOG_DEBUG,
2078 hlen += 4; /* tunnel-id and session-id */
2094 cp += 4; /* skip tunnel-id and session-id field */
2135 session->proto.l2tp.nr_gap += nseq;
2136 m0 = pipex_common_input(session, m0, hlen, length, 1);
2149 session->proto.l2tp.nr_gap -= nseq;
2176 mtx_leave(&session->pxs_mtx);
2180 pipex_session_log(session, LOG_DEBUG,
2186 mtx_leave(&session->pxs_mtx);
2189 counters_inc(session->stat_counters, pxc_ierrors);
2227 struct pipex_session *session;
2263 LIST_FOREACH(session, list, peer_addr_chain) {
2264 if (pipex_sockaddr_compar_addr(&session->peer.sa, sa) != 0)
2266 if (session->proto.l2tp.peer_tunnel_id != tunnel_id)
2268 if (session->peer_session_id == session_id)
2272 if (session != NULL)
2273 refcnt_take(&session->pxs_refcnt);
2278 if (session == NULL) {
2279 PIPEX_DBG((NULL, LOG_DEBUG, "<%s> session not found "
2285 return (session);
2289 pipex_l2tp_userland_output(struct mbuf *m0, struct pipex_session *session)
2312 mtx_enter(&session->pxs_mtx);
2314 ns += session->proto.l2tp.ns_gap;
2316 session->proto.l2tp.ns_nxt++;
2318 nr += session->proto.l2tp.nr_gap;
2320 if (SEQ16_GT(nr, session->proto.l2tp.nr_acked))
2321 session->proto.l2tp.nr_acked = nr;
2323 mtx_leave(&session->pxs_mtx);
2395 pipex_session_init_mppe_recv(struct pipex_session *session, int stateless,
2398 pipex_mppe_init(&session->mppe_recv, stateless, keylenbits,
2400 session->ppp_flags |= PIPEX_PPP_MPPE_ACCEPTED;
2404 pipex_session_init_mppe_send(struct pipex_session *session, int stateless,
2407 pipex_mppe_init(&session->mppe_send, stateless, keylenbits,
2409 session->ppp_flags |= PIPEX_PPP_MPPE_ENABLED;
2484 pipex_mppe_input(struct mbuf *m0, struct pipex_session *session)
2498 mppe = &session->mppe_recv;
2509 PIPEX_MPPE_DBG((session, LOG_DEBUG, "in coher_cnt=%03x %s%s",
2515 pipex_session_log(session, LOG_DEBUG,
2524 * L2TP data session may be used without sequencing, PPP frames may
2543 pipex_session_log(session, LOG_DEBUG,
2583 PIPEX_DBG((session, LOG_DEBUG, "CCP SendResetReq"));
2585 mtx_enter(&session->pxs_mtx);
2586 ccp_id = session->ccp_id;
2587 session->ccp_id++;
2588 mtx_leave(&session->pxs_mtx);
2590 pipex_ccp_output(session, CCP_RESETREQ, ccp_id);
2602 pipex_session_log(session, LOG_DEBUG,
2631 pipex_mppe_output(struct mbuf *m0, struct pipex_session *session,
2643 mppe = &session->mppe_send;
2688 PIPEX_MPPE_DBG((session, LOG_DEBUG, "out coher_cnt=%03x %s%s",
2720 pipex_ccp_input(struct mbuf *m0, struct pipex_session *session)
2737 PIPEX_DBG((session, LOG_DEBUG, "CCP RecvResetReq"));
2738 mtx_enter(&session->mppe_send.pxm_mtx);
2739 session->mppe_send.flags |= PIPEX_MPPE_RESETREQ;
2740 mtx_leave(&session->mppe_send.pxm_mtx);
2742 PIPEX_DBG((session, LOG_DEBUG, "CCP SendResetAck"));
2743 pipex_ccp_output(session, CCP_RESETACK, id);
2748 PIPEX_DBG((session, LOG_DEBUG, "CCP RecvResetAck"));
2751 PIPEX_DBG((session, LOG_DEBUG, "CCP Recv code=%d", code));
2759 counters_inc(session->stat_counters, pxc_ierrors);
2763 pipex_ccp_output(struct pipex_session *session, int code, int id)
2770 counters_inc(session->stat_counters, pxc_oerrors);
2779 pipex_ppp_output(m, session, PPP_CCP);
3018 pipex_session_log(struct pipex_session *session, int prio, const char *fmt, ...)
3024 if (session != NULL) {
3027 ifp = if_get(session->ifindex);
3029 session->ppp_id,
3031 (session->protocol == PIPEX_PROTO_PPPOE)? "PPPoE" :
3032 (session->protocol == PIPEX_PROTO_PPTP)? "PPTP" :
3033 (session->protocol == PIPEX_PROTO_L2TP) ? "L2TP" :
3034 "Unknown", session->session_id);