After some study, thought, comparing, etc. I've backed out the previous universal...
authorSteve Murphy <murf@digium.com>
Thu, 19 Jul 2007 23:24:27 +0000 (23:24 +0000)
committerSteve Murphy <murf@digium.com>
Thu, 19 Jul 2007 23:24:27 +0000 (23:24 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75983 65c4cc65-6c06-0410-ace0-fbb531ad65f3

28 files changed:
apps/app_dial.c
apps/app_minivm.c
apps/app_mixmonitor.c
apps/app_voicemail.c
channels/chan_iax2.c
channels/chan_local.c
channels/chan_sip.c
channels/iax2-provision.c
channels/iax2-provision.h
funcs/func_odbc.c
include/asterisk/abstract_jb.h
include/asterisk/app.h
include/asterisk/cdr.h
include/asterisk/channel.h
include/asterisk/chanspy.h
include/asterisk/dundi.h
include/asterisk/features.h
include/asterisk/jabber.h
include/asterisk/module.h
include/asterisk/speech.h
include/asterisk/utils.h
main/app.c
main/channel.c
main/loader.c
main/rtp.c
pbx/pbx_dundi.c
res/res_features.c
res/res_musiconhold.c

index fec3f99..29f059a 100644 (file)
@@ -451,7 +451,7 @@ static void senddialendevent(const struct ast_channel *src, const char *dialstat
  * the outgoing channel without properly deleting it.
  */
 static void do_forward(struct chanlist *o,
-       struct cause_args *num, struct ast_flags *peerflags, int single)
+       struct cause_args *num, struct ast_flags64 *peerflags, int single)
 {
        char tmpchan[256];
        struct ast_channel *original = o->chan;
@@ -477,7 +477,7 @@ static void do_forward(struct chanlist *o,
                if (option_verbose > 2)
                        ast_verbose(VERBOSE_PREFIX_3 "Now forwarding %s to '%s/%s' (thanks to %s)\n", in->name, tech, stuff, c->name);
                /* If we have been told to ignore forwards, just set this channel to null and continue processing extensions normally */
-               if (ast_test_flag(peerflags, OPT_IGNORE_FORWARDING)) {
+               if (ast_test_flag64(peerflags, OPT_IGNORE_FORWARDING)) {
                        if (option_verbose > 2)
                                ast_verbose(VERBOSE_PREFIX_3 "Forwarding %s to '%s/%s' prevented.\n", in->name, tech, stuff);
                        c = o->chan = NULL;
@@ -499,14 +499,14 @@ static void do_forward(struct chanlist *o,
                c = o->chan = NULL;
        }
        if (!c) {
-               ast_clear_flag(o, DIAL_STILLGOING);     
+               ast_clear_flag64(o, DIAL_STILLGOING);   
                handle_cause(cause, num);
        } else {
                char *new_cid_num, *new_cid_name;
                struct ast_channel *src;
 
                ast_rtp_make_compatible(c, in, single);
-               if (ast_test_flag(o, OPT_FORCECLID)) {
+               if (ast_test_flag64(o, OPT_FORCECLID)) {
                        new_cid_num = ast_strdup(S_OR(in->macroexten, in->exten));
                        new_cid_name = NULL; /* XXX no name ? */
                        src = c;        /* XXX possible bug in previous code, which used 'winner' ? it may have changed */
@@ -526,14 +526,14 @@ static void do_forward(struct chanlist *o,
                S_REPLACE(c->cid.cid_rdnis, ast_strdup(S_OR(in->macroexten, in->exten)));
                if (ast_call(c, tmpchan, 0)) {
                        ast_log(LOG_NOTICE, "Failed to dial on local channel for call forward to '%s'\n", tmpchan);
-                       ast_clear_flag(o, DIAL_STILLGOING);     
+                       ast_clear_flag64(o, DIAL_STILLGOING);   
                        ast_hangup(original);
                        c = o->chan = NULL;
                        num->nochan++;
                } else {
                        senddialevent(in, c);
                        /* After calling, set callerid to extension */
-                       if (!ast_test_flag(peerflags, OPT_ORIGINAL_CLID)) {
+                       if (!ast_test_flag64(peerflags, OPT_ORIGINAL_CLID)) {
                                char cidname[AST_MAX_EXTENSION] = "";
                                ast_set_callerid(c, S_OR(in->macroexten, in->exten), get_cid_name(cidname, sizeof(cidname), in), NULL);
                        }
@@ -553,7 +553,7 @@ struct privacy_args {
 };
 
 static struct ast_channel *wait_for_answer(struct ast_channel *in,
-       struct chanlist *outgoing, int *to, struct ast_flags *peerflags,
+       struct chanlist *outgoing, int *to, struct ast_flags64 *peerflags,
        struct privacy_args *pa,
        const struct cause_args *num_in, int *result)
 {
@@ -562,7 +562,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
        int orig = *to;
        struct ast_channel *peer = NULL;
        /* single is set if only one destination is enabled */
-       int single = outgoing && !outgoing->next && !ast_test_flag(outgoing, OPT_MUSICBACK | OPT_RINGBACK);
+       int single = outgoing && !outgoing->next && !ast_test_flag64(outgoing, OPT_MUSICBACK | OPT_RINGBACK);
        
        if (single) {
                /* Turn off hold music, etc */
@@ -582,7 +582,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                watchers[pos++] = in;
                for (o = outgoing; o; o = o->next) {
                        /* Keep track of important channels */
-                       if (ast_test_flag(o, DIAL_STILLGOING) && o->chan)
+                       if (ast_test_flag64(o, DIAL_STILLGOING) && o->chan)
                                watchers[pos++] = o->chan;
                        numlines++;
                }
@@ -610,12 +610,12 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
 
                        if (c == NULL)
                                continue;
-                       if (ast_test_flag(o, DIAL_STILLGOING) && c->_state == AST_STATE_UP) {
+                       if (ast_test_flag64(o, DIAL_STILLGOING) && c->_state == AST_STATE_UP) {
                                if (!peer) {
                                        if (option_verbose > 2)
                                                ast_verbose(VERBOSE_PREFIX_3 "%s answered %s\n", c->name, in->name);
                                        peer = c;
-                                       ast_copy_flags(peerflags, o,
+                                       ast_copy_flags64(peerflags, o,
                                                       OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER |
                                                       OPT_CALLEE_HANGUP | OPT_CALLER_HANGUP |
                                                       OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
@@ -638,7 +638,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                in->hangupcause = c->hangupcause;
                                ast_hangup(c);
                                c = o->chan = NULL;
-                               ast_clear_flag(o, DIAL_STILLGOING);
+                               ast_clear_flag64(o, DIAL_STILLGOING);
                                handle_cause(in->hangupcause, &num);
                                continue;
                        }
@@ -650,7 +650,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                                if (option_verbose > 2)
                                                        ast_verbose( VERBOSE_PREFIX_3 "%s answered %s\n", c->name, in->name);
                                                peer = c;
-                                               ast_copy_flags(peerflags, o,
+                                               ast_copy_flags64(peerflags, o,
                                                               OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER |
                                                               OPT_CALLEE_HANGUP | OPT_CALLER_HANGUP |
                                                               OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
@@ -671,7 +671,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                        in->hangupcause = c->hangupcause;
                                        ast_hangup(c);
                                        c = o->chan = NULL;
-                                       ast_clear_flag(o, DIAL_STILLGOING);     
+                                       ast_clear_flag64(o, DIAL_STILLGOING);   
                                        handle_cause(AST_CAUSE_BUSY, &num);
                                        break;
                                case AST_CONTROL_CONGESTION:
@@ -680,7 +680,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                        in->hangupcause = c->hangupcause;
                                        ast_hangup(c);
                                        c = o->chan = NULL;
-                                       ast_clear_flag(o, DIAL_STILLGOING);
+                                       ast_clear_flag64(o, DIAL_STILLGOING);
                                        handle_cause(AST_CAUSE_CONGESTION, &num);
                                        break;
                                case AST_CONTROL_RINGING:
@@ -689,7 +689,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                        /* Setup early media if appropriate */
                                        if (single)
                                                ast_channel_early_bridge(in, c);
-                                       if (!(pa->sentringing) && !ast_test_flag(outgoing, OPT_MUSICBACK)) {
+                                       if (!(pa->sentringing) && !ast_test_flag64(outgoing, OPT_MUSICBACK)) {
                                                ast_indicate(in, AST_CONTROL_RINGING);
                                                pa->sentringing++;
                                        }
@@ -700,7 +700,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                        /* Setup early media if appropriate */
                                        if (single)
                                                ast_channel_early_bridge(in, c);
-                                       if (!ast_test_flag(outgoing, OPT_RINGBACK))
+                                       if (!ast_test_flag64(outgoing, OPT_RINGBACK))
                                                ast_indicate(in, AST_CONTROL_PROGRESS);
                                        break;
                                case AST_CONTROL_VIDUPDATE:
@@ -713,7 +713,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                                ast_verbose (VERBOSE_PREFIX_3 "%s is proceeding passing it to %s\n", c->name, in->name);
                                        if (single)
                                                ast_channel_early_bridge(in, c);
-                                       if (!ast_test_flag(outgoing, OPT_RINGBACK))
+                                       if (!ast_test_flag64(outgoing, OPT_RINGBACK))
                                                ast_indicate(in, AST_CONTROL_PROCEEDING);
                                        break;
                                case AST_CONTROL_HOLD:
@@ -731,7 +731,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                        /* Ignore going off hook and flash */
                                        break;
                                case -1:
-                                       if (!ast_test_flag(outgoing, OPT_RINGBACK | OPT_MUSICBACK)) {
+                                       if (!ast_test_flag64(outgoing, OPT_RINGBACK | OPT_MUSICBACK)) {
                                                if (option_verbose > 2)
                                                        ast_verbose(VERBOSE_PREFIX_3 "%s stopped sounds\n", c->name);
                                                ast_indicate(in, -1);
@@ -743,16 +743,16 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                }
                        } else if (single) {
                                /* XXX are we sure the logic is correct ? or we should just switch on f->frametype ? */
-                               if (f->frametype == AST_FRAME_VOICE && !ast_test_flag(outgoing, OPT_RINGBACK|OPT_MUSICBACK)) {
+                               if (f->frametype == AST_FRAME_VOICE && !ast_test_flag64(outgoing, OPT_RINGBACK|OPT_MUSICBACK)) {
                                        if (ast_write(in, f)) 
                                                ast_log(LOG_WARNING, "Unable to forward voice frame\n");
-                               } else if (f->frametype == AST_FRAME_IMAGE && !ast_test_flag(outgoing, OPT_RINGBACK|OPT_MUSICBACK)) {
+                               } else if (f->frametype == AST_FRAME_IMAGE && !ast_test_flag64(outgoing, OPT_RINGBACK|OPT_MUSICBACK)) {
                                        if (ast_write(in, f))
                                                ast_log(LOG_WARNING, "Unable to forward image\n");
-                               } else if (f->frametype == AST_FRAME_TEXT && !ast_test_flag(outgoing, OPT_RINGBACK|OPT_MUSICBACK)) {
+                               } else if (f->frametype == AST_FRAME_TEXT && !ast_test_flag64(outgoing, OPT_RINGBACK|OPT_MUSICBACK)) {
                                        if (ast_write(in, f))
                                                ast_log(LOG_WARNING, "Unable to send text\n");
-                               } else if (f->frametype == AST_FRAME_HTML && !ast_test_flag(outgoing, DIAL_NOFORWARDHTML)) {
+                               } else if (f->frametype == AST_FRAME_HTML && !ast_test_flag64(outgoing, DIAL_NOFORWARDHTML)) {
                                        if (ast_channel_sendhtml(in, f->subclass, f->data, f->datalen) == -1)
                                                ast_log(LOG_WARNING, "Unable to send URL\n");
                                }
@@ -779,7 +779,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
 
                        /* now f is guaranteed non-NULL */
                        if (f->frametype == AST_FRAME_DTMF) {
-                               if (ast_test_flag(peerflags, OPT_DTMF_EXIT)) {
+                               if (ast_test_flag64(peerflags, OPT_DTMF_EXIT)) {
                                        const char *context = pbx_builtin_getvar_helper(in, "EXITCONTEXT");
                                        if (onedigit_goto(in, context, (char) f->subclass, 1)) {
                                                if (option_verbose > 2)
@@ -793,7 +793,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                                        }
                                }
 
-                               if (ast_test_flag(peerflags, OPT_CALLER_HANGUP) && 
+                               if (ast_test_flag64(peerflags, OPT_CALLER_HANGUP) && 
                                                  (f->subclass == '*')) { /* hmm it it not guaranteed to be '*' anymore. */
                                        if (option_verbose > 2)
                                                ast_verbose(VERBOSE_PREFIX_3 "User hit %c to disconnect call.\n", f->subclass);
@@ -806,7 +806,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                        }
 
                        /* Forward HTML stuff */
-                       if (single && (f->frametype == AST_FRAME_HTML) && !ast_test_flag(outgoing, DIAL_NOFORWARDHTML)) 
+                       if (single && (f->frametype == AST_FRAME_HTML) && !ast_test_flag64(outgoing, DIAL_NOFORWARDHTML)) 
                                if(ast_channel_sendhtml(outgoing->chan, f->subclass, f->data, f->datalen) == -1)
                                        ast_log(LOG_WARNING, "Unable to send URL\n");
                        
@@ -845,13 +845,13 @@ static void replace_macro_delimiter(char *s)
 
 
 /* returns true if there is a valid privacy reply */
-static int valid_priv_reply(struct ast_flags *opts, int res)
+static int valid_priv_reply(struct ast_flags64 *opts, int res)
 {
        if (res < '1')
                return 0;
-       if (ast_test_flag(opts, OPT_PRIVACY) && res <= '5')
+       if (ast_test_flag64(opts, OPT_PRIVACY) && res <= '5')
                return 1;
-       if (ast_test_flag(opts, OPT_SCREENING) && res <= '4')
+       if (ast_test_flag64(opts, OPT_SCREENING) && res <= '4')
                return 1;
        return 0;
 }
@@ -955,7 +955,7 @@ static int do_timelimit(struct ast_channel *chan, struct ast_bridge_config *conf
 }
 
 static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
-    struct ast_flags *opts, char **opt_args, struct privacy_args *pa)
+    struct ast_flags64 *opts, char **opt_args, struct privacy_args *pa)
 {
 
        int res2;
@@ -969,13 +969,13 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
           target extension was picked up. We are going to have to kill some
           time and make the caller believe the peer hasn't picked up yet */
 
-       if (ast_test_flag(opts, OPT_MUSICBACK) && !ast_strlen_zero(opt_args[OPT_ARG_MUSICBACK])) {
+       if (ast_test_flag64(opts, OPT_MUSICBACK) && !ast_strlen_zero(opt_args[OPT_ARG_MUSICBACK])) {
                char *original_moh = ast_strdupa(chan->musicclass);
                ast_indicate(chan, -1);
                ast_string_field_set(chan, musicclass, opt_args[OPT_ARG_MUSICBACK]);
                ast_moh_start(chan, opt_args[OPT_ARG_MUSICBACK], NULL);
                ast_string_field_set(chan, musicclass, original_moh);
-       } else if (ast_test_flag(opts, OPT_RINGBACK)) {
+       } else if (ast_test_flag64(opts, OPT_RINGBACK)) {
                ast_indicate(chan, AST_CONTROL_RINGING);
                pa->sentringing++;
        }
@@ -1000,9 +1000,9 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
                /* now get input from the called party, as to their choice */
                if( !res2 ) {
                        /* XXX can we have both, or they are mutually exclusive ? */
-                       if( ast_test_flag(opts, OPT_PRIVACY) )
+                       if( ast_test_flag64(opts, OPT_PRIVACY) )
                                res2 = ast_play_and_wait(peer,"priv-callee-options");
-                       if( ast_test_flag(opts, OPT_SCREENING) )
+                       if( ast_test_flag64(opts, OPT_SCREENING) )
                                res2 = ast_play_and_wait(peer,"screen-callee-options");
                }
                /*! \page DialPrivacy Dial Privacy scripts
@@ -1027,14 +1027,14 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
                res2 = ast_play_and_wait(peer, "vm-sorry");
        }
 
-       if (ast_test_flag(opts, OPT_MUSICBACK)) {
+       if (ast_test_flag64(opts, OPT_MUSICBACK)) {
                ast_moh_stop(chan);
-       } else if (ast_test_flag(opts, OPT_RINGBACK)) {
+       } else if (ast_test_flag64(opts, OPT_RINGBACK)) {
                ast_indicate(chan, -1);
                pa->sentringing=0;
        }
        ast_autoservice_stop(chan);
-       if(ast_test_flag(opts, OPT_PRIVACY) && (res2 >= '1' && res2 <= '5')) {
+       if(ast_test_flag64(opts, OPT_PRIVACY) && (res2 >= '1' && res2 <= '5')) {
                /* map keypresses to various things, the index is res2 - '1' */
                static const char *_val[] = { "ALLOW", "DENY", "TORTURE", "KILL", "ALLOW" };
                static const int _flag[] = { AST_PRIVACY_ALLOW, AST_PRIVACY_DENY, AST_PRIVACY_TORTURE, AST_PRIVACY_KILL, AST_PRIVACY_ALLOW};
@@ -1058,7 +1058,7 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
                break;
        case '5':
                /* XXX should we set status to DENY ? */
-               if( ast_test_flag(opts, OPT_PRIVACY) )
+               if( ast_test_flag64(opts, OPT_PRIVACY) )
                        break;
                /* if not privacy, then 5 is the same as "default" case */
        default:        /* bad input or -1 if failure to start autoservice */
@@ -1075,7 +1075,7 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
        if (res2 == '1') {      /* the only case where we actually connect */
                /* if the intro is NOCALLERID, then there's no reason to leave it on disk, it'll 
                   just clog things up, and it's not useful information, not being tied to a CID */
-               if( strncmp(pa->privcid,"NOCALLERID",10) == 0 || ast_test_flag(opts, OPT_SCREEN_NOINTRO) ) {
+               if( strncmp(pa->privcid,"NOCALLERID",10) == 0 || ast_test_flag64(opts, OPT_SCREEN_NOINTRO) ) {
                        ast_filedelete(pa->privintro, NULL);
                        if( ast_fileexists(pa->privintro, NULL, NULL ) > 0 )
                                ast_log(LOG_NOTICE, "privacy: ast_filedelete didn't do its job on %s\n", pa->privintro);
@@ -1091,7 +1091,7 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer,
 
 /*! \brief returns 1 if successful, 0 or <0 if the caller should 'goto out' */
 static int setup_privacy_args(struct privacy_args *pa,
-       struct ast_flags *opts, char *opt_args[], struct ast_channel *chan)
+       struct ast_flags64 *opts, char *opt_args[], struct ast_channel *chan)
 {
        char callerid[60];
        int res;
@@ -1100,7 +1100,7 @@ static int setup_privacy_args(struct privacy_args *pa,
        if (!ast_strlen_zero(chan->cid.cid_num)) {
                l = ast_strdupa(chan->cid.cid_num);
                ast_shrink_phone_number(l);
-               if (ast_test_flag(opts, OPT_PRIVACY) ) {
+               if (ast_test_flag64(opts, OPT_PRIVACY) ) {
                        if (option_verbose > 2)
                                ast_verbose(VERBOSE_PREFIX_3  "Privacy DB is '%s', clid is '%s'\n",
                                             opt_args[OPT_ARG_PRIVACY], l);
@@ -1129,11 +1129,11 @@ static int setup_privacy_args(struct privacy_args *pa,
        
        ast_copy_string(pa->privcid,l,sizeof(pa->privcid));
 
-       if( strncmp(pa->privcid,"NOCALLERID",10) != 0 && ast_test_flag(opts, OPT_SCREEN_NOCLID) ) { /* if callerid is set, and ast_test_flag(&opts, OPT_SCREEN_NOCLID) is set also */  
+       if( strncmp(pa->privcid,"NOCALLERID",10) != 0 && ast_test_flag64(opts, OPT_SCREEN_NOCLID) ) { /* if callerid is set, and ast_test_flag64(&opts, OPT_SCREEN_NOCLID) is set also */  
                if (option_verbose > 2)
                        ast_verbose( VERBOSE_PREFIX_3  "CallerID set (%s); N option set; Screening should be off\n", pa->privcid);
                pa->privdb_val = AST_PRIVACY_ALLOW;
-       } else if (ast_test_flag(opts, OPT_SCREEN_NOCLID) && strncmp(pa->privcid,"NOCALLERID",10) == 0 ) {
+       } else if (ast_test_flag64(opts, OPT_SCREEN_NOCLID) && strncmp(pa->privcid,"NOCALLERID",10) == 0 ) {
                if (option_verbose > 2)
                        ast_verbose( VERBOSE_PREFIX_3  "CallerID blank; N option set; Screening should happen; dbval is %d\n", pa->privdb_val);
        }
@@ -1195,7 +1195,7 @@ static int setup_privacy_args(struct privacy_args *pa,
        return 1;       /* success */
 }
 
-static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags *peerflags, int *continue_exec)
+static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags64 *peerflags, int *continue_exec)
 {
        int res = -1;   /* default: error */
        char *rest, *cur;       /* scan the list of destinations */
@@ -1227,7 +1227,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                             AST_APP_ARG(options);
                             AST_APP_ARG(url);
        );
-       struct ast_flags opts = { 0, };
+       struct ast_flags64 opts = { 0, };
        char *opt_args[OPT_ARG_ARRAY_SIZE];
 
        if (ast_strlen_zero(data)) {
@@ -1243,7 +1243,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
        memset(&config,0,sizeof(struct ast_bridge_config));
 
        if (!ast_strlen_zero(args.options) &&
-                       ast_app_parse_options(dial_exec_options, &opts, opt_args, args.options)) {
+                       ast_app_parse_options64(dial_exec_options, &opts, opt_args, args.options)) {
                pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
                goto done;
        }
@@ -1254,13 +1254,13 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                goto done;
        }
 
-       if (ast_test_flag(&opts, OPT_OPERMODE)) {
+       if (ast_test_flag64(&opts, OPT_OPERMODE)) {
                opermode = ast_strlen_zero(opt_args[OPT_ARG_OPERMODE]) ? 1 : atoi(opt_args[OPT_ARG_OPERMODE]);
                if (option_verbose > 2)
                        ast_verbose(VERBOSE_PREFIX_3 "Setting operator services mode to %d.\n", opermode);
        }
        
-       if (ast_test_flag(&opts, OPT_DURATION_STOP) && !ast_strlen_zero(opt_args[OPT_ARG_DURATION_STOP])) {
+       if (ast_test_flag64(&opts, OPT_DURATION_STOP) && !ast_strlen_zero(opt_args[OPT_ARG_DURATION_STOP])) {
                calldurationlimit = atoi(opt_args[OPT_ARG_DURATION_STOP]);
                if (!calldurationlimit) {
                        ast_log(LOG_WARNING, "Dial does not accept S(%s), hanging up.\n", opt_args[OPT_ARG_DURATION_STOP]);
@@ -1271,22 +1271,22 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                        ast_verbose(VERBOSE_PREFIX_3 "Setting call duration limit to %d seconds.\n", calldurationlimit);
        }
 
-       if (ast_test_flag(&opts, OPT_SENDDTMF) && !ast_strlen_zero(opt_args[OPT_ARG_SENDDTMF])) {
+       if (ast_test_flag64(&opts, OPT_SENDDTMF) && !ast_strlen_zero(opt_args[OPT_ARG_SENDDTMF])) {
                dtmfcalling = opt_args[OPT_ARG_SENDDTMF];
                dtmfcalled = strsep(&dtmfcalling, ":");
        }
 
-       if (ast_test_flag(&opts, OPT_DURATION_LIMIT) && !ast_strlen_zero(opt_args[OPT_ARG_DURATION_LIMIT])) {
+       if (ast_test_flag64(&opts, OPT_DURATION_LIMIT) && !ast_strlen_zero(opt_args[OPT_ARG_DURATION_LIMIT])) {
                if (do_timelimit(chan, &config, opt_args[OPT_ARG_DURATION_LIMIT], &calldurationlimit))
                        goto done;
        }
 
-       if (ast_test_flag(&opts, OPT_RESETCDR) && chan->cdr)
+       if (ast_test_flag64(&opts, OPT_RESETCDR) && chan->cdr)
                ast_cdr_reset(chan->cdr, NULL);
-       if (ast_test_flag(&opts, OPT_PRIVACY) && ast_strlen_zero(opt_args[OPT_ARG_PRIVACY]))
+       if (ast_test_flag64(&opts, OPT_PRIVACY) && ast_strlen_zero(opt_args[OPT_ARG_PRIVACY]))
                opt_args[OPT_ARG_PRIVACY] = ast_strdupa(chan->exten);
 
-       if (ast_test_flag(&opts, OPT_PRIVACY) || ast_test_flag(&opts, OPT_SCREENING)) {
+       if (ast_test_flag64(&opts, OPT_PRIVACY) || ast_test_flag64(&opts, OPT_SCREENING)) {
                res = setup_privacy_args(&pa, &opts, opt_args, chan);
                if (res <= 0)
                        goto out;
@@ -1304,7 +1304,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                outbound_group = pbx_builtin_getvar_helper(chan, "OUTBOUND_GROUP");
        }
            
-       ast_copy_flags(peerflags, &opts, OPT_DTMF_EXIT | OPT_GO_ON | OPT_ORIGINAL_CLID | OPT_CALLER_HANGUP | OPT_IGNORE_FORWARDING);
+       ast_copy_flags64(peerflags, &opts, OPT_DTMF_EXIT | OPT_GO_ON | OPT_ORIGINAL_CLID | OPT_CALLER_HANGUP | OPT_IGNORE_FORWARDING);
        /* loop through the list of dial destinations */
        rest = args.peers;
        while ((cur = strsep(&rest, "&")) ) {
@@ -1320,14 +1320,14 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                if (!(tmp = ast_calloc(1, sizeof(*tmp))))
                        goto out;
                if (opts.flags) {
-                       ast_copy_flags(tmp, &opts,
+                       ast_copy_flags64(tmp, &opts,
                                       OPT_CANCEL_ELSEWHERE |
                                       OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER |
                                       OPT_CALLEE_HANGUP | OPT_CALLER_HANGUP |
                                       OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR |
                                       OPT_CALLEE_PARK | OPT_CALLER_PARK |
                                       OPT_RINGBACK | OPT_MUSICBACK | OPT_FORCECLID);
-                       ast_set2_flag(tmp, args.url, DIAL_NOFORWARDHTML);       
+                       ast_set2_flag64(tmp, args.url, DIAL_NOFORWARDHTML);     
                }
                ast_copy_string(numsubst, number, sizeof(numsubst));
                /* Request the peer */
@@ -1364,7 +1364,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                                ast_hangup(tc);
                                /* If we have been told to ignore forwards, just set this channel to null
                                 * and continue processing extensions normally */
-                               if (ast_test_flag(&opts, OPT_IGNORE_FORWARDING)) {
+                               if (ast_test_flag64(&opts, OPT_IGNORE_FORWARDING)) {
                                        tc = NULL;
                                        cause = AST_CAUSE_BUSY;
                                        if (option_verbose > 2)
@@ -1453,13 +1453,13 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                        senddialevent(chan, tc);
                        if (option_verbose > 2)
                                ast_verbose(VERBOSE_PREFIX_3 "Called %s\n", numsubst);
-                       if (!ast_test_flag(peerflags, OPT_ORIGINAL_CLID))
+                       if (!ast_test_flag64(peerflags, OPT_ORIGINAL_CLID))
                                ast_set_callerid(tc, S_OR(chan->macroexten, chan->exten), get_cid_name(cidname, sizeof(cidname), chan), NULL);
                }
                /* Put them in the list of outgoing thingies...  We're ready now. 
                   XXX If we're forcibly removed, these outgoing calls won't get
                   hung up XXX */
-               ast_set_flag(tmp, DIAL_STILLGOING);     
+               ast_set_flag64(tmp, DIAL_STILLGOING);   
                tmp->chan = tc;
                tmp->next = outgoing;
                outgoing = tmp;
@@ -1483,7 +1483,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
        } else {
                /* Our status will at least be NOANSWER */
                strcpy(pa.status, "NOANSWER");
-               if (ast_test_flag(outgoing, OPT_MUSICBACK)) {
+               if (ast_test_flag64(outgoing, OPT_MUSICBACK)) {
                        moh = 1;
                        if (!ast_strlen_zero(opt_args[OPT_ARG_MUSICBACK])) {
                                char *original_moh = ast_strdupa(chan->musicclass);
@@ -1494,7 +1494,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                                ast_moh_start(chan, NULL, NULL);
                        }
                        ast_indicate(chan, AST_CONTROL_PROGRESS);
-               } else if (ast_test_flag(outgoing, OPT_RINGBACK)) {
+               } else if (ast_test_flag64(outgoing, OPT_RINGBACK)) {
                        ast_indicate(chan, AST_CONTROL_RINGING);
                        sentringing++;
                }
@@ -1537,13 +1537,13 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                        ast_debug(1, "app_dial: sendurl=%s.\n", args.url);
                        ast_channel_sendurl( peer, args.url );
                }
-               if ( (ast_test_flag(&opts, OPT_PRIVACY) || ast_test_flag(&opts, OPT_SCREENING)) && pa.privdb_val == AST_PRIVACY_UNKNOWN) {
+               if ( (ast_test_flag64(&opts, OPT_PRIVACY) || ast_test_flag64(&opts, OPT_SCREENING)) && pa.privdb_val == AST_PRIVACY_UNKNOWN) {
                        if (do_privacy(chan, peer, &opts, opt_args, &pa)) {
                                res = 0;
                                goto out;
                        }
                }
-               if (!ast_test_flag(&opts, OPT_ANNOUNCE) || ast_strlen_zero(opt_args[OPT_ARG_ANNOUNCE])) {
+               if (!ast_test_flag64(&opts, OPT_ANNOUNCE) || ast_strlen_zero(opt_args[OPT_ARG_ANNOUNCE])) {
                        res = 0;
                } else {
                        int digit = 0;
@@ -1564,20 +1564,20 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 
                }
 
-               if (chan && peer && ast_test_flag(&opts, OPT_GOTO) && !ast_strlen_zero(opt_args[OPT_ARG_GOTO])) {
+               if (chan && peer && ast_test_flag64(&opts, OPT_GOTO) && !ast_strlen_zero(opt_args[OPT_ARG_GOTO])) {
                        replace_macro_delimiter(opt_args[OPT_ARG_GOTO]);
                        ast_parseable_goto(chan, opt_args[OPT_ARG_GOTO]);
                        ast_parseable_goto(peer, opt_args[OPT_ARG_GOTO]);
                        peer->priority++;
                        ast_pbx_start(peer);
-                       hanguptree(outgoing, NULL, ast_test_flag(&opts, OPT_CANCEL_ELSEWHERE) ? 1 : 0);
+                       hanguptree(outgoing, NULL, ast_test_flag64(&opts, OPT_CANCEL_ELSEWHERE) ? 1 : 0);
                        if (continue_exec)
                                *continue_exec = 1;
                        res = 0;
                        goto done;
                }
 
-               if (ast_test_flag(&opts, OPT_CALLEE_MACRO) && !ast_strlen_zero(opt_args[OPT_ARG_CALLEE_MACRO])) {
+               if (ast_test_flag64(&opts, OPT_CALLEE_MACRO) && !ast_strlen_zero(opt_args[OPT_ARG_CALLEE_MACRO])) {
                        struct ast_app *theapp;
                        const char *macro_result;
 
@@ -1609,18 +1609,18 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 
                                if (!strcasecmp(macro_result, "BUSY")) {
                                        ast_copy_string(pa.status, macro_result, sizeof(pa.status));
-                                       ast_set_flag(peerflags, OPT_GO_ON);
+                                       ast_set_flag64(peerflags, OPT_GO_ON);
                                        res = -1;
                                } else if (!strcasecmp(macro_result, "CONGESTION") || !strcasecmp(macro_result, "CHANUNAVAIL")) {
                                        ast_copy_string(pa.status, macro_result, sizeof(pa.status));
-                                       ast_set_flag(peerflags, OPT_GO_ON);     
+                                       ast_set_flag64(peerflags, OPT_GO_ON);   
                                        res = -1;
                                } else if (!strcasecmp(macro_result, "CONTINUE")) {
                                        /* hangup peer and keep chan alive assuming the macro has changed 
                                           the context / exten / priority or perhaps 
                                           the next priority in the current exten is desired.
                                        */
-                                       ast_set_flag(peerflags, OPT_GO_ON);     
+                                       ast_set_flag64(peerflags, OPT_GO_ON);   
                                        res = -1;
                                } else if (!strcasecmp(macro_result, "ABORT")) {
                                        /* Hangup both ends unless the caller has the g flag */
@@ -1631,13 +1631,13 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                                        if (strchr(macro_transfer_dest, '^')) { /* context^exten^priority*/
                                                replace_macro_delimiter(macro_transfer_dest);
                                                if (!ast_parseable_goto(chan, macro_transfer_dest))
-                                                       ast_set_flag(peerflags, OPT_GO_ON);
+                                                       ast_set_flag64(peerflags, OPT_GO_ON);
                                        }
                                }
                        }
                }
 
-               if (ast_test_flag(&opts, OPT_CALLEE_GOSUB) && !ast_strlen_zero(opt_args[OPT_ARG_CALLEE_GOSUB])) {
+               if (ast_test_flag64(&opts, OPT_CALLEE_GOSUB) && !ast_strlen_zero(opt_args[OPT_ARG_CALLEE_GOSUB])) {
                        struct ast_app *theapp;
                        const char *gosub_result;
                        char *gosub_args, *gosub_argstart;
@@ -1692,18 +1692,18 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 
                                if (!strcasecmp(gosub_result, "BUSY")) {
                                        ast_copy_string(pa.status, gosub_result, sizeof(pa.status));
-                                       ast_set_flag(peerflags, OPT_GO_ON);
+                                       ast_set_flag64(peerflags, OPT_GO_ON);
                                        res = -1;
                                } else if (!strcasecmp(gosub_result, "CONGESTION") || !strcasecmp(gosub_result, "CHANUNAVAIL")) {
                                        ast_copy_string(pa.status, gosub_result, sizeof(pa.status));
-                                       ast_set_flag(peerflags, OPT_GO_ON);     
+                                       ast_set_flag64(peerflags, OPT_GO_ON);   
                                        res = -1;
                                } else if (!strcasecmp(gosub_result, "CONTINUE")) {
                                        /* hangup peer and keep chan alive assuming the macro has changed 
                                           the context / exten / priority or perhaps 
                                           the next priority in the current exten is desired.
                                        */
-                                       ast_set_flag(peerflags, OPT_GO_ON);     
+                                       ast_set_flag64(peerflags, OPT_GO_ON);   
                                        res = -1;
                                } else if (!strcasecmp(gosub_result, "ABORT")) {
                                        /* Hangup both ends unless the caller has the g flag */
@@ -1714,7 +1714,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                                        if (strchr(gosub_transfer_dest, '^')) { /* context^exten^priority*/
                                                replace_macro_delimiter(gosub_transfer_dest);
                                                if (!ast_parseable_goto(chan, gosub_transfer_dest))
-                                                       ast_set_flag(peerflags, OPT_GO_ON);
+                                                       ast_set_flag64(peerflags, OPT_GO_ON);
                                        }
                                }
                        }
@@ -1740,21 +1740,21 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                        res = -1;
                        end_time = time(NULL);
                } else {
-                       if (ast_test_flag(peerflags, OPT_CALLEE_TRANSFER))
+                       if (ast_test_flag64(peerflags, OPT_CALLEE_TRANSFER))
                                ast_set_flag(&(config.features_callee), AST_FEATURE_REDIRECT);
-                       if (ast_test_flag(peerflags, OPT_CALLER_TRANSFER))
+                       if (ast_test_flag64(peerflags, OPT_CALLER_TRANSFER))
                                ast_set_flag(&(config.features_caller), AST_FEATURE_REDIRECT);
-                       if (ast_test_flag(peerflags, OPT_CALLEE_HANGUP))
+                       if (ast_test_flag64(peerflags, OPT_CALLEE_HANGUP))
                                ast_set_flag(&(config.features_callee), AST_FEATURE_DISCONNECT);
-                       if (ast_test_flag(peerflags, OPT_CALLER_HANGUP))
+                       if (ast_test_flag64(peerflags, OPT_CALLER_HANGUP))
                                ast_set_flag(&(config.features_caller), AST_FEATURE_DISCONNECT);
-                       if (ast_test_flag(peerflags, OPT_CALLEE_MONITOR))
+                       if (ast_test_flag64(peerflags, OPT_CALLEE_MONITOR))
                                ast_set_flag(&(config.features_callee), AST_FEATURE_AUTOMON);
-                       if (ast_test_flag(peerflags, OPT_CALLER_MONITOR)) 
+                       if (ast_test_flag64(peerflags, OPT_CALLER_MONITOR)) 
                                ast_set_flag(&(config.features_caller), AST_FEATURE_AUTOMON);
-                       if (ast_test_flag(peerflags, OPT_CALLEE_PARK))
+                       if (ast_test_flag64(peerflags, OPT_CALLEE_PARK))
                                ast_set_flag(&(config.features_callee), AST_FEATURE_PARKCALL);
-                       if (ast_test_flag(peerflags, OPT_CALLER_PARK))
+                       if (ast_test_flag64(peerflags, OPT_CALLER_PARK))
                                ast_set_flag(&(config.features_caller), AST_FEATURE_PARKCALL);
 
                        if (moh) {
@@ -1794,14 +1794,14 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                pbx_builtin_setvar_helper(chan, "DIALEDTIME", toast);
                
                
-               if (ast_test_flag(&opts, OPT_PEER_H)) {
+               if (ast_test_flag64(&opts, OPT_PEER_H)) {
                        ast_log(LOG_NOTICE,"PEER context: %s; PEER exten: %s;  PEER priority: %d\n", 
                                        peer->context, peer->exten, peer->priority);
                }
                
                strcpy(peer->context, chan->context);
 
-               if (ast_test_flag(&opts, OPT_PEER_H) && ast_exists_extension(peer, peer->context, "h", 1, peer->cid.cid_num)) {
+               if (ast_test_flag64(&opts, OPT_PEER_H) && ast_exists_extension(peer, peer->context, "h", 1, peer->cid.cid_num)) {
                        strcpy(peer->exten, "h");
                        peer->priority = 1;
                        while (ast_exists_extension(peer, peer->context, peer->exten, peer->priority, peer->cid.cid_num)) {
@@ -1835,7 +1835,7 @@ out:
        senddialendevent(chan, pa.status);
        ast_debug(1, "Exiting with DIALSTATUS=%s.\n", pa.status);
        
-       if ((ast_test_flag(peerflags, OPT_GO_ON)) && (!chan->_softhangup) && (res != AST_PBX_KEEPALIVE)) {
+       if ((ast_test_flag64(peerflags, OPT_GO_ON)) && (!chan->_softhangup) && (res != AST_PBX_KEEPALIVE)) {
                if (calldurationlimit)
                        chan->whentohangup = 0;
                res = 0;
@@ -1847,7 +1847,7 @@ done:
 
 static int dial_exec(struct ast_channel *chan, void *data)
 {
-       struct ast_flags peerflags;
+       struct ast_flags64 peerflags;
 
        memset(&peerflags, 0, sizeof(peerflags));
 
@@ -1859,7 +1859,7 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
        char *announce = NULL, *dialdata = NULL;
        const char *context = NULL;
        int sleep = 0, loops = 0, res = -1;
-       struct ast_flags peerflags;
+       struct ast_flags64 peerflags;
        
        if (ast_strlen_zero(data)) {
                ast_log(LOG_WARNING, "RetryDial requires an argument!\n");
@@ -1915,7 +1915,7 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
                        break;
 
                if (res == 0) {
-                       if (ast_test_flag(&peerflags, OPT_DTMF_EXIT)) {
+                       if (ast_test_flag64(&peerflags, OPT_DTMF_EXIT)) {
                                if (!ast_strlen_zero(announce)) {
                                        if (ast_fileexists(announce, NULL, chan->language) > 0) {
                                                if(!(res = ast_streamfile(chan, announce, chan->language)))                                                             
index f5dee8b..3a38dcd 100644 (file)
@@ -364,7 +364,7 @@ struct minivm_account {
        char attachfmt[80];             /*!< Format for voicemail audio file attachment */
        char etemplate[80];             /*!< Pager template */
        char ptemplate[80];             /*!< Voicemail format */
-       uint64_t flags;         /*!< MVM_ flags */      
+       unsigned int flags;             /*!< MVM_ flags */      
        struct ast_variable *chanvars;  /*!< Variables for e-mail template */
        double volgain;                 /*!< Volume gain for voicemails sent via e-mail */
        AST_LIST_ENTRY(minivm_account) list;    
@@ -395,7 +395,7 @@ static AST_LIST_HEAD_STATIC(message_templates, minivm_template);
 
 /*! \brief Options for leaving voicemail with the voicemail() application */
 struct leave_vm_options {
-       uint64_t flags;
+       unsigned int flags;
        signed char record_gain;
 };
 
index 3df6676..fbbde45 100644 (file)
@@ -97,7 +97,7 @@ struct mixmonitor {
        char *filename;
        char *post_process;
        char *name;
-       uint64_t flags;
+       unsigned int flags;
 };
 
 enum {
@@ -226,7 +226,7 @@ static void *mixmonitor_thread(void *obj)
        return NULL;
 }
 
-static void launch_monitor_thread(struct ast_channel *chan, const char *filename, uint64_t flags,
+static void launch_monitor_thread(struct ast_channel *chan, const char *filename, unsigned int flags,
                                  int readvol, int writevol, const char *post_process) 
 {
        pthread_t thread;
index 9c2e81b..f12c5cb 100644 (file)
@@ -370,7 +370,7 @@ struct ast_vm_user {
        char uniqueid[20];               /*!< Unique integer identifier */
        char exit[80];
        char attachfmt[20];              /*!< Attachment format */
-       uint64_t flags;              /*!< VM_ flags */  
+       unsigned int flags;              /*!< VM_ flags */      
        int saydurationm;
        int maxmsg;                      /*!< Maximum number of msgs per folder for this mailbox */
        int maxsecs;                     /*!< Maximum number of seconds per message for this mailbox */
@@ -2190,7 +2190,7 @@ static int sendmail(char *srcemail, struct ast_vm_user *vmu, int msgnum, char *c
        }
        if (!strcmp(format, "wav49"))
                format = "WAV";
-       ast_debug(3, "Attaching file '%s', format '%s', uservm is '%d', global is %lld\n", attach, format, attach_user_voicemail, (unsigned long long)ast_test_flag((&globalflags), VM_ATTACH));
+       ast_debug(3, "Attaching file '%s', format '%s', uservm is '%d', global is %d\n", attach, format, attach_user_voicemail, ast_test_flag((&globalflags), VM_ATTACH));
        /* Make a temporary file instead of piping directly to sendmail, in case the mail
           command hangs */
        if ((p = vm_mkftemp(tmp)) == NULL) {
@@ -2987,7 +2987,7 @@ static void run_externnotify(char *context, char *extension)
 }
 
 struct leave_vm_options {
-       uint64_t flags;
+       unsigned int flags;
        signed char record_gain;
 };
 
index 23ef729..05c2306 100644 (file)
@@ -315,7 +315,7 @@ struct iax2_user {
        int encmethods;
        int amaflags;
        int adsi;
-       uint64_t flags;
+       unsigned int flags;
        int capability;
        int maxauthreq; /*!< Maximum allowed outstanding AUTHREQs */
        int curauthreq; /*!< Current number of outstanding AUTHREQs */
@@ -353,7 +353,7 @@ struct iax2_peer {
        int sockfd;                                     /*!< Socket to use for transmission */
        struct in_addr mask;
        int adsi;
-       uint64_t flags;
+       unsigned int flags;
 
        /* Dynamic Registration fields */
        struct sockaddr_in defaddr;                     /*!< Default address if there is one */
@@ -604,7 +604,7 @@ struct chan_iax2_pvt {
        /*! Associated peer for poking */
        struct iax2_peer *peerpoke;
        /*! IAX_ flags */
-       uint64_t flags;
+       unsigned int flags;
        int adsi;
 
        /*! Transferring status */
@@ -2807,7 +2807,7 @@ static void realtime_update_peer(const char *peername, struct sockaddr_in *sin,
 
 struct create_addr_info {
        int capability;
-       uint64_t flags;
+       unsigned int flags;
        int maxtime;
        int encmethods;
        int found;
index b1bca29..b4072ce 100644 (file)
@@ -104,7 +104,7 @@ static const struct ast_channel_tech local_tech = {
 
 struct local_pvt {
        ast_mutex_t lock;                       /* Channel private lock */
-       uint64_t flags;                     /* Private flags */
+       unsigned int flags;                     /* Private flags */
        char context[AST_MAX_CONTEXT];          /* Context to call */
        char exten[AST_MAX_EXTENSION];          /* Extension to call */
        int reqformat;                          /* Requested format */
index f35fa46..b0b7bda 100644 (file)
@@ -639,7 +639,7 @@ struct sip_request {
        int headers;            /*!< # of SIP Headers */
        int method;             /*!< Method of this request */
        int lines;              /*!< Body Content */
-       uint64_t flags;     /*!< SIP_PKT Flags for this packet */
+       unsigned int flags;     /*!< SIP_PKT Flags for this packet */
        char *header[SIP_MAX_HEADERS];
        char *line[SIP_MAX_LINES];
        char data[SIP_MAX_PACKET];
@@ -1080,7 +1080,7 @@ struct sip_pkt {
        int retrans;                            /*!< Retransmission number */
        int method;                             /*!< SIP method for this packet */
        int seqno;                              /*!< Sequence number */
-       uint64_t flags;                 /*!< non-zero if this is a response packet (e.g. 200 OK) */
+       unsigned int flags;                     /*!< non-zero if this is a response packet (e.g. 200 OK) */
        struct sip_pvt *owner;                  /*!< Owner AST call */
        int retransid;                          /*!< Retransmission ID */
        int timer_a;                            /*!< SIP timer A, retransmission timer */
@@ -11584,7 +11584,7 @@ static int sip_show_channel(int fd, int argc, char *argv[])
                                ast_cli(fd, "  Original uri:           %s\n", cur->uri);
                        if (!ast_strlen_zero(cur->cid_num))
                                ast_cli(fd, "  Caller-ID:              %s\n", cur->cid_num);
-                       ast_cli(fd, "  Need Destroy:           %lld\n", (unsigned long long)ast_test_flag(&cur->flags[0], SIP_NEEDDESTROY));
+                       ast_cli(fd, "  Need Destroy:           %d\n", ast_test_flag(&cur->flags[0], SIP_NEEDDESTROY));
                        ast_cli(fd, "  Last Message:           %s\n", cur->lastmsg);
                        ast_cli(fd, "  Promiscuous Redir:      %s\n", ast_test_flag(&cur->flags[0], SIP_PROMISCREDIR) ? "Yes" : "No");
                        ast_cli(fd, "  Route:                  %s\n", cur->route ? cur->route->hop : "N/A");
index 8c20ab8..962e6d9 100644 (file)
@@ -69,7 +69,7 @@ struct iax_template {
        unsigned int server;
        unsigned short serverport;
        unsigned int altserver;
-       uint64_t flags;
+       unsigned int flags;
        unsigned int format;
        unsigned int tos;       
 } *templates;
@@ -88,7 +88,7 @@ static struct iax_flag {
        { "disable3way", PROV_FLAG_DIS_THREEWAY },
 };
 
-char *iax_provflags2str(char *buf, int buflen, uint64_t flags)
+char *iax_provflags2str(char *buf, int buflen, unsigned int flags)
 {
        int x;
 
@@ -117,7 +117,7 @@ static unsigned int iax_str2flags(const char *buf)
        int x;
        int len;
        int found;
-       uint64_t flags = 0;
+       unsigned int flags = 0;
        char *e;
        while(buf && *buf) {
                e = strchr(buf, ',');
index a54aaeb..d951502 100644 (file)
@@ -45,7 +45,7 @@
 #define PROV_FLAG_DIS_CIDCW            (1 << 6)        /* CID/CW Disabled */
 #define PROV_FLAG_DIS_THREEWAY (1 << 7)        /* Three-way calling, transfer disabled */
 
-char *iax_provflags2str(char *buf, int buflen, uint64_t flags);
+char *iax_provflags2str(char *buf, int buflen, unsigned int flags);
 int iax_provision_reload(void);
 int iax_provision_unload(void);
 int iax_provision_build(struct iax_ie_data *provdata, unsigned int *signature, const char *template, int force);
index 1075868..4852a08 100644 (file)
@@ -67,7 +67,7 @@ struct acf_odbc_query {
        char writehandle[5][30];
        char sql_read[2048];
        char sql_write[2048];
-       uint64_t flags;
+       unsigned int flags;
        int rowlimit;
        struct ast_custom_function *acf;
 };
index 37ff5b9..145256f 100644 (file)
@@ -55,7 +55,7 @@ enum {
 struct ast_jb_conf
 {
        /*! \brief Combination of the AST_JB_ENABLED, AST_JB_FORCED and AST_JB_LOG flags. */
-       uint64_t flags;
+       unsigned int flags;
        /*! \brief Max size of the jitterbuffer implementation. */
        long max_size;
        /*! \brief Resynchronization threshold of the jitterbuffer implementation. */
@@ -98,7 +98,7 @@ struct ast_jb
        /*! \brief File for frame timestamp tracing. */
        FILE *logfile;
        /*! \brief Jitterbuffer internal state flags. */
-       uint64_t flags;
+       unsigned int flags;
 };
 
 
index 76683d5..1fb0e04 100644 (file)
@@ -425,6 +425,17 @@ struct ast_app_option {
  */
 int ast_app_parse_options(const struct ast_app_option *options, struct ast_flags *flags, char **args, char *optstr);
 
+       /*!
+  \brief Parses a string containing application options and sets flags/arguments.
+  \param options The array of possible options declared with AST_APP_OPTIONS
+  \param flags The 64-bit flag structure to have option flags set
+  \param args The array of argument pointers to hold arguments found
+  \param optstr The string containing the options to be parsed
+  \return zero for success, non-zero if an error occurs
+  \sa AST_APP_OPTIONS
+ */
+int ast_app_parse_options64(const struct ast_app_option *options, struct ast_flags64 *flags, char **args, char *optstr);
+
 /*! \brief Present a dialtone and collect a certain length extension. 
     \return Returns 1 on valid extension entered, -1 on hangup, or 0 on invalid extension. 
 \note Note that if 'collect' holds digits already, new digits will be appended, so be sure it's initialized properly */
index f8d4b5d..cdbf35e 100644 (file)
@@ -83,7 +83,7 @@ struct ast_cdr {
        /*! What account number to use */
        char accountcode[AST_MAX_ACCOUNT_CODE];                 
        /*! flags */
-       uint64_t flags;                         
+       unsigned int flags;                             
        /*! Unique Channel Identifier */
        char uniqueid[32];
        /*! User field */
index 0a5b7c1..9bfc3dd 100644 (file)
@@ -468,7 +468,7 @@ struct ast_channel {
                                                                (see \ref AstChanVar ) */
        ast_group_t callgroup;                          /*!< Call group for call pickups */
        ast_group_t pickupgroup;                        /*!< Pickup group - which calls groups can be picked up? */
-       uint64_t flags;                         /*!< channel flags of AST_FLAG_ type */
+       unsigned int flags;                             /*!< channel flags of AST_FLAG_ type */
        unsigned short transfercapability;              /*!< ISDN Transfer Capbility - AST_FLAG_DIGITAL is not enough */
        AST_LIST_HEAD_NOLOCK(, ast_frame) readq;
        int alertpipe[2];
@@ -567,7 +567,7 @@ struct ast_bridge_config {
        const char *end_sound;
        const char *start_sound;
        int firstpass;
-       uint64_t flags;
+       unsigned int flags;
 };
 
 struct chanmon;
index f8a979d..8550210 100644 (file)
@@ -61,7 +61,7 @@ struct ast_channel_spy {
        struct ast_channel *chan;
        struct ast_channel_spy_queue read_queue;
        struct ast_channel_spy_queue write_queue;
-       uint64_t flags;
+       unsigned int flags;
        enum chanspy_states status;
        const char *type;
        /* The volume adjustment values are very straightforward:
index bc64576..e588338 100644 (file)
@@ -192,7 +192,7 @@ struct dundi_peer_status {
 #define DEFAULT_MAXMS                  2000
 
 struct dundi_result {
-       uint64_t flags;
+       unsigned int flags;
        int weight;
        int expiration;
        int techint;
index c59acca..5e9d5f3 100644 (file)
@@ -39,7 +39,7 @@ struct ast_call_feature {
        char exten[FEATURE_MAX_LEN];
        char default_exten[FEATURE_MAX_LEN];
        int (*operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense);
-       uint64_t flags;
+       unsigned int flags;
        char app[FEATURE_APP_LEN];              
        char app_args[FEATURE_APP_ARGS_LEN];
        char moh_class[FEATURE_MOH_LEN];
index 028d0bc..53c3fbe 100644 (file)
@@ -102,7 +102,7 @@ struct aji_buddy {
        char channel[160];
        struct aji_resource *resources;
        enum aji_btype btype;
-       uint64_t flags;
+       unsigned int flags;
 };
 
 struct aji_buddy_container {
@@ -137,7 +137,7 @@ struct aji_client {
        int timeout;
        int message_timeout;
        int authorized;
-       uint64_t flags;
+       unsigned int flags;
        int component; /* 0 client,  1 component */
        struct aji_buddy_container buddies;
        AST_LIST_HEAD(messages,aji_message) messages;
index d75e2d4..d53e608 100644 (file)
@@ -215,7 +215,7 @@ struct ast_module_info {
         */
 
        const char *key;
-       uint64_t flags;
+       unsigned int flags;
 };
 
 void ast_module_register(const struct ast_module_info *);
index b3b853b..02d056f 100644 (file)
@@ -51,7 +51,7 @@ struct ast_speech {
        /*! Structure lock */
        ast_mutex_t lock;
        /*! Set flags */
-       uint64_t flags;
+       unsigned int flags;
        /*! Processing sound (used when engine is processing audio and getting results) */
        char *processing_sound;
        /*! Current state of structure */
index e87157f..f9fa0f4 100644 (file)
@@ -50,7 +50,7 @@
    your variable.
 
    The flag macros below use a set of compiler tricks to verify
-   that the caller is using an "unsigned long long" variable to hold
+   that the caller is using an "unsigned int" variable to hold
    the flags, and nothing else. If the caller uses any other
    type of variable, a warning message similar to this:
 
@@ -64,7 +64,7 @@
  \endverbatim
 */
 
-extern uint64_t __unsigned_int_flags_dummy;
+extern unsigned int __unsigned_int_flags_dummy;
 
 #define ast_test_flag(p,flag)          ({ \
                                        typeof ((p)->flags) __p = (p)->flags; \
@@ -115,6 +115,64 @@ extern uint64_t __unsigned_int_flags_dummy;
                                        (p)->flags |= (value); \
                                        } while (0)
 
+
+/* The following 64-bit flag code can most likely be erased after app_dial
+   is reorganized to either reduce the large number of options, or handle
+   them in some other way. At the time of this writing, app_dial would be
+   the only user of 64-bit option flags */
+
+extern uint64_t __unsigned_int_flags_dummy64;
+
+#define ast_test_flag64(p,flag)                ({ \
+                                       typeof ((p)->flags) __p = (p)->flags; \
+                                       typeof (__unsigned_int_flags_dummy64) __x = 0; \
+                                       (void) (&__p == &__x); \
+                                       ((p)->flags & (flag)); \
+                                       })
+
+#define ast_set_flag64(p,flag)                 do { \
+                                       typeof ((p)->flags) __p = (p)->flags; \
+                                       typeof (__unsigned_int_flags_dummy64) __x = 0; \
+                                       (void) (&__p == &__x); \
+                                       ((p)->flags |= (flag)); \
+                                       } while(0)
+
+#define ast_clear_flag64(p,flag)               do { \
+                                       typeof ((p)->flags) __p = (p)->flags; \
+                                       typeof (__unsigned_int_flags_dummy64) __x = 0; \
+                                       (void) (&__p == &__x); \
+                                       ((p)->flags &= ~(flag)); \
+                                       } while(0)
+
+#define ast_copy_flags64(dest,src,flagz)       do { \
+                                       typeof ((dest)->flags) __d = (dest)->flags; \
+                                       typeof ((src)->flags) __s = (src)->flags; \
+                                       typeof (__unsigned_int_flags_dummy64) __x = 0; \
+                                       (void) (&__d == &__x); \
+                                       (void) (&__s == &__x); \
+                                       (dest)->flags &= ~(flagz); \
+                                       (dest)->flags |= ((src)->flags & (flagz)); \
+                                       } while (0)
+
+#define ast_set2_flag64(p,value,flag)  do { \
+                                       typeof ((p)->flags) __p = (p)->flags; \
+                                       typeof (__unsigned_int_flags_dummy64) __x = 0; \
+                                       (void) (&__p == &__x); \
+                                       if (value) \
+                                               (p)->flags |= (flag); \
+                                       else \
+                                               (p)->flags &= ~(flag); \
+                                       } while (0)
+
+#define ast_set_flags_to64(p,flag,value)       do { \
+                                       typeof ((p)->flags) __p = (p)->flags; \
+                                       typeof (__unsigned_int_flags_dummy64) __x = 0; \
+                                       (void) (&__p == &__x); \
+                                       (p)->flags &= ~(flag); \
+                                       (p)->flags |= (value); \
+                                       } while (0)
+
+
 /* Non-type checking variations for non-unsigned int flags.  You
    should only use non-unsigned int flags where required by 
    protocol etc and if you know what you're doing :)  */
@@ -146,6 +204,12 @@ extern uint64_t __unsigned_int_flags_dummy;
 /*! \brief Structure used to handle boolean flags 
 */
 struct ast_flags {
+       unsigned int flags;
+};
+
+/*! \brief Structure used to handle a large number of boolean flags == used only in app_dial?
+*/
+struct ast_flags64 {
        uint64_t flags;
 };
 
index 52536ab..f46cb9b 100644 (file)
@@ -1457,3 +1457,43 @@ int ast_app_parse_options(const struct ast_app_option *options, struct ast_flags
        return res;
 }
 
+/* the following function will probably only be used in app_dial, until app_dial is reorganized to
+   better handle the large number of options it provides. After it is, you need to get rid of this variant 
+   -- unless, of course, someone else digs up some use for large flag fields. */
+
+int ast_app_parse_options64(const struct ast_app_option *options, struct ast_flags64 *flags, char **args, char *optstr)
+{
+       char *s, *arg;
+       int curarg, res = 0;
+       unsigned int argloc;
+
+       flags->flags = 0;
+       
+       if (!optstr)
+               return 0;
+
+       s = optstr;
+       while (*s) {
+               curarg = *s++ & 0x7f;   /* the array (in app.h) has 128 entries */
+               ast_set_flag64(flags, options[curarg].flag);
+               argloc = options[curarg].arg_index;
+               if (*s == '(') {
+                       /* Has argument */
+                       arg = ++s;
+                       if ((s = strchr(s, ')'))) {
+                               if (argloc)
+                                       args[argloc - 1] = arg;
+                               *s++ = '\0';
+                       } else {
+                               ast_log(LOG_WARNING, "Missing closing parenthesis for argument '%c' in string '%s'\n", curarg, arg);
+                               res = -1;
+                               break;
+                       }
+               } else if (argloc) {
+                       args[argloc - 1] = NULL;
+               }
+       }
+
+       return res;
+}
+
index 4acfe9f..105dc03 100644 (file)
@@ -2454,7 +2454,7 @@ done:
 int ast_internal_timing_enabled(struct ast_channel *chan)
 {
        int ret = ast_opt_internal_timing && chan->timingfd > -1;
-       ast_debug(5, "Internal timing is %s (option_internal_timing=%lld chan->timingfd=%d)\n", ret? "enabled": "disabled", (unsigned long long)ast_opt_internal_timing, chan->timingfd);
+       ast_debug(5, "Internal timing is %s (option_internal_timing=%d chan->timingfd=%d)\n", ret? "enabled": "disabled", ast_opt_internal_timing, chan->timingfd);
        return ret;
 }
 
index 1100a46..2e64572 100644 (file)
@@ -86,8 +86,8 @@ struct ast_module {
        int usecount;                                   /* the number of 'users' currently in this module */
        struct module_user_list users;                  /* the list of users in the module */
        struct {
-               uint64_t running:1;
-               uint64_t declined:1;
+               unsigned int running:1;
+               unsigned int declined:1;
        } flags;
        AST_LIST_ENTRY(ast_module) entry;
        char resource[0];
index 403e5ea..8aa86a6 100644 (file)
@@ -152,7 +152,7 @@ struct ast_rtp {
        int send_payload;
        int send_duration;
        int nat;
-       uint64_t flags;
+       unsigned int flags;
        struct sockaddr_in us;          /*!< Socket representation of the local endpoint. */
        struct sockaddr_in them;        /*!< Socket representation of the remote endpoint. */
        struct timeval rxcore;
@@ -845,7 +845,7 @@ static struct ast_frame *process_cisco_dtmf(struct ast_rtp *rtp, unsigned char *
        char resp = 0;
        struct ast_frame *f = NULL;
        unsigned char seq;
-       uint64_t flags;
+       unsigned int flags;
        unsigned int power;
 
        /* We should have at least 4 bytes in RTP data */
@@ -888,7 +888,7 @@ static struct ast_frame *process_cisco_dtmf(struct ast_rtp *rtp, unsigned char *
        event = data[3] & 0x1f;
 
        if (option_debug > 2 || rtpdebug)
-               ast_debug(0, "Cisco DTMF Digit: %02x (len=%d, seq=%d, flags=%02llx, power=%d, history count=%d)\n", event, len, seq, (unsigned long long)flags, power, (len - 4) / 2);
+               ast_debug(0, "Cisco DTMF Digit: %02x (len=%d, seq=%d, flags=%02x, power=%d, history count=%d)\n", event, len, seq, flags, power, (len - 4) / 2);
        if (event < 10) {
                resp = '0' + event;
        } else if (event < 11) {
index 472c92b..9f0df3a 100644 (file)
@@ -179,7 +179,7 @@ struct dundi_transaction {
        dundi_eid them_eid;                            /*!< Their EID, to us */
        ast_aes_encrypt_key ecx;                       /*!< AES 128 Encryption context */
        ast_aes_decrypt_key dcx;                       /*!< AES 128 Decryption context */
-       uint64_t flags;                                /*!< Has final packet been sent */
+       unsigned int flags;                            /*!< Has final packet been sent */
        int ttl;                                       /*!< Remaining TTL for queries on this one */
        int thread;                                    /*!< We have a calling thread */
        int retranstimer;                              /*!< How long to wait before retransmissions */
@@ -892,8 +892,8 @@ static int cache_save(dundi_eid *eidpeer, struct dundi_request *req, int start,
                /* Skip anything with an illegal pipe in it */
                if (strchr(req->dr[x].dest, '|'))
                        continue;
-               snprintf(data + strlen(data), sizeof(data) - strlen(data), "%lld/%d/%d/%s/%s|", 
-                       (unsigned  long long)req->dr[x].flags, req->dr[x].weight, req->dr[x].techint, req->dr[x].dest, 
+               snprintf(data + strlen(data), sizeof(data) - strlen(data), "%d/%d/%d/%s/%s|", 
+                       req->dr[x].flags, req->dr[x].weight, req->dr[x].techint, req->dr[x].dest, 
                        dundi_eid_to_str_short(eidpeer_str, sizeof(eidpeer_str), &req->dr[x].eid));
        }
        ast_db_put("dundi/cache", key1, data);
@@ -1154,7 +1154,7 @@ static int cache_lookup_internal(time_t now, struct dundi_request *req, char *ke
                                if (option_debug)
                                        ast_log(LOG_DEBUG, "Found cache expiring in %d seconds!\n", expiration);
                                ptr += length + 1;
-                               while((sscanf(ptr, "%lld/%d/%d/%n", (unsigned long long*)&(flags.flags), &weight, &tech, &length) == 3)) {
+                               while((sscanf(ptr, "%d/%d/%d/%n", &(flags.flags), &weight, &tech, &length) == 3)) {
                                        ptr += length;
                                        term = strchr(ptr, '|');
                                        if (term) {
index 20f3d02..3f71bfa 100644 (file)
@@ -1318,7 +1318,7 @@ static int ast_feature_interpret(struct ast_channel *chan, struct ast_channel *p
                ast_copy_flags(&features, &(config->features_caller), AST_FLAGS_ALL);
        else
                ast_copy_flags(&features, &(config->features_callee), AST_FLAGS_ALL);
-       ast_debug(3, "Feature interpret: chan=%s, peer=%s, sense=%d, features=%lld\n", chan->name, peer->name, sense, (unsigned long long)features.flags);
+       ast_debug(3, "Feature interpret: chan=%s, peer=%s, sense=%d, features=%d\n", chan->name, peer->name, sense, features.flags);
 
        ast_rwlock_rdlock(&features_lock);
        for (x = 0; x < FEATURES_COUNT; x++) {
index ce0eb8a..84a44f3 100644 (file)
@@ -138,7 +138,7 @@ struct mohclass {
        int allowed_files;
        /*! The current number of files loaded into the filearray */
        int total_files;
-       uint64_t flags;
+       unsigned int flags;
        /*! The format from the MOH source, not applicable to "files" mode */
        int format;
        /*! The pid of the external application delivering MOH */