diff options
Diffstat (limited to 'src/bsc_sccp.c')
-rw-r--r-- | src/bsc_sccp.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/bsc_sccp.c b/src/bsc_sccp.c new file mode 100644 index 0000000..a10a4b6 --- /dev/null +++ b/src/bsc_sccp.c @@ -0,0 +1,70 @@ +/* routines to track connections */ +/* + * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org> + * (C) 2010 by On-Waves + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include "bsc_sccp.h" +#include "bsc_data.h" + +#include <string.h> + +extern struct bsc_data bsc; + +struct active_sccp_con *find_con_by_src_ref(struct sccp_source_reference *src_ref) +{ + struct active_sccp_con *con; + + /* it is quite normal to not find this one */ + if (!src_ref) + return NULL; + + llist_for_each_entry(con, &bsc.sccp_connections, entry) { + if (memcmp(&con->src_ref, src_ref, sizeof(*src_ref)) == 0) + return con; + } + + return NULL; +} + +struct active_sccp_con *find_con_by_src_dest_ref(struct sccp_source_reference *src_ref, + struct sccp_source_reference *dst_ref) +{ + struct active_sccp_con *con; + + llist_for_each_entry(con, &bsc.sccp_connections, entry) { + if (memcmp(src_ref, &con->src_ref, sizeof(*src_ref)) == 0 && + memcmp(dst_ref, &con->dst_ref, sizeof(*dst_ref)) == 0) { + return con; + } + } + + return NULL; +} + +unsigned int sls_for_src_ref(struct sccp_source_reference *ref) +{ + struct active_sccp_con *con; + + con = find_con_by_src_ref(ref); + if (!con) + return 13; + return con->sls; +} + |