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