aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gsm/gsup.h16
-rw-r--r--src/gsm/gsup.c31
2 files changed, 17 insertions, 30 deletions
diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h
index 5dc2a821..29ea11aa 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 3d2a8e2e..a0893221 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,