#pragma once #include #include #include /*! This struct organizes the connection infromation one connection side * (either remote or local). It is used to pass parameters (local) to the FSM * and get responses (remote) from the FSM as pointer attached to the FSM * event. * * When modifiying a connection, the endpoint and call_id members may be left * unpopulated. The call_id field is ignored in this case. If an endpoint * identifier is supplied it is checked against the internal state to make * sure it is correct. */ struct mgcp_conn_peer { /*! RTP connection IP-Address (optional, string e.g. "127.0.0.1") */ char addr[INET6_ADDRSTRLEN]; /*! RTP connection IP-Port (optional) */ uint16_t port; /*! RTP endpoint */ char endpoint[MGCP_ENDPOINT_MAXLEN]; /*! CALL ID (unique per connection) */ unsigned int call_id; /*! RTP packetization interval (optional) */ unsigned int ptime; /*! Deprecated. Use only ptmap[].codec in new code. */ enum mgcp_codecs codecs[MGCP_MAX_CODECS] OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use ptmap[i].codec instead"); unsigned int codecs_len OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use ptmap[] and ptmap_len instead"); /*! RTP payload type map (optional, only needed when payload types are * used that differ from what IANA/3GPP defines) */ struct ptmap ptmap[MGCP_MAX_CODECS]; /*! RTP payload type map length (optional, only needed when payload * types are used that differ from what IANA/3GPP defines) */ unsigned int ptmap_len; /*! If nonzero, send 'X-Osmo-IGN:' header. This is useful e.g. for SCCPlite MSCs where the MSC is * known to issue incoherent or unknown CallIDs / to issue CRCX commands with a different domain * name than the BSC. An OsmoMGW will then ignore these and not fail on mismatches. */ uint32_t x_osmo_ign; /*! send 'X-Osmux: %d' header (or "*" as wildcard). */ bool x_osmo_osmux_use; /*! -1 means send wildcard. */ int x_osmo_osmux_cid; /*! If left MGCP_CONN_NONE, use MGCP_CONN_RECV_ONLY or MGCP_CONN_RECV_SEND, depending on whether an audio RTP * address is set. If != MGCP_CONN_NONE, force this conn mode. */ enum mgcp_connection_mode conn_mode; /*! If the codec requires additional format parameters (fmtp), those cann be set here, see also * mgcp_common.h */ bool param_present; struct mgcp_codec_param param; }; struct osmo_fsm_inst *mgcp_conn_create(struct mgcp_client *mgcp, struct osmo_fsm_inst *parent_fi, uint32_t parent_term_evt, uint32_t parent_evt, struct mgcp_conn_peer *conn_peer) OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use osmo_mgcpc_ep_alloc() and osmo_mgcpc_ep_ci_add() instead"); int mgcp_conn_modify(struct osmo_fsm_inst *fi, uint32_t parent_evt, struct mgcp_conn_peer *conn_peer) OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use osmo_mgcpc_ep_ci_request() instead"); void mgcp_conn_delete(struct osmo_fsm_inst *fi) OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use osmo_mgcpc_ep_ci_dlcx() instead"); const char *mgcp_conn_get_ci(struct osmo_fsm_inst *fi) OSMO_DEPRECATED_OUTSIDE_LIBOSMOMGCPCLIENT("use osmo_mgcpc_ep_ci.mgcp_ci_str instead"); struct mgcp_client *mgcp_conn_get_client(struct osmo_fsm_inst *fi); const char *osmo_mgcpc_conn_peer_name(const struct mgcp_conn_peer *info);