l2tpd_data: search for a specific session_id using all connections

because sessions are unique per l2tp_instance we have to search over all connections to
find the correct session
This commit is contained in:
Alexander Couzens 2016-10-31 00:45:47 +01:00 committed by Harald Welte
parent 7916154136
commit b0688440f0
2 changed files with 8 additions and 5 deletions

View File

@ -100,12 +100,15 @@ l2tpd_sess_alloc(struct l2tpd_instance *l2i, struct l2tpd_connection *conn)
}
struct l2tpd_session *
l2tpd_sess_find_by_l_s_id(struct l2tpd_connection *conn, uint32_t session_id)
l2tpd_sess_find_by_l_s_id(struct l2tpd_instance *l2i, uint32_t session_id)
{
struct l2tpd_session *l2s;
llist_for_each_entry(l2s, &conn->sessions, list) {
if (l2s->l_sess_id == session_id)
return l2s;
struct l2tpd_connection *l2c;
llist_for_each_entry(l2c, &l2i->connections, list) {
llist_for_each_entry(l2s, &l2c->sessions, list) {
if (l2s->l_sess_id == session_id)
return l2s;
}
}
return NULL;
}

View File

@ -19,4 +19,4 @@ struct l2tpd_session *
l2tpd_sess_alloc(struct l2tpd_instance *inst, struct l2tpd_connection *conn);
struct l2tpd_session *
l2tpd_sess_find_by_l_s_id(struct l2tpd_connection *conn, uint32_t session_id);
l2tpd_sess_find_by_l_s_id(struct l2tpd_instance *inst, uint32_t session_id);