client: move some items to internal header
There is an upcoming modification of structs mgcp_msg and mgcp_response.
When it is public API, it needs to be kept backwards compatible.
But no libosmo-mgcp-client caller (in the osmocom-cni world) has used
these structs in years and years. Everyone should use the higher level
osmo_mgcpc_* API only.
Move this legacy API to a private header, so we no longer need to worry
about compatibility there.
Related: OS#6171
Related: I798e02c6663376d3d52f4a74fc4b32411ce95bed
Change-Id: I6d8bdda5c2ffa236e94a0b6111de4dbfac923187
diff --git a/TODO-RELEASE b/TODO-RELEASE
index c5a3b36..82368ff 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -24,3 +24,14 @@
# If any interfaces have been removed or changed since the last public release, a=0.
#
#library what description / commit summary line
+libosmo-mgcp-client remove public API These public API items have not been called by any of our osmo-programs
+ for many years. Any sane caller of libosmo-mgcp-client should use the
+ higher level osmo_mgcpc_* API instead. Move these to a private header:
+ struct mgcp_response_head
+ struct mgcp_response
+ struct mgcp_msg
+ mgcp_response_parse_params()
+ mgcp_client_tx()
+ mgcp_client_cancel()
+ mgcp_msg_gen()
+ mgcp_msg_trans_id()
diff --git a/include/osmocom/mgcp_client/mgcp_client.h b/include/osmocom/mgcp_client/mgcp_client.h
index 9a0611a..a96ae19 100644
--- a/include/osmocom/mgcp_client/mgcp_client.h
+++ b/include/osmocom/mgcp_client/mgcp_client.h
@@ -79,28 +79,6 @@
unsigned int pt;
};
-struct mgcp_response_head {
- int response_code;
- mgcp_trans_id_t trans_id;
- char comment[MGCP_COMMENT_MAXLEN];
- char conn_id[MGCP_CONN_ID_MAXLEN];
- char endpoint[MGCP_ENDPOINT_MAXLEN];
- bool x_osmo_osmux_use;
- uint8_t x_osmo_osmux_cid;
-};
-
-struct mgcp_response {
- char *body;
- struct mgcp_response_head head;
- uint16_t audio_port;
- char audio_ip[INET6_ADDRSTRLEN];
- unsigned int ptime;
- enum mgcp_codecs codecs[MGCP_MAX_CODECS];
- unsigned int codecs_len;
- struct ptmap ptmap[MGCP_MAX_CODECS];
- unsigned int ptmap_len;
-};
-
enum mgcp_verb {
MGCP_VERB_CRCX,
MGCP_VERB_MDCX,
@@ -109,37 +87,6 @@
MGCP_VERB_RSIP,
};
-#define MGCP_MSG_PRESENCE_ENDPOINT 0x0001
-#define MGCP_MSG_PRESENCE_CALL_ID 0x0002
-#define MGCP_MSG_PRESENCE_CONN_ID 0x0004
-#define MGCP_MSG_PRESENCE_AUDIO_IP 0x0008
-#define MGCP_MSG_PRESENCE_AUDIO_PORT 0x0010
-#define MGCP_MSG_PRESENCE_CONN_MODE 0x0020
-#define MGCP_MSG_PRESENCE_X_OSMO_OSMUX_CID 0x4000
-#define MGCP_MSG_PRESENCE_X_OSMO_IGN 0x8000
-
-struct mgcp_msg {
- enum mgcp_verb verb;
- /* See MGCP_MSG_PRESENCE_* constants */
- uint32_t presence;
- char endpoint[MGCP_ENDPOINT_MAXLEN];
- unsigned int call_id;
- char *conn_id;
- uint16_t audio_port;
- char *audio_ip;
- enum mgcp_connection_mode conn_mode;
- unsigned int ptime;
- enum mgcp_codecs codecs[MGCP_MAX_CODECS];
- unsigned int codecs_len;
- struct ptmap ptmap[MGCP_MAX_CODECS];
- unsigned int ptmap_len;
- uint32_t x_osmo_ign;
- bool x_osmo_osmux_use;
- int x_osmo_osmux_cid; /* -1 is wildcard */
- bool param_present;
- struct mgcp_codec_param param;
-};
-
struct mgcp_client_conf *mgcp_client_conf_alloc(void *ctx);
void mgcp_client_conf_init(struct mgcp_client_conf *conf) OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use mgcp_client_conf_alloc() (or even better, switch to the mgcp_client_pool API!)");
void mgcp_client_vty_init(void *talloc_ctx, int node, struct mgcp_client_conf *conf);
@@ -161,20 +108,8 @@
const char *mgcp_client_e1_epname(void *ctx, const struct mgcp_client *mgcp, uint8_t trunk_id, uint8_t ts,
uint8_t rate, uint8_t offset);
-/* Invoked when an MGCP response is received or sending failed. When the
- * response is passed as NULL, this indicates failure during transmission. */
-typedef void (* mgcp_response_cb_t )(struct mgcp_response *response, void *priv);
-int mgcp_response_parse_params(struct mgcp_response *r);
-
-int mgcp_client_tx(struct mgcp_client *mgcp, struct msgb *msg,
- mgcp_response_cb_t response_cb, void *priv);
-int mgcp_client_cancel(struct mgcp_client *mgcp, mgcp_trans_id_t trans_id);
-
enum mgcp_connection_mode;
-struct msgb *mgcp_msg_gen(struct mgcp_client *mgcp, struct mgcp_msg *mgcp_msg);
-mgcp_trans_id_t mgcp_msg_trans_id(struct msgb *msg);
-
extern const struct value_string mgcp_client_connection_mode_strs[];
static inline const char *mgcp_client_cmode_name(enum mgcp_connection_mode mode)
{
diff --git a/include/osmocom/mgcp_client/mgcp_client_internal.h b/include/osmocom/mgcp_client/mgcp_client_internal.h
index d0ae76b..c3619bb 100644
--- a/include/osmocom/mgcp_client/mgcp_client_internal.h
+++ b/include/osmocom/mgcp_client/mgcp_client_internal.h
@@ -22,6 +22,32 @@
bool conn_up;
};
+struct mgcp_response_head {
+ int response_code;
+ mgcp_trans_id_t trans_id;
+ char comment[MGCP_COMMENT_MAXLEN];
+ char conn_id[MGCP_CONN_ID_MAXLEN];
+ char endpoint[MGCP_ENDPOINT_MAXLEN];
+ bool x_osmo_osmux_use;
+ uint8_t x_osmo_osmux_cid;
+};
+
+struct mgcp_response {
+ char *body;
+ struct mgcp_response_head head;
+ uint16_t audio_port;
+ char audio_ip[INET6_ADDRSTRLEN];
+ unsigned int ptime;
+ enum mgcp_codecs codecs[MGCP_MAX_CODECS];
+ unsigned int codecs_len;
+ struct ptmap ptmap[MGCP_MAX_CODECS];
+ unsigned int ptmap_len;
+};
+
+/* Invoked when an MGCP response is received or sending failed. When the
+ * response is passed as NULL, this indicates failure during transmission. */
+typedef void (*mgcp_response_cb_t)(struct mgcp_response *response, void *priv);
+
struct mgcp_response_pending {
struct llist_head entry;
@@ -37,3 +63,43 @@
mgcp_trans_id_t trans_id,
mgcp_response_cb_t response_cb,
void *priv);
+
+#define MGCP_MSG_PRESENCE_ENDPOINT 0x0001
+#define MGCP_MSG_PRESENCE_CALL_ID 0x0002
+#define MGCP_MSG_PRESENCE_CONN_ID 0x0004
+#define MGCP_MSG_PRESENCE_AUDIO_IP 0x0008
+#define MGCP_MSG_PRESENCE_AUDIO_PORT 0x0010
+#define MGCP_MSG_PRESENCE_CONN_MODE 0x0020
+#define MGCP_MSG_PRESENCE_X_OSMO_OSMUX_CID 0x4000
+#define MGCP_MSG_PRESENCE_X_OSMO_IGN 0x8000
+
+struct mgcp_msg {
+ enum mgcp_verb verb;
+ /* See MGCP_MSG_PRESENCE_* constants */
+ uint32_t presence;
+ char endpoint[MGCP_ENDPOINT_MAXLEN];
+ unsigned int call_id;
+ char *conn_id;
+ uint16_t audio_port;
+ char *audio_ip;
+ enum mgcp_connection_mode conn_mode;
+ unsigned int ptime;
+ enum mgcp_codecs codecs[MGCP_MAX_CODECS];
+ unsigned int codecs_len;
+ struct ptmap ptmap[MGCP_MAX_CODECS];
+ unsigned int ptmap_len;
+ uint32_t x_osmo_ign;
+ bool x_osmo_osmux_use;
+ int x_osmo_osmux_cid; /* -1 is wildcard */
+ bool param_present;
+ struct mgcp_codec_param param;
+};
+
+int mgcp_response_parse_params(struct mgcp_response *r);
+
+int mgcp_client_tx(struct mgcp_client *mgcp, struct msgb *msg,
+ mgcp_response_cb_t response_cb, void *priv);
+int mgcp_client_cancel(struct mgcp_client *mgcp, mgcp_trans_id_t trans_id);
+
+struct msgb *mgcp_msg_gen(struct mgcp_client *mgcp, struct mgcp_msg *mgcp_msg);
+mgcp_trans_id_t mgcp_msg_trans_id(struct msgb *msg);
diff --git a/src/libosmo-mgcp-client/mgcp_client_fsm.c b/src/libosmo-mgcp-client/mgcp_client_fsm.c
index 218527c..43f0f50 100644
--- a/src/libosmo-mgcp-client/mgcp_client_fsm.c
+++ b/src/libosmo-mgcp-client/mgcp_client_fsm.c
@@ -19,6 +19,7 @@
*/
#include <osmocom/mgcp_client/mgcp_client.h>
+#include <osmocom/mgcp_client/mgcp_client_internal.h>
#include <osmocom/mgcp_client/mgcp_client_fsm.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/fsm.h>