pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/38625?usp=email )
Change subject: sigtran: xua_msg.h,msg_types.h: Make headers private ......................................................................
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(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve osmith: Looks good to me, approved
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>