- /* caller ID */
- if (ast->caller.id.number.valid) {
- if (ast->caller.id.number.str)
- strncpy(newparam.setup.callerinfo.id, ast->caller.id.number.str, sizeof(newparam.setup.callerinfo.id)-1);
- switch(ast->caller.id.number.presentation & AST_PRES_RESTRICTION) {
- case AST_PRES_RESTRICTED:
- newparam.setup.callerinfo.present = INFO_PRESENT_RESTRICTED;
- break;
- case AST_PRES_UNAVAILABLE:
- newparam.setup.callerinfo.present = INFO_PRESENT_NOTAVAIL;
- break;
- case AST_PRES_ALLOWED:
- default:
- newparam.setup.callerinfo.present = INFO_PRESENT_ALLOWED;
- }
- switch(ast->caller.id.number.presentation & AST_PRES_NUMBER_TYPE) {
- case AST_PRES_USER_NUMBER_UNSCREENED:
- newparam.setup.callerinfo.screen = INFO_SCREEN_USER;
- break;
- case AST_PRES_USER_NUMBER_PASSED_SCREEN:
- newparam.setup.callerinfo.screen = INFO_SCREEN_USER_VERIFIED_PASSED;
- break;
- case AST_PRES_USER_NUMBER_FAILED_SCREEN:
- newparam.setup.callerinfo.screen = INFO_SCREEN_USER_VERIFIED_FAILED;
- break;
- default:
- newparam.setup.callerinfo.screen = INFO_SCREEN_NETWORK;
- }
- switch((ast->caller.id.number.plan >> 4) & 7) {
- case 4:
- newparam.setup.callerinfo.ntype = INFO_NTYPE_SUBSCRIBER;
- break;
- case 2:
- newparam.setup.callerinfo.ntype = INFO_NTYPE_NATIONAL;
- break;
- case 1:
- newparam.setup.callerinfo.ntype = INFO_NTYPE_INTERNATIONAL;
- break;
- default:
- newparam.setup.callerinfo.ntype = INFO_NTYPE_UNKNOWN;
- }
- } else
- newparam.setup.callerinfo.present = INFO_PRESENT_NOTAVAIL;
-
- /* caller ID 2 */
- if (ast->caller.ani.number.valid) {
- if (ast->caller.ani.number.str)
- strncpy(newparam.setup.callerinfo.id2, ast->caller.ani.number.str, sizeof(newparam.setup.callerinfo.id2)-1);
- switch(ast->caller.ani.number.presentation & AST_PRES_RESTRICTION) {
- case AST_PRES_RESTRICTED:
- newparam.setup.callerinfo.present2 = INFO_PRESENT_RESTRICTED;
- break;
- case AST_PRES_UNAVAILABLE:
- newparam.setup.callerinfo.present2 = INFO_PRESENT_NOTAVAIL;
- break;
- case AST_PRES_ALLOWED:
- default:
- newparam.setup.callerinfo.present2 = INFO_PRESENT_ALLOWED;
- }
- switch(ast->caller.ani.number.presentation & AST_PRES_NUMBER_TYPE) {
- case AST_PRES_USER_NUMBER_UNSCREENED:
- newparam.setup.callerinfo.screen2 = INFO_SCREEN_USER;
- break;
- case AST_PRES_USER_NUMBER_PASSED_SCREEN:
- newparam.setup.callerinfo.screen2 = INFO_SCREEN_USER_VERIFIED_PASSED;
- break;
- case AST_PRES_USER_NUMBER_FAILED_SCREEN:
- newparam.setup.callerinfo.screen2 = INFO_SCREEN_USER_VERIFIED_FAILED;
- break;
- default:
- newparam.setup.callerinfo.screen2 = INFO_SCREEN_NETWORK;
- }
- switch((ast->caller.ani.number.plan >> 4) & 7) {
- case 4:
- newparam.setup.callerinfo.ntype2 = INFO_NTYPE_SUBSCRIBER;
- break;
- case 2:
- newparam.setup.callerinfo.ntype2 = INFO_NTYPE_NATIONAL;
- break;
- case 1:
- newparam.setup.callerinfo.ntype2 = INFO_NTYPE_INTERNATIONAL;
- break;
- default:
- newparam.setup.callerinfo.ntype2 = INFO_NTYPE_UNKNOWN;
- }
- } else
- newparam.setup.callerinfo.present2 = INFO_PRESENT_NOTAVAIL;
-
- /* caller name */
- if (ast->caller.id.name.valid) {
- if (ast->caller.id.name.str)
- strncpy(newparam.setup.callerinfo.name, ast->caller.id.name.str, sizeof(newparam.setup.callerinfo.name)-1);
- }
-
- /* redir number */
- if (ast->redirecting.from.number.valid) {
- newparam.setup.redirinfo.itype = INFO_ITYPE_CHAN;
- if (ast->redirecting.from.number.str)
- strncpy(newparam.setup.redirinfo.id, ast->redirecting.from.number.str, sizeof(newparam.setup.redirinfo.id)-1);
- switch(ast->redirecting.from.number.presentation & AST_PRES_RESTRICTION) {
- case AST_PRES_RESTRICTED:
- newparam.setup.redirinfo.present = INFO_PRESENT_RESTRICTED;
- break;
- case AST_PRES_UNAVAILABLE:
- newparam.setup.redirinfo.present = INFO_PRESENT_NOTAVAIL;
- break;
- case AST_PRES_ALLOWED:
- default:
- newparam.setup.redirinfo.present = INFO_PRESENT_ALLOWED;
- }
- switch(ast->redirecting.from.number.presentation & AST_PRES_NUMBER_TYPE) {
- case AST_PRES_USER_NUMBER_UNSCREENED:
- newparam.setup.redirinfo.screen = INFO_SCREEN_USER;
- break;
- case AST_PRES_USER_NUMBER_PASSED_SCREEN:
- newparam.setup.redirinfo.screen = INFO_SCREEN_USER_VERIFIED_PASSED;
- break;
- case AST_PRES_USER_NUMBER_FAILED_SCREEN:
- newparam.setup.redirinfo.screen = INFO_SCREEN_USER_VERIFIED_FAILED;
- break;
- default:
- newparam.setup.redirinfo.screen = INFO_SCREEN_NETWORK;
- }
- switch((ast->redirecting.from.number.plan >> 4) & 7) {
- case 4:
- newparam.setup.redirinfo.ntype = INFO_NTYPE_SUBSCRIBER;
- break;
- case 2:
- newparam.setup.redirinfo.ntype = INFO_NTYPE_NATIONAL;
- break;
- case 1:
- newparam.setup.redirinfo.ntype = INFO_NTYPE_INTERNATIONAL;
- break;
- default:
- newparam.setup.redirinfo.ntype = INFO_NTYPE_UNKNOWN;
- }
- }