char * print_i4b_cause(cause_t code) { static char error_message[128]; snprintf(error_message, sizeof(error_message), "%d: ", GET_CAUSE_VAL(code)); switch (GET_CAUSE_TYPE(code)) { case CAUSET_Q850: strlcat(error_message, cause_q850_tab[GET_CAUSE_VAL(code)], sizeof(error_message)); strlcat(error_message, " (Q.850)", sizeof(error_message)); break; case CAUSET_I4B: if ((GET_CAUSE_VAL(code) >= CAUSE_I4B_MAX)) { SET_CAUSE_VAL(code, CAUSE_I4B_MAX); } strlcat(error_message, cause_i4b_tab[GET_CAUSE_VAL(code)], sizeof(error_message)); strlcat(error_message, " (I4B)", sizeof(error_message)); break; default: strlcat(error_message, "ERROR: unknown cause type!", sizeof(error_message)); break; } return(error_message); }
/*---------------------------------------------------------------------------* * return a valid q.931/q.850 cause from any of the internal causes *---------------------------------------------------------------------------*/ static unsigned char make_q931_cause(cause_t cause) { register unsigned char ret; switch(GET_CAUSE_TYPE(cause)) { case CAUSET_Q850: ret = GET_CAUSE_VAL(cause); break; case CAUSET_I4B: ret = cause_tab_q931[GET_CAUSE_VAL(cause)]; break; default: panic("make_q931_cause: unknown cause type!"); break; } ret |= EXT_LAST; return(ret); }