pespin submitted this change.

View Change

Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve osmith: Looks good to me, approved
sigtran: xua_msg.h,msg_types.h: Make headers private

Those headers are only used internally in libosmo-sigtran, since those
objects have no real use outside of it. Mark the headers as no-install,
which implicitly makes them private.

Only API osmo_xua_msg_tall_ctx_init() is used by osmo-bsc, hence why
it's left in the existing public header.

This decreases the amount of public APIs the libosmo-sigtran has.

Change-Id: Icd23bf9c9364c33ea2ba709e3ef4439813a168f4
---
M include/osmocom/sigtran/Makefile.am
M include/osmocom/sigtran/xua_msg.h
M src/Makefile.am
M src/ipa.c
M src/m3ua.c
M src/sccp2sua.c
M src/sua.c
M src/xua_as_fsm.c
M src/xua_asp_fsm.c
M src/xua_internal.h
M src/xua_msg.c
A src/xua_msg.h
M src/xua_rkm.c
M src/xua_shared.c
R src/xua_types.h
M tests/m2ua/m2ua_test.c
M tests/xua/xua_test.c
17 files changed, 131 insertions(+), 103 deletions(-)

diff --git a/include/osmocom/sigtran/Makefile.am b/include/osmocom/sigtran/Makefile.am
index 8d90b0b..69895bc 100644
--- a/include/osmocom/sigtran/Makefile.am
+++ b/include/osmocom/sigtran/Makefile.am
@@ -1,5 +1,11 @@
-sigtran_HEADERS = xua_types.h xua_msg.h sccp_sap.h \
- sigtran_sap.h sccp_helpers.h mtp_sap.h osmo_ss7.h
+sigtran_HEADERS = \
+ mtp_sap.h \
+ osmo_ss7.h \
+ sccp_helpers.h \
+ sccp_sap.h \
+ sigtran_sap.h \
+ xua_msg.h \
+ $(NULL)

sigtrandir = $(includedir)/osmocom/sigtran

diff --git a/include/osmocom/sigtran/xua_msg.h b/include/osmocom/sigtran/xua_msg.h
index 5f877ed..9eb2d0c 100644
--- a/include/osmocom/sigtran/xua_msg.h
+++ b/include/osmocom/sigtran/xua_msg.h
@@ -17,93 +17,4 @@
*/
#pragma once

-#include "xua_types.h"
-
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/sigtran/mtp_sap.h>
-
-#define XUA_HDR(class, type) ((struct xua_common_hdr) { .spare = 0, .msg_class = (class), .msg_type = (type) })
-
-struct msgb;
-struct osmo_sccp_addr;
-struct osmo_sccp_gt;
-
-struct xua_msg {
- struct xua_common_hdr hdr;
- struct osmo_mtp_transfer_param mtp;
-
- struct llist_head headers;
-};
-
-struct xua_msg_part {
- struct llist_head entry;
-
- uint16_t tag;
- uint16_t len;
- uint8_t *dat;
-
- /* TODO: keep small data in the struct for perf reasons */
-};
-
-struct xua_msg_class {
- const char *name;
- const struct value_string *msgt_names;
- const struct value_string *iei_names;
- const uint16_t *mand_ies[256];
-};
-
-struct xua_dialect {
- const char *name;
- uint16_t port;
- uint16_t ppid;
- int log_subsys;
- const struct xua_msg_class *class[256];
-};
-
-struct xua_msg_event_map {
- uint8_t msg_class;
- uint8_t msg_type;
- int event;
-};
-
-extern const struct xua_dialect xua_dialect_sua;
-extern const struct xua_dialect xua_dialect_m3ua;
-
void osmo_xua_msg_tall_ctx_init(void *ctx);
-
-struct xua_msg *xua_msg_alloc(void);
-void xua_msg_free(struct xua_msg *msg);
-
-int xua_msg_add_data(struct xua_msg *msg, uint16_t tag, uint16_t len, const uint8_t *dat);
-
-struct xua_msg_part *xua_msg_find_tag(const struct xua_msg *msg, uint16_t tag);
-int xua_msg_free_tag(struct xua_msg *xua, uint16_t tag);
-int xua_msg_copy_part(struct xua_msg *xua_out, uint16_t tag_out,
- const struct xua_msg *xua_in, uint16_t tag_in);
-
-struct xua_msg *xua_from_msg(const int version, uint16_t len, uint8_t *data);
-struct msgb *xua_to_msg(const int version, struct xua_msg *msg);
-
-struct xua_msg *xua_from_nested(struct xua_msg_part *outer);
-
-int msgb_t16l16vp_put(struct msgb *msg, uint16_t tag, uint16_t len, const uint8_t *data);
-int msgb_t16l16vp_put_u32(struct msgb *msg, uint16_t tag, uint32_t val);
-int xua_msg_add_u32(struct xua_msg *xua, uint16_t iei, uint32_t val);
-uint32_t xua_msg_part_get_u32(const struct xua_msg_part *part);
-uint32_t xua_msg_get_u32(const struct xua_msg *xua, uint16_t iei);
-const uint32_t *xua_msg_get_u32p(const struct xua_msg *xua, uint16_t iei, uint32_t *out);
-const char *xua_msg_part_get_str(const struct xua_msg_part *part);
-const char *xua_msg_get_str(const struct xua_msg *xua, uint16_t iei);
-int xua_msg_get_len(const struct xua_msg *xua, uint16_t iei);
-void xua_part_add_gt(struct msgb *msg, const struct osmo_sccp_gt *gt);
-int xua_msg_add_sccp_addr(struct xua_msg *xua, uint16_t iei, const struct osmo_sccp_addr *addr);
-
-const char *xua_class_msg_name(const struct xua_msg_class *xmc, uint16_t msg_type);
-const char *xua_class_iei_name(const struct xua_msg_class *xmc, uint16_t iei);
-char *xua_hdr_dump(struct xua_msg *xua, const struct xua_dialect *dialect);
-char *xua_msg_dump(struct xua_msg *xua, const struct xua_dialect *dialect);
-int xua_dialect_check_all_mand_ies(const struct xua_dialect *dialect, struct xua_msg *xua);
-
-int xua_msg_event_map(const struct xua_msg *xua,
- const struct xua_msg_event_map *maps,
- unsigned int num_maps);
diff --git a/src/Makefile.am b/src/Makefile.am
index 90b791b..2a257ae 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -8,6 +8,8 @@
xua_asp_fsm.h \
xua_as_fsm.h \
xua_internal.h \
+ xua_msg.h \
+ xua_types.h \
$(NULL)

noinst_LIBRARIES = libxua.a
diff --git a/src/ipa.c b/src/ipa.c
index 82ece8b..64eb4d4 100644
--- a/src/ipa.c
+++ b/src/ipa.c
@@ -37,7 +37,7 @@

//#include <osmocom/netif/stream.h>
#include <osmocom/netif/ipa.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"

#include <osmocom/sigtran/mtp_sap.h>
#include <osmocom/sigtran/sccp_sap.h>
diff --git a/src/m3ua.c b/src/m3ua.c
index af81da9..05680ea 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -33,7 +33,7 @@
#include <osmocom/core/socket.h>

#include <osmocom/netif/stream.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"

#include <osmocom/sigtran/mtp_sap.h>
#include <osmocom/sigtran/sccp_sap.h>
diff --git a/src/sccp2sua.c b/src/sccp2sua.c
index 930b837..ffbfd2a 100644
--- a/src/sccp2sua.c
+++ b/src/sccp2sua.c
@@ -34,7 +34,7 @@
#include <osmocom/sigtran/sccp_sap.h>
#include <osmocom/sigtran/sccp_helpers.h>
#include <osmocom/sigtran/protocol/sua.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"

#include "xua_internal.h"
#include "sccp_internal.h"
diff --git a/src/sua.c b/src/sua.c
index d8eb9e5..a69f3b5 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -34,7 +34,7 @@
#include <osmocom/core/fsm.h>

#include <osmocom/netif/stream.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"

#include <osmocom/sigtran/sccp_sap.h>
#include <osmocom/sigtran/protocol/mtp.h>
diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c
index e239c74..65f723c 100644
--- a/src/xua_as_fsm.c
+++ b/src/xua_as_fsm.c
@@ -19,7 +19,7 @@

#include <osmocom/sigtran/osmo_ss7.h>
#include <osmocom/sigtran/sigtran_sap.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"
#include <osmocom/sigtran/protocol/sua.h>
#include <osmocom/sigtran/protocol/m3ua.h>

diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c
index 97391bb..ec4edb0 100644
--- a/src/xua_asp_fsm.c
+++ b/src/xua_asp_fsm.c
@@ -24,7 +24,7 @@

#include <osmocom/sigtran/osmo_ss7.h>
#include <osmocom/sigtran/sigtran_sap.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"
#include <osmocom/sigtran/protocol/sua.h>

#include "xua_asp_fsm.h"
diff --git a/src/xua_internal.h b/src/xua_internal.h
index d4b16f9..4f6e931 100644
--- a/src/xua_internal.h
+++ b/src/xua_internal.h
@@ -2,7 +2,7 @@

#include <osmocom/core/tdef.h>
#include <osmocom/sigtran/osmo_ss7.h>
-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"

#define M3UA_MSG_SIZE 2048
#define M3UA_MSG_HEADROOM 512
diff --git a/src/xua_msg.c b/src/xua_msg.c
index 067c8dd..5584b82 100644
--- a/src/xua_msg.c
+++ b/src/xua_msg.c
@@ -19,7 +19,7 @@
*
*/

-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"
#include <osmocom/sigtran/protocol/sua.h>
#include <osmocom/sigtran/sccp_sap.h>

diff --git a/src/xua_msg.h b/src/xua_msg.h
new file mode 100644
index 0000000..5f877ed
--- /dev/null
+++ b/src/xua_msg.h
@@ -0,0 +1,109 @@
+/* Routines for generating and parsing messages */
+/* (C) 2011 by Holger Hans Peter Freyther <zecke@selfish.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#include "xua_types.h"
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/sigtran/mtp_sap.h>
+
+#define XUA_HDR(class, type) ((struct xua_common_hdr) { .spare = 0, .msg_class = (class), .msg_type = (type) })
+
+struct msgb;
+struct osmo_sccp_addr;
+struct osmo_sccp_gt;
+
+struct xua_msg {
+ struct xua_common_hdr hdr;
+ struct osmo_mtp_transfer_param mtp;
+
+ struct llist_head headers;
+};
+
+struct xua_msg_part {
+ struct llist_head entry;
+
+ uint16_t tag;
+ uint16_t len;
+ uint8_t *dat;
+
+ /* TODO: keep small data in the struct for perf reasons */
+};
+
+struct xua_msg_class {
+ const char *name;
+ const struct value_string *msgt_names;
+ const struct value_string *iei_names;
+ const uint16_t *mand_ies[256];
+};
+
+struct xua_dialect {
+ const char *name;
+ uint16_t port;
+ uint16_t ppid;
+ int log_subsys;
+ const struct xua_msg_class *class[256];
+};
+
+struct xua_msg_event_map {
+ uint8_t msg_class;
+ uint8_t msg_type;
+ int event;
+};
+
+extern const struct xua_dialect xua_dialect_sua;
+extern const struct xua_dialect xua_dialect_m3ua;
+
+void osmo_xua_msg_tall_ctx_init(void *ctx);
+
+struct xua_msg *xua_msg_alloc(void);
+void xua_msg_free(struct xua_msg *msg);
+
+int xua_msg_add_data(struct xua_msg *msg, uint16_t tag, uint16_t len, const uint8_t *dat);
+
+struct xua_msg_part *xua_msg_find_tag(const struct xua_msg *msg, uint16_t tag);
+int xua_msg_free_tag(struct xua_msg *xua, uint16_t tag);
+int xua_msg_copy_part(struct xua_msg *xua_out, uint16_t tag_out,
+ const struct xua_msg *xua_in, uint16_t tag_in);
+
+struct xua_msg *xua_from_msg(const int version, uint16_t len, uint8_t *data);
+struct msgb *xua_to_msg(const int version, struct xua_msg *msg);
+
+struct xua_msg *xua_from_nested(struct xua_msg_part *outer);
+
+int msgb_t16l16vp_put(struct msgb *msg, uint16_t tag, uint16_t len, const uint8_t *data);
+int msgb_t16l16vp_put_u32(struct msgb *msg, uint16_t tag, uint32_t val);
+int xua_msg_add_u32(struct xua_msg *xua, uint16_t iei, uint32_t val);
+uint32_t xua_msg_part_get_u32(const struct xua_msg_part *part);
+uint32_t xua_msg_get_u32(const struct xua_msg *xua, uint16_t iei);
+const uint32_t *xua_msg_get_u32p(const struct xua_msg *xua, uint16_t iei, uint32_t *out);
+const char *xua_msg_part_get_str(const struct xua_msg_part *part);
+const char *xua_msg_get_str(const struct xua_msg *xua, uint16_t iei);
+int xua_msg_get_len(const struct xua_msg *xua, uint16_t iei);
+void xua_part_add_gt(struct msgb *msg, const struct osmo_sccp_gt *gt);
+int xua_msg_add_sccp_addr(struct xua_msg *xua, uint16_t iei, const struct osmo_sccp_addr *addr);
+
+const char *xua_class_msg_name(const struct xua_msg_class *xmc, uint16_t msg_type);
+const char *xua_class_iei_name(const struct xua_msg_class *xmc, uint16_t iei);
+char *xua_hdr_dump(struct xua_msg *xua, const struct xua_dialect *dialect);
+char *xua_msg_dump(struct xua_msg *xua, const struct xua_dialect *dialect);
+int xua_dialect_check_all_mand_ies(const struct xua_dialect *dialect, struct xua_msg *xua);
+
+int xua_msg_event_map(const struct xua_msg *xua,
+ const struct xua_msg_event_map *maps,
+ unsigned int num_maps);
diff --git a/src/xua_rkm.c b/src/xua_rkm.c
index 914cb01..007f4f7 100644
--- a/src/xua_rkm.c
+++ b/src/xua_rkm.c
@@ -24,7 +24,7 @@
#include <osmocom/core/logging.h>
#include <osmocom/core/linuxlist.h>

-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"
#include <osmocom/sigtran/osmo_ss7.h>
#include <osmocom/sigtran/protocol/m3ua.h>

diff --git a/src/xua_shared.c b/src/xua_shared.c
index cdd6f7f..45f78d4 100644
--- a/src/xua_shared.c
+++ b/src/xua_shared.c
@@ -28,7 +28,7 @@
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/logging.h>

-#include <osmocom/sigtran/xua_msg.h>
+#include "xua_msg.h"

#include <osmocom/sigtran/osmo_ss7.h>
#include <osmocom/sigtran/protocol/m3ua.h>
diff --git a/include/osmocom/sigtran/xua_types.h b/src/xua_types.h
similarity index 100%
rename from include/osmocom/sigtran/xua_types.h
rename to src/xua_types.h
diff --git a/tests/m2ua/m2ua_test.c b/tests/m2ua/m2ua_test.c
index 3469f11..ef981f4 100644
--- a/tests/m2ua/m2ua_test.c
+++ b/tests/m2ua/m2ua_test.c
@@ -15,7 +15,7 @@
*
*/

-#include <osmocom/sigtran/xua_msg.h>
+#include "../src/xua_msg.h"
#include <osmocom/sigtran/protocol/m2ua.h>

#include <osmocom/core/utils.h>
diff --git a/tests/xua/xua_test.c b/tests/xua/xua_test.c
index f957369..e3d9ac5 100644
--- a/tests/xua/xua_test.c
+++ b/tests/xua/xua_test.c
@@ -18,9 +18,9 @@

#include "sccp_test_data.h"

+#include "../src/xua_msg.h"
#include "../src/xua_internal.h"

-#include <osmocom/sigtran/xua_msg.h>
#include <osmocom/sigtran/protocol/sua.h>
#include <osmocom/sigtran/protocol/m3ua.h>
#include <osmocom/sigtran/sccp_sap.h>

To view, visit change 38625. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: Icd23bf9c9364c33ea2ba709e3ef4439813a168f4
Gerrit-Change-Number: 38625
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>