diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h index 5dc2a821a..29ea11aa3 100644 --- a/include/osmocom/gsm/gsup.h +++ b/include/osmocom/gsm/gsup.h @@ -105,7 +105,18 @@ enum osmo_gsup_iei { _OSMO_GSUP_IEI_END_MARKER }; -/*! GSUP message type */ +/*! GSUP message type + * Make sure that new messages follow this scheme: + * .----------------------------. + * | Ending Bits | Category | + * |----------------------------| + * | 00 | Request | + * | 01 | Error | + * | 10 | Result | + * | 11 | Other | + * '----------------------------' + * Request, Error and Result messages must only differ in these last two bits. + */ enum osmo_gsup_message_type { OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST = 0b00000100, OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR = 0b00000101, @@ -280,6 +291,7 @@ 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); +int osmo_gsup_get_err_msg_type(enum osmo_gsup_message_type type_in) + OSMO_DEPRECATED("Use OSMO_GSUP_TO_MSGT_ERROR() instead"); /*! @} */ diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c index 3d2a8e2eb..a08932219 100644 --- a/src/gsm/gsup.c +++ b/src/gsm/gsup.c @@ -95,36 +95,11 @@ const struct value_string osmo_gsup_session_state_names[] = { }; -/*! return the error message type corresponding to \a type_in - * \returns matching error message type; -1 on error */ +/*! return the error message type corresponding to \a type_in. + * Deprecated, use OSMO_GSUP_TO_MSGT_ERROR() instead. */ 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; - case OSMO_GSUP_MSGT_PROC_SS_REQUEST: - return OSMO_GSUP_MSGT_PROC_SS_ERROR; - case OSMO_GSUP_MSGT_MO_FORWARD_SM_REQUEST: - return OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR; - case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST: - return OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR; - case OSMO_GSUP_MSGT_READY_FOR_SM_REQUEST: - return OSMO_GSUP_MSGT_READY_FOR_SM_ERROR; - case OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: - return OSMO_GSUP_MSGT_CHECK_IMEI_ERROR; - default: - return -1; - } + return OSMO_GSUP_TO_MSGT_ERROR(type_in); } static int decode_pdp_info(uint8_t *data, size_t data_len,