# HG changeset patch # User Mychaela Falconia # Date 1665593139 28800 # Node ID 51cf5ea7f32036454942e4301a3a648b55dab260 # Parent 7643b779dbea19cbb1ecc084de136b793e519269 sip-out: map INVITE errors to GSM cause values diff -r 7643b779dbea -r 51cf5ea7f320 sip-out/invite.c --- a/sip-out/invite.c Wed Oct 12 07:56:14 2022 -0800 +++ b/sip-out/invite.c Wed Oct 12 08:45:39 2022 -0800 @@ -230,6 +230,82 @@ } } +static int +sip_error_to_gsm_cause(sip_status_code) + unsigned sip_status_code; +{ + /* mapping taken from osmo-sip-connector */ + switch (sip_status_code) { + case 400: + return GSM48_CC_CAUSE_TEMP_FAILURE; + case 401: + case 402: + case 403: + return GSM48_CC_CAUSE_CALL_REJECTED; + case 404: + return GSM48_CC_CAUSE_UNASSIGNED_NR; + case 405: + return GSM48_CC_CAUSE_SERV_OPT_UNAVAIL; + case 406: + return GSM48_CC_CAUSE_CHAN_UNACCEPT; + case 407: + return GSM48_CC_CAUSE_CALL_REJECTED; + case 408: + return GSM48_CC_CAUSE_RECOVERY_TIMER; + case 410: + return GSM48_CC_CAUSE_NUMBER_CHANGED; + case 413: + case 414: + return GSM48_CC_CAUSE_INTERWORKING; + case 415: + return GSM48_CC_CAUSE_SERV_OPT_UNIMPL; + case 416: + return GSM48_CC_CAUSE_INVAL_TRANS_ID; + case 420: + case 421: + case 423: + return GSM48_CC_CAUSE_INTERWORKING; + case 480: + return GSM48_CC_CAUSE_USER_NOTRESPOND; + case 481: + return GSM48_CC_CAUSE_TEMP_FAILURE; + case 482: + case 483: + return GSM48_CC_CAUSE_PRE_EMPTION; + case 484: + return GSM48_CC_CAUSE_INV_NR_FORMAT; + case 485: + return GSM48_CC_CAUSE_NO_ROUTE; + case 486: + return GSM48_CC_CAUSE_USER_BUSY; + case 488: + return GSM48_CC_CAUSE_INCOMPAT_DEST; + case 500: + return GSM48_CC_CAUSE_TEMP_FAILURE; + case 501: + return GSM48_CC_CAUSE_SERV_OPT_UNIMPL; + case 502: + return GSM48_CC_CAUSE_DEST_OOO; + case 503: + return GSM48_CC_CAUSE_RESOURCE_UNAVAIL; + case 504: + return GSM48_CC_CAUSE_RECOVERY_TIMER; + case 505: + case 513: + return GSM48_CC_CAUSE_INTERWORKING; + case 600: + return GSM48_CC_CAUSE_USER_BUSY; + case 603: + return GSM48_CC_CAUSE_CALL_REJECTED; + case 604: + return GSM48_CC_CAUSE_NO_ROUTE; + case 606: + return GSM48_CC_CAUSE_INCOMPAT_DEST; + default: + return GSM48_CC_CAUSE_NORMAL_UNSPEC; + } +} + static void handle_error(call, msg, tag, sin) struct call *call;