diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-02-16 16:12:07 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-02-17 19:34:27 +0100 |
commit | a7bc3aafdc79c04e038eab741ed8f428c13751c0 (patch) | |
tree | 1d46afd8da0f94685bf1a089590634229e17201e /include | |
parent | 2cdb73cf4a0bb9e7a47cdb6eba4601d00e4eb0d2 (diff) |
ss7: Create a SS7 application that is responsible for the routing
Diffstat (limited to 'include')
-rw-r--r-- | include/Makefile.am | 2 | ||||
-rw-r--r-- | include/bsc_data.h | 11 | ||||
-rw-r--r-- | include/bsc_sccp.h | 13 | ||||
-rw-r--r-- | include/msc_connection.h | 6 | ||||
-rw-r--r-- | include/mtp_data.h | 5 | ||||
-rw-r--r-- | include/ss7_application.h | 82 |
6 files changed, 97 insertions, 22 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index ce617e7..a4cdfb3 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,6 +1,6 @@ noinst_HEADERS = mtp_level3.h mtp_data.h ipaccess.h thread.h mtp_pcap.h \ mgcp_ss7.h bss_patch.h bssap_sccp.h bsc_data.h udp_input.h \ snmp_mtp.h cellmgr_debug.h bsc_sccp.h bsc_ussd.h sctp_m2ua.h \ - isup_types.h counter.h msc_connection.h + isup_types.h counter.h msc_connection.h ss7_application.h SUBDIRS = mgcp diff --git a/include/bsc_data.h b/include/bsc_data.h index ac799f1..fc1dcdf 100644 --- a/include/bsc_data.h +++ b/include/bsc_data.h @@ -67,12 +67,6 @@ struct mtp_udp_link { struct snmp_mtp_session *session; }; -enum { - APP_CELLMGR, - APP_RELAY, - APP_STP, -}; - struct bsc_data { int app; @@ -116,6 +110,10 @@ struct bsc_data { /* MSCs */ struct llist_head mscs; int num_mscs; + + /* application */ + struct llist_head apps; + int num_apps; }; /* bsc related functions */ @@ -125,7 +123,6 @@ void mtp_linkset_down(struct mtp_link_set *); void mtp_linkset_up(struct mtp_link_set *); /* connection tracking and action */ -void update_con_state(struct msc_connection *msc, int rc, struct sccp_parse_result *result, struct msgb *msg, int from_msc, int sls); /* udp init */ int link_global_init(struct mtp_udp_data *data, int src_port); diff --git a/include/bsc_sccp.h b/include/bsc_sccp.h index 9c3bb11..f7489bb 100644 --- a/include/bsc_sccp.h +++ b/include/bsc_sccp.h @@ -30,7 +30,7 @@ #include <osmocom/sccp/sccp.h> -struct msc_connection; +struct ss7_application; /* * One SCCP connection. @@ -55,7 +55,8 @@ struct active_sccp_con { /* how often did we send a RLSD this */ unsigned int rls_tries; - /* MTP link this was coming in */ + /* Link to the SS7 Application */ + struct ss7_application *app; struct mtp_link_set *link; /* sls id */ @@ -63,10 +64,10 @@ struct active_sccp_con { }; void free_con(struct active_sccp_con *con); -struct active_sccp_con *find_con_by_dest_ref(struct msc_connection *, struct sccp_source_reference *ref); -struct active_sccp_con *find_con_by_src_ref(struct msc_connection *,struct sccp_source_reference *src_ref); -struct active_sccp_con *find_con_by_src_dest_ref(struct msc_connection *, struct sccp_source_reference *src_ref, +struct active_sccp_con *find_con_by_dest_ref(struct ss7_application *, struct sccp_source_reference *ref); +struct active_sccp_con *find_con_by_src_ref(struct ss7_application *,struct sccp_source_reference *src_ref); +struct active_sccp_con *find_con_by_src_dest_ref(struct ss7_application *, struct sccp_source_reference *src_ref, struct sccp_source_reference *dst_ref); -unsigned int sls_for_src_ref(struct msc_connection *, struct sccp_source_reference *ref); +unsigned int sls_for_src_ref(struct ss7_application *, struct sccp_source_reference *ref); #endif diff --git a/include/msc_connection.h b/include/msc_connection.h index 51a5326..c7957ec 100644 --- a/include/msc_connection.h +++ b/include/msc_connection.h @@ -55,16 +55,12 @@ struct msc_connection { int pong_time; struct timer_list ping_timeout; struct timer_list pong_timeout; - struct timer_list reset_timeout; /* mgcp messgaes */ struct write_queue mgcp_agent; /* application pointer */ - struct llist_head sccp_connections; - struct mtp_link_set *target_link; - int forward_only; - int reset_count; + struct ss7_application *app; }; /* msc related functions */ diff --git a/include/mtp_data.h b/include/mtp_data.h index 6ed31c3..48b0ddb 100644 --- a/include/mtp_data.h +++ b/include/mtp_data.h @@ -25,10 +25,10 @@ #include <osmocore/utils.h> struct bsc_data; -struct msc_connection; struct mtp_link; struct mtp_level_3_mng *mng; struct rate_ctr_group; +struct ss7_application; /* MTP Level3 timers */ @@ -76,8 +76,7 @@ struct mtp_link_set { /* custom data */ struct bsc_data *bsc; - struct msc_connection *fw; - struct mtp_link_set *forward; + struct ss7_application *app; }; /** diff --git a/include/ss7_application.h b/include/ss7_application.h new file mode 100644 index 0000000..76117e6 --- /dev/null +++ b/include/ss7_application.h @@ -0,0 +1,82 @@ +/* Stuff to handle the SS7 application */ +/* + * (C) 2011 by Holger Hans Peter Freyther <zecke@selfish.org> + * All Rights Reserved + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef SS7_APPLICATION_H +#define SS7_APPLICATION_H + +#include <osmocore/linuxlist.h> +#include <osmocore/timer.h> + +struct bsc_data; +struct msc_connection; +struct mtp_link_set; +struct mtp_link; + +enum ss7_set_type { + SS7_SET_LINKSET, + SS7_SET_MSC, +}; + +enum ss7_app_type { + APP_CELLMGR, + APP_RELAY, + APP_STP, +}; + +struct ss7_application_route { + int type; + int nr; + + /* maybe they were resolved */ + struct mtp_link_set *set; + struct msc_connection *msc; +}; + +struct ss7_application { + /* handling */ + struct llist_head entry; + int nr; + char *name; + + /* app type */ + int type; + + /* for the routing */ + struct ss7_application_route route_src; + struct ss7_application_route route_dst; + + struct bsc_data *bsc; + + /* handling for the NAT/State handling */ + struct llist_head sccp_connections; + struct timer_list reset_timeout; + struct mtp_link_set *target_link; + int forward_only; + int reset_count; +}; + + +struct ss7_application *ss7_application_alloc(struct bsc_data *); +struct ss7_application *ss7_application_num(struct bsc_data *, int nr); +int ss7_application_setup(struct ss7_application *, int type, + int src_type, int src_num, + int dst_type, int dst_num); + +#endif |