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-10 11:48:34 +0200
commitcd13b68e67159bd8beb47b660fe45b4613a0eb76 (patch)
tree6c65ddb37faf16ae600956e69492dc5a459ab902
parentdd59a11667645e21ea1c0b563dda52324adc6249 (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 0be5467..0f42d63 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
***********************************************************************/
@@ -871,7 +875,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 */
@@ -932,7 +936,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,
@@ -992,7 +996,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,
@@ -1044,7 +1048,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,
@@ -1095,7 +1099,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,
@@ -1144,7 +1148,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,
@@ -1196,7 +1200,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,