*/
ss = session_alloc (0);
ll = listen_session_get (ll_index);
- ss->session_type = ll->session_type;
+ ss->session_type = session_type_from_proto_and_ip (TRANSPORT_PROTO_NONE,
+ sct->c_is_ip4);
ss->connection_index = sct->c_c_index;
ss->listener_index = ll->session_index;
ss->session_state = SESSION_STATE_CREATED;
fib_proto = session_endpoint_fib_proto (sep);
table_index = application_session_table (app, fib_proto);
- ll = session_lookup_listener (table_index, sep);
+ ll = session_lookup_listener_wildcard (table_index, sep);
if (ll)
return ct_connect (app_wrk, ll, sep_ext);
return 0;
}
+/**
+ * Lookup listener wildcard match
+ */
+session_t *
+session_lookup_listener_wildcard (u32 table_index, session_endpoint_t * sep)
+{
+ session_table_t *st;
+ st = session_table_get (table_index);
+ if (!st)
+ return 0;
+ if (sep->is_ip4)
+ return session_lookup_listener4_i (st, &sep->ip.ip4, sep->port,
+ sep->transport_proto,
+ 1 /* use_wildcard */ );
+ else
+ return session_lookup_listener6_i (st, &sep->ip.ip6, sep->port,
+ sep->transport_proto,
+ 1 /* use_wildcard */ );
+ return 0;
+}
+
int
session_lookup_add_half_open (transport_connection_t * tc, u64 value)
{
u8 proto);
session_t *session_lookup_listener (u32 table_index,
session_endpoint_t * sep);
+session_t *session_lookup_listener_wildcard (u32 table_index,
+ session_endpoint_t * sep);
int session_lookup_add_connection (transport_connection_t * tc, u64 value);
int session_lookup_del_connection (transport_connection_t * tc);
u64 session_lookup_endpoint_listener (u32 table_index,