aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--include/osmocom/Makefile.am1
-rw-r--r--include/osmocom/msc/Makefile.am1
-rw-r--r--include/osmocom/msc/smpp.h4
-rw-r--r--include/osmocom/smpp/Makefile.am4
-rw-r--r--include/osmocom/smpp/smpp.h31
-rw-r--r--include/osmocom/smpp/smpp_smsc.h (renamed from src/libmsc/smpp_smsc.h)13
-rw-r--r--src/Makefile.am10
-rw-r--r--src/libmsc/Makefile.am16
-rw-r--r--src/libmsc/gsm_04_11.c3
-rw-r--r--src/libsmpputil/Makefile.am25
-rw-r--r--src/libsmpputil/smpp_msc.c (renamed from src/libmsc/smpp_openbsc.c)4
-rw-r--r--src/libsmpputil/smpp_smsc.c (renamed from src/libmsc/smpp_smsc.c)26
-rw-r--r--src/libsmpputil/smpp_utils.c (renamed from src/libmsc/smpp_utils.c)10
-rw-r--r--src/libsmpputil/smpp_vty.c (renamed from src/libmsc/smpp_vty.c)3
-rw-r--r--src/osmo-msc/Makefile.am10
-rw-r--r--src/osmo-msc/msc_main.c2
-rw-r--r--src/utils/Makefile.am4
-rw-r--r--src/utils/smpp_mirror.c25
-rw-r--r--tests/db_sms/Makefile.am2
-rw-r--r--tests/msc_vlr/Makefile.am2
-rw-r--r--tests/smpp/Makefile.am4
-rw-r--r--tests/smpp/smpp_test.c4
-rw-r--r--tests/sms_queue/Makefile.am1
-rw-r--r--tests/stubs.c8
25 files changed, 114 insertions, 101 deletions
diff --git a/configure.ac b/configure.ac
index 21056f913..41e51dad6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -234,9 +234,11 @@ AC_OUTPUT(
include/Makefile
include/osmocom/Makefile
include/osmocom/msc/Makefile
+ include/osmocom/smpp/Makefile
src/Makefile
src/libmsc/Makefile
src/libvlr/Makefile
+ src/libsmpputil/Makefile
src/osmo-msc/Makefile
src/utils/Makefile
tests/Makefile
diff --git a/include/osmocom/Makefile.am b/include/osmocom/Makefile.am
index 4d8063711..b07a00459 100644
--- a/include/osmocom/Makefile.am
+++ b/include/osmocom/Makefile.am
@@ -1,3 +1,4 @@
SUBDIRS = \
msc \
+ smpp \
$(NULL)
diff --git a/include/osmocom/msc/Makefile.am b/include/osmocom/msc/Makefile.am
index faf1048dc..adda44c76 100644
--- a/include/osmocom/msc/Makefile.am
+++ b/include/osmocom/msc/Makefile.am
@@ -45,7 +45,6 @@ noinst_HEADERS = \
sgs_vty.h \
signal.h \
silent_call.h \
- smpp.h \
sms_queue.h \
transaction.h \
vlr.h \
diff --git a/include/osmocom/msc/smpp.h b/include/osmocom/msc/smpp.h
deleted file mode 100644
index bcdac8f0b..000000000
--- a/include/osmocom/msc/smpp.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-int smpp_openbsc_alloc_init(void *ctx);
-int smpp_openbsc_start(struct gsm_network *net);
diff --git a/include/osmocom/smpp/Makefile.am b/include/osmocom/smpp/Makefile.am
new file mode 100644
index 000000000..5ad34ad0d
--- /dev/null
+++ b/include/osmocom/smpp/Makefile.am
@@ -0,0 +1,4 @@
+noinst_HEADERS = \
+ smpp.h \
+ smpp_smsc.h \
+ $(NULL)
diff --git a/include/osmocom/smpp/smpp.h b/include/osmocom/smpp/smpp.h
new file mode 100644
index 000000000..cc0e8003a
--- /dev/null
+++ b/include/osmocom/smpp/smpp.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include <osmocom/msc/gsm_data.h>
+
+/* Length limits according to SMPP 3.4 spec including NUL-byte: */
+#define SMPP_SYS_ID_LEN 15
+#define SMPP_PASSWD_LEN 8
+
+enum esme_read_state {
+ READ_ST_IN_LEN = 0,
+ READ_ST_IN_MSG = 1,
+};
+
+/*! \brief Ugly wrapper. libsmpp34 should do this itself! */
+#define SMPP34_UNPACK(rc, type, str, data, len) { \
+ memset(str, 0, sizeof(*str)); \
+ rc = smpp34_unpack(type, str, data, len); }
+
+#define PACK_AND_SEND(esme, ptr) pack_and_send(esme, (ptr)->command_id, ptr)
+
+/*! \brief initialize the libsmpp34 data structure for a response */
+#define INIT_RESP(type, resp, req) { \
+ memset((resp), 0, sizeof(*(resp))); \
+ (resp)->command_length = 0; \
+ (resp)->command_id = type; \
+ (resp)->command_status = ESME_ROK; \
+ (resp)->sequence_number = (req)->sequence_number; }
+
+uint32_t smpp_msgb_cmdid(struct msgb *msg);
+int smpp_openbsc_alloc_init(void *ctx);
+int smpp_openbsc_start(struct gsm_network *net);
diff --git a/src/libmsc/smpp_smsc.h b/include/osmocom/smpp/smpp_smsc.h
index 76772a3ee..fb5164faf 100644
--- a/src/libmsc/smpp_smsc.h
+++ b/include/osmocom/smpp/smpp_smsc.h
@@ -1,5 +1,4 @@
-#ifndef _SMPP_SMSC_H
-#define _SMPP_SMSC_H
+#pragma once
#include <sys/socket.h>
#include <netinet/in.h>
@@ -8,24 +7,17 @@
#include <osmocom/core/msgb.h>
#include <osmocom/core/write_queue.h>
#include <osmocom/core/timer.h>
+#include <osmocom/smpp/smpp.h>
#include <smpp34.h>
#include <smpp34_structs.h>
#include <smpp34_params.h>
-#define SMPP_SYS_ID_LEN 15
-#define SMPP_PASSWD_LEN 8
-
#define MODE_7BIT 7
#define MODE_8BIT 8
struct msc_a;
-enum esme_read_state {
- READ_ST_IN_LEN = 0,
- READ_ST_IN_MSG = 1,
-};
-
struct osmo_smpp_acl;
struct osmo_smpp_addr {
@@ -164,4 +156,3 @@ struct ran_conn;
bool smpp_route_smpp_first();
int smpp_try_deliver(struct gsm_sms *sms, struct msc_a *msc_a);
-#endif
diff --git a/src/Makefile.am b/src/Makefile.am
index 4e7cea19b..e23ab102c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -25,8 +25,16 @@ SUBDIRS = \
libmsc \
$(NULL)
+if BUILD_SMPP
+
+SUBDIRS += \
+ libsmpputil \
+ utils \
+ $(NULL)
+
+endif
+
# Programs
SUBDIRS += \
osmo-msc \
- utils \
$(NULL)
diff --git a/src/libmsc/Makefile.am b/src/libmsc/Makefile.am
index d3b6035e2..de02a1779 100644
--- a/src/libmsc/Makefile.am
+++ b/src/libmsc/Makefile.am
@@ -20,9 +20,6 @@ AM_CFLAGS = \
$(LIBOSMONETIF_CFLAGS) \
$(NULL)
-noinst_HEADERS = \
- $(NULL)
-
noinst_LIBRARIES = \
libmsc.a \
$(NULL)
@@ -81,16 +78,3 @@ libmsc_a_SOURCES += \
ran_msg_iu.c \
$(NULL)
endif
-
-if BUILD_SMPP
-noinst_HEADERS += \
- smpp_smsc.h \
- $(NULL)
-
-libmsc_a_SOURCES += \
- smpp_smsc.c \
- smpp_openbsc.c \
- smpp_vty.c \
- smpp_utils.c \
- $(NULL)
-endif
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 743e2722b..adc9d88c8 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -58,7 +58,7 @@
#include <osmocom/msc/paging.h>
#ifdef BUILD_SMPP
-#include "smpp_smsc.h"
+#include <osmocom/smpp/smpp_smsc.h>
#endif
void *tall_gsms_ctx;
@@ -1389,4 +1389,3 @@ void gsm411_sapi_n_reject(struct msc_a *msc_a)
trans_free(trans);
}
}
-
diff --git a/src/libsmpputil/Makefile.am b/src/libsmpputil/Makefile.am
new file mode 100644
index 000000000..b180ddf6f
--- /dev/null
+++ b/src/libsmpputil/Makefile.am
@@ -0,0 +1,25 @@
+AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)
+AM_CFLAGS= \
+ -Wall \
+ $(LIBOSMOCORE_CFLAGS) \
+ $(LIBOSMOVTY_CFLAGS) \
+ $(LIBOSMOSCCP_CFLAGS) \
+ $(LIBOSMOGSM_CFLAGS) \
+ $(LIBOSMONETIF_CFLAGS) \
+ $(LIBOSMOMGCPCLIENT_CFLAGS) \
+ $(LIBOSMOGSUPCLIENT_CFLAGS) \
+ $(LIBSMPP34_CFLAGS) \
+ $(COVERAGE_CFLAGS) \
+ $(NULL)
+
+noinst_HEADERS = \
+ $(NULL)
+
+noinst_LIBRARIES = libsmpputil.a
+
+libsmpputil_a_SOURCES = \
+ smpp_utils.c \
+ smpp_vty.c \
+ smpp_msc.c \
+ smpp_smsc.c \
+ $(NULL)
diff --git a/src/libmsc/smpp_openbsc.c b/src/libsmpputil/smpp_msc.c
index 91666a9ca..090905a13 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libsmpputil/smpp_msc.c
@@ -48,8 +48,7 @@
#include <osmocom/msc/gsm_subscriber.h>
#include <osmocom/msc/vlr.h>
#include <osmocom/msc/msc_a.h>
-
-#include "smpp_smsc.h"
+#include <osmocom/smpp/smpp_smsc.h>
#define VSUB_USE_SMPP "SMPP"
#define VSUB_USE_SMPP_CMD "SMPP-cmd"
@@ -862,4 +861,3 @@ int smpp_openbsc_start(struct gsm_network *net)
return 0;
}
-
diff --git a/src/libmsc/smpp_smsc.c b/src/libsmpputil/smpp_smsc.c
index da6607421..b03f7bea3 100644
--- a/src/libmsc/smpp_smsc.c
+++ b/src/libsmpputil/smpp_smsc.c
@@ -40,15 +40,9 @@
#include <osmocom/core/talloc.h>
#include <osmocom/gsm/protocol/gsm_04_11.h>
-#include "smpp_smsc.h"
-
#include <osmocom/msc/debug.h>
#include <osmocom/msc/gsm_data.h>
-
-/*! \brief Ugly wrapper. libsmpp34 should do this itself! */
-#define SMPP34_UNPACK(rc, type, str, data, len) \
- memset(str, 0, sizeof(*str)); \
- rc = smpp34_unpack(type, str, data, len)
+#include <osmocom/smpp/smpp_smsc.h>
enum emse_bind {
ESME_BIND_RX = 0x01,
@@ -333,18 +327,7 @@ int smpp_route(const struct smsc *smsc, const struct osmo_smpp_addr *dest, struc
return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
}
-
-/*! \brief initialize the libsmpp34 data structure for a response */
-#define INIT_RESP(type, resp, req) { \
- memset((resp), 0, sizeof(*(resp))); \
- (resp)->command_length = 0; \
- (resp)->command_id = type; \
- (resp)->command_status = ESME_ROK; \
- (resp)->sequence_number = (req)->sequence_number; \
-}
-
/*! \brief pack a libsmpp34 data strcutrure and send it to the ESME */
-#define PACK_AND_SEND(esme, ptr) pack_and_send(esme, (ptr)->command_id, ptr)
static int pack_and_send(struct osmo_esme *esme, uint32_t type, void *ptr)
{
struct msgb *msg;
@@ -394,13 +377,6 @@ static int smpp_tx_gen_nack(struct osmo_esme *esme, uint32_t seq, uint32_t statu
return PACK_AND_SEND(esme, &nack);
}
-/*! \brief retrieve SMPP command ID from a msgb */
-static inline uint32_t smpp_msgb_cmdid(struct msgb *msg)
-{
- uint8_t *tmp = msgb_data(msg) + 4;
- return ntohl(*(uint32_t *)tmp);
-}
-
/*! \brief retrieve SMPP sequence number from a msgb */
static inline uint32_t smpp_msgb_seq(struct msgb *msg)
{
diff --git a/src/libmsc/smpp_utils.c b/src/libsmpputil/smpp_utils.c
index 3c7757b9a..bada97217 100644
--- a/src/libmsc/smpp_utils.c
+++ b/src/libsmpputil/smpp_utils.c
@@ -21,8 +21,16 @@
#include <time.h>
-#include "smpp_smsc.h"
#include <osmocom/core/logging.h>
+#include <osmocom/netif/stream.h>
+#include <osmocom/smpp/smpp_smsc.h>
+
+/*! \brief retrieve SMPP command ID from a msgb */
+uint32_t smpp_msgb_cmdid(struct msgb *msg)
+{
+ uint8_t *tmp = msgb_data(msg) + 4;
+ return ntohl(*(uint32_t *)tmp);
+}
int smpp_determine_scheme(uint8_t dcs, uint8_t *data_coding, int *mode)
{
diff --git a/src/libmsc/smpp_vty.c b/src/libsmpputil/smpp_vty.c
index da260a895..40514d490 100644
--- a/src/libmsc/smpp_vty.c
+++ b/src/libsmpputil/smpp_vty.c
@@ -34,8 +34,7 @@
#include <osmocom/core/talloc.h>
#include <osmocom/msc/vty.h>
-
-#include "smpp_smsc.h"
+#include <osmocom/smpp/smpp_smsc.h>
struct smsc *smsc_from_vty(struct vty *v);
diff --git a/src/osmo-msc/Makefile.am b/src/osmo-msc/Makefile.am
index cdc3448ab..0380d5d1f 100644
--- a/src/osmo-msc/Makefile.am
+++ b/src/osmo-msc/Makefile.am
@@ -43,7 +43,6 @@ osmo_msc_LDADD = \
$(LIBOSMOCTRL_LIBS) \
$(LIBOSMOABIS_LIBS) \
$(LIBOSMONETIF_LIBS) \
- $(LIBSMPP34_LIBS) \
$(LIBOSMORANAP_LIBS) \
$(LIBASN1C_LIBS) \
$(LIBOSMOSIGTRAN_LIBS) \
@@ -52,3 +51,12 @@ osmo_msc_LDADD = \
$(LIBSQLITE3_LIBS) \
-lsctp \
$(NULL)
+
+if BUILD_SMPP
+
+osmo_msc_LDADD += \
+ $(top_builddir)/src/libsmpputil/libsmpputil.a \
+ $(LIBSMPP34_LIBS) \
+ $(NULL)
+
+endif
diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c
index bdffb4104..4ef5948b1 100644
--- a/src/osmo-msc/msc_main.c
+++ b/src/osmo-msc/msc_main.c
@@ -60,7 +60,7 @@
#include <osmocom/ctrl/control_if.h>
#include <osmocom/ctrl/control_vty.h>
#include <osmocom/ctrl/ports.h>
-#include <osmocom/msc/smpp.h>
+#include <osmocom/smpp/smpp.h>
#include <osmocom/sigtran/osmo_ss7.h>
#include <osmocom/mgcp_client/mgcp_client.h>
#include <osmocom/msc/sgs_iface.h>
diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am
index cb0faf69f..75a292609 100644
--- a/src/utils/Makefile.am
+++ b/src/utils/Makefile.am
@@ -34,12 +34,16 @@ smpp_mirror_SOURCES = \
smpp_mirror_CFLAGS = \
$(LIBOSMOCORE_CFLAGS) \
+ $(LIBOSMOSCCP_CFLAGS) \
+ $(LIBOSMOMGCPCLIENT_CFLAGS) \
$(LIBSMPP34_CFLAGS) \
$(NULL)
smpp_mirror_LDADD = \
+ $(top_builddir)/src/libsmpputil/libsmpputil.a \
$(LIBOSMOCORE_LIBS) \
$(LIBOSMOGSM_LIBS) \
+ $(LIBOSMONETIF_LIBS) \
$(LIBSMPP34_LIBS) \
$(NULL)
endif
diff --git a/src/utils/smpp_mirror.c b/src/utils/smpp_mirror.c
index 72d15e39d..359389513 100644
--- a/src/utils/smpp_mirror.c
+++ b/src/utils/smpp_mirror.c
@@ -19,18 +19,11 @@
#include <osmocom/core/write_queue.h>
#include <osmocom/msc/debug.h>
+#include <osmocom/smpp/smpp.h>
/* FIXME: merge with smpp_smsc.c */
-#define SMPP_SYS_ID_LEN 16
-enum esme_read_state {
- READ_ST_IN_LEN = 0,
- READ_ST_IN_MSG = 1,
-};
-/* FIXME: merge with smpp_smsc.c */
struct esme {
- struct osmo_fd ofd;
-
uint32_t own_seq_nr;
struct osmo_wqueue wqueue;
@@ -45,22 +38,6 @@ struct esme {
};
/* FIXME: merge with smpp_smsc.c */
-#define SMPP34_UNPACK(rc, type, str, data, len) \
- memset(str, 0, sizeof(*str)); \
- rc = smpp34_unpack(type, str, data, len)
-#define INIT_RESP(type, resp, req) { \
- memset((resp), 0, sizeof(*(resp))); \
- (resp)->command_length = 0; \
- (resp)->command_id = type; \
- (resp)->command_status = ESME_ROK; \
- (resp)->sequence_number = (req)->sequence_number; \
-}
-#define PACK_AND_SEND(esme, ptr) pack_and_send(esme, (ptr)->command_id, ptr)
-static inline uint32_t smpp_msgb_cmdid(struct msgb *msg)
-{
- uint8_t *tmp = msgb_data(msg) + 4;
- return ntohl(*(uint32_t *)tmp);
-}
static uint32_t esme_inc_seq_nr(struct esme *esme)
{
esme->own_seq_nr++;
diff --git a/tests/db_sms/Makefile.am b/tests/db_sms/Makefile.am
index 140ccbfaf..946d6a280 100644
--- a/tests/db_sms/Makefile.am
+++ b/tests/db_sms/Makefile.am
@@ -14,7 +14,6 @@ AM_CFLAGS = \
$(LIBOSMOSIGTRAN_CFLAGS) \
$(LIBOSMORANAP_CFLAGS) \
$(LIBOSMONETIF_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
$(LIBOSMOMGCPCLIENT_CFLAGS) \
$(LIBOSMOGSUPCLIENT_CFLAGS) \
$(LIBSQLITE3_CFLAGS) \
@@ -37,7 +36,6 @@ db_sms_test_SOURCES = \
db_sms_test_LDADD = \
$(top_builddir)/src/libmsc/libmsc.a \
$(top_builddir)/src/libvlr/libvlr.a \
- $(LIBSMPP34_LIBS) \
$(LIBOSMOCORE_LIBS) \
$(LIBOSMOGSM_LIBS) \
$(LIBOSMOVTY_LIBS) \
diff --git a/tests/msc_vlr/Makefile.am b/tests/msc_vlr/Makefile.am
index 505b5c7b6..2ba718085 100644
--- a/tests/msc_vlr/Makefile.am
+++ b/tests/msc_vlr/Makefile.am
@@ -8,7 +8,6 @@ AM_CFLAGS = \
-ggdb3 \
$(LIBOSMOCORE_CFLAGS) \
$(LIBOSMOGSM_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
$(LIBOSMOVTY_CFLAGS) \
$(LIBOSMOABIS_CFLAGS) \
$(LIBOSMOSIGTRAN_CFLAGS) \
@@ -32,7 +31,6 @@ AM_LDFLAGS = \
LDADD = \
$(top_builddir)/src/libmsc/libmsc.a \
$(top_builddir)/src/libvlr/libvlr.a \
- $(LIBSMPP34_LIBS) \
$(LIBOSMOCORE_LIBS) \
$(LIBOSMOGSM_LIBS) \
$(LIBOSMOVTY_LIBS) \
diff --git a/tests/smpp/Makefile.am b/tests/smpp/Makefile.am
index 00090daae..fabfd2da3 100644
--- a/tests/smpp/Makefile.am
+++ b/tests/smpp/Makefile.am
@@ -11,6 +11,8 @@ AM_CFLAGS = \
$(LIBOSMOGSM_CFLAGS) \
$(LIBOSMOSCCP_CFLAGS) \
$(LIBOSMOABIS_CFLAGS) \
+ $(LIBOSMOSCCP_CFLAGS) \
+ $(LIBOSMOMGCPCLIENT_CFLAGS) \
$(COVERAGE_CFLAGS) \
$(LIBSMPP34_CFLAGS) \
$(NULL)
@@ -30,10 +32,10 @@ check_PROGRAMS = \
smpp_test_SOURCES = \
smpp_test.c \
- $(top_builddir)/src/libmsc/smpp_utils.c \
$(NULL)
smpp_test_LDADD = \
+ $(top_builddir)/src/libsmpputil/libsmpputil.a \
$(LIBOSMOCORE_LIBS) \
$(LIBOSMOGSM_LIBS) \
$(NULL)
diff --git a/tests/smpp/smpp_test.c b/tests/smpp/smpp_test.c
index 4640a5f8d..9b94c63f4 100644
--- a/tests/smpp/smpp_test.c
+++ b/tests/smpp/smpp_test.c
@@ -22,12 +22,10 @@
#include <stdio.h>
#include <osmocom/msc/debug.h>
-
+#include <osmocom/smpp/smpp_smsc.h>
#include <osmocom/core/application.h>
#include <osmocom/core/backtrace.h>
-#include "smpp_smsc.h"
-
struct coding_test {
uint8_t dcs;
uint8_t coding;
diff --git a/tests/sms_queue/Makefile.am b/tests/sms_queue/Makefile.am
index c83a9469c..d50a8d6db 100644
--- a/tests/sms_queue/Makefile.am
+++ b/tests/sms_queue/Makefile.am
@@ -36,7 +36,6 @@ sms_queue_test_SOURCES = \
sms_queue_test_LDADD = \
$(top_builddir)/src/libmsc/libmsc.a \
$(top_builddir)/src/libvlr/libvlr.a \
- $(LIBSMPP34_LIBS) \
$(LIBOSMOCORE_LIBS) \
$(LIBOSMOGSM_LIBS) \
$(LIBOSMOVTY_LIBS) \
diff --git a/tests/stubs.c b/tests/stubs.c
index e6ef548cc..f29a20146 100644
--- a/tests/stubs.c
+++ b/tests/stubs.c
@@ -43,3 +43,11 @@ char *osmo_stream_srv_link_get_sockname(const struct osmo_stream_srv_link *link)
void osmo_stream_srv_link_set_port(struct osmo_stream_srv_link *link, uint16_t port) {}
void osmo_stream_srv_link_set_addr(struct osmo_stream_srv_link *link, const char *addr) {}
int sctp_recvmsg(int sd, void *msg, size_t len, void *from, void *fromlen, void *info, int *msg_flags) { return 0; }
+struct gsm_sms;
+struct msc_a;
+struct gsm_trans;
+struct osmo_esme;
+bool smpp_route_smpp_first() { return false; }
+void smpp_esme_put(struct osmo_esme *esme) { return; }
+int smpp_try_deliver(struct gsm_sms *sms, struct msc_a *msc_a) { return 0; }
+int sms_route_mt_sms(struct gsm_trans *trans, struct gsm_sms *gsms) { return 0; }