aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-04-03 19:46:20 +0200
committerHarald Welte <laforge@gnumonks.org>2017-04-03 22:11:41 +0200
commit68195e86d984c0d4cde422d17e30b7f3ecb84bb4 (patch)
treeb843c48f7ec92f606c21266d553d045a478db2ba
parent1c694b7eaf478a885bfbce75562647cceafc3ee5 (diff)
sua.c: Replace sua_msgb_alloc() with new sccp_msgb_alloc()
-rw-r--r--src/Makefile.am2
-rw-r--r--src/sccp_internal.h5
-rw-r--r--src/sua.c32
3 files changed, 24 insertions, 15 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f7f4ccc..ec3fe99 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,7 @@
AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)
AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMONETIF_CFLAGS)
-noinst_HEADERS = xua_asp_fsm.h xua_as_fsm.h xua_internal.h
+noinst_HEADERS = sccp_internal.h xua_asp_fsm.h xua_as_fsm.h xua_internal.h
# Legacy static libs
diff --git a/src/sccp_internal.h b/src/sccp_internal.h
new file mode 100644
index 0000000..7287a82
--- /dev/null
+++ b/src/sccp_internal.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include <osmocom/core/msgb.h>
+
+struct msgb *sccp_msgb_alloc(const char *name);
diff --git a/src/sua.c b/src/sua.c
index e81bce7..b135c62 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -51,6 +51,17 @@
#define GUARD_TIMER (23 * 60 * 100)
#define RESET_TIMER ( 10 * 100)
+#define SCCP_MSG_SIZE 2048
+#define SCCP_MSG_HEADROOM 512
+
+struct msgb *sccp_msgb_alloc(const char *name)
+{
+ if (!name)
+ name = "SCCP";
+ return msgb_alloc_headroom(SCCP_MSG_SIZE+SCCP_MSG_HEADROOM,
+ SCCP_MSG_HEADROOM, name);
+}
+
/***********************************************************************
* Protocol Definition (string tables, mandatory IE checking)
***********************************************************************/
@@ -432,13 +443,6 @@ static void conn_start_inact_timers(struct sua_connection *conn)
conn_restart_rx_inact_timer(conn);
}
-
-static struct msgb *sua_msgb_alloc(void)
-{
- return msgb_alloc(SUA_MSGB_SIZE, "SUA Primitive");
-}
-
-
/***********************************************************************
* Handling of messages from the User SAP
***********************************************************************/
@@ -872,7 +876,7 @@ static int sua_rx_cldt(struct osmo_sccp_link *link, struct xua_msg *xua)
struct osmo_scu_prim *prim;
struct osmo_scu_unitdata_param *param;
struct xua_msg_part *data_ie = xua_msg_find_tag(xua, SUA_IEI_DATA);
- struct msgb *upmsg = sua_msgb_alloc();
+ struct msgb *upmsg = sccp_msgb_alloc(__func__);
uint32_t protocol_class;
/* fill primitive */
@@ -933,7 +937,7 @@ static int sua_rx_core(struct osmo_sccp_link *link, struct xua_msg *xua)
conn->remote_ref = xua_msg_get_u32(xua, SUA_IEI_SRC_REF);
/* fill primitive */
- upmsg = sua_msgb_alloc();
+ upmsg = sccp_msgb_alloc(__func__);
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
param = &prim->u.connect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
@@ -993,7 +997,7 @@ static int sua_rx_coak(struct osmo_sccp_link *link, struct xua_msg *xua)
conn->remote_ref = xua_msg_get_u32(xua, SUA_IEI_SRC_REF);
/* fill primitive */
- upmsg = sua_msgb_alloc();
+ upmsg = sccp_msgb_alloc(__func__);
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
param = &prim->u.connect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
@@ -1045,7 +1049,7 @@ static int sua_rx_coref(struct osmo_sccp_link *link, struct xua_msg *xua)
conn_restart_rx_inact_timer(conn);
/* fill primitive */
- upmsg = sua_msgb_alloc();
+ upmsg = sccp_msgb_alloc(__func__);
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
param = &prim->u.disconnect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
@@ -1096,7 +1100,7 @@ static int sua_rx_relre(struct osmo_sccp_link *link, struct xua_msg *xua)
}
/* fill primitive */
- upmsg = sua_msgb_alloc();
+ upmsg = sccp_msgb_alloc(__func__);
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
param = &prim->u.disconnect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
@@ -1145,7 +1149,7 @@ static int sua_rx_relco(struct osmo_sccp_link *link, struct xua_msg *xua)
conn_restart_rx_inact_timer(conn);
/* fill primitive */
- upmsg = sua_msgb_alloc();
+ upmsg = sccp_msgb_alloc(__func__);
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
param = &prim->u.disconnect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
@@ -1197,7 +1201,7 @@ static int sua_rx_codt(struct osmo_sccp_link *link, struct xua_msg *xua)
conn_restart_rx_inact_timer(conn);
/* fill primitive */
- upmsg = sua_msgb_alloc();
+ upmsg = sccp_msgb_alloc(__func__);
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
param = &prim->u.data;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,