gsup: Add osmo_gsup_get_err_msg_type() function

This function can be used to resolve the error message type for
a given message type.  Can be used by generic error handlers that
work for any incoming message type.

Change-Id: Ic637bec53dd7fe3ec83da99b49b4eae34d5602b2
This commit is contained in:
Harald Welte 2018-06-11 20:27:27 +02:00
parent 5a09f75c1e
commit 520ebc17d9
3 changed files with 25 additions and 0 deletions

View File

@ -213,5 +213,6 @@ struct osmo_gsup_message {
int osmo_gsup_decode(const uint8_t *data, size_t data_len,
struct osmo_gsup_message *gsup_msg);
int osmo_gsup_encode(struct msgb *msg, const struct osmo_gsup_message *gsup_msg);
int osmo_gsup_get_err_msg_type(enum osmo_gsup_message_type type_in);
/*! @} */

View File

@ -70,6 +70,29 @@ const struct value_string osmo_gsup_message_type_names[] = {
{ 0, NULL }
};
/*! return the error message type corresponding to \a type_in
* \returns matching error message type; -1 on error */
int osmo_gsup_get_err_msg_type(enum osmo_gsup_message_type type_in)
{
switch (type_in) {
case OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST:
return OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR;
case OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST:
return OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR;
case OSMO_GSUP_MSGT_PURGE_MS_REQUEST:
return OSMO_GSUP_MSGT_PURGE_MS_ERROR;
case OSMO_GSUP_MSGT_INSERT_DATA_REQUEST:
return OSMO_GSUP_MSGT_INSERT_DATA_ERROR;
case OSMO_GSUP_MSGT_DELETE_DATA_REQUEST:
return OSMO_GSUP_MSGT_DELETE_DATA_ERROR;
case OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST:
return OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR;
default:
return -1;
}
}
static int decode_pdp_info(uint8_t *data, size_t data_len,
struct osmo_gsup_pdp_info *pdp_info)
{

View File

@ -469,6 +469,7 @@ osmo_apn_from_str;
osmo_gsup_encode;
osmo_gsup_decode;
osmo_gsup_message_type_names;
osmo_gsup_get_err_msg_type;
osmo_oap_encode;
osmo_oap_decode;