aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2013-03-19 08:18:37 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2013-03-19 08:20:15 +0100
commitf8055f93b13936ece45a64252e177edc17f53e23 (patch)
treee60b9052e8dfe8648a86ab918f4168885c431324 /include
parent2a2b2a5f6dfcfbc41e4e1ab24b7d5bd5901b4d02 (diff)
link_sets: Move the struct mtp_link_set to a new header file
The struct will be split into two parts on the way of our journey, it will be struct link_set and then struct mtp_link_set and others to match that.
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am2
-rw-r--r--include/linkset.h121
-rw-r--r--include/mtp_data.h87
3 files changed, 124 insertions, 86 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index aff4e37..57844be 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -3,6 +3,6 @@ noinst_HEADERS = mtp_level3.h mtp_data.h ipaccess.h thread.h mtp_pcap.h \
snmp_mtp.h cellmgr_debug.h bsc_sccp.h bsc_ussd.h sctp_m2ua.h \
isup_types.h counter.h msc_connection.h ss7_application.h \
mgcp_patch.h ss7_vty.h dtmf_scheduler.h mgcp_callagent.h \
- isup_filter.h
+ isup_filter.h linkset.h
SUBDIRS = mgcp
diff --git a/include/linkset.h b/include/linkset.h
new file mode 100644
index 0000000..1385cf1
--- /dev/null
+++ b/include/linkset.h
@@ -0,0 +1,121 @@
+/* Everything related to linksets */
+/*
+ * (C) 2010-2013 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * (C) 2010-2013 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 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 linkset_h
+#define linkset_h
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/core/timer.h>
+
+#include <stdint.h>
+
+struct msgb;
+
+/**
+ * The state of the mtp_link in terms of layer3 and upwards
+ */
+struct mtp_link_set {
+ struct llist_head entry;
+ int nr;
+ char *name;
+
+ /*
+ * Callbacks for the SS7 application
+ */
+ void (*on_down) (struct mtp_link_set *set);
+ void (*on_up) (struct mtp_link_set *set);
+ void (*on_sccp) (struct mtp_link_set *set, struct msgb *msg, int sls);
+ void (*on_isup) (struct mtp_link_set *set, struct msgb *msg, int sls);
+
+
+ /**
+ * Routing is very limited. We can only forward to one
+ * other STP/Endpoint. For ISUP and SCCP we can statically
+ * send it to another destination. We need to follow Q.704
+ * more properly here.
+ * DPC/OPC are the ones for the linkset,
+ * sccp_dpc/isup_dpc are where we will send SCCP/ISUP messages
+ * sccp_opc/isup_opc are what we announce in the TFP
+ */
+ int dpc, opc;
+ int sccp_dpc, isup_dpc;
+ int sccp_opc, isup_opc;
+ int ni;
+ int spare;
+
+
+ /* internal state */
+ /* the MTP1 link is up */
+ int available;
+ int running;
+ int sccp_up;
+ int linkset_up;
+
+ int last_sls;
+
+ struct llist_head links;
+ int nr_links;
+ struct mtp_link *slc[16];
+ int sltm_once;
+
+ /* ssn map */
+ int supported_ssn[256];
+
+ int pcap_fd;
+
+ /* special handling */
+ int pass_all_isup;
+
+ /* statistics */
+ struct rate_ctr_group *ctrg;
+
+ /* statistics for routing */
+ int timeout_t18;
+ int timeout_t20;
+ struct osmo_timer_list T18;
+ struct osmo_timer_list T20;
+
+ /* custom data */
+ struct bsc_data *bsc;
+ struct ss7_application *app;
+};
+
+void mtp_link_set_stop(struct mtp_link_set *set);
+void mtp_link_set_reset(struct mtp_link_set *set);
+int mtp_link_set_data(struct mtp_link *link, struct msgb *msg);
+int mtp_link_handle_data(struct mtp_link *link, struct msgb *msg);
+int mtp_link_set_submit_sccp_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
+int mtp_link_set_submit_isup_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
+
+void mtp_link_set_init_slc(struct mtp_link_set *set);
+
+/* link management */
+struct mtp_link_set *mtp_link_set_alloc(struct bsc_data *bsc);
+struct mtp_link_set *mtp_link_set_num(struct bsc_data *bsc, int num);
+
+/* to be implemented for MSU sending */
+int mtp_link_set_send(struct mtp_link_set *set, struct msgb *msg);
+
+/* internal routines */
+struct msgb *mtp_msg_alloc(struct mtp_link_set *set);
+
+
+#endif
diff --git a/include/mtp_data.h b/include/mtp_data.h
index 5c91cbc..f913335 100644
--- a/include/mtp_data.h
+++ b/include/mtp_data.h
@@ -20,6 +20,8 @@
#ifndef mtp_data_h
#define mtp_data_h
+#include "linkset.h"
+
#include <osmocom/core/msgb.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/utils.h>
@@ -44,75 +46,6 @@ enum ss7_link_type {
};
/**
- * The state of the mtp_link in terms of layer3 and upwards
- */
-struct mtp_link_set {
- struct llist_head entry;
- int nr;
- char *name;
-
- /*
- * Callbacks for the SS7 application
- */
- void (*on_down) (struct mtp_link_set *set);
- void (*on_up) (struct mtp_link_set *set);
- void (*on_sccp) (struct mtp_link_set *set, struct msgb *msg, int sls);
- void (*on_isup) (struct mtp_link_set *set, struct msgb *msg, int sls);
-
-
- /**
- * Routing is very limited. We can only forward to one
- * other STP/Endpoint. For ISUP and SCCP we can statically
- * send it to another destination. We need to follow Q.704
- * more properly here.
- * DPC/OPC are the ones for the linkset,
- * sccp_dpc/isup_dpc are where we will send SCCP/ISUP messages
- * sccp_opc/isup_opc are what we announce in the TFP
- */
- int dpc, opc;
- int sccp_dpc, isup_dpc;
- int sccp_opc, isup_opc;
- int ni;
- int spare;
-
-
- /* internal state */
- /* the MTP1 link is up */
- int available;
- int running;
- int sccp_up;
- int linkset_up;
-
- int last_sls;
-
- struct llist_head links;
- int nr_links;
- struct mtp_link *slc[16];
- int sltm_once;
-
- /* ssn map */
- int supported_ssn[256];
-
- int pcap_fd;
-
- /* special handling */
- int pass_all_isup;
-
- /* statistics */
- struct rate_ctr_group *ctrg;
-
- /* statistics for routing */
- int timeout_t18;
- int timeout_t20;
- struct osmo_timer_list T18;
- struct osmo_timer_list T20;
-
- /* custom data */
- struct bsc_data *bsc;
- struct ss7_application *app;
-};
-
-/**
* One physical link to somewhere. This is the base
* with the interface used by the mtp_link_set. There
* will be specific implementations for M2UA, UDP and
@@ -159,15 +92,6 @@ struct mtp_link {
};
-void mtp_link_set_stop(struct mtp_link_set *set);
-void mtp_link_set_reset(struct mtp_link_set *set);
-int mtp_link_set_data(struct mtp_link *link, struct msgb *msg);
-int mtp_link_handle_data(struct mtp_link *link, struct msgb *msg);
-int mtp_link_set_submit_sccp_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
-int mtp_link_set_submit_isup_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
-
-void mtp_link_set_init_slc(struct mtp_link_set *set);
-
void mtp_link_block(struct mtp_link *link);
void mtp_link_unblock(struct mtp_link *link);
@@ -175,7 +99,6 @@ void mtp_link_unblock(struct mtp_link *link);
/* to be implemented for MSU sending */
void mtp_link_submit(struct mtp_link *link, struct msgb *msg);
void mtp_link_restart(struct mtp_link *link);
-int mtp_link_set_send(struct mtp_link_set *set, struct msgb *msg);
/* link related routines */
void mtp_link_down(struct mtp_link *data);
@@ -187,13 +110,7 @@ int mtp_link_slta(struct mtp_link *link, uint16_t l3_len, struct mtp_level_3_mng
void mtp_link_failure(struct mtp_link *fail);
-/* internal routines */
-struct msgb *mtp_msg_alloc(struct mtp_link_set *set);
-
/* link management */
-struct mtp_link_set *mtp_link_set_alloc(struct bsc_data *bsc);
-struct mtp_link_set *mtp_link_set_num(struct bsc_data *bsc, int num);
-
struct mtp_link *mtp_link_alloc(struct mtp_link_set *set);
struct mtp_link *mtp_link_num(struct mtp_link_set *set, int num);