diff options
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_agent.c | 90 | ||||
-rw-r--r-- | channels/chan_alsa.c | 12 | ||||
-rw-r--r-- | channels/chan_bridge.c | 20 | ||||
-rw-r--r-- | channels/chan_console.c | 22 | ||||
-rw-r--r-- | channels/chan_dahdi.c | 244 | ||||
-rw-r--r-- | channels/chan_gtalk.c | 58 | ||||
-rw-r--r-- | channels/chan_h323.c | 98 | ||||
-rw-r--r-- | channels/chan_iax2.c | 142 | ||||
-rw-r--r-- | channels/chan_jingle.c | 56 | ||||
-rw-r--r-- | channels/chan_local.c | 69 | ||||
-rw-r--r-- | channels/chan_mgcp.c | 78 | ||||
-rw-r--r-- | channels/chan_misdn.c | 68 | ||||
-rw-r--r-- | channels/chan_multicast_rtp.c | 14 | ||||
-rw-r--r-- | channels/chan_nbs.c | 24 | ||||
-rw-r--r-- | channels/chan_oss.c | 26 | ||||
-rw-r--r-- | channels/chan_phone.c | 50 | ||||
-rw-r--r-- | channels/chan_sip.c | 319 | ||||
-rw-r--r-- | channels/chan_skinny.c | 130 | ||||
-rw-r--r-- | channels/chan_unistim.c | 98 | ||||
-rw-r--r-- | channels/chan_usbradio.c | 24 | ||||
-rw-r--r-- | channels/chan_vpb.cc | 74 | ||||
-rw-r--r-- | channels/sig_analog.c | 114 | ||||
-rw-r--r-- | channels/sig_pri.c | 60 | ||||
-rw-r--r-- | channels/sig_ss7.c | 18 | ||||
-rw-r--r-- | channels/sip/dialplan_functions.c | 8 |
25 files changed, 961 insertions, 955 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index a0fd09a98..b2744af00 100644 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -298,18 +298,18 @@ static AST_LIST_HEAD_STATIC(agents, agent_pvt); /*!< Holds the list of agents (l #define CHECK_FORMATS(ast, p) do { \ if (p->chan) {\ - if (!(ast_format_cap_identical(ast->nativeformats, p->chan->nativeformats))) { \ + if (!(ast_format_cap_identical(ast_channel_nativeformats(ast), ast_channel_nativeformats(p->chan)))) { \ char tmp1[256], tmp2[256]; \ - ast_debug(1, "Native formats changing from '%s' to '%s'\n", ast_getformatname_multiple(tmp1, sizeof(tmp1), ast->nativeformats), ast_getformatname_multiple(tmp2, sizeof(tmp2), p->chan->nativeformats)); \ + ast_debug(1, "Native formats changing from '%s' to '%s'\n", ast_getformatname_multiple(tmp1, sizeof(tmp1), ast_channel_nativeformats(ast)), ast_getformatname_multiple(tmp2, sizeof(tmp2), ast_channel_nativeformats(p->chan))); \ /* Native formats changed, reset things */ \ - ast_format_cap_copy(ast->nativeformats, p->chan->nativeformats); \ + ast_format_cap_copy(ast_channel_nativeformats(ast), ast_channel_nativeformats(p->chan)); \ ast_debug(1, "Resetting read to '%s' and write to '%s'\n", ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat));\ ast_set_read_format(ast, &ast->readformat); \ ast_set_write_format(ast, &ast->writeformat); \ } \ - if ((ast_format_cmp(&p->chan->readformat, &ast->rawreadformat) != AST_FORMAT_CMP_EQUAL) && !p->chan->generator) \ + if ((ast_format_cmp(&p->chan->readformat, &ast->rawreadformat) != AST_FORMAT_CMP_EQUAL) && !ast_channel_generator(p->chan)) \ ast_set_read_format(p->chan, &ast->rawreadformat); \ - if ((ast_format_cmp(&p->chan->writeformat, &ast->rawwriteformat) != AST_FORMAT_CMP_EQUAL) && !p->chan->generator) \ + if ((ast_format_cmp(&p->chan->writeformat, &ast->rawwriteformat) != AST_FORMAT_CMP_EQUAL) && !ast_channel_generator(p->chan)) \ ast_set_write_format(p->chan, &ast->rawwriteformat); \ } \ } while(0) @@ -525,7 +525,7 @@ static int agent_cleanup(struct agent_pvt *p) ast_mutex_lock(&p->lock); chan = p->owner; p->owner = NULL; - chan->tech_pvt = NULL; + ast_channel_tech_pvt_set(chan, NULL); /* Release ownership of the agent to other threads (presumably running the login app). */ p->app_sleep_cond = 1; p->app_lock_flag = 0; @@ -558,7 +558,7 @@ static int __agent_start_monitoring(struct ast_channel *ast, struct agent_pvt *p int res = -1; if (!p) return -1; - if (!ast->monitor) { + if (!ast_channel_monitor(ast)) { snprintf(filename, sizeof(filename), "agent-%s-%s",p->agent, ast_channel_uniqueid(ast)); /* substitute . for - */ if ((pointer = strchr(filename, '.'))) @@ -570,8 +570,8 @@ static int __agent_start_monitoring(struct ast_channel *ast, struct agent_pvt *p #if 0 ast_verbose("name is %s, link is %s\n",tmp, tmp2); #endif - if (!ast->cdr) - ast->cdr = ast_cdr_alloc(); + if (!ast_channel_cdr(ast)) + ast_channel_cdr_set(ast, ast_cdr_alloc()); ast_cdr_setuserfield(ast, tmp2); res = 0; } else @@ -581,12 +581,12 @@ static int __agent_start_monitoring(struct ast_channel *ast, struct agent_pvt *p static int agent_start_monitoring(struct ast_channel *ast, int needlock) { - return __agent_start_monitoring(ast, ast->tech_pvt, needlock); + return __agent_start_monitoring(ast, ast_channel_tech_pvt(ast), needlock); } static struct ast_frame *agent_read(struct ast_channel *ast) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); struct ast_frame *f = NULL; static struct ast_frame answer_frame = { AST_FRAME_CONTROL, { AST_CONTROL_ANSWER } }; int cur_time = time(NULL); @@ -601,7 +601,7 @@ static struct ast_frame *agent_read(struct ast_channel *ast) } if (p->chan) { ast_copy_flags(p->chan, ast, AST_FLAG_EXCEPTION); - p->chan->fdno = (ast->fdno == AST_AGENT_FD) ? AST_TIMING_FD : ast->fdno; + ast_channel_fdno_set(p->chan, (ast_channel_fdno(ast) == AST_AGENT_FD) ? AST_TIMING_FD : ast_channel_fdno(ast)); f = ast_read(p->chan); } else f = &ast_null_frame; @@ -616,7 +616,7 @@ static struct ast_frame *agent_read(struct ast_channel *ast) } else { /* if acknowledgement is not required, and the channel is up, we may have missed an AST_CONTROL_ANSWER (if there was one), so mark the call acknowledged anyway */ - if (!p->ackcall && !p->acknowledged && p->chan && (p->chan->_state == AST_STATE_UP)) { + if (!p->ackcall && !p->acknowledged && p->chan && (ast_channel_state(p->chan) == AST_STATE_UP)) { p->acknowledged = 1; } @@ -697,7 +697,7 @@ static struct ast_frame *agent_read(struct ast_channel *ast) CLEANUP(ast,p); if (p->chan && !p->chan->_bridge) { - if (strcasecmp(p->chan->tech->type, "Local")) { + if (strcasecmp(ast_channel_tech(p->chan)->type, "Local")) { p->chan->_bridge = ast; if (p->chan) ast_debug(1, "Bridge on '%s' being set to '%s' (3)\n", ast_channel_name(p->chan), ast_channel_name(p->chan->_bridge)); @@ -711,7 +711,7 @@ static struct ast_frame *agent_read(struct ast_channel *ast) static int agent_sendhtml(struct ast_channel *ast, int subclass, const char *data, int datalen) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); int res = -1; ast_mutex_lock(&p->lock); if (p->chan) @@ -722,7 +722,7 @@ static int agent_sendhtml(struct ast_channel *ast, int subclass, const char *dat static int agent_sendtext(struct ast_channel *ast, const char *text) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); int res = -1; ast_mutex_lock(&p->lock); if (p->chan) @@ -733,7 +733,7 @@ static int agent_sendtext(struct ast_channel *ast, const char *text) static int agent_write(struct ast_channel *ast, struct ast_frame *f) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); int res = -1; CHECK_FORMATS(ast, p); ast_mutex_lock(&p->lock); @@ -758,7 +758,7 @@ static int agent_write(struct ast_channel *ast, struct ast_frame *f) static int agent_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct agent_pvt *p = newchan->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(newchan); ast_mutex_lock(&p->lock); if (p->owner != oldchan) { ast_log(LOG_WARNING, "old channel wasn't %p but was %p\n", oldchan, p->owner); @@ -772,7 +772,7 @@ static int agent_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) static int agent_indicate(struct ast_channel *ast, int condition, const void *data, size_t datalen) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); int res = -1; ast_mutex_lock(&p->lock); if (p->chan && !ast_check_hangup(p->chan)) { @@ -786,7 +786,7 @@ static int agent_indicate(struct ast_channel *ast, int condition, const void *da usleep(1); ast_channel_lock(ast); } - res = p->chan->tech->indicate ? p->chan->tech->indicate(p->chan, condition, data, datalen) : -1; + res = ast_channel_tech(p->chan)->indicate ? ast_channel_tech(p->chan)->indicate(p->chan, condition, data, datalen) : -1; ast_channel_unlock(p->chan); } else res = 0; @@ -796,7 +796,7 @@ static int agent_indicate(struct ast_channel *ast, int condition, const void *da static int agent_digit_begin(struct ast_channel *ast, char digit) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); ast_mutex_lock(&p->lock); if (p->chan) { ast_senddigit_begin(p->chan, digit); @@ -807,7 +807,7 @@ static int agent_digit_begin(struct ast_channel *ast, char digit) static int agent_digit_end(struct ast_channel *ast, char digit, unsigned int duration) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); ast_mutex_lock(&p->lock); if (p->chan) { ast_senddigit_end(p->chan, digit, duration); @@ -818,7 +818,7 @@ static int agent_digit_end(struct ast_channel *ast, char digit, unsigned int dur static int agent_call(struct ast_channel *ast, const char *dest, int timeout) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); int res = -1; int newstate=0; struct ast_channel *chan; @@ -859,7 +859,7 @@ static int agent_call(struct ast_channel *ast, const char *dest, int timeout) if (!res) { struct ast_format tmpfmt; - res = ast_set_read_format_from_cap(p->chan, p->chan->nativeformats); + res = ast_set_read_format_from_cap(p->chan, ast_channel_nativeformats(p->chan)); ast_debug(3, "Set read format, result '%d'\n", res); if (res) ast_log(LOG_WARNING, "Unable to set read format to %s\n", ast_getformatname(&tmpfmt)); @@ -871,7 +871,7 @@ static int agent_call(struct ast_channel *ast, const char *dest, int timeout) if (!res) { struct ast_format tmpfmt; - res = ast_set_write_format_from_cap(p->chan, p->chan->nativeformats); + res = ast_set_write_format_from_cap(p->chan, ast_channel_nativeformats(p->chan)); ast_debug(3, "Set write format, result '%d'\n", res); if (res) ast_log(LOG_WARNING, "Unable to set write format to %s\n", ast_getformatname(&tmpfmt)); @@ -902,11 +902,11 @@ struct ast_channel* agent_get_base_channel(struct ast_channel *chan) struct ast_channel *base = chan; /* chan is locked by the calling function */ - if (!chan || !chan->tech_pvt) { - ast_log(LOG_ERROR, "whoa, you need a channel (0x%ld) with a tech_pvt (0x%ld) to get a base channel.\n", (long)chan, (chan)?(long)chan->tech_pvt:(long)NULL); + if (!chan || !ast_channel_tech_pvt(chan)) { + ast_log(LOG_ERROR, "whoa, you need a channel (0x%ld) with a tech_pvt (0x%ld) to get a base channel.\n", (long)chan, (chan)?(long)ast_channel_tech_pvt(chan):(long)NULL); return NULL; } - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (p->chan) base = p->chan; return base; @@ -920,7 +920,7 @@ int agent_set_base_channel(struct ast_channel *chan, struct ast_channel *base) ast_log(LOG_ERROR, "whoa, you need a channel (0x%ld) and a base channel (0x%ld) for setting.\n", (long)chan, (long)base); return -1; } - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) { ast_log(LOG_ERROR, "whoa, channel %s is missing his tech_pvt structure!!.\n", ast_channel_name(chan)); return -1; @@ -931,7 +931,7 @@ int agent_set_base_channel(struct ast_channel *chan, struct ast_channel *base) static int agent_hangup(struct ast_channel *ast) { - struct agent_pvt *p = ast->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(ast); struct ast_channel *indicate_chan = NULL; char *tmp_moh; /* moh buffer for indicating after unlocking p */ @@ -943,7 +943,7 @@ static int agent_hangup(struct ast_channel *ast) ast_mutex_lock(&p->lock); p->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); p->app_sleep_cond = 1; p->acknowledged = 0; @@ -958,8 +958,8 @@ static int agent_hangup(struct ast_channel *ast) * as in apps/app_chanisavail.c:chanavail_exec() */ - ast_debug(1, "Hangup called for state %s\n", ast_state2str(ast->_state)); - if (p->start && (ast->_state != AST_STATE_UP)) { + ast_debug(1, "Hangup called for state %s\n", ast_state2str(ast_channel_state(ast))); + if (p->start && (ast_channel_state(ast) != AST_STATE_UP)) { p->start = 0; } else p->start = 0; @@ -1078,7 +1078,7 @@ static int agent_ack_sleep(void *data) static struct ast_channel *agent_bridgedchannel(struct ast_channel *chan, struct ast_channel *bridge) { - struct agent_pvt *p = bridge->tech_pvt; + struct agent_pvt *p = ast_channel_tech_pvt(bridge); struct ast_channel *ret = NULL; if (p) { @@ -1111,9 +1111,9 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state, const char return NULL; } - tmp->tech = &agent_tech; + ast_channel_tech_set(tmp, &agent_tech); if (p->chan) { - ast_format_cap_copy(tmp->nativeformats, p->chan->nativeformats); + ast_format_cap_copy(ast_channel_nativeformats(tmp), ast_channel_nativeformats(p->chan)); ast_format_copy(&tmp->writeformat, &p->chan->writeformat); ast_format_copy(&tmp->rawwriteformat, &p->chan->writeformat); ast_format_copy(&tmp->readformat, &p->chan->readformat); @@ -1127,12 +1127,12 @@ static struct ast_channel *agent_new(struct agent_pvt *p, int state, const char ast_format_set(&tmp->rawwriteformat, AST_FORMAT_SLINEAR, 0); ast_format_set(&tmp->readformat, AST_FORMAT_SLINEAR, 0); ast_format_set(&tmp->rawreadformat, AST_FORMAT_SLINEAR, 0); - ast_format_cap_add(tmp->nativeformats, &tmp->writeformat); + ast_format_cap_add(ast_channel_nativeformats(tmp), &tmp->writeformat); } /* Safe, agentlock already held */ - tmp->tech_pvt = p; + ast_channel_tech_pvt_set(tmp, p); p->owner = tmp; - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); return tmp; } @@ -1990,7 +1990,7 @@ static int login_exec(struct ast_channel *chan, const char *data) } } - if (chan->_state != AST_STATE_UP) + if (ast_channel_state(chan) != AST_STATE_UP) res = ast_answer(chan); if (!res) { if (!ast_strlen_zero(args.agent_id)) @@ -2097,14 +2097,14 @@ static int login_exec(struct ast_channel *chan, const char *data) ast_mutex_lock(&p->lock); if (!res) { struct ast_format tmpfmt; - res = ast_set_read_format_from_cap(chan, chan->nativeformats); + res = ast_set_read_format_from_cap(chan, ast_channel_nativeformats(chan)); if (res) { ast_log(LOG_WARNING, "Unable to set read format to %s\n", ast_getformatname(&tmpfmt)); } } if (!res) { struct ast_format tmpfmt; - res = ast_set_write_format_from_cap(chan, chan->nativeformats); + res = ast_set_write_format_from_cap(chan, ast_channel_nativeformats(chan)); if (res) { ast_log(LOG_WARNING, "Unable to set write format to %s\n", ast_getformatname(&tmpfmt)); } @@ -2123,8 +2123,8 @@ static int login_exec(struct ast_channel *chan, const char *data) "Channel: %s\r\n" "Uniqueid: %s\r\n", p->agent, ast_channel_name(chan), ast_channel_uniqueid(chan)); - if (update_cdr && chan->cdr) - snprintf(chan->cdr->channel, sizeof(chan->cdr->channel), "Agent/%s", p->agent); + if (update_cdr && ast_channel_cdr(chan)) + snprintf(ast_channel_cdr(chan)->channel, sizeof(ast_channel_cdr(chan)->channel), "Agent/%s", p->agent); ast_queue_log("NONE", ast_channel_uniqueid(chan), agent, "AGENTLOGIN", "%s", ast_channel_name(chan)); ast_verb(2, "Agent '%s' logged in (format %s/%s)\n", p->agent, ast_getformatname(&chan->readformat), ast_getformatname(&chan->writeformat)); @@ -2294,7 +2294,7 @@ static int agentmonitoroutgoing_exec(struct ast_channel *chan, const char *data) AST_LIST_LOCK(&agents); AST_LIST_TRAVERSE(&agents, p, list) { if (!strcasecmp(p->agent, tmp)) { - if (changeoutgoing) snprintf(chan->cdr->channel, sizeof(chan->cdr->channel), "Agent/%s", p->agent); + if (changeoutgoing) snprintf(ast_channel_cdr(chan)->channel, sizeof(ast_channel_cdr(chan)->channel), "Agent/%s", p->agent); __agent_start_monitoring(chan, p, 1); break; } diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index 38ef917b7..4424ef18d 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -366,7 +366,7 @@ static int alsa_answer(struct ast_channel *c) static int alsa_hangup(struct ast_channel *c) { ast_mutex_lock(&alsalock); - c->tech_pvt = NULL; + ast_channel_tech_pvt_set(c, NULL); alsa.owner = NULL; ast_verbose(" << Hangup on console >> \n"); ast_module_unref(ast_module_info->self); @@ -489,7 +489,7 @@ static struct ast_frame *alsa_read(struct ast_channel *chan) /* A real frame */ readpos = 0; left = FRAME_SIZE; - if (chan->_state != AST_STATE_UP) { + if (ast_channel_state(chan) != AST_STATE_UP) { /* Don't transmit unless it's up */ ast_mutex_unlock(&alsalock); return &f; @@ -517,7 +517,7 @@ static struct ast_frame *alsa_read(struct ast_channel *chan) static int alsa_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct chan_alsa_pvt *p = newchan->tech_pvt; + struct chan_alsa_pvt *p = ast_channel_tech_pvt(newchan); ast_mutex_lock(&alsalock); p->owner = newchan; @@ -570,13 +570,13 @@ static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state, const ch if (!(tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, linkedid, 0, "ALSA/%s", indevname))) return NULL; - tmp->tech = &alsa_tech; + ast_channel_tech_set(tmp, &alsa_tech); ast_channel_set_fd(tmp, 0, readdev); ast_format_set(&tmp->readformat, AST_FORMAT_SLINEAR, 0); ast_format_set(&tmp->writeformat, AST_FORMAT_SLINEAR, 0); - ast_format_cap_add(tmp->nativeformats, &tmp->writeformat); + ast_format_cap_add(ast_channel_nativeformats(tmp), &tmp->writeformat); - tmp->tech_pvt = p; + ast_channel_tech_pvt_set(tmp, p); if (!ast_strlen_zero(p->context)) ast_channel_context_set(tmp, p->context); if (!ast_strlen_zero(p->exten)) diff --git a/channels/chan_bridge.c b/channels/chan_bridge.c index c57f117a9..67af0737e 100644 --- a/channels/chan_bridge.c +++ b/channels/chan_bridge.c @@ -79,7 +79,7 @@ struct bridge_pvt { /*! \brief Called when the user of this channel wants to get the actual channel in the bridge */ static struct ast_channel *bridge_bridgedchannel(struct ast_channel *chan, struct ast_channel *bridge) { - struct bridge_pvt *p = chan->tech_pvt; + struct bridge_pvt *p = ast_channel_tech_pvt(chan); return (chan == p->input) ? p->output : bridge; } @@ -92,7 +92,7 @@ static struct ast_frame *bridge_read(struct ast_channel *ast) /*! \brief Called when a frame should be written out to a channel */ static int bridge_write(struct ast_channel *ast, struct ast_frame *f) { - struct bridge_pvt *p = ast->tech_pvt; + struct bridge_pvt *p = ast_channel_tech_pvt(ast); struct ast_channel *other = NULL; ao2_lock(p); @@ -118,7 +118,7 @@ static int bridge_write(struct ast_channel *ast, struct ast_frame *f) /*! \brief Called when the channel should actually be dialed */ static int bridge_call(struct ast_channel *ast, const char *dest, int timeout) { - struct bridge_pvt *p = ast->tech_pvt; + struct bridge_pvt *p = ast_channel_tech_pvt(ast); /* If no bridge has been provided on the input channel, bail out */ if (!ast->bridge) { @@ -134,7 +134,7 @@ static int bridge_call(struct ast_channel *ast, const char *dest, int timeout) /*! \brief Called when a channel should be hung up */ static int bridge_hangup(struct ast_channel *ast) { - struct bridge_pvt *p = ast->tech_pvt; + struct bridge_pvt *p = ast_channel_tech_pvt(ast); if (!p) { return 0; @@ -148,7 +148,7 @@ static int bridge_hangup(struct ast_channel *ast) } ao2_unlock(p); - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); ao2_ref(p, -1); return 0; @@ -177,15 +177,17 @@ static struct ast_channel *bridge_request(const char *type, struct ast_format_ca } /* Setup parameters on both new channels */ - p->input->tech = p->output->tech = &bridge_tech; + ast_channel_tech_set(p->input, &bridge_tech); + ast_channel_tech_set(p->output, &bridge_tech); ao2_ref(p, 2); - p->input->tech_pvt = p->output->tech_pvt = p; + ast_channel_tech_pvt_set(p->input, p); + ast_channel_tech_pvt_set(p->output, p); ast_format_set(&slin, AST_FORMAT_SLINEAR, 0); - ast_format_cap_add(p->input->nativeformats, &slin); - ast_format_cap_add(p->output->nativeformats, &slin); + ast_format_cap_add(ast_channel_nativeformats(p->input), &slin); + ast_format_cap_add(ast_channel_nativeformats(p->output), &slin); ast_format_copy(&p->input->readformat, &slin); ast_format_copy(&p->output->readformat, &slin); ast_format_copy(&p->input->rawreadformat, &slin); diff --git a/channels/chan_console.c b/channels/chan_console.c index 9d2b17d44..a47f89826 100644 --- a/channels/chan_console.c +++ b/channels/chan_console.c @@ -419,11 +419,11 @@ static struct ast_channel *console_new(struct console_pvt *pvt, const char *ext, return NULL; } - chan->tech = &console_tech; + ast_channel_tech_set(chan, &console_tech); ast_format_set(&chan->readformat, AST_FORMAT_SLINEAR16, 0); ast_format_set(&chan->writeformat, AST_FORMAT_SLINEAR16, 0); - ast_format_cap_add(chan->nativeformats, &chan->readformat); - chan->tech_pvt = ref_pvt(pvt); + ast_format_cap_add(ast_channel_nativeformats(chan), &chan->readformat); + ast_channel_tech_pvt_set(chan, ref_pvt(pvt)); pvt->owner = chan; @@ -434,7 +434,7 @@ static struct ast_channel *console_new(struct console_pvt *pvt, const char *ext, if (state != AST_STATE_DOWN) { if (ast_pbx_start(chan)) { - chan->hangupcause = AST_CAUSE_SWITCH_CONGESTION; + ast_channel_hangupcause_set(chan, AST_CAUSE_SWITCH_CONGESTION); ast_hangup(chan); chan = NULL; } else @@ -503,7 +503,7 @@ static int console_text(struct ast_channel *c, const char *text) static int console_hangup(struct ast_channel *c) { - struct console_pvt *pvt = c->tech_pvt; + struct console_pvt *pvt = ast_channel_tech_pvt(c); ast_verb(1, V_BEGIN "Hangup on Console" V_END); @@ -511,14 +511,14 @@ static int console_hangup(struct ast_channel *c) pvt->owner = NULL; stop_stream(pvt); - c->tech_pvt = unref_pvt(pvt); + ast_channel_tech_pvt_set(c, unref_pvt(pvt)); return 0; } static int console_answer(struct ast_channel *c) { - struct console_pvt *pvt = c->tech_pvt; + struct console_pvt *pvt = ast_channel_tech_pvt(c); ast_verb(1, V_BEGIN "Call from Console has been Answered" V_END); @@ -556,7 +556,7 @@ static struct ast_frame *console_read(struct ast_channel *chan) static int console_call(struct ast_channel *c, const char *dest, int timeout) { - struct console_pvt *pvt = c->tech_pvt; + struct console_pvt *pvt = ast_channel_tech_pvt(c); enum ast_control_frame_type ctrl; ast_verb(1, V_BEGIN "Call to device '%s' on console from '%s' <%s>" V_END, @@ -586,7 +586,7 @@ static int console_call(struct ast_channel *c, const char *dest, int timeout) static int console_write(struct ast_channel *chan, struct ast_frame *f) { - struct console_pvt *pvt = chan->tech_pvt; + struct console_pvt *pvt = ast_channel_tech_pvt(chan); Pa_WriteStream(pvt->stream, f->data.ptr, f->samples); @@ -595,7 +595,7 @@ static int console_write(struct ast_channel *chan, struct ast_frame *f) static int console_indicate(struct ast_channel *chan, int cond, const void *data, size_t datalen) { - struct console_pvt *pvt = chan->tech_pvt; + struct console_pvt *pvt = ast_channel_tech_pvt(chan); int res = 0; switch (cond) { @@ -631,7 +631,7 @@ static int console_indicate(struct ast_channel *chan, int cond, const void *data static int console_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct console_pvt *pvt = newchan->tech_pvt; + struct console_pvt *pvt = ast_channel_tech_pvt(newchan); pvt->owner = newchan; diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 73bfcfe8c..59e1ff09d 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -2233,7 +2233,7 @@ static void my_get_and_handle_alarms(void *pvt) static void *my_get_sigpvt_bridged_channel(struct ast_channel *chan) { - struct dahdi_pvt *p = ast_bridged_channel(chan)->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast_bridged_channel(chan)); if (p) return p->sig_pvt; else @@ -3077,7 +3077,7 @@ static void my_pri_fixup_chans(void *chan_old, void *chan_new) new_chan->owner = old_chan->owner; old_chan->owner = NULL; if (new_chan->owner) { - new_chan->owner->tech_pvt = new_chan; + ast_channel_tech_pvt_set(new_chan->owner, new_chan); new_chan->owner->fds[0] = new_chan->subs[SUB_REAL].dfd; new_chan->subs[SUB_REAL].owner = old_chan->subs[SUB_REAL].owner; old_chan->subs[SUB_REAL].owner = NULL; @@ -3865,7 +3865,7 @@ static openr2_calling_party_category_t dahdi_r2_get_channel_category(struct ast_ { openr2_calling_party_category_t cat; const char *catstr = pbx_builtin_getvar_helper(c, "MFCR2_CATEGORY"); - struct dahdi_pvt *p = c->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(c); if (ast_strlen_zero(catstr)) { ast_debug(1, "No MFC/R2 category specified for chan %s, using default %s\n", ast_channel_name(c), openr2_proto_get_category_string(p->mfcr2_category)); @@ -3935,7 +3935,7 @@ static void dahdi_r2_on_protocol_error(openr2_chan_t *r2chan, openr2_protocol_er struct dahdi_pvt *p = openr2_chan_get_client_data(r2chan); ast_log(LOG_ERROR, "MFC/R2 protocol error on chan %d: %s\n", openr2_chan_get_number(r2chan), openr2_proto_get_error(reason)); if (p->owner) { - p->owner->hangupcause = AST_CAUSE_PROTOCOL_ERROR; + ast_channel_hangupcause_set(p->owner, AST_CAUSE_PROTOCOL_ERROR); p->owner->_softhangup |= AST_SOFTHANGUP_DEV; } ast_mutex_lock(&p->lock); @@ -4109,7 +4109,7 @@ static void dahdi_r2_on_call_disconnect(openr2_chan_t *r2chan, openr2_call_disco } /* when we have an owner we don't call dahdi_r2_disconnect_call here, that will be done in dahdi_hangup */ - if (p->owner->_state == AST_STATE_UP) { + if (ast_channel_state(p->owner) == AST_STATE_UP) { p->owner->_softhangup |= AST_SOFTHANGUP_DEV; ast_mutex_unlock(&p->lock); } else if (openr2_chan_get_direction(r2chan) == OR2_DIR_FORWARD) { @@ -4468,7 +4468,7 @@ static int dahdi_digit_begin(struct ast_channel *chan, char digit) int dtmf = -1; int res; - pvt = chan->tech_pvt; + pvt = ast_channel_tech_pvt(chan); ast_mutex_lock(&pvt->lock); @@ -4522,7 +4522,7 @@ static int dahdi_digit_end(struct ast_channel *chan, char digit, unsigned int du int idx; int x; - pvt = chan->tech_pvt; + pvt = ast_channel_tech_pvt(chan); ast_mutex_lock(&pvt->lock); @@ -5334,7 +5334,7 @@ static int send_callerid(struct dahdi_pvt *p) static int dahdi_callwait(struct ast_channel *ast) { - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); struct ast_format tmpfmt; p->callwaitingrepeat = CALLWAITING_REPEAT_SAMPLES; if (p->cidspill) { @@ -5368,7 +5368,7 @@ static int dahdi_callwait(struct ast_channel *ast) static int dahdi_call(struct ast_channel *ast, const char *rdest, int timeout) { - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); int x, res, mysig; char *dest; AST_DECLARE_APP_ARGS(args, @@ -5405,12 +5405,12 @@ static int dahdi_call(struct ast_channel *ast, const char *rdest, int timeout) ast_copy_string(p->exten, args.ext, sizeof(p->exten)); } - if ((ast->_state == AST_STATE_BUSY)) { + if ((ast_channel_state(ast) == AST_STATE_BUSY)) { p->subs[SUB_REAL].needbusy = 1; ast_mutex_unlock(&p->lock); return 0; } - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "dahdi_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); ast_mutex_unlock(&p->lock); return -1; @@ -5430,7 +5430,7 @@ static int dahdi_call(struct ast_channel *ast, const char *rdest, int timeout) ast_log(LOG_WARNING, "Unable to flush input on channel %d: %s\n", p->channel, strerror(errno)); p->outgoing = 1; - if (IS_DIGITAL(ast->transfercapability)){ + if (IS_DIGITAL(ast_channel_transfercapability(ast))){ set_actual_gain(p->subs[SUB_REAL].dfd, 0, 0, p->rxdrc, p->txdrc, p->law); } else { set_actual_gain(p->subs[SUB_REAL].dfd, p->rxgain, p->txgain, p->rxdrc, p->txdrc, p->law); @@ -5837,7 +5837,7 @@ static void destroy_dahdi_pvt(struct dahdi_pvt *pvt) ast_mutex_destroy(&p->lock); dahdi_close_sub(p, SUB_REAL); if (p->owner) - p->owner->tech_pvt = NULL; + ast_channel_tech_pvt_set(p->owner, NULL); ast_free(p); } @@ -5934,7 +5934,7 @@ static int dahdi_send_keypad_facility_exec(struct ast_channel *chan, const char return -1; } - p = (struct dahdi_pvt *)chan->tech_pvt; + p = (struct dahdi_pvt *)ast_channel_tech_pvt(chan); if (!p) { ast_debug(1, "Unable to find technology private\n"); @@ -5967,11 +5967,11 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons ast_debug(1, "No data sent to application!\n"); return -1; } - if (chan->tech != &dahdi_tech) { + if (ast_channel_tech(chan) != &dahdi_tech) { ast_debug(1, "Only DAHDI technology accepted!\n"); return -1; } - pvt = (struct dahdi_pvt *) chan->tech_pvt; + pvt = (struct dahdi_pvt *) ast_channel_tech_pvt(chan); if (!pvt) { ast_debug(1, "Unable to find technology private\n"); return -1; @@ -6003,7 +6003,7 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons args.reason = NULL; } - pri_send_callrerouting_facility_exec(pvt->sig_pvt, chan->_state, args.destination, + pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan), args.destination, args.original, args.reason); return res; @@ -6031,12 +6031,12 @@ static int dahdi_accept_r2_call_exec(struct ast_channel *chan, const char *data) return -1; } - if (chan->tech != &dahdi_tech) { + if (ast_channel_tech(chan) != &dahdi_tech) { ast_debug(1, "Only DAHDI technology accepted!\n"); return -1; } - p = (struct dahdi_pvt *)chan->tech_pvt; + p = (struct dahdi_pvt *)ast_channel_tech_pvt(chan); if (!p) { ast_debug(1, "Unable to find technology private!\n"); return -1; @@ -6182,11 +6182,11 @@ static int dahdi_hangup(struct ast_channel *ast) int idx,x; int law; /*static int restore_gains(struct dahdi_pvt *p);*/ - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); struct dahdi_params par; ast_debug(1, "dahdi_hangup(%s)\n", ast_channel_name(ast)); - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } @@ -6398,7 +6398,7 @@ static int dahdi_hangup(struct ast_channel *ast) swap_subs(p, SUB_CALLWAIT, SUB_REAL); unalloc_sub(p, SUB_CALLWAIT); p->owner = p->subs[SUB_REAL].owner; - if (p->owner->_state != AST_STATE_UP) + if (ast_channel_state(p->owner) != AST_STATE_UP) p->subs[SUB_REAL].needanswer = 1; if (ast_bridged_channel(p->subs[SUB_REAL].owner)) ast_queue_control(p->subs[SUB_REAL].owner, AST_CONTROL_UNHOLD); @@ -6486,7 +6486,7 @@ static int dahdi_hangup(struct ast_channel *ast) const char *r2causestr = pbx_builtin_getvar_helper(ast, "MFCR2_CAUSE"); int r2cause_user = r2causestr ? atoi(r2causestr) : 0; openr2_call_disconnect_cause_t r2cause = r2cause_user ? dahdi_ast_cause_to_r2_cause(r2cause_user) - : dahdi_ast_cause_to_r2_cause(ast->hangupcause); + : dahdi_ast_cause_to_r2_cause(ast_channel_hangupcause(ast)); dahdi_r2_disconnect_call(p, r2cause); } } else if (p->mfcr2call) { @@ -6535,7 +6535,7 @@ static int dahdi_hangup(struct ast_channel *ast) case SIG_FXSKS: /* Make sure we're not made available for at least two seconds assuming we were actually used for an inbound or outbound call. */ - if (ast->_state != AST_STATE_RESERVED) { + if (ast_channel_state(ast) != AST_STATE_RESERVED) { time(&p->guardtime); p->guardtime += 2; } @@ -6577,7 +6577,7 @@ static int dahdi_hangup(struct ast_channel *ast) p->cid_suppress_expire = 0; p->oprmode = 0; hangup_out: - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); ast_free(p->cidspill); p->cidspill = NULL; @@ -6600,7 +6600,7 @@ hangup_out: static int dahdi_answer(struct ast_channel *ast) { - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); int res = 0; int idx; ast_setstate(ast, AST_STATE_UP);/*! \todo XXX this is redundantly set by the analog and PRI submodules! */ @@ -6696,7 +6696,7 @@ static void enable_dtmf_detect(struct dahdi_pvt *p) static int dahdi_queryoption(struct ast_channel *chan, int option, void *data, int *datalen) { char *cp; - struct dahdi_pvt *p = chan->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(chan); /* all supported options require data */ if (!p || !data || (*datalen < 1)) { @@ -6740,7 +6740,7 @@ static int dahdi_setoption(struct ast_channel *chan, int option, void *data, int signed char *scp; int x; int idx; - struct dahdi_pvt *p = chan->tech_pvt, *pp; + struct dahdi_pvt *p = ast_channel_tech_pvt(chan), *pp; struct oprmode *oprmode; @@ -6894,13 +6894,13 @@ static int dahdi_setoption(struct ast_channel *chan, int option, void *data, int case AST_OPTION_OPRMODE: /* Operator services mode */ oprmode = (struct oprmode *) data; /* We don't support operator mode across technologies */ - if (strcasecmp(chan->tech->type, oprmode->peer->tech->type)) { + if (strcasecmp(ast_channel_tech(chan)->type, ast_channel_tech(oprmode->peer)->type)) { ast_log(LOG_NOTICE, "Operator mode not supported on %s to %s calls.\n", - chan->tech->type, oprmode->peer->tech->type); + ast_channel_tech(chan)->type, ast_channel_tech(oprmode->peer)->type); errno = EINVAL; return -1; } - pp = oprmode->peer->tech_pvt; + pp = ast_channel_tech_pvt(oprmode->peer); p->oprmode = pp->oprmode = 0; /* setup peers */ p->oprpeer = pp; @@ -6955,7 +6955,7 @@ static int dahdi_setoption(struct ast_channel *chan, int option, void *data, int static int dahdi_func_read(struct ast_channel *chan, const char *function, char *data, char *buf, size_t len) { - struct dahdi_pvt *p = chan->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(chan); int res = 0; if (!p) { @@ -7094,7 +7094,7 @@ static int parse_buffers_policy(const char *parse, int *num_buffers, int *policy static int dahdi_func_write(struct ast_channel *chan, const char *function, char *data, const char *value) { - struct dahdi_pvt *p = chan->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(chan); int res = 0; if (!p) { @@ -7278,8 +7278,8 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch CHANNEL_DEADLOCK_AVOIDANCE(c0); } - p0 = c0->tech_pvt; - p1 = c1->tech_pvt; + p0 = ast_channel_tech_pvt(c0); + p1 = ast_channel_tech_pvt(c1); /* cant do pseudo-channels here */ if (!p0 || (!p0->sig) || !p1 || (!p1->sig)) { ast_channel_unlock(c0); @@ -7295,8 +7295,8 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch return AST_BRIDGE_FAILED; } - op0 = p0 = c0->tech_pvt; - op1 = p1 = c1->tech_pvt; + op0 = p0 = ast_channel_tech_pvt(c0); + op1 = p1 = ast_channel_tech_pvt(c1); ofd0 = c0->fds[0]; ofd1 = c1->fds[0]; oc0 = p0->owner; @@ -7413,12 +7413,12 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch p1->subs[SUB_THREEWAY].inthreeway && p1->subs[SUB_REAL].owner && p1->subs[SUB_REAL].inthreeway && - (p1->subs[SUB_REAL].owner->_state == AST_STATE_RINGING)) { + (ast_channel_state(p1->subs[SUB_REAL].owner) == AST_STATE_RINGING)) { ast_debug(1, "Playing ringback on %d/%d(%s) since %d/%d(%s) is in a ringing three-way\n", p0->channel, oi0, ast_channel_name(c0), p1->channel, oi1, ast_channel_name(c1)); tone_zone_play_tone(p0->subs[oi0].dfd, DAHDI_TONE_RINGTONE); - os1 = p1->subs[SUB_REAL].owner->_state; + os1 = ast_channel_state(p1->subs[SUB_REAL].owner); } else { ast_debug(1, "Stopping tones on %d/%d(%s) talking to %d/%d(%s)\n", p0->channel, oi0, ast_channel_name(c0), p1->channel, oi1, ast_channel_name(c1)); @@ -7428,12 +7428,12 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch p0->subs[SUB_THREEWAY].inthreeway && p0->subs[SUB_REAL].owner && p0->subs[SUB_REAL].inthreeway && - (p0->subs[SUB_REAL].owner->_state == AST_STATE_RINGING)) { + (ast_channel_state(p0->subs[SUB_REAL].owner) == AST_STATE_RINGING)) { ast_debug(1, "Playing ringback on %d/%d(%s) since %d/%d(%s) is in a ringing three-way\n", p1->channel, oi1, ast_channel_name(c1), p0->channel, oi0, ast_channel_name(c0)); tone_zone_play_tone(p1->subs[oi1].dfd, DAHDI_TONE_RINGTONE); - os0 = p0->subs[SUB_REAL].owner->_state; + os0 = ast_channel_state(p0->subs[SUB_REAL].owner); } else { ast_debug(1, "Stopping tones on %d/%d(%s) talking to %d/%d(%s)\n", p1->channel, oi1, ast_channel_name(c1), p0->channel, oi0, ast_channel_name(c0)); @@ -7489,8 +7489,8 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch CHANNEL_DEADLOCK_AVOIDANCE(c0); } - p0 = c0->tech_pvt; - p1 = c1->tech_pvt; + p0 = ast_channel_tech_pvt(c0); + p1 = ast_channel_tech_pvt(c1); if (op0 == p0) i0 = dahdi_get_index(c0, p0, 1); @@ -7505,8 +7505,8 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch (op1 != p1) || (ofd0 != c0->fds[0]) || (ofd1 != c1->fds[0]) || - (p0->subs[SUB_REAL].owner && (os0 > -1) && (os0 != p0->subs[SUB_REAL].owner->_state)) || - (p1->subs[SUB_REAL].owner && (os1 > -1) && (os1 != p1->subs[SUB_REAL].owner->_state)) || + (p0->subs[SUB_REAL].owner && (os0 > -1) && (os0 != ast_channel_state(p0->subs[SUB_REAL].owner))) || + (p1->subs[SUB_REAL].owner && (os1 > -1) && (os1 != ast_channel_state(p1->subs[SUB_REAL].owner))) || (oc0 != p0->owner) || (oc1 != p1->owner) || (t0 != p0->subs[SUB_REAL].inthreeway) || @@ -7614,7 +7614,7 @@ return_from_bridge: static int dahdi_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct dahdi_pvt *p = newchan->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(newchan); int x; ast_mutex_lock(&p->lock); @@ -7646,7 +7646,7 @@ static int dahdi_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) ast_mutex_unlock(&p->lock); - if (newchan->_state == AST_STATE_RINGING) { + if (ast_channel_state(newchan) == AST_STATE_RINGING) { dahdi_indicate(newchan, AST_CONTROL_RINGING, NULL, 0); } return 0; @@ -7694,10 +7694,10 @@ static int attempt_transfer(struct dahdi_pvt *p) stop if now if appropriate */ if (ast_bridged_channel(p->subs[SUB_THREEWAY].owner)) ast_queue_control(p->subs[SUB_THREEWAY].owner, AST_CONTROL_UNHOLD); - if (p->subs[SUB_REAL].owner->_state == AST_STATE_RINGING) { + if (ast_channel_state(p->subs[SUB_REAL].owner) == AST_STATE_RINGING) { ast_indicate(ast_bridged_channel(p->subs[SUB_REAL].owner), AST_CONTROL_RINGING); } - if (p->subs[SUB_THREEWAY].owner->_state == AST_STATE_RING) { + if (ast_channel_state(p->subs[SUB_THREEWAY].owner) == AST_STATE_RING) { tone_zone_play_tone(p->subs[SUB_THREEWAY].dfd, DAHDI_TONE_RINGTONE); } if (ast_channel_masquerade(p->subs[SUB_THREEWAY].owner, ast_bridged_channel(p->subs[SUB_REAL].owner))) { @@ -7710,10 +7710,10 @@ static int attempt_transfer(struct dahdi_pvt *p) unalloc_sub(p, SUB_THREEWAY); } else if (ast_bridged_channel(p->subs[SUB_THREEWAY].owner)) { ast_queue_control(p->subs[SUB_REAL].owner, AST_CONTROL_UNHOLD); - if (p->subs[SUB_THREEWAY].owner->_state == AST_STATE_RINGING) { + if (ast_channel_state(p->subs[SUB_THREEWAY].owner) == AST_STATE_RINGING) { ast_indicate(ast_bridged_channel(p->subs[SUB_THREEWAY].owner), AST_CONTROL_RINGING); } - if (p->subs[SUB_REAL].owner->_state == AST_STATE_RING) { + if (ast_channel_state(p->subs[SUB_REAL].owner) == AST_STATE_RING) { tone_zone_play_tone(p->subs[SUB_REAL].dfd, DAHDI_TONE_RINGTONE); } if (ast_channel_masquerade(p->subs[SUB_REAL].owner, ast_bridged_channel(p->subs[SUB_THREEWAY].owner))) { @@ -7791,7 +7791,7 @@ static int get_alarms(struct dahdi_pvt *p) static void dahdi_handle_dtmf(struct ast_channel *ast, int idx, struct ast_frame **dest) { - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); struct ast_frame *f = *dest; ast_debug(1, "%s DTMF digit: 0x%02X '%c' on %s\n", @@ -7913,7 +7913,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) int res, x; int idx, mysig; char *c; - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); pthread_t threadid; struct ast_channel *chan; struct ast_frame *f; @@ -8015,7 +8015,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) #endif case DAHDI_EVENT_PULSE_START: /* Stop tone if there's a pulse start and the PBX isn't started */ - if (!ast->pbx) + if (!ast_channel_pbx(ast)) tone_zone_play_tone(p->subs[idx].dfd, -1); break; case DAHDI_EVENT_DIALCOMPLETE: @@ -8043,7 +8043,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) } #endif /* defined(HAVE_PRI) */ #ifdef HAVE_OPENR2 - if ((p->sig & SIG_MFCR2) && p->r2chan && ast->_state != AST_STATE_UP) { + if ((p->sig & SIG_MFCR2) && p->r2chan && ast_channel_state(ast) != AST_STATE_UP) { /* we don't need to do anything for this event for R2 signaling if the call is being setup */ break; @@ -8067,7 +8067,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) p->dialing = 0; if ((mysig == SIG_E911) || (mysig == SIG_FGC_CAMA) || (mysig == SIG_FGC_CAMAMF)) { /* if thru with dialing after offhook */ - if (ast->_state == AST_STATE_DIALING_OFFHOOK) { + if (ast_channel_state(ast) == AST_STATE_DIALING_OFFHOOK) { ast_setstate(ast, AST_STATE_UP); p->subs[idx].f.frametype = AST_FRAME_CONTROL; p->subs[idx].f.subclass.integer = AST_CONTROL_ANSWER; @@ -8077,7 +8077,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) ast_setstate(ast,AST_STATE_DIALING_OFFHOOK); } } - if (ast->_state == AST_STATE_DIALING) { + if (ast_channel_state(ast) == AST_STATE_DIALING) { if ((p->callprogress & CALLPROGRESS_PROGRESS) && CANPROGRESSDETECT(p) && p->dsp && p->outgoing) { ast_debug(1, "Done dialing, but waiting for progress detection before doing more...\n"); } else if (p->confirmanswer || (!p->dialednone @@ -8177,7 +8177,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) p->cid_suppress_expire = 0; p->owner = NULL; /* Don't start streaming audio yet if the incoming call isn't up yet */ - if (p->subs[SUB_REAL].owner->_state != AST_STATE_UP) + if (ast_channel_state(p->subs[SUB_REAL].owner) != AST_STATE_UP) p->dialing = 1; dahdi_ring_phone(p); } else if (p->subs[SUB_THREEWAY].owner) { @@ -8211,13 +8211,13 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) p->subs[SUB_THREEWAY].owner->_softhangup |= AST_SOFTHANGUP_DEV; ast_debug(1, "Looks like a bounced flash, hanging up both calls on %d\n", p->channel); ast_channel_unlock(p->subs[SUB_THREEWAY].owner); - } else if ((ast->pbx) || (ast->_state == AST_STATE_UP)) { + } else if ((ast_channel_pbx(ast)) || (ast_channel_state(ast) == AST_STATE_UP)) { if (p->transfer) { /* In any case this isn't a threeway call anymore */ p->subs[SUB_REAL].inthreeway = 0; p->subs[SUB_THREEWAY].inthreeway = 0; /* Only attempt transfer if the phone is ringing; why transfer to busy tone eh? */ - if (!p->transfertobusy && ast->_state == AST_STATE_BUSY) { + if (!p->transfertobusy && ast_channel_state(ast) == AST_STATE_BUSY) { ast_channel_unlock(p->subs[SUB_THREEWAY].owner); /* Swap subs and dis-own channel */ swap_subs(p, SUB_THREEWAY, SUB_REAL); @@ -8280,7 +8280,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) } /* for E911, its supposed to wait for offhook then dial the second half of the dial string */ - if (((mysig == SIG_E911) || (mysig == SIG_FGC_CAMA) || (mysig == SIG_FGC_CAMAMF)) && (ast->_state == AST_STATE_DIALING_OFFHOOK)) { + if (((mysig == SIG_E911) || (mysig == SIG_FGC_CAMA) || (mysig == SIG_FGC_CAMAMF)) && (ast_channel_state(ast) == AST_STATE_DIALING_OFFHOOK)) { c = strchr(p->dialdest, '/'); if (c) c++; @@ -8311,7 +8311,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) case SIG_FXOLS: case SIG_FXOGS: case SIG_FXOKS: - switch (ast->_state) { + switch (ast_channel_state(ast)) { case AST_STATE_RINGING: dahdi_enable_ec(p); dahdi_train_ec(p); @@ -8353,7 +8353,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) return &p->subs[idx].f; case AST_STATE_DOWN: ast_setstate(ast, AST_STATE_RING); - ast->rings = 1; + ast_channel_rings_set(ast, 1); p->subs[idx].f.frametype = AST_FRAME_CONTROL; p->subs[idx].f.subclass.integer = AST_CONTROL_OFFHOOK; ast_debug(1, "channel %d picked up\n", p->channel); @@ -8374,13 +8374,13 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) res = tone_zone_play_tone(p->subs[SUB_REAL].dfd, DAHDI_TONE_DIALTONE); break; default: - ast_log(LOG_WARNING, "FXO phone off hook in weird state %d??\n", ast->_state); + ast_log(LOG_WARNING, "FXO phone off hook in weird state %d??\n", ast_channel_state(ast)); } break; case SIG_FXSLS: case SIG_FXSGS: case SIG_FXSKS: - if (ast->_state == AST_STATE_RING) { + if (ast_channel_state(ast) == AST_STATE_RING) { p->ringt = p->ringt_base; } @@ -8407,13 +8407,13 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) case SIG_SF_FEATD: case SIG_SF_FEATDMF: case SIG_SF_FEATB: - if (ast->_state == AST_STATE_PRERING) + if (ast_channel_state(ast) == AST_STATE_PRERING) ast_setstate(ast, AST_STATE_RING); - if ((ast->_state == AST_STATE_DOWN) || (ast->_state == AST_STATE_RING)) { + if ((ast_channel_state(ast) == AST_STATE_DOWN) || (ast_channel_state(ast) == AST_STATE_RING)) { ast_debug(1, "Ring detected\n"); p->subs[idx].f.frametype = AST_FRAME_CONTROL; p->subs[idx].f.subclass.integer = AST_CONTROL_RING; - } else if (p->outgoing && ((ast->_state == AST_STATE_RINGING) || (ast->_state == AST_STATE_DIALING))) { + } else if (p->outgoing && ((ast_channel_state(ast) == AST_STATE_RINGING) || (ast_channel_state(ast) == AST_STATE_DIALING))) { ast_debug(1, "Line answered\n"); if (p->confirmanswer) { p->subs[idx].f.frametype = AST_FRAME_NULL; @@ -8423,8 +8423,8 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) p->subs[idx].f.subclass.integer = AST_CONTROL_ANSWER; ast_setstate(ast, AST_STATE_UP); } - } else if (ast->_state != AST_STATE_RING) - ast_log(LOG_WARNING, "Ring/Off-hook in strange state %d on channel %d\n", ast->_state, p->channel); + } else if (ast_channel_state(ast) != AST_STATE_RING) + ast_log(LOG_WARNING, "Ring/Off-hook in strange state %d on channel %d\n", ast_channel_state(ast), p->channel); break; default: ast_log(LOG_WARNING, "Don't know how to handle ring/off hook for signalling %d\n", p->sig); @@ -8435,7 +8435,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) case SIG_FXSLS: case SIG_FXSGS: case SIG_FXSKS: - if (ast->_state == AST_STATE_RING) { + if (ast_channel_state(ast) == AST_STATE_RING) { p->ringt = p->ringt_base; } break; @@ -8509,7 +8509,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) tone_zone_play_tone(p->subs[SUB_REAL].dfd, -1); p->owner = p->subs[SUB_REAL].owner; ast_debug(1, "Making %s the new owner\n", ast_channel_name(p->owner)); - if (p->owner->_state == AST_STATE_RINGING) { + if (ast_channel_state(p->owner) == AST_STATE_RINGING) { ast_setstate(p->owner, AST_STATE_UP); p->subs[SUB_REAL].needanswer = 1; } @@ -8554,9 +8554,9 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) } /* XXX This section needs much more error checking!!! XXX */ /* Start a 3-way call if feasible */ - if (!((ast->pbx) || - (ast->_state == AST_STATE_UP) || - (ast->_state == AST_STATE_RING))) { + if (!((ast_channel_pbx(ast)) || + (ast_channel_state(ast) == AST_STATE_UP) || + (ast_channel_state(ast) == AST_STATE_RING))) { ast_debug(1, "Flash when call not up or ringing\n"); goto winkflashdone; } @@ -8607,7 +8607,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) /* Call is already up, drop the last person */ ast_debug(1, "Got flash with three way call up, dropping last call on %d\n", p->channel); /* If the primary call isn't answered yet, use it */ - if ((p->subs[SUB_REAL].owner->_state != AST_STATE_UP) && (p->subs[SUB_THREEWAY].owner->_state == AST_STATE_UP)) { + if ((ast_channel_state(p->subs[SUB_REAL].owner) != AST_STATE_UP) && (ast_channel_state(p->subs[SUB_THREEWAY].owner) == AST_STATE_UP)) { /* Swap back -- we're dropping the real 3-way that isn't finished yet*/ swap_subs(p, SUB_THREEWAY, SUB_REAL); p->owner = p->subs[SUB_REAL].owner; @@ -8619,8 +8619,8 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) p->subs[SUB_THREEWAY].inthreeway = 0; } else { /* Lets see what we're up to */ - if (((ast->pbx) || (ast->_state == AST_STATE_UP)) && - (p->transfertobusy || (ast->_state != AST_STATE_BUSY))) { + if (((ast_channel_pbx(ast)) || (ast_channel_state(ast) == AST_STATE_UP)) && + (p->transfertobusy || (ast_channel_state(ast) != AST_STATE_BUSY))) { int otherindex = SUB_THREEWAY; ast_verb(3, "Building conference call with %s and %s\n", @@ -8629,7 +8629,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) /* Put them in the threeway, and flip */ p->subs[SUB_THREEWAY].inthreeway = 1; p->subs[SUB_REAL].inthreeway = 1; - if (ast->_state == AST_STATE_UP) { + if (ast_channel_state(ast) == AST_STATE_UP) { swap_subs(p, SUB_THREEWAY, SUB_REAL); otherindex = SUB_REAL; } @@ -8663,7 +8663,7 @@ winkflashdone: if (p->dialing) ast_debug(1, "Ignoring wink on channel %d\n", p->channel); else - ast_debug(1, "Got wink in weird state %d on channel %d\n", ast->_state, p->channel); + ast_debug(1, "Got wink in weird state %d on channel %d\n", ast_channel_state(ast), p->channel); break; case SIG_FEATDMF_TA: switch (p->whichwink) { @@ -8760,38 +8760,38 @@ winkflashdone: if (p->polarity == POLARITY_IDLE) { p->polarity = POLARITY_REV; if (p->answeronpolarityswitch && - ((ast->_state == AST_STATE_DIALING) || - (ast->_state == AST_STATE_RINGING))) { + ((ast_channel_state(ast) == AST_STATE_DIALING) || + (ast_channel_state(ast) == AST_STATE_RINGING))) { ast_debug(1, "Answering on polarity switch!\n"); ast_setstate(p->owner, AST_STATE_UP); if (p->hanguponpolarityswitch) { p->polaritydelaytv = ast_tvnow(); } } else - ast_debug(1, "Ignore switch to REVERSED Polarity on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Ignore switch to REVERSED Polarity on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } /* Removed else statement from here as it was preventing hangups from ever happening*/ /* Added AST_STATE_RING in if statement below to deal with calling party hangups that take place when ringing */ if (p->hanguponpolarityswitch && (p->polarityonanswerdelay > 0) && (p->polarity == POLARITY_REV) && - ((ast->_state == AST_STATE_UP) || (ast->_state == AST_STATE_RING)) ) { + ((ast_channel_state(ast) == AST_STATE_UP) || (ast_channel_state(ast) == AST_STATE_RING)) ) { /* Added log_debug information below to provide a better indication of what is going on */ - ast_debug(1, "Polarity Reversal event occured - DEBUG 1: channel %d, state %d, pol= %d, aonp= %d, honp= %d, pdelay= %d, tv= %" PRIi64 "\n", p->channel, ast->_state, p->polarity, p->answeronpolarityswitch, p->hanguponpolarityswitch, p->polarityonanswerdelay, ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) ); + ast_debug(1, "Polarity Reversal event occured - DEBUG 1: channel %d, state %d, pol= %d, aonp= %d, honp= %d, pdelay= %d, tv= %" PRIi64 "\n", p->channel, ast_channel_state(ast), p->polarity, p->answeronpolarityswitch, p->hanguponpolarityswitch, p->polarityonanswerdelay, ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) ); if (ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) > p->polarityonanswerdelay) { ast_debug(1, "Polarity Reversal detected and now Hanging up on channel %d\n", p->channel); ast_softhangup(p->owner, AST_SOFTHANGUP_EXPLICIT); p->polarity = POLARITY_IDLE; } else - ast_debug(1, "Polarity Reversal detected but NOT hanging up (too close to answer event) on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Polarity Reversal detected but NOT hanging up (too close to answer event) on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } else { p->polarity = POLARITY_IDLE; - ast_debug(1, "Ignoring Polarity switch to IDLE on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Ignoring Polarity switch to IDLE on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } /* Added more log_debug information below to provide a better indication of what is going on */ - ast_debug(1, "Polarity Reversal event occured - DEBUG 2: channel %d, state %d, pol= %d, aonp= %d, honp= %d, pdelay= %d, tv= %" PRIi64 "\n", p->channel, ast->_state, p->polarity, p->answeronpolarityswitch, p->hanguponpolarityswitch, p->polarityonanswerdelay, ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) ); + ast_debug(1, "Polarity Reversal event occured - DEBUG 2: channel %d, state %d, pol= %d, aonp= %d, honp= %d, pdelay= %d, tv= %" PRIi64 "\n", p->channel, ast_channel_state(ast), p->polarity, p->answeronpolarityswitch, p->hanguponpolarityswitch, p->polarityonanswerdelay, ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) ); break; default: ast_debug(1, "Dunno what to do with event %d on channel %d\n", res, p->channel); @@ -8805,7 +8805,7 @@ static struct ast_frame *__dahdi_exception(struct ast_channel *ast) int idx; struct ast_frame *f; int usedindex = -1; - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); idx = dahdi_get_index(ast, p, 1); @@ -8856,7 +8856,7 @@ static struct ast_frame *__dahdi_exception(struct ast_channel *ast) case DAHDI_EVENT_RINGOFFHOOK: dahdi_enable_ec(p); dahdi_set_hook(p->subs[SUB_REAL].dfd, DAHDI_OFFHOOK); - if (p->owner && (p->owner->_state == AST_STATE_RINGING)) { + if (p->owner && (ast_channel_state(p->owner) == AST_STATE_RINGING)) { p->subs[SUB_REAL].needanswer = 1; p->dialing = 0; } @@ -8870,7 +8870,7 @@ static struct ast_frame *__dahdi_exception(struct ast_channel *ast) p->flashtime = ast_tvnow(); if (p->owner) { ast_verb(3, "Channel %d flashed to other channel %s\n", p->channel, ast_channel_name(p->owner)); - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { /* Answer if necessary */ usedindex = dahdi_get_index(p->owner, p, 0); if (usedindex > -1) { @@ -8914,7 +8914,7 @@ static struct ast_frame *__dahdi_exception(struct ast_channel *ast) static struct ast_frame *dahdi_exception(struct ast_channel *ast) { - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); struct ast_frame *f; ast_mutex_lock(&p->lock); if (analog_lib_handles(p->sig, p->radio, p->oprmode)) { @@ -8940,7 +8940,7 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast) * analog ports can have more than one Asterisk channel using * the same private structure. */ - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); while (ast_mutex_trylock(&p->lock)) { CHANNEL_DEADLOCK_AVOIDANCE(ast); @@ -8949,7 +8949,7 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast) * the call could move to another B channel while the Asterisk * channel is unlocked. */ - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); } idx = dahdi_get_index(ast, p, 0); @@ -9015,7 +9015,7 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast) * now enqueue a progress frame to bridge the media up */ if (p->mfcr2_call_accepted && !p->mfcr2_progress_sent && - ast->_state == AST_STATE_RINGING) { + ast_channel_state(ast) == AST_STATE_RINGING) { ast_debug(1, "Enqueuing progress frame after R2 accept in chan %d\n", p->channel); ast_queue_frame(p->owner, &fr); p->mfcr2_progress_sent = 1; @@ -9233,7 +9233,7 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast) ast_debug(1, "Read %d of voice on %s\n", p->subs[idx].f.datalen, ast->name); #endif if (p->dialing || p->radio || /* Transmitting something */ - (idx && (ast->_state != AST_STATE_UP)) || /* Three-way or callwait that isn't up */ + (idx && (ast_channel_state(ast) != AST_STATE_UP)) || /* Three-way or callwait that isn't up */ ((idx == SUB_CALLWAIT) && !p->subs[SUB_CALLWAIT].inthreeway) /* Inactive and non-confed call-wait */ ) { /* Whoops, we're still dialing, or in a state where we shouldn't transmit.... @@ -9261,7 +9261,7 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast) if (f) { if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass.integer == AST_CONTROL_BUSY)) { - if ((ast->_state == AST_STATE_UP) && !p->outgoing) { + if ((ast_channel_state(ast) == AST_STATE_UP) && !p->outgoing) { /* Treat this as a "hangup" instead of a "busy" on the assumption that a busy */ f = NULL; @@ -9375,7 +9375,7 @@ static int my_dahdi_write(struct dahdi_pvt *p, unsigned char *buf, int len, int static int dahdi_write(struct ast_channel *ast, struct ast_frame *frame) { - struct dahdi_pvt *p = ast->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(ast); int res; int idx; idx = dahdi_get_index(ast, p, 0); @@ -9440,7 +9440,7 @@ static int dahdi_write(struct ast_channel *ast, struct ast_frame *frame) static int dahdi_indicate(struct ast_channel *chan, int condition, const void *data, size_t datalen) { - struct dahdi_pvt *p = chan->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(chan); int res=-1; int idx; int func = DAHDI_FLASH; @@ -9480,8 +9480,8 @@ static int dahdi_indicate(struct ast_channel *chan, int condition, const void *d case AST_CONTROL_RINGING: res = tone_zone_play_tone(p->subs[idx].dfd, DAHDI_TONE_RINGTONE); - if (chan->_state != AST_STATE_UP) { - if ((chan->_state != AST_STATE_RING) || + if (ast_channel_state(chan) != AST_STATE_UP) { + if ((ast_channel_state(chan) != AST_STATE_RING) || ((p->sig != SIG_FXSKS) && (p->sig != SIG_FXSLS) && (p->sig != SIG_FXSGS))) @@ -9505,12 +9505,12 @@ static int dahdi_indicate(struct ast_channel *chan, int condition, const void *d break; case AST_CONTROL_CONGESTION: /* There are many cause codes that generate an AST_CONTROL_CONGESTION. */ - switch (chan->hangupcause) { + switch (ast_channel_hangupcause(chan)) { case AST_CAUSE_USER_BUSY: case AST_CAUSE_NORMAL_CLEARING: case 0:/* Cause has not been set. */ /* Supply a more appropriate cause. */ - chan->hangupcause = AST_CAUSE_CONGESTION; + ast_channel_hangupcause_set(chan, AST_CAUSE_CONGESTION); break; default: break; @@ -9641,7 +9641,7 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb ast_free(chan_name); if (!tmp) return NULL; - tmp->tech = &dahdi_tech; + ast_channel_tech_set(tmp, &dahdi_tech); #if defined(HAVE_PRI) if (i->pri) { ast_cc_copy_config_params(i->cc_params, i->pri->cc_params); @@ -9673,7 +9673,7 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb } } ast_channel_set_fd(tmp, 0, i->subs[idx].dfd); - ast_format_cap_add(tmp->nativeformats, &deflaw); + ast_format_cap_add(ast_channel_nativeformats(tmp), &deflaw); /* Start out assuming ulaw since it's smaller :) */ ast_format_copy(&tmp->rawreadformat, &deflaw); ast_format_copy(&tmp->readformat, &deflaw); @@ -9734,8 +9734,8 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb } if (state == AST_STATE_RING) - tmp->rings = 1; - tmp->tech_pvt = i; + ast_channel_rings_set(tmp, 1); + ast_channel_tech_pvt_set(tmp, i); if ((i->sig == SIG_FXOKS) || (i->sig == SIG_FXOGS) || (i->sig == SIG_FXOLS)) { /* Only FXO signalled stuff can be picked up */ tmp->callgroup = i->callgroup; @@ -9750,7 +9750,7 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb if (!ast_strlen_zero(i->accountcode)) ast_channel_accountcode_set(tmp, i->accountcode); if (i->amaflags) - tmp->amaflags = i->amaflags; + ast_channel_amaflags_set(tmp, i->amaflags); i->subs[idx].owner = tmp; ast_channel_context_set(tmp, i->context); if (!analog_lib_handles(i->sig, i->radio, i->oprmode)) { @@ -9758,7 +9758,7 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb } /* If we've been told "no ADSI" then enforce it */ if (!i->adsi) - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); if (!ast_strlen_zero(i->exten)) ast_channel_exten_set(tmp, i->exten); if (!ast_strlen_zero(i->rdnis)) { @@ -9927,7 +9927,7 @@ static int canmatch_featurecode(const char *exten) static void *analog_ss_thread(void *data) { struct ast_channel *chan = data; - struct dahdi_pvt *p = chan->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(chan); char exten[AST_MAX_EXTENSION] = ""; char exten2[AST_MAX_EXTENSION] = ""; unsigned char buf[256]; @@ -10437,10 +10437,10 @@ static void *analog_ss_thread(void *data) struct dahdi_pvt *pbridge = NULL; /* set up the private struct of the bridged one, if any */ if (nbridge && ast_bridged_channel(nbridge)) - pbridge = ast_bridged_channel(nbridge)->tech_pvt; + pbridge = ast_channel_tech_pvt(ast_bridged_channel(nbridge)); if (nbridge && pbridge && - (nbridge->tech == &dahdi_tech) && - (ast_bridged_channel(nbridge)->tech == &dahdi_tech) && + (ast_channel_tech(nbridge) == &dahdi_tech) && + (ast_channel_tech(ast_bridged_channel(nbridge)) == &dahdi_tech) && ISTRUNK(pbridge)) { int func = DAHDI_FLASH; /* Clear out the dial buffer */ @@ -10508,7 +10508,7 @@ static void *analog_ss_thread(void *data) /* If we want caller id, we're in a prering state due to a polarity reversal * and we're set to use a polarity reversal to trigger the start of caller id, * grab the caller id and wait for ringing to start... */ - } else if (p->use_callerid && (chan->_state == AST_STATE_PRERING && + } else if (p->use_callerid && (ast_channel_state(chan) == AST_STATE_PRERING && (p->cid_start == CID_START_POLARITY || p->cid_start == CID_START_POLARITY_IN || p->cid_start == CID_START_DTMF_NOALERT))) { /* If set to use DTMF CID signalling, listen for DTMF */ if (p->cid_signalling == CID_SIG_DTMF) { @@ -10549,8 +10549,8 @@ static void *analog_ss_thread(void *data) res = 4000;/* This is a typical OFF time between rings. */ } ast_frfree(f); - if (chan->_state == AST_STATE_RING || - chan->_state == AST_STATE_RINGING) + if (ast_channel_state(chan) == AST_STATE_RING || + ast_channel_state(chan) == AST_STATE_RINGING) break; /* Got ring */ } ast_clear_flag(chan, AST_FLAG_END_DTMF_ONLY); @@ -10661,8 +10661,8 @@ static void *analog_ss_thread(void *data) goto quit; } ast_frfree(f); - if (chan->_state == AST_STATE_RING || - chan->_state == AST_STATE_RINGING) + if (ast_channel_state(chan) == AST_STATE_RING || + ast_channel_state(chan) == AST_STATE_RINGING) break; /* Got ring */ } @@ -11027,7 +11027,7 @@ static void *analog_ss_thread(void *data) my_handle_notify_message(chan, p, flags, -1); ast_setstate(chan, AST_STATE_RING); - chan->rings = 1; + ast_channel_rings_set(chan, 1); p->ringt = p->ringt_base; res = ast_pbx_run(chan); if (res) { @@ -16689,9 +16689,9 @@ static int dahdi_pri_cc_agent_init(struct ast_cc_agent *agent, struct ast_channe struct sig_pri_chan *pvt_chan; int res; - ast_assert(!strcmp(chan->tech->type, "DAHDI")); + ast_assert(!strcmp(ast_channel_tech(chan)->type, "DAHDI")); - pvt = chan->tech_pvt; + pvt = ast_channel_tech_pvt(chan); if (dahdi_sig_pri_lib_handles(pvt->sig)) { pvt_chan = pvt->sig_pvt; } else { @@ -18904,7 +18904,7 @@ static int dahdi_sendtext(struct ast_channel *c, const char *text) #define ASCII_BYTES_PER_CHAR 80 unsigned char *buf,*mybuf; - struct dahdi_pvt *p = c->tech_pvt; + struct dahdi_pvt *p = ast_channel_tech_pvt(c); struct pollfd fds[1]; int size,res,fd,len,x; int bytes=0; diff --git a/channels/chan_gtalk.c b/channels/chan_gtalk.c index 9b41ab106..3b5354cae 100644 --- a/channels/chan_gtalk.c +++ b/channels/chan_gtalk.c @@ -530,7 +530,7 @@ static int gtalk_ringing_ack(void *data, ikspak *pak) static int gtalk_answer(struct ast_channel *ast) { - struct gtalk_pvt *p = ast->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(ast); int res = 0; ast_debug(1, "Answer!\n"); @@ -544,7 +544,7 @@ static int gtalk_answer(struct ast_channel *ast) static enum ast_rtp_glue_result gtalk_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **instance) { - struct gtalk_pvt *p = chan->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(chan); enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_FORBID; if (!p) @@ -563,7 +563,7 @@ static enum ast_rtp_glue_result gtalk_get_rtp_peer(struct ast_channel *chan, str static void gtalk_get_codec(struct ast_channel *chan, struct ast_format_cap *result) { - struct gtalk_pvt *p = chan->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(chan); ast_mutex_lock(&p->lock); ast_format_cap_copy(result, p->peercap); ast_mutex_unlock(&p->lock); @@ -573,7 +573,7 @@ static int gtalk_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance { struct gtalk_pvt *p; - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) return -1; ast_mutex_lock(&p->lock); @@ -1129,7 +1129,7 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i, ast_log(LOG_WARNING, "Unable to allocate Gtalk channel structure!\n"); return NULL; } - tmp->tech = >alk_tech; + ast_channel_tech_set(tmp, >alk_tech); /* Select our native format based on codec preference until we receive something from another device to the contrary. */ @@ -1147,12 +1147,12 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i, } ast_codec_choose(&i->prefs, what, 1, &tmpfmt); - ast_format_cap_add(tmp->nativeformats, &tmpfmt); + ast_format_cap_add(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_cap_iter_start(i->jointcap); while (!(ast_format_cap_iter_next(i->jointcap, &tmpfmt))) { if (AST_FORMAT_GET_TYPE(tmpfmt.id) == AST_FORMAT_TYPE_VIDEO) { - ast_format_cap_add(tmp->nativeformats, &tmpfmt); + ast_format_cap_add(ast_channel_nativeformats(tmp), &tmpfmt); } } ast_format_cap_iter_end(i->jointcap); @@ -1166,15 +1166,15 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i, ast_channel_set_fd(tmp, 3, ast_rtp_instance_fd(i->vrtp, 1)); } if (state == AST_STATE_RING) - tmp->rings = 1; - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_rings_set(tmp, 1); + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); ast_format_copy(&tmp->readformat, &tmpfmt); ast_format_copy(&tmp->rawreadformat, &tmpfmt); - tmp->tech_pvt = i; + ast_channel_tech_pvt_set(tmp, i); tmp->callgroup = client->callgroup; tmp->pickupgroup = client->pickupgroup; @@ -1183,7 +1183,7 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i, if (!ast_strlen_zero(client->accountcode)) ast_channel_accountcode_set(tmp, client->accountcode); if (client->amaflags) - tmp->amaflags = client->amaflags; + ast_channel_amaflags_set(tmp, client->amaflags); if (!ast_strlen_zero(client->language)) ast_channel_language_set(tmp, client->language); if (!ast_strlen_zero(client->musicclass)) @@ -1198,12 +1198,12 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i, if (!ast_strlen_zero(i->exten) && strcmp(i->exten, "s")) { tmp->dialed.number.str = ast_strdup(i->exten); } - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); if (i->rtp) ast_jb_configure(tmp, &global_jbconf); if (state != AST_STATE_DOWN && ast_pbx_start(tmp)) { ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ast_channel_name(tmp)); - tmp->hangupcause = AST_CAUSE_SWITCH_CONGESTION; + ast_channel_hangupcause_set(tmp, AST_CAUSE_SWITCH_CONGESTION); ast_hangup(tmp); tmp = NULL; } else { @@ -1624,10 +1624,10 @@ static struct ast_frame *gtalk_rtp_read(struct ast_channel *ast, struct gtalk_pv if (p->owner) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { - if (!ast_format_cap_iscompatible(p->owner->nativeformats, &f->subclass.format)) { + if (!ast_format_cap_iscompatible(ast_channel_nativeformats(p->owner), &f->subclass.format)) { ast_debug(1, "Oooh, format changed to %s\n", ast_getformatname(&f->subclass.format)); - ast_format_cap_remove_bytype(p->owner->nativeformats, AST_FORMAT_TYPE_AUDIO); - ast_format_cap_add(p->owner->nativeformats, &f->subclass.format); + ast_format_cap_remove_bytype(ast_channel_nativeformats(p->owner), AST_FORMAT_TYPE_AUDIO); + ast_format_cap_add(ast_channel_nativeformats(p->owner), &f->subclass.format); ast_set_read_format(p->owner, &p->owner->readformat); ast_set_write_format(p->owner, &p->owner->writeformat); } @@ -1644,7 +1644,7 @@ static struct ast_frame *gtalk_rtp_read(struct ast_channel *ast, struct gtalk_pv static struct ast_frame *gtalk_read(struct ast_channel *ast) { struct ast_frame *fr; - struct gtalk_pvt *p = ast->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(ast); ast_mutex_lock(&p->lock); fr = gtalk_rtp_read(ast, p); @@ -1655,17 +1655,17 @@ static struct ast_frame *gtalk_read(struct ast_channel *ast) /*! \brief Send frame to media channel (rtp) */ static int gtalk_write(struct ast_channel *ast, struct ast_frame *frame) { - struct gtalk_pvt *p = ast->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(ast); int res = 0; char buf[256]; switch (frame->frametype) { case AST_FRAME_VOICE: - if (!(ast_format_cap_iscompatible(ast->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &frame->subclass.format))) { ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_getformatname(&frame->subclass.format), - ast_getformatname_multiple(buf, sizeof(buf), ast->nativeformats), + ast_getformatname_multiple(buf, sizeof(buf), ast_channel_nativeformats(ast)), ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat)); return 0; @@ -1701,7 +1701,7 @@ static int gtalk_write(struct ast_channel *ast, struct ast_frame *frame) static int gtalk_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct gtalk_pvt *p = newchan->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(newchan); ast_mutex_lock(&p->lock); if ((p->owner != oldchan)) { @@ -1737,7 +1737,7 @@ static int gtalk_sendtext(struct ast_channel *chan, const char *text) { int res = 0; struct aji_client *client = NULL; - struct gtalk_pvt *p = chan->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(chan); if (!p->parent) { ast_log(LOG_ERROR, "Parent channel not found\n"); @@ -1754,7 +1754,7 @@ static int gtalk_sendtext(struct ast_channel *chan, const char *text) static int gtalk_digit_begin(struct ast_channel *chan, char digit) { - struct gtalk_pvt *p = chan->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(chan); int res = 0; ast_mutex_lock(&p->lock); @@ -1770,7 +1770,7 @@ static int gtalk_digit_begin(struct ast_channel *chan, char digit) static int gtalk_digit_end(struct ast_channel *chan, char digit, unsigned int duration) { - struct gtalk_pvt *p = chan->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(chan); int res = 0; ast_mutex_lock(&p->lock); @@ -1854,9 +1854,9 @@ static int gtalk_sendhtml(struct ast_channel *ast, int subclass, const char *dat * dest is the dial string */ static int gtalk_call(struct ast_channel *ast, const char *dest, int timeout) { - struct gtalk_pvt *p = ast->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(ast); - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "gtalk_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -1878,13 +1878,13 @@ static int gtalk_call(struct ast_channel *ast, const char *dest, int timeout) /*! \brief Hangup a call through the gtalk proxy channel */ static int gtalk_hangup(struct ast_channel *ast) { - struct gtalk_pvt *p = ast->tech_pvt; + struct gtalk_pvt *p = ast_channel_tech_pvt(ast); struct gtalk *client; ast_mutex_lock(&p->lock); client = p->parent; p->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); if (!p->alreadygone) { gtalk_action(client, p, "terminate"); } diff --git a/channels/chan_h323.c b/channels/chan_h323.c index 388c17caa..7da2e9295 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -341,11 +341,11 @@ static int oh323_simulate_dtmf_end(const void *data) /*! \brief Channel and private structures should be already locked */ static void __oh323_update_info(struct ast_channel *c, struct oh323_pvt *pvt) { - h323_format chan_nativeformats_bits = ast_format_cap_to_old_bitfield(c->nativeformats); + h323_format chan_nativeformats_bits = ast_format_cap_to_old_bitfield(ast_channel_nativeformats(c)); if (chan_nativeformats_bits != pvt->nativeformats) { if (h323debug) ast_debug(1, "Preparing %s for new native format\n", ast_channel_name(c)); - ast_format_cap_from_old_bitfield(c->nativeformats, pvt->nativeformats); + ast_format_cap_from_old_bitfield(ast_channel_nativeformats(c), pvt->nativeformats); ast_set_read_format(c, &c->readformat); ast_set_write_format(c, &c->writeformat); } @@ -353,7 +353,7 @@ static void __oh323_update_info(struct ast_channel *c, struct oh323_pvt *pvt) if (h323debug) ast_debug(1, "Process pending hangup for %s\n", ast_channel_name(c)); c->_softhangup |= AST_SOFTHANGUP_DEV; - c->hangupcause = pvt->hangupcause; + ast_channel_hangupcause_set(c, pvt->hangupcause); ast_queue_hangup_with_cause(c, pvt->hangupcause); pvt->needhangup = 0; pvt->newstate = pvt->newcontrol = pvt->newdigit = pvt->DTMFsched = -1; @@ -406,7 +406,7 @@ static void __oh323_update_info(struct ast_channel *c, struct oh323_pvt *pvt) /*! \brief Only channel structure should be locked */ static void oh323_update_info(struct ast_channel *c) { - struct oh323_pvt *pvt = c->tech_pvt; + struct oh323_pvt *pvt = ast_channel_tech_pvt(c); if (pvt) { ast_mutex_lock(&pvt->lock); @@ -472,7 +472,7 @@ static void __oh323_destroy(struct oh323_pvt *pvt) ast_channel_lock(pvt->owner); if (h323debug) ast_debug(1, "Detaching from %s\n", ast_channel_name(pvt->owner)); - pvt->owner->tech_pvt = NULL; + ast_channel_tech_pvt_set(pvt->owner, NULL); ast_channel_unlock(pvt->owner); } cur = iflist; @@ -509,7 +509,7 @@ static void oh323_destroy(struct oh323_pvt *pvt) static int oh323_digit_begin(struct ast_channel *c, char digit) { - struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(c); char *token; if (!pvt) { @@ -550,7 +550,7 @@ static int oh323_digit_begin(struct ast_channel *c, char digit) */ static int oh323_digit_end(struct ast_channel *c, char digit, unsigned int duration) { - struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(c); char *token; if (!pvt) { @@ -590,14 +590,14 @@ static int oh323_digit_end(struct ast_channel *c, char digit, unsigned int durat static int oh323_call(struct ast_channel *c, const char *dest, int timeout) { int res = 0; - struct oh323_pvt *pvt = (struct oh323_pvt *)c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *)ast_channel_tech_pvt(c); const char *addr; char called_addr[1024]; if (h323debug) { ast_debug(1, "Calling to %s on %s\n", dest, ast_channel_name(c)); } - if ((c->_state != AST_STATE_DOWN) && (c->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(c) != AST_STATE_DOWN) && (ast_channel_state(c) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "Line is already in use (%s)\n", ast_channel_name(c)); return -1; } @@ -649,12 +649,12 @@ static int oh323_call(struct ast_channel *c, const char *dest, int timeout) } else pvt->options.redirect_reason = -1; - pvt->options.transfer_capability = c->transfercapability; + pvt->options.transfer_capability = ast_channel_transfercapability(c); /* indicate that this is an outgoing call */ pvt->outgoing = 1; - ast_verb(3, "Requested transfer capability: 0x%.2x - %s\n", c->transfercapability, ast_transfercapability2str(c->transfercapability)); + ast_verb(3, "Requested transfer capability: 0x%.2x - %s\n", ast_channel_transfercapability(c), ast_transfercapability2str(ast_channel_transfercapability(c))); if (h323debug) ast_debug(1, "Placing outgoing call to %s, %d/%d\n", called_addr, pvt->options.dtmfcodec[0], pvt->options.dtmfcodec[1]); ast_mutex_unlock(&pvt->lock); @@ -670,7 +670,7 @@ static int oh323_call(struct ast_channel *c, const char *dest, int timeout) static int oh323_answer(struct ast_channel *c) { int res; - struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(c); char *token; if (h323debug) @@ -684,7 +684,7 @@ static int oh323_answer(struct ast_channel *c) ast_free(token); oh323_update_info(c); - if (c->_state != AST_STATE_UP) { + if (ast_channel_state(c) != AST_STATE_UP) { ast_setstate(c, AST_STATE_UP); } return res; @@ -692,7 +692,7 @@ static int oh323_answer(struct ast_channel *c) static int oh323_hangup(struct ast_channel *c) { - struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(c); int q931cause = AST_CAUSE_NORMAL_CLEARING; char *call_token; @@ -700,7 +700,7 @@ static int oh323_hangup(struct ast_channel *c) if (h323debug) ast_debug(1, "Hanging up and scheduling destroy of call %s\n", ast_channel_name(c)); - if (!c->tech_pvt) { + if (!ast_channel_tech_pvt(c)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } @@ -713,10 +713,10 @@ static int oh323_hangup(struct ast_channel *c) } pvt->owner = NULL; - c->tech_pvt = NULL; + ast_channel_tech_pvt_set(c, NULL); - if (c->hangupcause) { - q931cause = c->hangupcause; + if (ast_channel_hangupcause(c)) { + q931cause = ast_channel_hangupcause(c); } else { const char *cause = pbx_builtin_getvar_helper(c, "DIALSTATUS"); if (cause) { @@ -775,7 +775,7 @@ static struct ast_frame *oh323_rtp_read(struct oh323_pvt *pvt) if (f && pvt->owner) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { - if (!ast_format_cap_iscompatible(pvt->owner->nativeformats, &f->subclass.format)) { + if (!ast_format_cap_iscompatible(ast_channel_nativeformats(pvt->owner), &f->subclass.format)) { /* Try to avoid deadlock */ if (ast_channel_trylock(pvt->owner)) { ast_log(LOG_NOTICE, "Format changed but channel is locked. Ignoring frame...\n"); @@ -783,7 +783,7 @@ static struct ast_frame *oh323_rtp_read(struct oh323_pvt *pvt) } if (h323debug) ast_debug(1, "Oooh, format changed to '%s'\n", ast_getformatname(&f->subclass.format)); - ast_format_cap_set(pvt->owner->nativeformats, &f->subclass.format); + ast_format_cap_set(ast_channel_nativeformats(pvt->owner), &f->subclass.format); pvt->nativeformats = ast_format_to_old_bitfield(&f->subclass.format); @@ -817,10 +817,10 @@ static struct ast_frame *oh323_rtp_read(struct oh323_pvt *pvt) static struct ast_frame *oh323_read(struct ast_channel *c) { struct ast_frame *fr; - struct oh323_pvt *pvt = (struct oh323_pvt *)c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *)ast_channel_tech_pvt(c); ast_mutex_lock(&pvt->lock); __oh323_update_info(c, pvt); - switch(c->fdno) { + switch(ast_channel_fdno(c)) { case 0: fr = oh323_rtp_read(pvt); break; @@ -831,7 +831,7 @@ static struct ast_frame *oh323_read(struct ast_channel *c) fr = &ast_null_frame; break; default: - ast_log(LOG_ERROR, "Unable to handle fd %d on channel %s\n", c->fdno, ast_channel_name(c)); + ast_log(LOG_ERROR, "Unable to handle fd %d on channel %s\n", ast_channel_fdno(c), ast_channel_name(c)); fr = &ast_null_frame; break; } @@ -841,7 +841,7 @@ static struct ast_frame *oh323_read(struct ast_channel *c) static int oh323_write(struct ast_channel *c, struct ast_frame *frame) { - struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(c); int res = 0; if (frame->frametype != AST_FRAME_VOICE) { if (frame->frametype == AST_FRAME_IMAGE) { @@ -851,10 +851,10 @@ static int oh323_write(struct ast_channel *c, struct ast_frame *frame) return 0; } } else { - if (!(ast_format_cap_iscompatible(c->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(c), &frame->subclass.format))) { char tmp[256]; ast_log(LOG_WARNING, "Asked to transmit frame type '%s', while native formats is '%s' (read/write = %s/%s)\n", - ast_getformatname(&frame->subclass.format), ast_getformatname_multiple(tmp, sizeof(tmp), c->nativeformats), ast_getformatname(&c->readformat), ast_getformatname(&c->writeformat)); + ast_getformatname(&frame->subclass.format), ast_getformatname_multiple(tmp, sizeof(tmp), ast_channel_nativeformats(c)), ast_getformatname(&c->readformat), ast_getformatname(&c->writeformat)); return 0; } } @@ -871,7 +871,7 @@ static int oh323_write(struct ast_channel *c, struct ast_frame *frame) static int oh323_indicate(struct ast_channel *c, int condition, const void *data, size_t datalen) { - struct oh323_pvt *pvt = (struct oh323_pvt *) c->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(c); char *token = (char *)NULL; int res = -1; int got_progress; @@ -890,13 +890,13 @@ static int oh323_indicate(struct ast_channel *c, int condition, const void *data switch(condition) { case AST_CONTROL_RINGING: - if (c->_state == AST_STATE_RING || c->_state == AST_STATE_RINGING) { + if (ast_channel_state(c) == AST_STATE_RING || ast_channel_state(c) == AST_STATE_RINGING) { h323_send_alerting(token); res = (got_progress ? 0 : -1); /* Do not simulate any audio tones if we got PROGRESS message */ } break; case AST_CONTROL_PROGRESS: - if (c->_state != AST_STATE_UP) { + if (ast_channel_state(c) != AST_STATE_UP) { /* Do not send PROGRESS message more than once */ if (!got_progress) h323_send_progress(token); @@ -904,7 +904,7 @@ static int oh323_indicate(struct ast_channel *c, int condition, const void *data } break; case AST_CONTROL_BUSY: - if (c->_state != AST_STATE_UP) { + if (ast_channel_state(c) != AST_STATE_UP) { h323_answering_call(token, 1); ast_softhangup_nolock(c, AST_SOFTHANGUP_DEV); res = 0; @@ -915,7 +915,7 @@ static int oh323_indicate(struct ast_channel *c, int condition, const void *data * at this time. Treat a response of Incomplete as if it were congestion. */ case AST_CONTROL_CONGESTION: - if (c->_state != AST_STATE_UP) { + if (ast_channel_state(c) != AST_STATE_UP) { h323_answering_call(token, 1); ast_softhangup_nolock(c, AST_SOFTHANGUP_DEV); res = 0; @@ -959,7 +959,7 @@ static int oh323_indicate(struct ast_channel *c, int condition, const void *data static int oh323_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct oh323_pvt *pvt = (struct oh323_pvt *) newchan->tech_pvt; + struct oh323_pvt *pvt = (struct oh323_pvt *) ast_channel_tech_pvt(newchan); ast_mutex_lock(&pvt->lock); if (pvt->owner != oldchan) { @@ -1049,17 +1049,17 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c ast_module_ref(ast_module_info->self); ast_mutex_lock(&pvt->lock); if (ch) { - ch->tech = &oh323_tech; + ast_channel_tech_set(ch, &oh323_tech); if (!(fmt = pvt->jointcapability) && !(fmt = pvt->options.capability)) fmt = global_options.capability; - ast_format_cap_from_old_bitfield(ch->nativeformats, fmt); - ast_codec_choose(&pvt->options.prefs, ch->nativeformats, 1, &tmpfmt)/* | (pvt->jointcapability & AST_FORMAT_VIDEO_MASK)*/; + ast_format_cap_from_old_bitfield(ast_channel_nativeformats(ch), fmt); + ast_codec_choose(&pvt->options.prefs, ast_channel_nativeformats(ch), 1, &tmpfmt)/* | (pvt->jointcapability & AST_FORMAT_VIDEO_MASK)*/; - ast_format_cap_set(ch->nativeformats, &tmpfmt); + ast_format_cap_set(ast_channel_nativeformats(ch), &tmpfmt); - pvt->nativeformats = ast_format_cap_to_old_bitfield(ch->nativeformats); - ast_best_codec(ch->nativeformats, &tmpfmt); + pvt->nativeformats = ast_format_cap_to_old_bitfield(ast_channel_nativeformats(ch)); + ast_best_codec(ast_channel_nativeformats(ch), &tmpfmt); ast_format_copy(&ch->writeformat, &tmpfmt); ast_format_copy(&ch->rawwriteformat, &tmpfmt); ast_format_copy(&ch->readformat, &tmpfmt); @@ -1082,7 +1082,7 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c } #endif if (state == AST_STATE_RING) { - ch->rings = 1; + ast_channel_rings_set(ch, 1); } /* Allocate dsp for in-band DTMF support */ if (pvt->options.dtmfmode & H323_DTMF_INBAND) { @@ -1090,18 +1090,18 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c ast_dsp_set_features(pvt->vad, DSP_FEATURE_DIGIT_DETECT); } /* Register channel functions. */ - ch->tech_pvt = pvt; + ast_channel_tech_pvt_set(ch, pvt); /* Set the owner of this channel */ pvt->owner = ch; ast_channel_context_set(ch, pvt->context); ast_channel_exten_set(ch, pvt->exten); - ch->priority = 1; + ast_channel_priority_set(ch, 1); if (!ast_strlen_zero(pvt->accountcode)) { ast_channel_accountcode_set(ch, pvt->accountcode); } if (pvt->amaflags) { - ch->amaflags = pvt->amaflags; + ast_channel_amaflags_set(ch, pvt->amaflags); } /* Don't use ast_set_callerid() here because it will @@ -1124,7 +1124,7 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c ch->dialed.number.str = ast_strdup(pvt->exten); } if (pvt->cd.transfer_capability >= 0) - ch->transfercapability = pvt->cd.transfer_capability; + ast_channel_transfercapability_set(ch, pvt->cd.transfer_capability); if (state != AST_STATE_DOWN) { if (ast_pbx_start(ch)) { ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ast_channel_name(ch)); @@ -2074,12 +2074,12 @@ static void setup_rtp_connection(unsigned call_reference, const char *remoteIp, ast_format_cap_from_old_bitfield(pvt_native, pvt->nativeformats); /* Re-build translation path only if native format(s) has been changed */ - if (!(ast_format_cap_identical(pvt->owner->nativeformats, pvt_native))) { + if (!(ast_format_cap_identical(ast_channel_nativeformats(pvt->owner), pvt_native))) { if (h323debug) { char tmp[256], tmp2[256]; - ast_debug(1, "Native format changed to '%s' from '%s', read format is %s, write format is %s\n", ast_getformatname_multiple(tmp, sizeof(tmp), pvt_native), ast_getformatname_multiple(tmp2, sizeof(tmp2), pvt->owner->nativeformats), ast_getformatname(&pvt->owner->readformat), ast_getformatname(&pvt->owner->writeformat)); + ast_debug(1, "Native format changed to '%s' from '%s', read format is %s, write format is %s\n", ast_getformatname_multiple(tmp, sizeof(tmp), pvt_native), ast_getformatname_multiple(tmp2, sizeof(tmp2), ast_channel_nativeformats(pvt->owner)), ast_getformatname(&pvt->owner->readformat), ast_getformatname(&pvt->owner->writeformat)); } - ast_format_cap_copy(pvt->owner->nativeformats, pvt_native); + ast_format_cap_copy(ast_channel_nativeformats(pvt->owner), pvt_native); ast_set_read_format(pvt->owner, &pvt->owner->readformat); ast_set_write_format(pvt->owner, &pvt->owner->writeformat); } @@ -2481,7 +2481,7 @@ static void hangup_connection(unsigned int call_reference, const char *token, in } if (pvt->owner && !ast_channel_trylock(pvt->owner)) { pvt->owner->_softhangup |= AST_SOFTHANGUP_DEV; - pvt->owner->hangupcause = pvt->hangupcause = cause; + ast_channel_hangupcause_set(pvt->owner, pvt->hangupcause = cause); ast_queue_hangup_with_cause(pvt->owner, cause); ast_channel_unlock(pvt->owner); } @@ -3218,7 +3218,7 @@ static enum ast_rtp_glue_result oh323_get_rtp_peer(struct ast_channel *chan, str struct oh323_pvt *pvt; enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_LOCAL; - if (!(pvt = (struct oh323_pvt *)chan->tech_pvt)) + if (!(pvt = (struct oh323_pvt *)ast_channel_tech_pvt(chan))) return AST_RTP_GLUE_RESULT_FORBID; ast_mutex_lock(&pvt->lock); @@ -3280,7 +3280,7 @@ static int oh323_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance mode = convertcap(&chan->writeformat); #endif - pvt = (struct oh323_pvt *) chan->tech_pvt; + pvt = (struct oh323_pvt *) ast_channel_tech_pvt(chan); if (!pvt) { ast_log(LOG_ERROR, "No Private Structure, this is bad\n"); return -1; diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 9bed3b8b3..6a50b8ba2 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -3370,7 +3370,7 @@ static int iax2_predestroy(int callno) } if ((c = pvt->owner)) { - c->tech_pvt = NULL; + ast_channel_tech_pvt_set(c, NULL); iax2_queue_hangup(callno); pvt->owner = NULL; ast_module_unref(ast_module_info->self); @@ -3498,7 +3498,7 @@ static void __attempt_transmit(const void *data) iax2_queue_frame(callno, &fr); /* XXX */ /* Remember, owner could disappear */ if (iaxs[callno] && iaxs[callno]->owner) - iaxs[callno]->owner->hangupcause = AST_CAUSE_DESTINATION_OUT_OF_ORDER; + ast_channel_hangupcause_set(iaxs[callno]->owner, AST_CAUSE_DESTINATION_OUT_OF_ORDER); } else { if (iaxs[callno]->reg) { memset(&iaxs[callno]->reg->us, 0, sizeof(iaxs[callno]->reg->us)); @@ -4188,7 +4188,7 @@ static int schedule_delivery(struct iax_frame *fr, int updatehistory, int fromtr /* if the user hasn't requested we force the use of the jitterbuffer, and we're bridged to * a channel that can accept jitter, then flush and suspend the jb, and send this frame straight through */ - if ( (!ast_test_flag64(iaxs[fr->callno], IAX_FORCEJITTERBUF)) && owner && bridge && (bridge->tech->properties & AST_CHAN_TP_WANTSJITTER) ) { + if ( (!ast_test_flag64(iaxs[fr->callno], IAX_FORCEJITTERBUF)) && owner && bridge && (ast_channel_tech(bridge)->properties & AST_CHAN_TP_WANTSJITTER) ) { jb_frame frame; ast_channel_unlock(owner); @@ -4270,34 +4270,34 @@ static int iax2_transmit(struct iax_frame *fr) static int iax2_digit_begin(struct ast_channel *c, char digit) { - return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_DTMF_BEGIN, digit, 0, NULL, 0, -1); + return send_command_locked(PTR_TO_CALLNO(ast_channel_tech_pvt(c)), AST_FRAME_DTMF_BEGIN, digit, 0, NULL, 0, -1); } static int iax2_digit_end(struct ast_channel *c, char digit, unsigned int duration) { - return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_DTMF_END, digit, 0, NULL, 0, -1); + return send_command_locked(PTR_TO_CALLNO(ast_channel_tech_pvt(c)), AST_FRAME_DTMF_END, digit, 0, NULL, 0, -1); } static int iax2_sendtext(struct ast_channel *c, const char *text) { - return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_TEXT, + return send_command_locked(PTR_TO_CALLNO(ast_channel_tech_pvt(c)), AST_FRAME_TEXT, 0, 0, (unsigned char *)text, strlen(text) + 1, -1); } static int iax2_sendimage(struct ast_channel *c, struct ast_frame *img) { - return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_IMAGE, img->subclass.integer, 0, img->data.ptr, img->datalen, -1); + return send_command_locked(PTR_TO_CALLNO(ast_channel_tech_pvt(c)), AST_FRAME_IMAGE, img->subclass.integer, 0, img->data.ptr, img->datalen, -1); } static int iax2_sendhtml(struct ast_channel *c, int subclass, const char *data, int datalen) { - return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_HTML, subclass, 0, (unsigned char *)data, datalen, -1); + return send_command_locked(PTR_TO_CALLNO(ast_channel_tech_pvt(c)), AST_FRAME_HTML, subclass, 0, (unsigned char *)data, datalen, -1); } static int iax2_fixup(struct ast_channel *oldchannel, struct ast_channel *newchan) { - unsigned short callno = PTR_TO_CALLNO(newchan->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(newchan)); ast_mutex_lock(&iaxsl[callno]); if (iaxs[callno]) iaxs[callno]->owner = newchan; @@ -4572,11 +4572,11 @@ static int create_addr(const char *peername, struct ast_channel *c, struct socka memcpy(&ourprefs, &prefs, sizeof(ourprefs)); if (c) { struct ast_format tmpfmt; - ast_format_cap_iter_start(c->nativeformats); - while (!(ast_format_cap_iter_next(c->nativeformats, &tmpfmt))) { + ast_format_cap_iter_start(ast_channel_nativeformats(c)); + while (!(ast_format_cap_iter_next(ast_channel_nativeformats(c), &tmpfmt))) { ast_codec_pref_prepend(&ourprefs, &tmpfmt, 1); } - ast_format_cap_iter_end(c->nativeformats); + ast_format_cap_iter_end(ast_channel_nativeformats(c)); } ast_codec_pref_convert(&ourprefs, cai->prefs, sizeof(cai->prefs), 1); return 0; @@ -4605,12 +4605,12 @@ static int create_addr(const char *peername, struct ast_channel *c, struct socka /* Move the calling channel's native codec to the top of the preference list */ if (c) { struct ast_format tmpfmt; - ast_format_cap_iter_start(c->nativeformats); - while (!(ast_format_cap_iter_next(c->nativeformats, &tmpfmt))) { + ast_format_cap_iter_start(ast_channel_nativeformats(c)); + while (!(ast_format_cap_iter_next(ast_channel_nativeformats(c), &tmpfmt))) { ast_debug(1, "prepending %s to prefs\n", ast_getformatname(&tmpfmt)); ast_codec_pref_prepend(&ourprefs, &tmpfmt, 1); } - ast_format_cap_iter_end(c->nativeformats); + ast_format_cap_iter_end(ast_channel_nativeformats(c)); } ast_codec_pref_convert(&ourprefs, cai->prefs, sizeof(cai->prefs), 1); ast_copy_string(cai->context, peer->context, sizeof(cai->context)); @@ -5013,7 +5013,7 @@ static int iax2_call(struct ast_channel *c, const char *dest, int timeout) char *l=NULL, *n=NULL, *tmpstr; struct iax_ie_data ied; char *defaultrdest = "s"; - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); struct parsed_dial_string pds; struct create_addr_info cai; struct ast_var_t *var; @@ -5025,7 +5025,7 @@ static int iax2_call(struct ast_channel *c, const char *dest, int timeout) unsigned char osp_buffer[256]; iax2_format iax2_tmpfmt; - if ((c->_state != AST_STATE_DOWN) && (c->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(c) != AST_STATE_DOWN) && (ast_channel_state(c) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "Channel is already in use (%s)?\n", ast_channel_name(c)); return -1; } @@ -5050,7 +5050,7 @@ static int iax2_call(struct ast_channel *c, const char *dest, int timeout) } if (ast_test_flag64(iaxs[callno], IAX_FORCE_ENCRYPT) && !cai.encmethods) { ast_log(LOG_WARNING, "Encryption forced for call, but not enabled\n"); - c->hangupcause = AST_CAUSE_BEARERCAPABILITY_NOTAVAIL; + ast_channel_hangupcause_set(c, AST_CAUSE_BEARERCAPABILITY_NOTAVAIL); return -1; } if (ast_strlen_zero(cai.secret) && ast_test_flag64(iaxs[callno], IAX_FORCE_ENCRYPT)) { @@ -5150,13 +5150,13 @@ static int iax2_call(struct ast_channel *c, const char *dest, int timeout) if (pds.password) ast_string_field_set(iaxs[callno], secret, pds.password); - iax2_tmpfmt = ast_format_cap_to_old_bitfield(c->nativeformats); + iax2_tmpfmt = ast_format_cap_to_old_bitfield(ast_channel_nativeformats(c)); iax_ie_append_int(&ied, IAX_IE_FORMAT, (int) iax2_tmpfmt); iax_ie_append_versioned_uint64(&ied, IAX_IE_FORMAT2, 0, iax2_tmpfmt); iax_ie_append_int(&ied, IAX_IE_CAPABILITY, (int) iaxs[callno]->capability); iax_ie_append_versioned_uint64(&ied, IAX_IE_CAPABILITY2, 0, iaxs[callno]->capability); - iax_ie_append_short(&ied, IAX_IE_ADSICPE, c->adsicpe); + iax_ie_append_short(&ied, IAX_IE_ADSICPE, ast_channel_adsicpe(c)); iax_ie_append_int(&ied, IAX_IE_DATETIME, iax2_datetime(cai.timezone)); if (iaxs[callno]->maxtime) { @@ -5220,7 +5220,7 @@ static int iax2_call(struct ast_channel *c, const char *dest, int timeout) static int iax2_hangup(struct ast_channel *c) { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); struct iax_ie_data ied; int alreadygone; memset(&ied, 0, sizeof(ied)); @@ -5229,7 +5229,7 @@ static int iax2_hangup(struct ast_channel *c) ast_debug(1, "We're hanging up %s now...\n", ast_channel_name(c)); alreadygone = ast_test_flag64(iaxs[callno], IAX_ALREADYGONE); /* Send the hangup unless we have had a transmission error or are already gone */ - iax_ie_append_byte(&ied, IAX_IE_CAUSECODE, (unsigned char)c->hangupcause); + iax_ie_append_byte(&ied, IAX_IE_CAUSECODE, (unsigned char)ast_channel_hangupcause(c)); if (!iaxs[callno]->error && !alreadygone) { if (send_command_final(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_HANGUP, 0, ied.buf, ied.pos, -1)) { ast_log(LOG_WARNING, "No final packet could be sent for callno %d\n", callno); @@ -5251,12 +5251,12 @@ static int iax2_hangup(struct ast_channel *c) iax2_destroy(callno); } } - } else if (c->tech_pvt) { + } else if (ast_channel_tech_pvt(c)) { /* If this call no longer exists, but the channel still * references it we need to set the channel's tech_pvt to null * to avoid ast_channel_free() trying to free it. */ - c->tech_pvt = NULL; + ast_channel_tech_pvt_set(c, NULL); } ast_mutex_unlock(&iaxsl[callno]); ast_verb(3, "Hungup '%s'\n", ast_channel_name(c)); @@ -5302,7 +5302,7 @@ static int iax2_setoption(struct ast_channel *c, int option, void *data, int dat case AST_OPTION_SECURE_SIGNALING: case AST_OPTION_SECURE_MEDIA: { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); ast_mutex_lock(&iaxsl[callno]); if ((*(int *) data)) { ast_set_flag64(iaxs[callno], IAX_FORCE_ENCRYPT); @@ -5323,7 +5323,7 @@ static int iax2_setoption(struct ast_channel *c, int option, void *data, int dat case AST_OPTION_DIGIT_DETECT: case AST_OPTION_FAX_DETECT: { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); struct chan_iax2_pvt *pvt; ast_mutex_lock(&iaxsl[callno]); @@ -5343,7 +5343,7 @@ static int iax2_setoption(struct ast_channel *c, int option, void *data, int dat h->flag = AST_OPTION_FLAG_REQUEST; h->option = htons(option); memcpy(h->data, data, datalen); - res = send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_CONTROL, + res = send_command_locked(PTR_TO_CALLNO(ast_channel_tech_pvt(c)), AST_FRAME_CONTROL, AST_CONTROL_OPTION, 0, (unsigned char *) h, datalen + sizeof(*h), -1); ast_free(h); @@ -5363,7 +5363,7 @@ static int iax2_queryoption(struct ast_channel *c, int option, void *data, int * case AST_OPTION_SECURE_SIGNALING: case AST_OPTION_SECURE_MEDIA: { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); ast_mutex_lock(&iaxsl[callno]); *((int *) data) = ast_test_flag64(iaxs[callno], IAX_FORCE_ENCRYPT) ? 1 : 0; ast_mutex_unlock(&iaxsl[callno]); @@ -5469,8 +5469,8 @@ static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_cha int res = -1; int transferstarted=0; struct ast_frame *f; - unsigned short callno0 = PTR_TO_CALLNO(c0->tech_pvt); - unsigned short callno1 = PTR_TO_CALLNO(c1->tech_pvt); + unsigned short callno0 = PTR_TO_CALLNO(ast_channel_tech_pvt(c0)); + unsigned short callno1 = PTR_TO_CALLNO(ast_channel_tech_pvt(c1)); struct timeval waittimer = {0, 0}; /* We currently do not support native bridging if a timeoutms value has been provided */ @@ -5497,26 +5497,26 @@ static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_cha cs[1] = c1; for (/* ever */;;) { /* Check in case we got masqueraded into */ - if ((c0->tech != &iax2_tech) || (c1->tech != &iax2_tech)) { + if ((ast_channel_tech(c0) != &iax2_tech) || (ast_channel_tech(c1) != &iax2_tech)) { ast_verb(3, "Can't masquerade, we're different...\n"); /* Remove from native mode */ - if (c0->tech == &iax2_tech) { + if (ast_channel_tech(c0) == &iax2_tech) { ast_mutex_lock(&iaxsl[callno0]); iaxs[callno0]->bridgecallno = 0; ast_mutex_unlock(&iaxsl[callno0]); } - if (c1->tech == &iax2_tech) { + if (ast_channel_tech(c1) == &iax2_tech) { ast_mutex_lock(&iaxsl[callno1]); iaxs[callno1]->bridgecallno = 0; ast_mutex_unlock(&iaxsl[callno1]); } return AST_BRIDGE_FAILED_NOWARN; } - if (!(ast_format_cap_identical(c0->nativeformats, c1->nativeformats))) { + if (!(ast_format_cap_identical(ast_channel_nativeformats(c0), ast_channel_nativeformats(c1)))) { char buf0[256]; char buf1[256]; - ast_getformatname_multiple(buf0, sizeof(buf0), c0->nativeformats); - ast_getformatname_multiple(buf1, sizeof(buf1), c1->nativeformats); + ast_getformatname_multiple(buf0, sizeof(buf0), ast_channel_nativeformats(c0)); + ast_getformatname_multiple(buf1, sizeof(buf1), ast_channel_nativeformats(c1)); ast_verb(3, "Operating with different codecs [%s] [%s] , can't native bridge...\n", buf0, buf1); /* Remove from native mode */ lock_both(callno0, callno1); @@ -5618,7 +5618,7 @@ static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_cha static int iax2_answer(struct ast_channel *c) { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); ast_debug(1, "Answering IAX2 call\n"); ast_mutex_lock(&iaxsl[callno]); if (iaxs[callno]) @@ -5629,7 +5629,7 @@ static int iax2_answer(struct ast_channel *c) static int iax2_indicate(struct ast_channel *c, int condition, const void *data, size_t datalen) { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); struct chan_iax2_pvt *pvt; int res = 0; @@ -5673,7 +5673,7 @@ done: static int iax2_transfer(struct ast_channel *c, const char *dest) { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); struct iax_ie_data ied = { "", }; char tmp[256], *context; enum ast_control_transfer message = AST_TRANSFER_SUCCESS; @@ -5745,17 +5745,17 @@ static struct ast_channel *ast_iax2_new(int callno, int state, iax2_format capab iax2_ami_channelupdate(i); if (!tmp) return NULL; - tmp->tech = &iax2_tech; + ast_channel_tech_set(tmp, &iax2_tech); /* We can support any format by default, until we get restricted */ - ast_format_cap_from_old_bitfield(tmp->nativeformats, capability); - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_format_cap_from_old_bitfield(ast_channel_nativeformats(tmp), capability); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_copy(&tmp->readformat, &tmpfmt); ast_format_copy(&tmp->rawreadformat, &tmpfmt); ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); - tmp->tech_pvt = CALLNO_TO_PTR(i->callno); + ast_channel_tech_pvt_set(tmp, CALLNO_TO_PTR(i->callno)); if (!ast_strlen_zero(i->parkinglot)) ast_channel_parkinglot_set(tmp, i->parkinglot); @@ -5782,13 +5782,13 @@ static struct ast_channel *ast_iax2_new(int callno, int state, iax2_format capab if (!ast_strlen_zero(i->accountcode)) ast_channel_accountcode_set(tmp, i->accountcode); if (i->amaflags) - tmp->amaflags = i->amaflags; + ast_channel_amaflags_set(tmp, i->amaflags); ast_channel_context_set(tmp, i->context); ast_channel_exten_set(tmp, i->exten); if (i->adsi) - tmp->adsicpe = i->peeradsicpe; + ast_channel_adsicpe_set(tmp, i->peeradsicpe); else - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); i->owner = tmp; i->capability = capability; @@ -7445,7 +7445,7 @@ static char *handle_cli_iax2_set_debug_jb(struct ast_cli_entry *e, int cmd, stru static int iax2_write(struct ast_channel *c, struct ast_frame *f) { - unsigned short callno = PTR_TO_CALLNO(c->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(c)); int res = -1; ast_mutex_lock(&iaxsl[callno]); if (iaxs[callno]) { @@ -9322,8 +9322,8 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2, const struct ast_channel *chan1m, *chan2m;/* Chan2m: The transferer, chan1m: The transferee */ pthread_t th; - chan1m = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan2), ast_channel_exten(chan1), ast_channel_context(chan1), ast_channel_linkedid(chan1), chan1->amaflags, "Parking/%s", ast_channel_name(chan1)); - chan2m = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan2), ast_channel_exten(chan2), ast_channel_context(chan2), ast_channel_linkedid(chan2), chan2->amaflags, "IAXPeer/%s", ast_channel_name(chan2)); + chan1m = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan2), ast_channel_exten(chan1), ast_channel_context(chan1), ast_channel_linkedid(chan1), ast_channel_amaflags(chan1), "Parking/%s", ast_channel_name(chan1)); + chan2m = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan2), ast_channel_exten(chan2), ast_channel_context(chan2), ast_channel_linkedid(chan2), ast_channel_amaflags(chan2), "IAXPeer/%s", ast_channel_name(chan2)); d = ast_calloc(1, sizeof(*d)); if (!chan1m || !chan2m || !d) { if (chan1m) { @@ -9363,7 +9363,7 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2, const /* Setup the extensions and such */ ast_channel_context_set(chan1m, ast_channel_context(chan1)); ast_channel_exten_set(chan1m, ast_channel_exten(chan1)); - chan1m->priority = chan1->priority; + ast_channel_priority_set(chan1m, ast_channel_priority(chan1)); ast_do_masquerade(chan1m); @@ -9388,7 +9388,7 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2, const /* Setup the extensions and such */ ast_channel_context_set(chan2m, ast_channel_context(chan2)); ast_channel_exten_set(chan2m, ast_channel_exten(chan2)); - chan2m->priority = chan2->priority; + ast_channel_priority_set(chan2m, ast_channel_priority(chan2)); ast_do_masquerade(chan2m); @@ -9876,7 +9876,7 @@ static void set_hangup_source_and_cause(int callno, unsigned char causecode) iax2_lock_owner(callno); if (iaxs[callno] && iaxs[callno]->owner) { if (causecode) { - iaxs[callno]->owner->hangupcause = causecode; + ast_channel_hangupcause_set(iaxs[callno]->owner, causecode); } ast_set_hangupsource(iaxs[callno]->owner, ast_channel_name(iaxs[callno]->owner), 0); ast_channel_unlock(iaxs[callno]->owner); @@ -10357,8 +10357,8 @@ static int socket_process(struct iax2_thread *thread) iax2_lock_owner(fr->callno); if (iaxs[fr->callno]) { if (iaxs[fr->callno]->owner) { - struct ast_format_cap *orignative = ast_format_cap_dup(iaxs[fr->callno]->owner->nativeformats); - struct ast_format_cap *native = iaxs[fr->callno]->owner->nativeformats; + struct ast_format_cap *orignative = ast_format_cap_dup(ast_channel_nativeformats(iaxs[fr->callno]->owner)); + struct ast_format_cap *native = ast_channel_nativeformats(iaxs[fr->callno]->owner); if (orignative) { ast_format_cap_set(native, &f.subclass.format); if (iaxs[fr->callno]->owner->readformat.id) { @@ -10391,9 +10391,9 @@ static int socket_process(struct iax2_thread *thread) } if (f.frametype == AST_FRAME_CONTROL && iaxs[fr->callno]->owner) { if (f.subclass.integer == AST_CONTROL_BUSY) { - iaxs[fr->callno]->owner->hangupcause = AST_CAUSE_BUSY; + ast_channel_hangupcause_set(iaxs[fr->callno]->owner, AST_CAUSE_BUSY); } else if (f.subclass.integer == AST_CONTROL_CONGESTION) { - iaxs[fr->callno]->owner->hangupcause = AST_CAUSE_CONGESTION; + ast_channel_hangupcause_set(iaxs[fr->callno]->owner, AST_CAUSE_CONGESTION); } } if (f.frametype == AST_FRAME_IAX) { @@ -10837,7 +10837,7 @@ static int socket_process(struct iax2_thread *thread) iaxs[fr->callno]->peerformat = ies.format; } else { if (iaxs[fr->callno]->owner) - iaxs[fr->callno]->peerformat = ast_format_cap_to_old_bitfield(iaxs[fr->callno]->owner->nativeformats); + iaxs[fr->callno]->peerformat = ast_format_cap_to_old_bitfield(ast_channel_nativeformats(iaxs[fr->callno]->owner)); else iaxs[fr->callno]->peerformat = iaxs[fr->callno]->capability; } @@ -10863,8 +10863,8 @@ static int socket_process(struct iax2_thread *thread) if (iaxs[fr->callno] && iaxs[fr->callno]->owner) { char tmp[256]; /* Switch us to use a compatible format */ - ast_format_cap_from_old_bitfield(iaxs[fr->callno]->owner->nativeformats, iaxs[fr->callno]->peerformat); - ast_verb(3, "Format for call is %s\n", ast_getformatname_multiple(tmp, sizeof(tmp), iaxs[fr->callno]->owner->nativeformats)); + ast_format_cap_from_old_bitfield(ast_channel_nativeformats(iaxs[fr->callno]->owner), iaxs[fr->callno]->peerformat); + ast_verb(3, "Format for call is %s\n", ast_getformatname_multiple(tmp, sizeof(tmp), ast_channel_nativeformats(iaxs[fr->callno]->owner))); /* Setup read/write formats properly. */ if (iaxs[fr->callno]->owner->writeformat.id) @@ -11915,7 +11915,7 @@ static int iax2_prov_app(struct ast_channel *chan, const char *data) char *sdata; char *opts; int force =0; - unsigned short callno = PTR_TO_CALLNO(chan->tech_pvt); + unsigned short callno = PTR_TO_CALLNO(ast_channel_tech_pvt(chan)); if (ast_strlen_zero(data)) data = "default"; sdata = ast_strdupa(data); @@ -11923,7 +11923,7 @@ static int iax2_prov_app(struct ast_channel *chan, const char *data) if (opts) *opts='\0'; - if (chan->tech != &iax2_tech) { + if (ast_channel_tech(chan) != &iax2_tech) { ast_log(LOG_NOTICE, "Can't provision a non-IAX device!\n"); return -1; } @@ -12159,24 +12159,24 @@ static struct ast_channel *iax2_request(const char *type, struct ast_format_cap struct ast_format_cap *joint; /* Choose a format we can live with */ - if ((joint = ast_format_cap_joint(c->nativeformats, cap))) { - ast_format_cap_copy(c->nativeformats, joint); + if ((joint = ast_format_cap_joint(ast_channel_nativeformats(c), cap))) { + ast_format_cap_copy(ast_channel_nativeformats(c), joint); joint = ast_format_cap_destroy(joint); } else { struct ast_format best_fmt_cap; struct ast_format best_fmt_native; - res = ast_translator_best_choice(cap, c->nativeformats, &best_fmt_cap, &best_fmt_native); + res = ast_translator_best_choice(cap, ast_channel_nativeformats(c), &best_fmt_cap, &best_fmt_native); if (res < 0) { char tmp[256]; char tmp2[256]; ast_log(LOG_WARNING, "Unable to create translator path for %s to %s on %s\n", - ast_getformatname_multiple(tmp, sizeof(tmp), c->nativeformats), ast_getformatname_multiple(tmp2, sizeof(tmp2), cap), ast_channel_name(c)); + ast_getformatname_multiple(tmp, sizeof(tmp), ast_channel_nativeformats(c)), ast_getformatname_multiple(tmp2, sizeof(tmp2), cap), ast_channel_name(c)); ast_hangup(c); return NULL; } - ast_format_cap_set(c->nativeformats, &best_fmt_native); + ast_format_cap_set(ast_channel_nativeformats(c), &best_fmt_native); } - ast_best_codec(c->nativeformats, &c->readformat); + ast_best_codec(ast_channel_nativeformats(c), &c->readformat); ast_format_copy(&c->writeformat, &c->readformat); } @@ -13897,9 +13897,9 @@ static int function_iaxpeer(struct ast_channel *chan, const char *cmd, char *dat /* if our channel, return the IP address of the endpoint of current channel */ if (!strcmp(peername,"CURRENTCHANNEL")) { unsigned short callno; - if (chan->tech != &iax2_tech) + if (ast_channel_tech(chan) != &iax2_tech) return -1; - callno = PTR_TO_CALLNO(chan->tech_pvt); + callno = PTR_TO_CALLNO(ast_channel_tech_pvt(chan)); ast_copy_string(buf, iaxs[callno]->addr.sin_addr.s_addr ? ast_inet_ntoa(iaxs[callno]->addr.sin_addr) : "", len); return 0; } @@ -13964,12 +13964,12 @@ static int acf_channel_read(struct ast_channel *chan, const char *funcname, char unsigned int callno; int res = 0; - if (!chan || chan->tech != &iax2_tech) { + if (!chan || ast_channel_tech(chan) != &iax2_tech) { ast_log(LOG_ERROR, "This function requires a valid IAX2 channel\n"); return -1; } - callno = PTR_TO_CALLNO(chan->tech_pvt); + callno = PTR_TO_CALLNO(ast_channel_tech_pvt(chan)); ast_mutex_lock(&iaxsl[callno]); if (!(pvt = iaxs[callno])) { ast_mutex_unlock(&iaxsl[callno]); diff --git a/channels/chan_jingle.c b/channels/chan_jingle.c index 9825f73d8..a683a4160 100644 --- a/channels/chan_jingle.c +++ b/channels/chan_jingle.c @@ -386,7 +386,7 @@ static int jingle_ringing_ack(void *data, ikspak *pak) static int jingle_answer(struct ast_channel *ast) { - struct jingle_pvt *p = ast->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(ast); struct jingle *client = p->parent; int res = 0; @@ -399,7 +399,7 @@ static int jingle_answer(struct ast_channel *ast) static enum ast_rtp_glue_result jingle_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **instance) { - struct jingle_pvt *p = chan->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(chan); enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_FORBID; if (!p) @@ -418,7 +418,7 @@ static enum ast_rtp_glue_result jingle_get_rtp_peer(struct ast_channel *chan, st static void jingle_get_codec(struct ast_channel *chan, struct ast_format_cap *result) { - struct jingle_pvt *p = chan->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(chan); ast_mutex_lock(&p->lock); ast_format_cap_copy(result, p->peercap); ast_mutex_unlock(&p->lock); @@ -428,7 +428,7 @@ static int jingle_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance { struct jingle_pvt *p; - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) return -1; ast_mutex_lock(&p->lock); @@ -842,7 +842,7 @@ static struct ast_channel *jingle_new(struct jingle *client, struct jingle_pvt * ast_log(LOG_WARNING, "Unable to allocate Jingle channel structure!\n"); return NULL; } - tmp->tech = &jingle_tech; + ast_channel_tech_set(tmp, &jingle_tech); /* Select our native format based on codec preference until we receive something from another device to the contrary. */ @@ -858,12 +858,12 @@ static struct ast_channel *jingle_new(struct jingle *client, struct jingle_pvt * ast_rtp_codecs_packetization_set(ast_rtp_instance_get_codecs(i->rtp), i->rtp, &i->prefs); ast_codec_choose(&i->prefs, what, 1, &tmpfmt); - ast_format_cap_add(tmp->nativeformats, &tmpfmt); + ast_format_cap_add(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_cap_iter_start(i->jointcap); while (!(ast_format_cap_iter_next(i->jointcap, &tmpfmt))) { if (AST_FORMAT_GET_TYPE(tmpfmt.id) == AST_FORMAT_TYPE_VIDEO) { - ast_format_cap_add(tmp->nativeformats, &tmpfmt); + ast_format_cap_add(ast_channel_nativeformats(tmp), &tmpfmt); } } ast_format_cap_iter_end(i->jointcap); @@ -877,16 +877,16 @@ static struct ast_channel *jingle_new(struct jingle *client, struct jingle_pvt * ast_channel_set_fd(tmp, 3, ast_rtp_instance_fd(i->vrtp, 1)); } if (state == AST_STATE_RING) - tmp->rings = 1; - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_rings_set(tmp, 1); + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); ast_format_copy(&tmp->readformat, &tmpfmt); ast_format_copy(&tmp->rawreadformat, &tmpfmt); - tmp->tech_pvt = i; + ast_channel_tech_pvt_set(tmp, i); tmp->callgroup = client->callgroup; tmp->pickupgroup = client->pickupgroup; @@ -895,7 +895,7 @@ static struct ast_channel *jingle_new(struct jingle *client, struct jingle_pvt * if (!ast_strlen_zero(client->accountcode)) ast_channel_accountcode_set(tmp, client->accountcode); if (client->amaflags) - tmp->amaflags = client->amaflags; + ast_channel_amaflags_set(tmp, client->amaflags); if (!ast_strlen_zero(client->language)) ast_channel_language_set(tmp, client->language); if (!ast_strlen_zero(client->musicclass)) @@ -912,12 +912,12 @@ static struct ast_channel *jingle_new(struct jingle *client, struct jingle_pvt * if (!ast_strlen_zero(i->exten) && strcmp(i->exten, "s")) { tmp->dialed.number.str = ast_strdup(i->exten); } - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); if (i->rtp) ast_jb_configure(tmp, &global_jbconf); if (state != AST_STATE_DOWN && ast_pbx_start(tmp)) { ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ast_channel_name(tmp)); - tmp->hangupcause = AST_CAUSE_SWITCH_CONGESTION; + ast_channel_hangupcause_set(tmp, AST_CAUSE_SWITCH_CONGESTION); ast_hangup(tmp); tmp = NULL; } @@ -1229,10 +1229,10 @@ static struct ast_frame *jingle_rtp_read(struct ast_channel *ast, struct jingle_ if (p->owner) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { - if (!(ast_format_cap_iscompatible(p->owner->nativeformats, &f->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(p->owner), &f->subclass.format))) { ast_debug(1, "Oooh, format changed to %s\n", ast_getformatname(&f->subclass.format)); - ast_format_cap_remove_bytype(p->owner->nativeformats, AST_FORMAT_TYPE_AUDIO); - ast_format_cap_add(p->owner->nativeformats, &f->subclass.format); + ast_format_cap_remove_bytype(ast_channel_nativeformats(p->owner), AST_FORMAT_TYPE_AUDIO); + ast_format_cap_add(ast_channel_nativeformats(p->owner), &f->subclass.format); ast_set_read_format(p->owner, &p->owner->readformat); ast_set_write_format(p->owner, &p->owner->writeformat); } @@ -1249,7 +1249,7 @@ static struct ast_frame *jingle_rtp_read(struct ast_channel *ast, struct jingle_ static struct ast_frame *jingle_read(struct ast_channel *ast) { struct ast_frame *fr; - struct jingle_pvt *p = ast->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(ast); ast_mutex_lock(&p->lock); fr = jingle_rtp_read(ast, p); @@ -1260,17 +1260,17 @@ static struct ast_frame *jingle_read(struct ast_channel *ast) /*! \brief Send frame to media channel (rtp) */ static int jingle_write(struct ast_channel *ast, struct ast_frame *frame) { - struct jingle_pvt *p = ast->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(ast); int res = 0; char buf[256]; switch (frame->frametype) { case AST_FRAME_VOICE: - if (!(ast_format_cap_iscompatible(ast->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &frame->subclass.format))) { ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_getformatname(&frame->subclass.format), - ast_getformatname_multiple(buf, sizeof(buf), ast->nativeformats), + ast_getformatname_multiple(buf, sizeof(buf), ast_channel_nativeformats(ast)), ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat)); return 0; @@ -1306,7 +1306,7 @@ static int jingle_write(struct ast_channel *ast, struct ast_frame *frame) static int jingle_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct jingle_pvt *p = newchan->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(newchan); ast_mutex_lock(&p->lock); if ((p->owner != oldchan)) { @@ -1342,7 +1342,7 @@ static int jingle_sendtext(struct ast_channel *chan, const char *text) { int res = 0; struct aji_client *client = NULL; - struct jingle_pvt *p = chan->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(chan); if (!p->parent) { @@ -1360,7 +1360,7 @@ static int jingle_sendtext(struct ast_channel *chan, const char *text) static int jingle_digit(struct ast_channel *ast, char digit, unsigned int duration) { - struct jingle_pvt *p = ast->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(ast); struct jingle *client = p->parent; iks *iq, *jingle, *dtmf; char buffer[2] = {digit, '\0'}; @@ -1500,9 +1500,9 @@ static int jingle_auto_congest(void *nothing) * dest is the dial string */ static int jingle_call(struct ast_channel *ast, const char *dest, int timeout) { - struct jingle_pvt *p = ast->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(ast); - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "jingle_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -1525,13 +1525,13 @@ static int jingle_call(struct ast_channel *ast, const char *dest, int timeout) /*! \brief Hangup a call through the jingle proxy channel */ static int jingle_hangup(struct ast_channel *ast) { - struct jingle_pvt *p = ast->tech_pvt; + struct jingle_pvt *p = ast_channel_tech_pvt(ast); struct jingle *client; ast_mutex_lock(&p->lock); client = p->parent; p->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); if (!p->alreadygone) jingle_action(client, p, JINGLE_TERMINATE); ast_mutex_unlock(&p->lock); diff --git a/channels/chan_local.c b/channels/chan_local.c index ba116d03a..6123e5484 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -241,7 +241,7 @@ static int local_setoption(struct ast_channel *ast, int option, void * data, int } /* get the tech pvt */ - if (!(p = ast->tech_pvt)) { + if (!(p = ast_channel_tech_pvt(ast))) { return -1; } ao2_ref(p, 1); @@ -321,7 +321,7 @@ static int local_devicestate(const char *data) /*! \brief Return the bridged channel of a Local channel */ static struct ast_channel *local_bridgedchannel(struct ast_channel *chan, struct ast_channel *bridge) { - struct local_pvt *p = bridge->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(bridge); struct ast_channel *bridged = bridge; if (!p) { @@ -363,7 +363,7 @@ static int local_queryoption(struct ast_channel *ast, int option, void *data, in } /* for some reason the channel is not locked in channel.c when this function is called */ - if (!(p = ast->tech_pvt)) { + if (!(p = ast_channel_tech_pvt(ast))) { return -1; } @@ -419,7 +419,7 @@ static int local_queue_frame(struct local_pvt *p, int isoutbound, struct ast_fra } /* do not queue frame if generator is on both local channels */ - if (us && us->generator && other->generator) { + if (us && ast_channel_generator(us) && ast_channel_generator(other)) { return 0; } @@ -447,7 +447,7 @@ static int local_queue_frame(struct local_pvt *p, int isoutbound, struct ast_fra static int local_answer(struct ast_channel *ast) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int isoutbound; int res = -1; @@ -520,21 +520,21 @@ static void check_bridge(struct local_pvt *p) if (!ast_check_hangup(p->chan->_bridge)) { if (!ast_channel_trylock(p->owner)) { if (!ast_check_hangup(p->owner)) { - if (p->owner->monitor && !p->chan->_bridge->monitor) { + if (ast_channel_monitor(p->owner) && !ast_channel_monitor(p->chan->_bridge)) { /* If a local channel is being monitored, we don't want a masquerade * to cause the monitor to go away. Since the masquerade swaps the monitors, * pre-swapping the monitors before the masquerade will ensure that the monitor * ends up where it is expected. */ - tmp = p->owner->monitor; - p->owner->monitor = p->chan->_bridge->monitor; - p->chan->_bridge->monitor = tmp; + tmp = ast_channel_monitor(p->owner); + ast_channel_monitor_set(p->owner, ast_channel_monitor(p->chan->_bridge)); + ast_channel_monitor_set(p->chan->_bridge, tmp); } - if (p->chan->audiohooks) { + if (ast_channel_audiohooks(p->chan)) { struct ast_audiohook_list *audiohooks_swapper; - audiohooks_swapper = p->chan->audiohooks; - p->chan->audiohooks = p->owner->audiohooks; - p->owner->audiohooks = audiohooks_swapper; + audiohooks_swapper = ast_channel_audiohooks(p->chan); + ast_channel_audiohooks_set(p->chan, ast_channel_audiohooks(p->owner)); + ast_channel_audiohooks_set(p->owner, audiohooks_swapper); } /* If any Caller ID was set, preserve it after masquerade like above. We must check @@ -587,7 +587,7 @@ static struct ast_frame *local_read(struct ast_channel *ast) static int local_write(struct ast_channel *ast, struct ast_frame *f) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int res = -1; int isoutbound; @@ -618,7 +618,7 @@ static int local_write(struct ast_channel *ast, struct ast_frame *f) static int local_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct local_pvt *p = newchan->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(newchan); if (!p) { return -1; @@ -651,7 +651,7 @@ static int local_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) static int local_indicate(struct ast_channel *ast, int condition, const void *data, size_t datalen) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int res = 0; struct ast_frame f = { AST_FRAME_CONTROL, }; int isoutbound; @@ -718,7 +718,7 @@ static int local_indicate(struct ast_channel *ast, int condition, const void *da static int local_digit_begin(struct ast_channel *ast, char digit) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int res = -1; struct ast_frame f = { AST_FRAME_DTMF_BEGIN, }; int isoutbound; @@ -740,7 +740,7 @@ static int local_digit_begin(struct ast_channel *ast, char digit) static int local_digit_end(struct ast_channel *ast, char digit, unsigned int duration) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int res = -1; struct ast_frame f = { AST_FRAME_DTMF_END, }; int isoutbound; @@ -763,7 +763,7 @@ static int local_digit_end(struct ast_channel *ast, char digit, unsigned int dur static int local_sendtext(struct ast_channel *ast, const char *text) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int res = -1; struct ast_frame f = { AST_FRAME_TEXT, }; int isoutbound; @@ -785,7 +785,7 @@ static int local_sendtext(struct ast_channel *ast, const char *text) static int local_sendhtml(struct ast_channel *ast, int subclass, const char *data, int datalen) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int res = -1; struct ast_frame f = { AST_FRAME_HTML, }; int isoutbound; @@ -811,7 +811,7 @@ static int local_sendhtml(struct ast_channel *ast, int subclass, const char *dat * dest is the dial string */ static int local_call(struct ast_channel *ast, const char *dest, int timeout) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int pvt_locked = 0; struct ast_channel *owner = NULL; @@ -961,11 +961,11 @@ return_cleanup: /*! \brief Hangup a call through the local proxy channel */ static int local_hangup(struct ast_channel *ast) { - struct local_pvt *p = ast->tech_pvt; + struct local_pvt *p = ast_channel_tech_pvt(ast); int isoutbound; int hangup_chan = 0; int res = 0; - struct ast_frame f = { AST_FRAME_CONTROL, { AST_CONTROL_HANGUP }, .data.uint32 = ast->hangupcause }; + struct ast_frame f = { AST_FRAME_CONTROL, { AST_CONTROL_HANGUP }, .data.uint32 = ast_channel_hangupcause(ast) }; struct ast_channel *owner = NULL; struct ast_channel *chan = NULL; @@ -997,7 +997,7 @@ static int local_hangup(struct ast_channel *ast) if (isoutbound) { const char *status = pbx_builtin_getvar_helper(p->chan, "DIALSTATUS"); if ((status) && (p->owner)) { - p->owner->hangupcause = p->chan->hangupcause; + ast_channel_hangupcause_set(p->owner, ast_channel_hangupcause(p->chan)); pbx_builtin_setvar_helper(p->owner, "CHANLOCALSTATUS", status); } @@ -1012,7 +1012,7 @@ static int local_hangup(struct ast_channel *ast) p->owner = NULL; } - ast->tech_pvt = NULL; /* this is one of our locked channels, doesn't matter which */ + ast_channel_tech_pvt_set(ast, NULL); /* this is one of our locked channels, doesn't matter which */ if (!p->owner && !p->chan) { ao2_unlock(p); @@ -1137,7 +1137,7 @@ static struct ast_channel *local_new(struct local_pvt *p, int state, const char t = ""; if (p->owner) - ama = p->owner->amaflags; + ama = ast_channel_amaflags(p->owner); else ama = 0; if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, linkedid, ama, "Local/%s@%s-%04x;1", p->exten, p->context, randnum)) @@ -1149,10 +1149,11 @@ static struct ast_channel *local_new(struct local_pvt *p, int state, const char return NULL; } - tmp2->tech = tmp->tech = &local_tech; + ast_channel_tech_set(tmp, &local_tech); + ast_channel_tech_set(tmp2, &local_tech); - ast_format_cap_copy(tmp->nativeformats, p->reqcap); - ast_format_cap_copy(tmp2->nativeformats, p->reqcap); + ast_format_cap_copy(ast_channel_nativeformats(tmp), p->reqcap); + ast_format_cap_copy(ast_channel_nativeformats(tmp2), p->reqcap); /* Determine our read/write format and set it on each channel */ ast_best_codec(p->reqcap, &fmt); @@ -1165,8 +1166,8 @@ static struct ast_channel *local_new(struct local_pvt *p, int state, const char ast_format_copy(&tmp->rawreadformat, &fmt); ast_format_copy(&tmp2->rawreadformat, &fmt); - tmp->tech_pvt = p; - tmp2->tech_pvt = p; + ast_channel_tech_pvt_set(tmp, p); + ast_channel_tech_pvt_set(tmp2, p); p->owner = tmp; p->chan = tmp2; @@ -1176,8 +1177,8 @@ static struct ast_channel *local_new(struct local_pvt *p, int state, const char ast_channel_context_set(tmp, p->context); ast_channel_context_set(tmp2, p->context); ast_channel_exten_set(tmp2, p->exten); - tmp->priority = 1; - tmp2->priority = 1; + ast_channel_priority_set(tmp, 1); + ast_channel_priority_set(tmp2, 1); ast_jb_configure(tmp, &p->jb_conf); @@ -1268,7 +1269,7 @@ static int manager_optimize_away(struct mansession *s, const struct message *m) return 0; } - p = c->tech_pvt; + p = ast_channel_tech_pvt(c); ast_channel_unref(c); c = NULL; diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 3b544f631..b73ccd24c 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -843,7 +843,7 @@ static int mgcp_call(struct ast_channel *ast, const char *dest, int timeout) struct ast_var_t *current; ast_debug(3, "MGCP mgcp_call(%s)\n", ast_channel_name(ast)); - sub = ast->tech_pvt; + sub = ast_channel_tech_pvt(ast); p = sub->parent; headp = &ast->varshead; AST_LIST_TRAVERSE(headp,current,entries) { @@ -876,7 +876,7 @@ static int mgcp_call(struct ast_channel *ast, const char *dest, int timeout) break; } - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "mgcp_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); ast_mutex_unlock(&sub->lock); return -1; @@ -919,12 +919,12 @@ static int mgcp_call(struct ast_channel *ast, const char *dest, int timeout) static int mgcp_hangup(struct ast_channel *ast) { - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); struct mgcp_endpoint *p = sub->parent; struct ast_channel *bridged; ast_debug(1, "mgcp_hangup(%s)\n", ast_channel_name(ast)); - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_debug(1, "Asked to hangup channel not connected\n"); return 0; } @@ -997,7 +997,7 @@ static int mgcp_hangup(struct ast_channel *ast) transmit_notify_request(sub, ""); } - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); sub->alreadygone = 0; sub->outgoing = 0; sub->cxmode = MGCP_CX_INACTIVE; @@ -1175,7 +1175,7 @@ static struct ast_cli_entry cli_mgcp[] = { static int mgcp_answer(struct ast_channel *ast) { int res = 0; - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); struct mgcp_endpoint *p = sub->parent; ast_mutex_lock(&sub->lock); @@ -1187,7 +1187,7 @@ static int mgcp_answer(struct ast_channel *ast) } ast_verb(3, "MGCP mgcp_answer(%s) on %s@%s-%d\n", ast_channel_name(ast), p->name, p->parent->name, sub->id); - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { ast_setstate(ast, AST_STATE_UP); ast_debug(1, "mgcp_answer(%s)\n", ast_channel_name(ast)); transmit_notify_request(sub, ""); @@ -1209,9 +1209,9 @@ static struct ast_frame *mgcp_rtp_read(struct mgcp_subchannel *sub) if (sub->owner) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { - if (!ast_format_cap_iscompatible(sub->owner->nativeformats, &f->subclass.format)) { + if (!ast_format_cap_iscompatible(ast_channel_nativeformats(sub->owner), &f->subclass.format)) { ast_debug(1, "Oooh, format changed to %s\n", ast_getformatname(&f->subclass.format)); - ast_format_cap_set(sub->owner->nativeformats, &f->subclass.format); + ast_format_cap_set(ast_channel_nativeformats(sub->owner), &f->subclass.format); ast_set_read_format(sub->owner, &sub->owner->readformat); ast_set_write_format(sub->owner, &sub->owner->writeformat); } @@ -1231,7 +1231,7 @@ static struct ast_frame *mgcp_rtp_read(struct mgcp_subchannel *sub) static struct ast_frame *mgcp_read(struct ast_channel *ast) { struct ast_frame *f; - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); ast_mutex_lock(&sub->lock); f = mgcp_rtp_read(sub); ast_mutex_unlock(&sub->lock); @@ -1240,7 +1240,7 @@ static struct ast_frame *mgcp_read(struct ast_channel *ast) static int mgcp_write(struct ast_channel *ast, struct ast_frame *frame) { - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); int res = 0; char buf[256]; @@ -1252,10 +1252,10 @@ static int mgcp_write(struct ast_channel *ast, struct ast_frame *frame) return 0; } } else { - if (!(ast_format_cap_iscompatible(ast->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &frame->subclass.format))) { ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_getformatname(&frame->subclass.format), - ast_getformatname_multiple(buf, sizeof(buf), ast->nativeformats), + ast_getformatname_multiple(buf, sizeof(buf), ast_channel_nativeformats(ast)), ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat)); /* return -1; */ @@ -1281,7 +1281,7 @@ static int mgcp_write(struct ast_channel *ast, struct ast_frame *frame) static int mgcp_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct mgcp_subchannel *sub = newchan->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(newchan); ast_mutex_lock(&sub->lock); ast_log(LOG_NOTICE, "mgcp_fixup(%s, %s)\n", ast_channel_name(oldchan), ast_channel_name(newchan)); @@ -1297,7 +1297,7 @@ static int mgcp_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) static int mgcp_senddigit_begin(struct ast_channel *ast, char digit) { - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); struct mgcp_endpoint *p = sub->parent; int res = 0; @@ -1318,7 +1318,7 @@ static int mgcp_senddigit_begin(struct ast_channel *ast, char digit) static int mgcp_senddigit_end(struct ast_channel *ast, char digit, unsigned int duration) { - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); struct mgcp_endpoint *p = sub->parent; int res = 0; char tmp[4]; @@ -1437,7 +1437,7 @@ static char *control2str(int ind) { static int mgcp_indicate(struct ast_channel *ast, int ind, const void *data, size_t datalen) { - struct mgcp_subchannel *sub = ast->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(ast); int res = 0; ast_debug(3, "MGCP asked to indicate %d '%s' condition on channel %s\n", @@ -1498,10 +1498,10 @@ static struct ast_channel *mgcp_new(struct mgcp_subchannel *sub, int state, cons tmp = ast_channel_alloc(1, state, i->cid_num, i->cid_name, linkedid, i->accountcode, i->exten, i->context, i->amaflags, "MGCP/%s@%s-%d", i->name, i->parent->name, sub->id); if (tmp) { - tmp->tech = &mgcp_tech; - ast_format_cap_copy(tmp->nativeformats, i->cap); - if (ast_format_cap_is_empty(tmp->nativeformats)) { - ast_format_cap_copy(tmp->nativeformats, global_capability); + ast_channel_tech_set(tmp, &mgcp_tech); + ast_format_cap_copy(ast_channel_nativeformats(tmp), i->cap); + if (ast_format_cap_is_empty(ast_channel_nativeformats(tmp))) { + ast_format_cap_copy(ast_channel_nativeformats(tmp), global_capability); } if (sub->rtp) { ast_channel_set_fd(tmp, 0, ast_rtp_instance_fd(sub->rtp, 0)); @@ -1515,20 +1515,20 @@ static struct ast_channel *mgcp_new(struct mgcp_subchannel *sub, int state, cons i->dsp = NULL; } if (state == AST_STATE_RING) - tmp->rings = 1; + ast_channel_rings_set(tmp, 1); - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); ast_format_copy(&tmp->readformat, &tmpfmt); ast_format_copy(&tmp->rawreadformat, &tmpfmt); - tmp->tech_pvt = sub; + ast_channel_tech_pvt_set(tmp, sub); if (!ast_strlen_zero(i->language)) ast_channel_language_set(tmp, i->language); if (!ast_strlen_zero(i->accountcode)) ast_channel_accountcode_set(tmp, i->accountcode); if (i->amaflags) - tmp->amaflags = i->amaflags; + ast_channel_amaflags_set(tmp, i->amaflags); sub->owner = tmp; ast_module_ref(ast_module_info->self); tmp->callgroup = i->callgroup; @@ -1545,9 +1545,9 @@ static struct ast_channel *mgcp_new(struct mgcp_subchannel *sub, int state, cons } if (!i->adsi) { - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); } - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); /* Set channel variables for this call from configuration */ for (v = i->chanvars ; v ; v = v->next) { @@ -2624,7 +2624,7 @@ static void add_header_offhook(struct mgcp_subchannel *sub, struct mgcp_request } if (p && p->sub && p->sub->owner && - p->sub->owner->_state >= AST_STATE_RINGING && + ast_channel_state(p->sub->owner) >= AST_STATE_RINGING && (p->dtmfmode & (MGCP_DTMF_INBAND | MGCP_DTMF_HYBRID))) { add_header(resp, "R", "L/hu(N),L/hf(N)"); @@ -2829,7 +2829,7 @@ static void handle_response(struct mgcp_endpoint *p, struct mgcp_subchannel *sub if (result == 200 && (req->cmd == MGCP_CMD_CRCX || req->cmd == MGCP_CMD_MDCX)) { if (sub) { transmit_response(sub, "000", resp, "OK"); - if (sub->owner && sub->owner->_state == AST_STATE_RINGING) { + if (sub->owner && ast_channel_state(sub->owner) == AST_STATE_RINGING) { ast_queue_control(sub->owner, AST_CONTROL_RINGING); } } @@ -2963,7 +2963,7 @@ static void start_rtp(struct mgcp_subchannel *sub) static void *mgcp_ss(void *data) { struct ast_channel *chan = data; - struct mgcp_subchannel *sub = chan->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(chan); struct mgcp_endpoint *p = sub->parent; /* char exten[AST_MAX_EXTENSION] = ""; */ int len = 0; @@ -3229,7 +3229,7 @@ static int attempt_transfer(struct mgcp_endpoint *p) stop if now if appropriate */ if (ast_bridged_channel(p->sub->next->owner)) ast_queue_control(p->sub->next->owner, AST_CONTROL_UNHOLD); - if (p->sub->owner->_state == AST_STATE_RINGING) { + if (ast_channel_state(p->sub->owner) == AST_STATE_RINGING) { ast_indicate(ast_bridged_channel(p->sub->next->owner), AST_CONTROL_RINGING); } if (ast_channel_masquerade(p->sub->next->owner, ast_bridged_channel(p->sub->owner))) { @@ -3240,7 +3240,7 @@ static int attempt_transfer(struct mgcp_endpoint *p) /* Orphan the channel */ unalloc_sub(p->sub->next); } else if (ast_bridged_channel(p->sub->next->owner)) { - if (p->sub->owner->_state == AST_STATE_RINGING) { + if (ast_channel_state(p->sub->owner) == AST_STATE_RINGING) { ast_indicate(ast_bridged_channel(p->sub->next->owner), AST_CONTROL_RINGING); } ast_queue_control(p->sub->next->owner, AST_CONTROL_UNHOLD); @@ -3439,7 +3439,7 @@ static int handle_request(struct mgcp_subchannel *sub, struct mgcp_request *req, return -1; } /* do not let * conference two down channels */ - if (sub->owner && sub->owner->_state == AST_STATE_DOWN && !sub->next->owner) + if (sub->owner && ast_channel_state(sub->owner) == AST_STATE_DOWN && !sub->next->owner) return -1; if (p->callwaiting || p->transfer || p->threewaycalling) { @@ -3563,7 +3563,7 @@ static int handle_request(struct mgcp_subchannel *sub, struct mgcp_request *req, (((ev[0] >= '0') && (ev[0] <= '9')) || ((ev[0] >= 'A') && (ev[0] <= 'D')) || (ev[0] == '*') || (ev[0] == '#'))) { - if (sub && sub->owner && (sub->owner->_state >= AST_STATE_UP)) { + if (sub && sub->owner && (ast_channel_state(sub->owner) >= AST_STATE_UP)) { f.frametype = AST_FRAME_DTMF; f.subclass.integer = ev[0]; f.src = "mgcp"; @@ -4418,7 +4418,7 @@ static enum ast_rtp_glue_result mgcp_get_rtp_peer(struct ast_channel *chan, stru { struct mgcp_subchannel *sub = NULL; - if (!(sub = chan->tech_pvt) || !(sub->rtp)) + if (!(sub = ast_channel_tech_pvt(chan)) || !(sub->rtp)) return AST_RTP_GLUE_RESULT_FORBID; *instance = sub->rtp ? ao2_ref(sub->rtp, +1), sub->rtp : NULL; @@ -4433,7 +4433,7 @@ static int mgcp_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance * { /* XXX Is there such thing as video support with MGCP? XXX */ struct mgcp_subchannel *sub; - sub = chan->tech_pvt; + sub = ast_channel_tech_pvt(chan); if (sub && !sub->alreadygone) { transmit_modify_with_sdp(sub, rtp, cap); return 0; @@ -4443,7 +4443,7 @@ static int mgcp_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance * static void mgcp_get_codec(struct ast_channel *chan, struct ast_format_cap *result) { - struct mgcp_subchannel *sub = chan->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(chan); struct mgcp_endpoint *p = sub->parent; ast_format_cap_copy(result, p->cap); } @@ -4458,11 +4458,11 @@ static struct ast_rtp_glue mgcp_rtp_glue = { static int acf_channel_read(struct ast_channel *chan, const char *funcname, char *args, char *buf, size_t buflen) { - struct mgcp_subchannel *sub = chan->tech_pvt; + struct mgcp_subchannel *sub = ast_channel_tech_pvt(chan); int res = 0; /* Sanity check */ - if (!chan || chan->tech != &mgcp_tech) { + if (!chan || ast_channel_tech(chan) != &mgcp_tech) { ast_log(LOG_ERROR, "This function requires a valid MGCP channel\n"); return -1; } diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 7b3d448c2..535fee4cb 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -6506,9 +6506,9 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) return -1; } - if (((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) || !dest) { + if (((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) || !dest) { ast_log(LOG_WARNING, " --> ! misdn_call called on %s, neither down nor reserved (or dest==NULL)\n", ast_channel_name(ast)); - ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_TEMPORARY_FAILURE); ast_setstate(ast, AST_STATE_DOWN); return -1; } @@ -6516,7 +6516,7 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) ch = MISDN_ASTERISK_TECH_PVT(ast); if (!ch) { ast_log(LOG_WARNING, " --> ! misdn_call called on %s, chan_list *ch==NULL\n", ast_channel_name(ast)); - ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_TEMPORARY_FAILURE); ast_setstate(ast, AST_STATE_DOWN); return -1; } @@ -6524,7 +6524,7 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) newbc = ch->bc; if (!newbc) { ast_log(LOG_WARNING, " --> ! misdn_call called on %s, newbc==NULL\n", ast_channel_name(ast)); - ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_TEMPORARY_FAILURE); ast_setstate(ast, AST_STATE_DOWN); return -1; } @@ -6546,7 +6546,7 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) if (!cc_record) { AST_LIST_UNLOCK(&misdn_cc_records_db); ast_log(LOG_WARNING, " --> ! misdn_call called on %s, cc_record==NULL\n", ast_channel_name(ast)); - ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_TEMPORARY_FAILURE); ast_setstate(ast, AST_STATE_DOWN); return -1; } @@ -6633,9 +6633,9 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) } debug_numtype(port, newbc->caller.number_type, "LTON"); - newbc->capability = ast->transfercapability; + newbc->capability = ast_channel_transfercapability(ast); pbx_builtin_setvar_helper(ast, "TRANSFERCAPABILITY", ast_transfercapability2str(newbc->capability)); - if (ast->transfercapability == INFO_CAPABILITY_DIGITAL_UNRESTRICTED) { + if (ast_channel_transfercapability(ast) == INFO_CAPABILITY_DIGITAL_UNRESTRICTED) { chan_misdn_log(2, port, " --> * Call with flag Digital\n"); } @@ -6714,7 +6714,7 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) snprintf(tmp, sizeof(tmp), "%d", exceed); pbx_builtin_setvar_helper(ast, "MAX_OVERFLOW", tmp); - ast->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_TEMPORARY_FAILURE); ast_setstate(ast, AST_STATE_DOWN); return -1; } @@ -6732,7 +6732,7 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) if (r == -ENOCHAN) { chan_misdn_log(0, port, " --> * Theres no Channel at the moment .. !\n"); chan_misdn_log(1, port, " --> * SEND: State Down pid:%d\n", newbc ? newbc->pid : -1); - ast->hangupcause = AST_CAUSE_NORMAL_CIRCUIT_CONGESTION; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_CIRCUIT_CONGESTION); ast_setstate(ast, AST_STATE_DOWN); return -1; } @@ -6740,7 +6740,7 @@ static int misdn_call(struct ast_channel *ast, const char *dest, int timeout) chan_misdn_log(2, port, " --> * SEND: State Dialing pid:%d\n", newbc ? newbc->pid : 1); ast_setstate(ast, AST_STATE_DIALING); - ast->hangupcause = AST_CAUSE_NORMAL_CLEARING; + ast_channel_hangupcause_set(ast, AST_CAUSE_NORMAL_CLEARING); if (newbc->nt) { stop_bc_tones(ch); @@ -7084,7 +7084,7 @@ static int misdn_hangup(struct ast_channel *ast) } } - if (ast->_state == AST_STATE_RESERVED || p->state == MISDN_NOTHING) { + if (ast_channel_state(ast) == AST_STATE_RESERVED || p->state == MISDN_NOTHING) { /* between request and call */ ast_debug(1, "State Reserved (or nothing) => chanIsAvail\n"); release_chan_early(p); @@ -7113,7 +7113,7 @@ static int misdn_hangup(struct ast_channel *ast) stop_bc_tones(p); } - bc->out_cause = ast->hangupcause ? ast->hangupcause : AST_CAUSE_NORMAL_CLEARING; + bc->out_cause = ast_channel_hangupcause(ast) ? ast_channel_hangupcause(ast) : AST_CAUSE_NORMAL_CLEARING; /* Channel lock is already held when we are called. */ //ast_channel_lock(ast); @@ -7642,7 +7642,7 @@ static int dialtone_indicate(struct chan_list *cl) chan_misdn_log(3, cl->bc->port, " --> Dial\n"); - cl->ts = ast_get_indication_tone(ast->zone, "dial"); + cl->ts = ast_get_indication_tone(ast_channel_zone(ast), "dial"); if (cl->ts) { cl->notxtone = 0; @@ -8135,7 +8135,7 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char chan_misdn_log(2, 0, " --> * NEW CHANNEL dialed:%s caller:%s\n", exten, callerid); ast_best_codec(cap, &tmpfmt); - ast_format_cap_add(tmp->nativeformats, &prefformat); + ast_format_cap_add(ast_channel_nativeformats(tmp), &prefformat); ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); ast_format_copy(&tmp->readformat, &tmpfmt); @@ -8147,9 +8147,9 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char chlist->ast = tmp; misdn_cfg_get(0, MISDN_GEN_BRIDGING, &bridging, sizeof(bridging)); - tmp->tech = bridging ? &misdn_tech : &misdn_tech_wo_bridge; + ast_channel_tech_set(tmp, bridging ? &misdn_tech : &misdn_tech_wo_bridge); - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); if (exten) { ast_channel_exten_set(tmp, exten); @@ -8169,7 +8169,7 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char } ast_channel_set_fd(tmp, 0, chlist->pipe[0]); - tmp->rings = (state == AST_STATE_RING) ? 1 : 0; + ast_channel_rings_set(tmp, (state == AST_STATE_RING) ? 1 : 0); ast_jb_configure(tmp, misdn_get_global_jbconf()); } else { @@ -8454,7 +8454,7 @@ static void release_chan(struct chan_list *ch, struct misdn_bchannel *bc) S_COR(ast->caller.id.name.valid, ast->caller.id.name.str, ""), S_COR(ast->caller.id.number.valid, ast->caller.id.number.str, "")); - if (ast->_state != AST_STATE_RESERVED) { + if (ast_channel_state(ast) != AST_STATE_RESERVED) { chan_misdn_log(3, bc->port, " --> Setting AST State to down\n"); ast_setstate(ast, AST_STATE_DOWN); } @@ -8511,7 +8511,7 @@ static void release_chan_early(struct chan_list *ch) ast_ch = MISDN_ASTERISK_TECH_PVT(ast); MISDN_ASTERISK_TECH_PVT(ast) = NULL; - if (ast->_state != AST_STATE_RESERVED) { + if (ast_channel_state(ast) != AST_STATE_RESERVED) { ast_setstate(ast, AST_STATE_DOWN); } ast_channel_unlock(ast); @@ -8695,7 +8695,7 @@ static int send_cause2ast(struct ast_channel *ast, struct misdn_bchannel *bc, st return 0; } - ast->hangupcause = bc->cause; + ast_channel_hangupcause_set(ast, bc->cause); can_hangup = -1; switch (bc->cause) { @@ -8923,7 +8923,7 @@ static void misdn_cc_pbx_notify(long record_id, const struct misdn_cc_notify *no ast_log(LOG_ERROR, "Unable to allocate channel!\n"); return; } - chan->priority = notify->priority; + ast_channel_priority_set(chan, notify->priority); ast_free(chan->dialed.number.str); chan->dialed.number.str = ast_strdup(notify->exten); @@ -10169,7 +10169,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) export_ch(chan, bc, ch); - ch->ast->rings = 1; + ast_channel_rings_set(ch->ast, 1); ast_setstate(ch->ast, AST_STATE_RINGING); /* Update asterisk channel caller information */ @@ -10204,7 +10204,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) } pbx_builtin_setvar_helper(chan, "TRANSFERCAPABILITY", ast_transfercapability2str(bc->capability)); - chan->transfercapability = bc->capability; + ast_channel_transfercapability_set(chan, bc->capability); switch (bc->capability) { case INFO_CAPABILITY_DIGITAL_UNRESTRICTED: @@ -10585,7 +10585,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) start_bc_tones(ch); if (ch->ast) { - ch->ast->hangupcause = bc->cause; + ast_channel_hangupcause_set(ch->ast, bc->cause); if (bc->cause == AST_CAUSE_USER_BUSY) { ast_queue_control(ch->ast, AST_CONTROL_BUSY); } @@ -10724,13 +10724,13 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) break; } - if (!ast->generator) { + if (!ast_channel_generator(ast)) { break; } - tmp = ast->generatordata; - ast->generatordata = NULL; - generate = ast->generator->generate; + tmp = ast_channel_generatordata(ast); + ast_channel_generatordata_set(ast, NULL); + generate = ast_channel_generator(ast)->generate; if (tone_len < 0 || tone_len > 512) { ast_log(LOG_NOTICE, "TONE_GEN: len was %d, set to 128\n", tone_len); @@ -10738,7 +10738,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) } res = generate(ast, tmp, tone_len, tone_len); - ast->generatordata = tmp; + ast_channel_generatordata_set(ast, tmp); if (res) { ast_log(LOG_WARNING, "Auto-deactivating generator\n"); @@ -10885,7 +10885,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) bridged = ast_bridged_channel(ch->ast); if (bridged) { - chan_misdn_log(2, bc->port, "Bridge Partner is of type: %s\n", bridged->tech->type); + chan_misdn_log(2, bc->port, "Bridge Partner is of type: %s\n", ast_channel_tech(bridged)->type); ch->l3id = bc->l3_id; /* forget the channel now */ @@ -12028,7 +12028,7 @@ static int misdn_command_exec(struct ast_channel *chan, const char *data) if (strcasecmp(misdn_commands[index].name, subcommand.name) == 0) { strcpy(subcommand.name, misdn_commands[index].name); if (misdn_commands[index].misdn_only - && strcasecmp(chan->tech->type, misdn_type) != 0) { + && strcasecmp(ast_channel_tech(chan)->type, misdn_type) != 0) { ast_log(LOG_WARNING, "%s(%s) only makes sense with %s channels!\n", misdn_command_name, subcommand.name, misdn_type); @@ -12055,9 +12055,9 @@ static int misdn_facility_exec(struct ast_channel *chan, const char *data) AST_APP_ARG(arg)[99]; ); - chan_misdn_log(0, 0, "TYPE: %s\n", chan->tech->type); + chan_misdn_log(0, 0, "TYPE: %s\n", ast_channel_tech(chan)->type); - if (strcasecmp(chan->tech->type, misdn_type)) { + if (strcasecmp(ast_channel_tech(chan)->type, misdn_type)) { ast_log(LOG_WARNING, "misdn_facility only makes sense with %s channels!\n", misdn_type); return -1; } @@ -12252,7 +12252,7 @@ static int misdn_set_opt_exec(struct ast_channel *chan, const char *data) int txgain = 0; int change_jitter = 0; - if (strcasecmp(chan->tech->type, misdn_type)) { + if (strcasecmp(ast_channel_tech(chan)->type, misdn_type)) { ast_log(LOG_WARNING, "misdn_set_opt makes sense only with %s channels!\n", misdn_type); return -1; } diff --git a/channels/chan_multicast_rtp.c b/channels/chan_multicast_rtp.c index c635b1056..6ebacaa84 100644 --- a/channels/chan_multicast_rtp.c +++ b/channels/chan_multicast_rtp.c @@ -82,7 +82,7 @@ static struct ast_frame *multicast_rtp_read(struct ast_channel *ast) /*! \brief Function called when we should write a frame to the channel */ static int multicast_rtp_write(struct ast_channel *ast, struct ast_frame *f) { - struct ast_rtp_instance *instance = ast->tech_pvt; + struct ast_rtp_instance *instance = ast_channel_tech_pvt(ast); return ast_rtp_instance_write(instance, f); } @@ -90,7 +90,7 @@ static int multicast_rtp_write(struct ast_channel *ast, struct ast_frame *f) /*! \brief Function called when we should actually call the destination */ static int multicast_rtp_call(struct ast_channel *ast, const char *dest, int timeout) { - struct ast_rtp_instance *instance = ast->tech_pvt; + struct ast_rtp_instance *instance = ast_channel_tech_pvt(ast); ast_queue_control(ast, AST_CONTROL_ANSWER); @@ -100,11 +100,11 @@ static int multicast_rtp_call(struct ast_channel *ast, const char *dest, int tim /*! \brief Function called when we should hang the channel up */ static int multicast_rtp_hangup(struct ast_channel *ast) { - struct ast_rtp_instance *instance = ast->tech_pvt; + struct ast_rtp_instance *instance = ast_channel_tech_pvt(ast); ast_rtp_instance_destroy(instance); - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); return 0; } @@ -156,15 +156,15 @@ static struct ast_channel *multicast_rtp_request(const char *type, struct ast_fo ast_rtp_instance_set_remote_address(instance, &destination_address); - chan->tech = &multicast_rtp_tech; + ast_channel_tech_set(chan, &multicast_rtp_tech); - ast_format_cap_add(chan->nativeformats, &fmt); + ast_format_cap_add(ast_channel_nativeformats(chan), &fmt); ast_format_copy(&chan->writeformat, &fmt); ast_format_copy(&chan->rawwriteformat, &fmt); ast_format_copy(&chan->readformat, &fmt); ast_format_copy(&chan->rawreadformat, &fmt); - chan->tech_pvt = instance; + ast_channel_tech_pvt_set(chan, instance); return chan; diff --git a/channels/chan_nbs.c b/channels/chan_nbs.c index 4bb88e661..882e165f8 100644 --- a/channels/chan_nbs.c +++ b/channels/chan_nbs.c @@ -87,9 +87,9 @@ static int nbs_call(struct ast_channel *ast, const char *dest, int timeout) { struct nbs_pvt *p; - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "nbs_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -164,21 +164,21 @@ static struct nbs_pvt *nbs_alloc(const char *data) static int nbs_hangup(struct ast_channel *ast) { struct nbs_pvt *p; - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); ast_debug(1, "nbs_hangup(%s)\n", ast_channel_name(ast)); - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } nbs_destroy(p); - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); ast_setstate(ast, AST_STATE_DOWN); return 0; } static struct ast_frame *nbs_xread(struct ast_channel *ast) { - struct nbs_pvt *p = ast->tech_pvt; + struct nbs_pvt *p = ast_channel_tech_pvt(ast); /* Some nice norms */ @@ -198,7 +198,7 @@ static struct ast_frame *nbs_xread(struct ast_channel *ast) static int nbs_xwrite(struct ast_channel *ast, struct ast_frame *frame) { - struct nbs_pvt *p = ast->tech_pvt; + struct nbs_pvt *p = ast_channel_tech_pvt(ast); /* Write a frame of (presumably voice) data */ if (frame->frametype != AST_FRAME_VOICE) { if (frame->frametype != AST_FRAME_IMAGE) @@ -209,7 +209,7 @@ static int nbs_xwrite(struct ast_channel *ast, struct ast_frame *frame) ast_log(LOG_WARNING, "Cannot handle frames in %s format\n", ast_getformatname(&frame->subclass.format)); return 0; } - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { /* Don't try tos end audio on-hook */ return 0; } @@ -223,17 +223,17 @@ static struct ast_channel *nbs_new(struct nbs_pvt *i, int state, const char *lin struct ast_channel *tmp; tmp = ast_channel_alloc(1, state, 0, 0, "", "s", context, linkedid, 0, "NBS/%s", i->stream); if (tmp) { - tmp->tech = &nbs_tech; + ast_channel_tech_set(tmp, &nbs_tech); ast_channel_set_fd(tmp, 0, nbs_fd(i->nbs)); - ast_format_cap_add(tmp->nativeformats, &prefformat); + ast_format_cap_add(ast_channel_nativeformats(tmp), &prefformat); ast_format_copy(&tmp->rawreadformat, &prefformat); ast_format_copy(&tmp->rawwriteformat, &prefformat); ast_format_copy(&tmp->writeformat, &prefformat); ast_format_copy(&tmp->readformat, &prefformat); if (state == AST_STATE_RING) - tmp->rings = 1; - tmp->tech_pvt = i; + ast_channel_rings_set(tmp, 1); + ast_channel_tech_pvt_set(tmp, i); ast_channel_context_set(tmp, context); ast_channel_exten_set(tmp, "s"); ast_channel_language_set(tmp, ""); diff --git a/channels/chan_oss.c b/channels/chan_oss.c index dc3532931..2d7cda82a 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -308,7 +308,7 @@ static char *oss_active; /*!< the active device */ /*! \brief return the pointer to the video descriptor */ struct video_desc *get_video_desc(struct ast_channel *c) { - struct chan_oss_pvt *o = c ? c->tech_pvt : find_desc(oss_active); + struct chan_oss_pvt *o = c ? ast_channel_tech_pvt(c) : find_desc(oss_active); return o ? o->env : NULL; } static struct chan_oss_pvt oss_default = { @@ -592,7 +592,7 @@ static int oss_text(struct ast_channel *c, const char *text) */ static int oss_call(struct ast_channel *c, const char *dest, int timeout) { - struct chan_oss_pvt *o = c->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(c); struct ast_frame f = { AST_FRAME_CONTROL, }; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(name); @@ -634,7 +634,7 @@ static int oss_call(struct ast_channel *c, const char *dest, int timeout) */ static int oss_answer(struct ast_channel *c) { - struct chan_oss_pvt *o = c->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(c); ast_verbose(" << Console call has been answered >> \n"); ast_setstate(c, AST_STATE_UP); o->hookstate = 1; @@ -643,9 +643,9 @@ static int oss_answer(struct ast_channel *c) static int oss_hangup(struct ast_channel *c) { - struct chan_oss_pvt *o = c->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(c); - c->tech_pvt = NULL; + ast_channel_tech_pvt_set(c, NULL); o->owner = NULL; ast_verbose(" << Hangup on console >> \n"); console_video_uninit(o->env); @@ -664,7 +664,7 @@ static int oss_hangup(struct ast_channel *c) static int oss_write(struct ast_channel *c, struct ast_frame *f) { int src; - struct chan_oss_pvt *o = c->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(c); /* * we could receive a block which is not a multiple of our @@ -695,7 +695,7 @@ static int oss_write(struct ast_channel *c, struct ast_frame *f) static struct ast_frame *oss_read(struct ast_channel *c) { int res; - struct chan_oss_pvt *o = c->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(c); struct ast_frame *f = &o->read_f; /* XXX can be simplified returning &ast_null_frame */ @@ -716,7 +716,7 @@ static struct ast_frame *oss_read(struct ast_channel *c) return f; o->readpos = AST_FRIENDLY_OFFSET; /* reset read pointer for next frame */ - if (c->_state != AST_STATE_UP) /* drop data if frame is not up */ + if (ast_channel_state(c) != AST_STATE_UP) /* drop data if frame is not up */ return f; /* ok we can build and deliver the frame to the caller */ f->frametype = AST_FRAME_VOICE; @@ -743,14 +743,14 @@ static struct ast_frame *oss_read(struct ast_channel *c) static int oss_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct chan_oss_pvt *o = newchan->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(newchan); o->owner = newchan; return 0; } static int oss_indicate(struct ast_channel *c, int cond, const void *data, size_t datalen) { - struct chan_oss_pvt *o = c->tech_pvt; + struct chan_oss_pvt *o = ast_channel_tech_pvt(c); int res = 0; switch (cond) { @@ -792,20 +792,20 @@ static struct ast_channel *oss_new(struct chan_oss_pvt *o, char *ext, char *ctx, c = ast_channel_alloc(1, state, o->cid_num, o->cid_name, "", ext, ctx, linkedid, 0, "Console/%s", o->device + 5); if (c == NULL) return NULL; - c->tech = &oss_tech; + ast_channel_tech_set(c, &oss_tech); if (o->sounddev < 0) setformat(o, O_RDWR); ast_channel_set_fd(c, 0, o->sounddev); /* -1 if device closed, override later */ ast_format_set(&c->readformat, AST_FORMAT_SLINEAR, 0); ast_format_set(&c->writeformat, AST_FORMAT_SLINEAR, 0); - ast_format_cap_add(c->nativeformats, &c->readformat); + ast_format_cap_add(ast_channel_nativeformats(c), &c->readformat); /* if the console makes the call, add video to the offer */ /* if (state == AST_STATE_RINGING) TODO XXX CONSOLE VIDEO IS DISABLED UNTIL IT GETS A MAINTAINER c->nativeformats |= console_video_formats; */ - c->tech_pvt = o; + ast_channel_tech_pvt_set(c, o); if (!ast_strlen_zero(o->language)) ast_channel_language_set(c, o->language); diff --git a/channels/chan_phone.c b/channels/chan_phone.c index 55f43f39a..6f8f5a4bc 100644 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -202,7 +202,7 @@ static struct ast_channel_tech *cur_tech; static int phone_indicate(struct ast_channel *chan, int condition, const void *data, size_t datalen) { - struct phone_pvt *p = chan->tech_pvt; + struct phone_pvt *p = ast_channel_tech_pvt(chan); int res=-1; ast_debug(1, "Requested indication %d on channel %s\n", condition, ast_channel_name(chan)); switch(condition) { @@ -230,7 +230,7 @@ static int phone_indicate(struct ast_channel *chan, int condition, const void *d static int phone_fixup(struct ast_channel *old, struct ast_channel *new) { - struct phone_pvt *pvt = old->tech_pvt; + struct phone_pvt *pvt = ast_channel_tech_pvt(old); if (pvt && pvt->owner == old) pvt->owner = new; return 0; @@ -246,7 +246,7 @@ static int phone_digit_end(struct ast_channel *ast, char digit, unsigned int dur { struct phone_pvt *p; int outdigit; - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); ast_debug(1, "Dialed %c\n", digit); switch(digit) { case '0': @@ -312,9 +312,9 @@ static int phone_call(struct ast_channel *ast, const char *dest, int timeout) ast_copy_string(cid.number, ast->connected.id.number.str, sizeof(cid.number)); } - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "phone_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -342,9 +342,9 @@ static int phone_call(struct ast_channel *ast, const char *dest, int timeout) static int phone_hangup(struct ast_channel *ast) { struct phone_pvt *p; - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); ast_debug(1, "phone_hangup(%s)\n", ast_channel_name(ast)); - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } @@ -377,10 +377,10 @@ static int phone_hangup(struct ast_channel *ast) p->obuflen = 0; p->dialtone = 0; memset(p->ext, 0, sizeof(p->ext)); - ((struct phone_pvt *)(ast->tech_pvt))->owner = NULL; + ((struct phone_pvt *)(ast_channel_tech_pvt(ast)))->owner = NULL; ast_module_unref(ast_module_info->self); ast_verb(3, "Hungup '%s'\n", ast_channel_name(ast)); - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); ast_setstate(ast, AST_STATE_DOWN); restart_monitor(); return 0; @@ -389,7 +389,7 @@ static int phone_hangup(struct ast_channel *ast) static int phone_setup(struct ast_channel *ast) { struct phone_pvt *p; - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); ioctl(p->fd, PHONE_CPT_STOP); /* Nothing to answering really, just start recording */ if (ast->rawreadformat.id == AST_FORMAT_G729A) { @@ -456,7 +456,7 @@ static int phone_setup(struct ast_channel *ast) static int phone_answer(struct ast_channel *ast) { struct phone_pvt *p; - p = ast->tech_pvt; + p = ast_channel_tech_pvt(ast); /* In case it's a LineJack, take it off hook */ if (p->mode == MODE_FXO) { if (ioctl(p->fd, PHONE_PSTN_SET_STATE, PSTN_OFF_HOOK)) @@ -466,7 +466,7 @@ static int phone_answer(struct ast_channel *ast) } phone_setup(ast); ast_debug(1, "phone_answer(%s)\n", ast_channel_name(ast)); - ast->rings = 0; + ast_channel_rings_set(ast, 0); ast_setstate(ast, AST_STATE_UP); return 0; } @@ -489,7 +489,7 @@ static struct ast_frame *phone_exception(struct ast_channel *ast) { int res; union telephony_exception phonee; - struct phone_pvt *p = ast->tech_pvt; + struct phone_pvt *p = ast_channel_tech_pvt(ast); char digit; /* Some nice norms */ @@ -519,7 +519,7 @@ static struct ast_frame *phone_exception(struct ast_channel *ast) if (!res && (p->mode != MODE_FXO)) return NULL; else { - if (ast->_state == AST_STATE_RINGING) { + if (ast_channel_state(ast) == AST_STATE_RINGING) { /* They've picked up the phone */ p->fr.frametype = AST_FRAME_CONTROL; p->fr.subclass.integer = AST_CONTROL_ANSWER; @@ -527,7 +527,7 @@ static struct ast_frame *phone_exception(struct ast_channel *ast) ast_setstate(ast, AST_STATE_UP); return &p->fr; } else - ast_log(LOG_WARNING, "Got off hook in weird state %d\n", ast->_state); + ast_log(LOG_WARNING, "Got off hook in weird state %d\n", ast_channel_state(ast)); } } #if 1 @@ -548,7 +548,7 @@ static struct ast_frame *phone_exception(struct ast_channel *ast) static struct ast_frame *phone_read(struct ast_channel *ast) { int res; - struct phone_pvt *p = ast->tech_pvt; + struct phone_pvt *p = ast_channel_tech_pvt(ast); /* Some nice norms */ @@ -639,13 +639,13 @@ static int phone_write_buf(struct phone_pvt *p, const char *buf, int len, int fr static int phone_send_text(struct ast_channel *ast, const char *text) { int length = strlen(text); - return phone_write_buf(ast->tech_pvt, text, length, length, 0) == + return phone_write_buf(ast_channel_tech_pvt(ast), text, length, length, 0) == length ? 0 : -1; } static int phone_write(struct ast_channel *ast, struct ast_frame *frame) { - struct phone_pvt *p = ast->tech_pvt; + struct phone_pvt *p = ast_channel_tech_pvt(ast); int res; int maxfr=0; char *pos; @@ -674,7 +674,7 @@ static int phone_write(struct ast_channel *ast, struct ast_frame *frame) phone_setup(ast); } #else - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { /* Don't try tos end audio on-hook */ return 0; } @@ -852,28 +852,28 @@ static struct ast_channel *phone_new(struct phone_pvt *i, int state, char *cntx, struct ast_format tmpfmt; tmp = ast_channel_alloc(1, state, i->cid_num, i->cid_name, "", i->ext, i->context, linkedid, 0, "Phone/%s", i->dev + 5); if (tmp) { - tmp->tech = cur_tech; + ast_channel_tech_set(tmp, cur_tech); ast_channel_set_fd(tmp, 0, i->fd); /* XXX Switching formats silently causes kernel panics XXX */ if (i->mode == MODE_FXS && ioctl(i->fd, PHONE_QUERY_CODEC, &queried_codec) == 0) { if (queried_codec.type == LINEAR16) { - ast_format_cap_add(tmp->nativeformats, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); + ast_format_cap_add(ast_channel_nativeformats(tmp), ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); ast_format_copy(&tmp->rawreadformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); } else { ast_format_cap_remove(prefcap, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); } } else { - ast_format_cap_copy(tmp->nativeformats, prefcap); - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_format_cap_copy(ast_channel_nativeformats(tmp), prefcap); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); ast_format_copy(&tmp->rawreadformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); } /* no need to call ast_setstate: the channel_alloc already did its job */ if (state == AST_STATE_RING) - tmp->rings = 1; - tmp->tech_pvt = i; + ast_channel_rings_set(tmp, 1); + ast_channel_tech_pvt_set(tmp, i); ast_channel_context_set(tmp, cntx); if (!ast_strlen_zero(i->ext)) ast_channel_exten_set(tmp, i->ext); diff --git a/channels/chan_sip.c b/channels/chan_sip.c index d846737b2..57b9df28e 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1714,13 +1714,13 @@ static struct ast_cc_agent *find_sip_cc_agent_by_original_callid(struct sip_pvt static int sip_cc_agent_init(struct ast_cc_agent *agent, struct ast_channel *chan) { struct sip_cc_agent_pvt *agent_pvt = ast_calloc(1, sizeof(*agent_pvt)); - struct sip_pvt *call_pvt = chan->tech_pvt; + struct sip_pvt *call_pvt = ast_channel_tech_pvt(chan); if (!agent_pvt) { return -1; } - ast_assert(!strcmp(chan->tech->type, "SIP")); + ast_assert(!strcmp(ast_channel_tech(chan)->type, "SIP")); ast_copy_string(agent_pvt->original_callid, call_pvt->callid, sizeof(agent_pvt->original_callid)); ast_copy_string(agent_pvt->original_exten, call_pvt->exten, sizeof(agent_pvt->original_exten)); @@ -2983,7 +2983,7 @@ void dialog_unlink_all(struct sip_pvt *dialog) owner = sip_pvt_lock_full(dialog); if (owner) { ast_debug(1, "Detaching from channel %s\n", ast_channel_name(owner)); - owner->tech_pvt = dialog_unref(owner->tech_pvt, "resetting channel dialog ptr in unlink_all"); + ast_channel_tech_pvt_set(owner, dialog_unref(ast_channel_tech_pvt(owner), "resetting channel dialog ptr in unlink_all")); ast_channel_unlock(owner); ast_channel_unref(owner); dialog->owner = NULL; @@ -3688,8 +3688,8 @@ static int retrans_pkt(const void *data) usleep(1); sip_pvt_lock(pkt->owner); } - if (pkt->owner->owner && !pkt->owner->owner->hangupcause) { - pkt->owner->owner->hangupcause = AST_CAUSE_NO_USER_RESPONSE; + if (pkt->owner->owner && !ast_channel_hangupcause(pkt->owner->owner)) { + ast_channel_hangupcause_set(pkt->owner->owner, AST_CAUSE_NO_USER_RESPONSE); } if (pkt->owner->owner) { ast_log(LOG_WARNING, "Hanging up call %s - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).\n", pkt->owner->callid); @@ -4306,7 +4306,7 @@ static void disable_dsp_detect(struct sip_pvt *p) static int sip_setoption(struct ast_channel *chan, int option, void *data, int datalen) { int res = -1; - struct sip_pvt *p = chan->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(chan); if (!p) { ast_log(LOG_ERROR, "Attempt to Ref a null pointer. sip private structure is gone!\n"); @@ -4367,7 +4367,7 @@ static int sip_queryoption(struct ast_channel *chan, int option, void *data, int { int res = -1; enum ast_t38_state state = T38_STATE_UNAVAILABLE; - struct sip_pvt *p = (struct sip_pvt *) chan->tech_pvt; + struct sip_pvt *p = (struct sip_pvt *) ast_channel_tech_pvt(chan); char *cp; sip_pvt_lock(p); @@ -4452,7 +4452,7 @@ const char *find_closing_quote(const char *start, const char *lim) /*! \brief Send message with Access-URL header, if this is an HTML URL only! */ static int sip_sendhtml(struct ast_channel *chan, int subclass, const char *data, int datalen) { - struct sip_pvt *p = chan->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(chan); if (subclass != AST_HTML_URL) return -1; @@ -4460,9 +4460,9 @@ static int sip_sendhtml(struct ast_channel *chan, int subclass, const char *data ast_string_field_build(p, url, "<%s>;mode=active", data); if (sip_debug_test_pvt(p)) - ast_debug(1, "Send URL %s, state = %d!\n", data, chan->_state); + ast_debug(1, "Send URL %s, state = %d!\n", data, ast_channel_state(chan)); - switch (chan->_state) { + switch (ast_channel_state(chan)) { case AST_STATE_RING: transmit_response(p, "100 Trying", &p->initreq); break; @@ -4477,7 +4477,7 @@ static int sip_sendhtml(struct ast_channel *chan, int subclass, const char *data } break; default: - ast_log(LOG_WARNING, "Don't know how to send URI when state is %d!\n", chan->_state); + ast_log(LOG_WARNING, "Don't know how to send URI when state is %d!\n", ast_channel_state(chan)); } return 0; @@ -4486,7 +4486,7 @@ static int sip_sendhtml(struct ast_channel *chan, int subclass, const char *data /*! \brief Deliver SIP call ID for the call */ static const char *sip_get_callid(struct ast_channel *chan) { - return chan->tech_pvt ? ((struct sip_pvt *) chan->tech_pvt)->callid : ""; + return ast_channel_tech_pvt(chan) ? ((struct sip_pvt *) ast_channel_tech_pvt(chan))->callid : ""; } /*! @@ -4496,7 +4496,7 @@ static const char *sip_get_callid(struct ast_channel *chan) */ static int sip_sendtext(struct ast_channel *ast, const char *text) { - struct sip_pvt *dialog = ast->tech_pvt; + struct sip_pvt *dialog = ast_channel_tech_pvt(ast); int debug; if (!dialog) { @@ -5618,14 +5618,14 @@ static int auto_congest(const void *arg) static int sip_call(struct ast_channel *ast, const char *dest, int timeout) { int res; - struct sip_pvt *p = ast->tech_pvt; /* chan is locked, so the reference cannot go away */ + struct sip_pvt *p = ast_channel_tech_pvt(ast); /* chan is locked, so the reference cannot go away */ struct varshead *headp; struct ast_var_t *current; const char *referer = NULL; /* SIP referrer */ int cc_core_id; char uri[SIPBUFSIZE] = ""; - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "sip_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -5674,7 +5674,7 @@ static int sip_call(struct ast_channel *ast, const char *dest, int timeout) /* Check to see if we should try to force encryption */ if (p->req_secure_signaling && p->socket.type != SIP_TRANSPORT_TLS) { ast_log(LOG_WARNING, "Encrypted signaling is required\n"); - ast->hangupcause = AST_CAUSE_BEARERCAPABILITY_NOTAVAIL; + ast_channel_hangupcause_set(ast, AST_CAUSE_BEARERCAPABILITY_NOTAVAIL); return -1; } @@ -5724,7 +5724,7 @@ static int sip_call(struct ast_channel *ast, const char *dest, int timeout) res = update_call_counter(p, INC_CALL_RINGING); if (res == -1) { - ast->hangupcause = AST_CAUSE_USER_BUSY; + ast_channel_hangupcause_set(ast, AST_CAUSE_USER_BUSY); return res; } p->callingpres = ast_party_id_presentation(&ast->caller.id); @@ -5843,7 +5843,7 @@ void __sip_destroy(struct sip_pvt *p, int lockowner, int lockdialoglist) if (lockowner) ast_channel_lock(p->owner); ast_debug(1, "Detaching from %s\n", ast_channel_name(p->owner)); - p->owner->tech_pvt = NULL; + ast_channel_tech_pvt_set(p->owner, NULL); /* Make sure that the channel knows its backend is going away */ p->owner->_softhangup |= AST_SOFTHANGUP_DEV; if (lockowner) @@ -6319,7 +6319,7 @@ const char *hangup_cause2sip(int cause) * Part of PBX interface, called from ast_hangup */ static int sip_hangup(struct ast_channel *ast) { - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int needcancel = FALSE; int needdestroy = 0; struct ast_channel *oldowner = ast; @@ -6328,9 +6328,9 @@ static int sip_hangup(struct ast_channel *ast) ast_debug(1, "Asked to hangup channel that was not connected\n"); return 0; } - if (ast_test_flag(ast, AST_FLAG_ANSWERED_ELSEWHERE) || ast->hangupcause == AST_CAUSE_ANSWERED_ELSEWHERE) { + if (ast_test_flag(ast, AST_FLAG_ANSWERED_ELSEWHERE) || ast_channel_hangupcause(ast) == AST_CAUSE_ANSWERED_ELSEWHERE) { ast_debug(1, "This call was answered elsewhere"); - if (ast->hangupcause == AST_CAUSE_ANSWERED_ELSEWHERE) { + if (ast_channel_hangupcause(ast) == AST_CAUSE_ANSWERED_ELSEWHERE) { ast_debug(1, "####### It's the cause code, buddy. The cause code!!!\n"); } append_history(p, "Cancel", "Call answered elsewhere"); @@ -6339,7 +6339,7 @@ static int sip_hangup(struct ast_channel *ast) /* Store hangupcause locally in PVT so we still have it before disconnect */ if (p->owner) - p->hangupcause = p->owner->hangupcause; + p->hangupcause = ast_channel_hangupcause(p->owner); if (ast_test_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER)) { if (ast_test_flag(&p->flags[0], SIP_INC_COUNT) || ast_test_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD)) { @@ -6350,7 +6350,7 @@ static int sip_hangup(struct ast_channel *ast) ast_debug(4, "SIP Transfer: Not hanging up right now... Rescheduling hangup for %s.\n", p->callid); sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); ast_clear_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER); /* Really hang up next time */ - p->owner->tech_pvt = dialog_unref(p->owner->tech_pvt, "unref p->owner->tech_pvt"); + ast_channel_tech_pvt_set(p->owner, dialog_unref(ast_channel_tech_pvt(p->owner), "unref p->owner->tech_pvt")); sip_pvt_lock(p); p->owner = NULL; /* Owner will be gone after we return, so take it away */ sip_pvt_unlock(p); @@ -6381,9 +6381,9 @@ static int sip_hangup(struct ast_channel *ast) } /* If the call is not UP, we need to send CANCEL instead of BYE */ /* In case of re-invites, the call might be UP even though we have an incomplete invite transaction */ - if (p->invitestate < INV_COMPLETED && p->owner->_state != AST_STATE_UP) { + if (p->invitestate < INV_COMPLETED && ast_channel_state(p->owner) != AST_STATE_UP) { needcancel = TRUE; - ast_debug(4, "Hanging up channel in state %s (not UP)\n", ast_state2str(ast->_state)); + ast_debug(4, "Hanging up channel in state %s (not UP)\n", ast_state2str(ast_channel_state(ast))); } stop_media_flows(p); /* Immediately stop RTP, VRTP and UDPTL as applicable */ @@ -6394,7 +6394,7 @@ static int sip_hangup(struct ast_channel *ast) disable_dsp_detect(p); p->owner = NULL; - ast->tech_pvt = dialog_unref(ast->tech_pvt, "unref ast->tech_pvt"); + ast_channel_tech_pvt_set(ast, dialog_unref(ast_channel_tech_pvt(ast), "unref ast->tech_pvt")); ast_module_unref(ast_module_info->self); /* Do not destroy this pvt until we have timeout or @@ -6467,9 +6467,9 @@ static int sip_hangup(struct ast_channel *ast) } if (bridge) { - struct sip_pvt *q = bridge->tech_pvt; + struct sip_pvt *q = ast_channel_tech_pvt(bridge); - if (IS_SIP_TECH(bridge->tech) && q && q->rtp) { + if (IS_SIP_TECH(ast_channel_tech(bridge)) && q && q->rtp) { ast_rtp_instance_set_stats_vars(bridge, q->rtp); } ast_channel_unlock(bridge); @@ -6503,7 +6503,7 @@ static int sip_hangup(struct ast_channel *ast) } /* Send a hangup */ - if (oldowner->_state == AST_STATE_UP) { + if (ast_channel_state(oldowner) == AST_STATE_UP) { transmit_request_with_auth(p, SIP_BYE, 0, XMIT_RELIABLE, 1); } @@ -6560,10 +6560,10 @@ static void try_suggested_sip_codec(struct sip_pvt *p) static int sip_answer(struct ast_channel *ast) { int res = 0; - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); sip_pvt_lock(p); - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { try_suggested_sip_codec(p); ast_setstate(ast, AST_STATE_UP); @@ -6579,16 +6579,16 @@ static int sip_answer(struct ast_channel *ast) /*! \brief Send frame to media channel (rtp) */ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) { - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int res = 0; switch (frame->frametype) { case AST_FRAME_VOICE: - if (!(ast_format_cap_iscompatible(ast->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &frame->subclass.format))) { char s1[512]; ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s read/write = %s/%s\n", ast_getformatname(&frame->subclass.format), - ast_getformatname_multiple(s1, sizeof(s1), ast->nativeformats), + ast_getformatname_multiple(s1, sizeof(s1), ast_channel_nativeformats(ast)), ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat)); return 0; @@ -6601,7 +6601,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) break; } else if (p->rtp) { /* If channel is not up, activate early media session */ - if ((ast->_state != AST_STATE_UP) && + if ((ast_channel_state(ast) != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { ast_rtp_instance_update_source(p->rtp); @@ -6622,7 +6622,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) sip_pvt_lock(p); if (p->vrtp) { /* Activate video early media */ - if ((ast->_state != AST_STATE_UP) && + if ((ast_channel_state(ast) != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { p->invitestate = INV_EARLY_MEDIA; @@ -6643,7 +6643,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) } else { if (p->trtp) { /* Activate text early media */ - if ((ast->_state != AST_STATE_UP) && + if ((ast_channel_state(ast) != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { p->invitestate = INV_EARLY_MEDIA; @@ -6667,7 +6667,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) we simply forget the frames if we get modem frames before the bridge is up. Fax will re-transmit. */ - if ((ast->_state == AST_STATE_UP) && + if ((ast_channel_state(ast) == AST_STATE_UP) && p->udptl && (p->t38.state == T38_ENABLED)) { res = ast_udptl_write(p->udptl, frame); @@ -6695,14 +6695,14 @@ static int sip_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) if (oldchan && ast_test_flag(oldchan, AST_FLAG_ZOMBIE)) ast_debug(1, "Old channel is zombie\n"); - if (!newchan || !newchan->tech_pvt) { + if (!newchan || !ast_channel_tech_pvt(newchan)) { if (!newchan) ast_log(LOG_WARNING, "No new channel! Fixup of %s failed.\n", ast_channel_name(oldchan)); else ast_log(LOG_WARNING, "No SIP tech_pvt! Fixup of %s failed.\n", ast_channel_name(oldchan)); return -1; } - p = newchan->tech_pvt; + p = ast_channel_tech_pvt(newchan); sip_pvt_lock(p); append_history(p, "Masq", "Old channel: %s\n", ast_channel_name(oldchan)); @@ -6728,7 +6728,7 @@ static int sip_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) static int sip_senddigit_begin(struct ast_channel *ast, char digit) { - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int res = 0; sip_pvt_lock(p); @@ -6752,7 +6752,7 @@ static int sip_senddigit_begin(struct ast_channel *ast, char digit) within one call, we're able to transmit in many methods simultaneously */ static int sip_senddigit_end(struct ast_channel *ast, char digit, unsigned int duration) { - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int res = 0; sip_pvt_lock(p); @@ -6777,13 +6777,13 @@ static int sip_senddigit_end(struct ast_channel *ast, char digit, unsigned int d /*! \brief Transfer SIP call */ static int sip_transfer(struct ast_channel *ast, const char *dest) { - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int res; if (dest == NULL) /* functions below do not take a NULL */ dest = ""; sip_pvt_lock(p); - if (ast->_state == AST_STATE_RING) + if (ast_channel_state(ast) == AST_STATE_RING) res = sip_sipredirect(p, dest); else res = transmit_refer(p, dest); @@ -6925,13 +6925,13 @@ static int initialize_udptl(struct sip_pvt *p) */ static int sip_indicate(struct ast_channel *ast, int condition, const void *data, size_t datalen) { - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int res = 0; sip_pvt_lock(p); switch(condition) { case AST_CONTROL_RINGING: - if (ast->_state == AST_STATE_RING) { + if (ast_channel_state(ast) == AST_STATE_RING) { p->invitestate = INV_EARLY_MEDIA; if (!ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) || (ast_test_flag(&p->flags[0], SIP_PROG_INBAND) == SIP_PROG_INBAND_NEVER)) { @@ -6947,7 +6947,7 @@ static int sip_indicate(struct ast_channel *ast, int condition, const void *data res = -1; break; case AST_CONTROL_BUSY: - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { transmit_response_reliable(p, "486 Busy Here", &p->initreq); p->invitestate = INV_COMPLETED; sip_alreadygone(p); @@ -6957,7 +6957,7 @@ static int sip_indicate(struct ast_channel *ast, int condition, const void *data res = -1; break; case AST_CONTROL_CONGESTION: - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { transmit_response_reliable(p, "503 Service Unavailable", &p->initreq); p->invitestate = INV_COMPLETED; sip_alreadygone(p); @@ -6967,7 +6967,7 @@ static int sip_indicate(struct ast_channel *ast, int condition, const void *data res = -1; break; case AST_CONTROL_INCOMPLETE: - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { switch (ast_test_flag(&p->flags[1], SIP_PAGE2_ALLOWOVERLAP)) { case SIP_PAGE2_ALLOWOVERLAP_YES: transmit_response_reliable(p, "484 Address Incomplete", &p->initreq); @@ -6989,7 +6989,7 @@ static int sip_indicate(struct ast_channel *ast, int condition, const void *data } break; case AST_CONTROL_PROCEEDING: - if ((ast->_state != AST_STATE_UP) && + if ((ast_channel_state(ast) != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { transmit_response(p, "100 Trying", &p->initreq); @@ -6999,7 +6999,7 @@ static int sip_indicate(struct ast_channel *ast, int condition, const void *data res = -1; break; case AST_CONTROL_PROGRESS: - if ((ast->_state != AST_STATE_UP) && + if ((ast_channel_state(ast) != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { p->invitestate = INV_EARLY_MEDIA; @@ -7141,7 +7141,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit ast_channel_cc_params_init(tmp, i->cc_params); tmp->caller.id.tag = ast_strdup(i->cid_tag); - tmp->tech = ( ast_test_flag(&i->flags[0], SIP_DTMF) == SIP_DTMF_INFO || ast_test_flag(&i->flags[0], SIP_DTMF) == SIP_DTMF_SHORTINFO) ? &sip_tech_info : &sip_tech; + ast_channel_tech_set(tmp, (ast_test_flag(&i->flags[0], SIP_DTMF) == SIP_DTMF_INFO || ast_test_flag(&i->flags[0], SIP_DTMF) == SIP_DTMF_SHORTINFO) ? &sip_tech_info : &sip_tech); /* Select our native format based on codec preference until we receive something from another device to the contrary. */ @@ -7154,13 +7154,13 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit } /* Set the native formats */ - ast_format_cap_copy(tmp->nativeformats, what); + ast_format_cap_copy(ast_channel_nativeformats(tmp), what); /* choose and use only the best audio format for our native formats */ - ast_codec_choose(&i->prefs, tmp->nativeformats, 1, &fmt); /* get the best audio format */ - ast_format_cap_remove_bytype(tmp->nativeformats, AST_FORMAT_TYPE_AUDIO); /* remove only the other audio formats */ - ast_format_cap_add(tmp->nativeformats, &fmt); /* add our best choice back */ + ast_codec_choose(&i->prefs, ast_channel_nativeformats(tmp), 1, &fmt); /* get the best audio format */ + ast_format_cap_remove_bytype(ast_channel_nativeformats(tmp), AST_FORMAT_TYPE_AUDIO); /* remove only the other audio formats */ + ast_format_cap_add(ast_channel_nativeformats(tmp), &fmt); /* add our best choice back */ - ast_debug(3, "*** Our native formats are %s \n", ast_getformatname_multiple(buf, SIPBUFSIZE, tmp->nativeformats)); + ast_debug(3, "*** Our native formats are %s \n", ast_getformatname_multiple(buf, SIPBUFSIZE, ast_channel_nativeformats(tmp))); ast_debug(3, "*** Joint capabilities are %s \n", ast_getformatname_multiple(buf, SIPBUFSIZE, i->jointcaps)); ast_debug(3, "*** Our capabilities are %s \n", ast_getformatname_multiple(buf, SIPBUFSIZE, i->caps)); ast_debug(3, "*** AST_CODEC_CHOOSE formats are %s \n", ast_getformatname(&fmt)); @@ -7226,9 +7226,9 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit } if (state == AST_STATE_RING) { - tmp->rings = 1; + ast_channel_rings_set(tmp, 1); } - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); ast_format_copy(&tmp->writeformat, &fmt); ast_format_copy(&tmp->rawwriteformat, &fmt); @@ -7238,7 +7238,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit ast_format_copy(&tmp->rawreadformat, &fmt); ast_rtp_instance_set_read_format(i->rtp, &fmt); - tmp->tech_pvt = dialog_ref(i, "sip_new: set chan->tech_pvt to i"); + ast_channel_tech_pvt_set(tmp, dialog_ref(i, "sip_new: set chan->tech_pvt to i")); tmp->callgroup = i->callgroup; tmp->pickupgroup = i->pickupgroup; @@ -7251,15 +7251,17 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit ast_channel_accountcode_set(tmp, i->accountcode); } if (i->amaflags) { - tmp->amaflags = i->amaflags; + ast_channel_amaflags_set(tmp, i->amaflags); } if (!ast_strlen_zero(i->language)) { ast_channel_language_set(tmp, i->language); } if (!ast_strlen_zero(i->zone)) { - if (!(tmp->zone = ast_get_indication_zone(i->zone))) { + struct ast_tone_zone *zone; + if (!(zone = ast_get_indication_zone(i->zone))) { ast_log(LOG_ERROR, "Unknown country code '%s' for tonezone. Check indications.conf for available country codes.\n", i->zone); } + ast_channel_zone_set(tmp, zone); } i->owner = tmp; ast_module_ref(ast_module_info->self); @@ -7293,7 +7295,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit tmp->dialed.number.str = ast_strdup(i->exten); } - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); if (!ast_strlen_zero(i->uri)) { pbx_builtin_setvar_helper(tmp, "SIPURI", i->uri); } @@ -7514,7 +7516,7 @@ static struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p return &ast_null_frame; } - switch(ast->fdno) { + switch(ast_channel_fdno(ast)) { case 0: f = ast_rtp_instance_read(p->rtp, 0); /* RTP Audio */ break; @@ -7567,7 +7569,7 @@ static struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p return f; } - if (f && !ast_format_cap_iscompatible(p->owner->nativeformats, &f->subclass.format)) { + if (f && !ast_format_cap_iscompatible(ast_channel_nativeformats(p->owner), &f->subclass.format)) { if (!ast_format_cap_iscompatible(p->jointcaps, &f->subclass.format)) { ast_debug(1, "Bogus frame of format '%s' received from '%s'!\n", ast_getformatname(&f->subclass.format), ast_channel_name(p->owner)); @@ -7575,8 +7577,8 @@ static struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p } ast_debug(1, "Oooh, format changed to %s\n", ast_getformatname(&f->subclass.format)); - ast_format_cap_remove_bytype(p->owner->nativeformats, AST_FORMAT_TYPE_AUDIO); - ast_format_cap_add(p->owner->nativeformats, &f->subclass.format); + ast_format_cap_remove_bytype(ast_channel_nativeformats(p->owner), AST_FORMAT_TYPE_AUDIO); + ast_format_cap_add(ast_channel_nativeformats(p->owner), &f->subclass.format); ast_set_read_format(p->owner, &p->owner->readformat); ast_set_write_format(p->owner, &p->owner->writeformat); } @@ -7607,7 +7609,7 @@ static struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p static struct ast_frame *sip_read(struct ast_channel *ast) { struct ast_frame *fr; - struct sip_pvt *p = ast->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(ast); int faxdetected = FALSE; sip_pvt_lock(p); @@ -7644,7 +7646,7 @@ static struct ast_frame *sip_read(struct ast_channel *ast) } /* Only allow audio through if they sent progress with SDP, or if the channel is actually answered */ - if (fr && fr->frametype == AST_FRAME_VOICE && p->invitestate != INV_EARLY_MEDIA && ast->_state != AST_STATE_UP) { + if (fr && fr->frametype == AST_FRAME_VOICE && p->invitestate != INV_EARLY_MEDIA && ast_channel_state(ast) != AST_STATE_UP) { fr = &ast_null_frame; } @@ -9645,14 +9647,14 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action char s1[SIPBUFSIZE], s2[SIPBUFSIZE]; ast_debug(1, "Setting native formats after processing SDP. peer joint formats %s, old nativeformats %s\n", ast_getformatname_multiple(s1, SIPBUFSIZE, p->jointcaps), - ast_getformatname_multiple(s2, SIPBUFSIZE, p->owner->nativeformats)); + ast_getformatname_multiple(s2, SIPBUFSIZE, ast_channel_nativeformats(p->owner))); } ast_codec_choose(&p->prefs, p->jointcaps, 1, &tmp_fmt); - ast_format_cap_set(p->owner->nativeformats, &tmp_fmt); - ast_format_cap_joint_append(p->caps, vpeercapability, p->owner->nativeformats); - ast_format_cap_joint_append(p->caps, tpeercapability, p->owner->nativeformats); + ast_format_cap_set(ast_channel_nativeformats(p->owner), &tmp_fmt); + ast_format_cap_joint_append(p->caps, vpeercapability, ast_channel_nativeformats(p->owner)); + ast_format_cap_joint_append(p->caps, tpeercapability, ast_channel_nativeformats(p->owner)); ast_set_read_format(p->owner, &p->owner->readformat); ast_set_write_format(p->owner, &p->owner->writeformat); @@ -10767,8 +10769,8 @@ static int __transmit_response(struct sip_pvt *p, const char *msg, const struct if (ast_test_flag(&p->flags[1], SIP_PAGE2_Q850_REASON)) { int hangupcause = 0; - if (p->owner && p->owner->hangupcause) { - hangupcause = p->owner->hangupcause; + if (p->owner && ast_channel_hangupcause(p->owner)) { + hangupcause = ast_channel_hangupcause(p->owner); } else if (p->hangupcause) { hangupcause = p->hangupcause; } else { @@ -10783,9 +10785,9 @@ static int __transmit_response(struct sip_pvt *p, const char *msg, const struct } } - if (p->owner && p->owner->hangupcause) { - add_header(&resp, "X-Asterisk-HangupCause", ast_cause2str(p->owner->hangupcause)); - snprintf(buf, sizeof(buf), "%d", p->owner->hangupcause); + if (p->owner && ast_channel_hangupcause(p->owner)) { + add_header(&resp, "X-Asterisk-HangupCause", ast_cause2str(ast_channel_hangupcause(p->owner))); + snprintf(buf, sizeof(buf), "%d", ast_channel_hangupcause(p->owner)); add_header(&resp, "X-Asterisk-HangupCauseCode", buf); } } @@ -12949,7 +12951,7 @@ static int find_calling_channel(void *obj, void *arg, void *data, int flags) ast_channel_lock(c); - res = (c->pbx && + res = (ast_channel_pbx(c) && (!strcasecmp(ast_channel_macroexten(c), p->exten) || !strcasecmp(ast_channel_exten(c), p->exten)) && (sip_cfg.notifycid == IGNORE_CONTEXT || !strcasecmp(ast_channel_context(c), p->context))); @@ -13394,7 +13396,7 @@ static void update_redirecting(struct sip_pvt *p, const void *data, size_t datal { struct sip_request resp; - if (p->owner->_state == AST_STATE_UP || ast_test_flag(&p->flags[0], SIP_OUTGOING)) { + if (ast_channel_state(p->owner) == AST_STATE_UP || ast_test_flag(&p->flags[0], SIP_OUTGOING)) { return; } @@ -13420,7 +13422,7 @@ static void update_connectedline(struct sip_pvt *p, const void *data, size_t dat S_COR(p->owner->connected.id.name.valid, p->owner->connected.id.name.str, ""), S_COR(p->owner->connected.id.number.valid, p->owner->connected.id.number.str, "")); - if (p->owner->_state == AST_STATE_UP || ast_test_flag(&p->flags[0], SIP_OUTGOING)) { + if (ast_channel_state(p->owner) == AST_STATE_UP || ast_test_flag(&p->flags[0], SIP_OUTGOING)) { struct sip_request req; if (p->invitestate == INV_CONFIRMED || p->invitestate == INV_TERMINATED) { @@ -13450,20 +13452,20 @@ static void update_connectedline(struct sip_pvt *p, const void *data, size_t dat if (ast_test_flag(&p->flags[1], SIP_PAGE2_RPID_IMMEDIATE)) { struct sip_request resp; - if ((p->owner->_state == AST_STATE_RING) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT)) { + if ((ast_channel_state(p->owner) == AST_STATE_RING) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT)) { ast_clear_flag(&p->flags[1], SIP_PAGE2_CONNECTLINEUPDATE_PEND); respprep(&resp, p, "180 Ringing", &p->initreq); add_rpid(&resp, p); send_response(p, &resp, XMIT_UNRELIABLE, 0); ast_set_flag(&p->flags[0], SIP_RINGING); - } else if (p->owner->_state == AST_STATE_RINGING) { + } else if (ast_channel_state(p->owner) == AST_STATE_RINGING) { ast_clear_flag(&p->flags[1], SIP_PAGE2_CONNECTLINEUPDATE_PEND); respprep(&resp, p, "183 Session Progress", &p->initreq); add_rpid(&resp, p); send_response(p, &resp, XMIT_UNRELIABLE, 0); ast_set_flag(&p->flags[0], SIP_PROGRESS_SENT); } else { - ast_debug(1, "Unable able to send update to '%s' in state '%s'\n", ast_channel_name(p->owner), ast_state2str(p->owner->_state)); + ast_debug(1, "Unable able to send update to '%s' in state '%s'\n", ast_channel_name(p->owner), ast_state2str(ast_channel_state(p->owner))); } } } @@ -18662,8 +18664,8 @@ static int show_chanstats_cb(void *__cur, void *__arg, int flags) ast_rtp_instance_get_stats(cur->rtp, &stats, AST_RTP_INSTANCE_STAT_ALL); - if (c && c->cdr && !ast_tvzero(c->cdr->start)) { - duration = (int)(ast_tvdiff_ms(ast_tvnow(), c->cdr->start) / 1000); + if (c && ast_channel_cdr(c) && !ast_tvzero(ast_channel_cdr(c)->start)) { + duration = (int)(ast_tvdiff_ms(ast_tvnow(), ast_channel_cdr(c)->start) / 1000); durh = duration / 3600; durm = (duration % 3600) / 60; durs = duration % 60; @@ -19039,7 +19041,7 @@ static int show_channels_cb(void *__cur, void *__arg, int flags) ast_cli(arg->fd, FORMAT, ast_sockaddr_stringify_addr(dst), S_OR(cur->username, S_OR(cur->cid_num, "(None)")), cur->callid, - cur->owner ? ast_getformatname_multiple(formatbuf, sizeof(formatbuf), cur->owner->nativeformats) : "(nothing)", + cur->owner ? ast_getformatname_multiple(formatbuf, sizeof(formatbuf), ast_channel_nativeformats(cur->owner)) : "(nothing)", AST_CLI_YESNO(ast_test_flag(&cur->flags[1], SIP_PAGE2_CALL_ONHOLD)), cur->needdestroy ? "(d)" : "", cur->lastmsg , @@ -19292,7 +19294,7 @@ static char *sip_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_a ast_cli(a->fd, " Non-Codec Capability (DTMF): %d\n", cur->noncodeccapability); ast_cli(a->fd, " Their Codec Capability: %s\n", ast_getformatname_multiple(formatbuf, sizeof(formatbuf), cur->peercaps)); ast_cli(a->fd, " Joint Codec Capability: %s\n", ast_getformatname_multiple(formatbuf, sizeof(formatbuf), cur->jointcaps)); - ast_cli(a->fd, " Format: %s\n", cur->owner ? ast_getformatname_multiple(formatbuf, sizeof(formatbuf), cur->owner->nativeformats) : "(nothing)" ); + ast_cli(a->fd, " Format: %s\n", cur->owner ? ast_getformatname_multiple(formatbuf, sizeof(formatbuf), ast_channel_nativeformats(cur->owner)) : "(nothing)" ); ast_cli(a->fd, " T.38 support %s\n", AST_CLI_YESNO(cur->udptl != NULL)); ast_cli(a->fd, " Video support %s\n", AST_CLI_YESNO(cur->vrtp != NULL)); ast_cli(a->fd, " MaxCallBR: %d kbps\n", cur->maxcallbitrate); @@ -19592,10 +19594,10 @@ static void handle_request_info(struct sip_pvt *p, struct sip_request *req) } else if (!ast_strlen_zero(c = sip_get_header(req, "X-ClientCode"))) { /* Client code (from SNOM phone) */ if (ast_test_flag(&p->flags[0], SIP_USECLIENTCODE)) { - if (p->owner && p->owner->cdr) { + if (p->owner && ast_channel_cdr(p->owner)) { ast_cdr_setuserfield(p->owner, c); } - if (p->owner && ast_bridged_channel(p->owner) && ast_bridged_channel(p->owner)->cdr) { + if (p->owner && ast_bridged_channel(p->owner) && ast_channel_cdr(ast_bridged_channel(p->owner))) { ast_cdr_setuserfield(ast_bridged_channel(p->owner), c); } transmit_response(p, "200 OK", req); @@ -20111,7 +20113,7 @@ static int func_header_read(struct ast_channel *chan, const char *function, char } ast_channel_lock(chan); - if (!IS_SIP_TECH(chan->tech)) { + if (!IS_SIP_TECH(ast_channel_tech(chan))) { ast_log(LOG_WARNING, "This function can only be used on SIP channels.\n"); ast_channel_unlock(chan); return -1; @@ -20126,7 +20128,7 @@ static int func_header_read(struct ast_channel *chan, const char *function, char number = 1; } - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); /* If there is no private structure, this channel is no longer alive */ if (!p) { @@ -20285,7 +20287,7 @@ static int function_sipchaninfo_read(struct ast_channel *chan, const char *cmd, } ast_channel_lock(chan); - if (!IS_SIP_TECH(chan->tech)) { + if (!IS_SIP_TECH(ast_channel_tech(chan))) { ast_log(LOG_WARNING, "This function can only be used on SIP channels.\n"); ast_channel_unlock(chan); return -1; @@ -20296,7 +20298,7 @@ static int function_sipchaninfo_read(struct ast_channel *chan, const char *cmd, ast_log(LOG_WARNING, "SIPCHANINFO() is deprecated. Please transition to using CHANNEL().\n"); } - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); /* If there is no private structure, this channel is no longer alive */ if (!p) { @@ -20709,7 +20711,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, const char *rest int outgoing = ast_test_flag(&p->flags[0], SIP_OUTGOING); int res = 0; int xmitres = 0; - int reinvite = (p->owner && p->owner->_state == AST_STATE_UP); + int reinvite = (p->owner && ast_channel_state(p->owner) == AST_STATE_UP); char *p_hdrval; int rtn; struct ast_party_connected_line connected; @@ -20808,7 +20810,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, const char *rest } sip_handle_cc(p, req, AST_CC_CCNR); ast_queue_control(p->owner, AST_CONTROL_RINGING); - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { ast_setstate(p->owner, AST_STATE_RINGING); } } @@ -21143,7 +21145,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, const char *rest case 491: /* Pending */ xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE); if (p->owner && !req->ignore) { - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION); } else { /* This is a re-invite that failed. */ @@ -21772,21 +21774,22 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc if (owner) { const char *rp = NULL, *rh = NULL; - owner->hangupcause = 0; + ast_channel_hangupcause_set(owner, 0); if (ast_test_flag(&p->flags[1], SIP_PAGE2_Q850_REASON) && (rh = sip_get_header(req, "Reason"))) { rh = ast_skip_blanks(rh); if (!strncasecmp(rh, "Q.850", 5)) { + int cause = ast_channel_hangupcause(owner); rp = strstr(rh, "cause="); - if (rp && sscanf(rp + 6, "%30d", &owner->hangupcause) == 1) { - owner->hangupcause &= 0x7f; + if (rp && sscanf(rp + 6, "%30d", &cause) == 1) { + ast_channel_hangupcause_set(owner, cause & 0x7f); if (req->debug) - ast_verbose("Using Reason header for cause code: %d\n", owner->hangupcause); + ast_verbose("Using Reason header for cause code: %d\n", ast_channel_hangupcause(owner)); } } } - if (!owner->hangupcause) - owner->hangupcause = hangup_sip2cause(resp); + if (!ast_channel_hangupcause(owner)) + ast_channel_hangupcause_set(owner, hangup_sip2cause(resp)); } if (p->socket.type == SIP_TRANSPORT_UDP) { @@ -22213,18 +22216,18 @@ static void *sip_park_thread(void *stuff) res = ast_park_call_exten(transferee, transferer, d->park_exten, d->park_context, 0, &ext); - sip_pvt_lock(transferer->tech_pvt); + sip_pvt_lock(ast_channel_tech_pvt(transferer)); #ifdef WHEN_WE_KNOW_THAT_THE_CLIENT_SUPPORTS_MESSAGE if (res) { - destroy_msg_headers(transferer->tech_pvt); - ast_string_field_set(transferer->tech_pvt, msg_body, "Unable to park call."); - transmit_message(transferer->tech_pvt, 0, 0); + destroy_msg_headers(ast_channel_tech_pvt(transferer)); + ast_string_field_set(ast_channel_tech_pvt(transferer), msg_body, "Unable to park call."); + transmit_message(ast_channel_tech_pvt(transferer), 0, 0); } else { /* Then tell the transferer what happened */ - destroy_msg_headers(transferer->tech_pvt); + destroy_msg_headers(ast_channel_tech_pvt(transferer)); sprintf(buf, "Call parked on extension '%d'.", ext); - ast_string_field_set(transferer->tech_pvt, msg_body, buf); - transmit_message(transferer->tech_pvt, 0, 0); + ast_string_field_set(ast_channel_tech_pvt(transferer), msg_body, buf); + transmit_message(ast_channel_tech_pvt(transferer), 0, 0); } #endif @@ -22232,16 +22235,16 @@ static void *sip_park_thread(void *stuff) /* Transmit response to the REFER request */ if (!res) { /* Transfer succeeded */ - append_history(transferer->tech_pvt, "SIPpark", "Parked call on %d", ext); - transmit_notify_with_sipfrag(transferer->tech_pvt, d->seqno, "200 OK", TRUE); - sip_pvt_unlock(transferer->tech_pvt); - transferer->hangupcause = AST_CAUSE_NORMAL_CLEARING; + append_history(ast_channel_tech_pvt(transferer), "SIPpark", "Parked call on %d", ext); + transmit_notify_with_sipfrag(ast_channel_tech_pvt(transferer), d->seqno, "200 OK", TRUE); + sip_pvt_unlock(ast_channel_tech_pvt(transferer)); + ast_channel_hangupcause_set(transferer, AST_CAUSE_NORMAL_CLEARING); ast_hangup(transferer); /* This will cause a BYE */ ast_debug(1, "SIP Call parked on extension '%d'\n", ext); } else { - transmit_notify_with_sipfrag(transferer->tech_pvt, d->seqno, "503 Service Unavailable", TRUE); - append_history(transferer->tech_pvt, "SIPpark", "Parking failed\n"); - sip_pvt_unlock(transferer->tech_pvt); + transmit_notify_with_sipfrag(ast_channel_tech_pvt(transferer), d->seqno, "503 Service Unavailable", TRUE); + append_history(ast_channel_tech_pvt(transferer), "SIPpark", "Parking failed\n"); + sip_pvt_unlock(ast_channel_tech_pvt(transferer)); ast_debug(1, "SIP Call parked failed \n"); /* Do not hangup call */ } @@ -22259,8 +22262,8 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct struct ast_channel *transferee, *transferer; pthread_t th; - transferee = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan1), ast_channel_exten(chan1), ast_channel_context(chan1), ast_channel_linkedid(chan1), chan1->amaflags, "Parking/%s", ast_channel_name(chan1)); - transferer = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan2), ast_channel_exten(chan2), ast_channel_context(chan2), ast_channel_linkedid(chan2), chan2->amaflags, "SIPPeer/%s", ast_channel_name(chan2)); + transferee = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan1), ast_channel_exten(chan1), ast_channel_context(chan1), ast_channel_linkedid(chan1), ast_channel_amaflags(chan1), "Parking/%s", ast_channel_name(chan1)); + transferer = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, ast_channel_accountcode(chan2), ast_channel_exten(chan2), ast_channel_context(chan2), ast_channel_linkedid(chan2), ast_channel_amaflags(chan2), "SIPPeer/%s", ast_channel_name(chan2)); d = ast_calloc(1, sizeof(*d)); if (!transferee || !transferer || !d) { if (transferee) { @@ -22300,7 +22303,7 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct /* Setup the extensions and such */ ast_channel_context_set(transferee, ast_channel_context(chan1)); ast_channel_exten_set(transferee, ast_channel_exten(chan1)); - transferee->priority = chan1->priority; + ast_channel_priority_set(transferee, ast_channel_priority(chan1)); ast_do_masquerade(transferee); @@ -22324,7 +22327,7 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct /* Setup the extensions and such */ ast_channel_context_set(transferer, ast_channel_context(chan2)); ast_channel_exten_set(transferer, ast_channel_exten(chan2)); - transferer->priority = chan2->priority; + ast_channel_priority_set(transferer, ast_channel_priority(chan2)); ast_do_masquerade(transferer); @@ -22355,9 +22358,9 @@ static void *sip_pickup_thread(void *stuff) chan = stuff; if (ast_pickup_call(chan)) { - chan->hangupcause = AST_CAUSE_CALL_REJECTED; + ast_channel_hangupcause_set(chan, AST_CAUSE_CALL_REJECTED); } else { - chan->hangupcause = AST_CAUSE_NORMAL_CLEARING; + ast_channel_hangupcause_set(chan, AST_CAUSE_NORMAL_CLEARING); } ast_hangup(chan); ast_channel_unref(chan); @@ -22389,10 +22392,10 @@ static int sip_pickup(struct ast_channel *chan) */ static void ast_quiet_chan(struct ast_channel *chan) { - if (chan && chan->_state == AST_STATE_UP) { + if (chan && ast_channel_state(chan) == AST_STATE_UP) { if (ast_test_flag(chan, AST_FLAG_MOH)) ast_moh_stop(chan); - else if (chan->generatordata) + else if (ast_channel_generatordata(chan)) ast_deactivate_generator(chan); } } @@ -22412,19 +22415,19 @@ static int attempt_transfer(struct sip_dual *transferer, struct sip_dual *target all channels to the transferer */ ast_debug(4, "Sip transfer:--------------------\n"); if (transferer->chan1) - ast_debug(4, "-- Transferer to PBX channel: %s State %s\n", ast_channel_name(transferer->chan1), ast_state2str(transferer->chan1->_state)); + ast_debug(4, "-- Transferer to PBX channel: %s State %s\n", ast_channel_name(transferer->chan1), ast_state2str(ast_channel_state(transferer->chan1))); else ast_debug(4, "-- No transferer first channel - odd??? \n"); if (target->chan1) - ast_debug(4, "-- Transferer to PBX second channel (target): %s State %s\n", ast_channel_name(target->chan1), ast_state2str(target->chan1->_state)); + ast_debug(4, "-- Transferer to PBX second channel (target): %s State %s\n", ast_channel_name(target->chan1), ast_state2str(ast_channel_state(target->chan1))); else ast_debug(4, "-- No target first channel ---\n"); if (transferer->chan2) - ast_debug(4, "-- Bridged call to transferee: %s State %s\n", ast_channel_name(transferer->chan2), ast_state2str(transferer->chan2->_state)); + ast_debug(4, "-- Bridged call to transferee: %s State %s\n", ast_channel_name(transferer->chan2), ast_state2str(ast_channel_state(transferer->chan2))); else ast_debug(4, "-- No bridged call to transferee\n"); if (target->chan2) - ast_debug(4, "-- Bridged call to transfer target: %s State %s\n", target->chan2 ? ast_channel_name(target->chan2) : "<none>", target->chan2 ? ast_state2str(target->chan2->_state) : "(none)"); + ast_debug(4, "-- Bridged call to transfer target: %s State %s\n", target->chan2 ? ast_channel_name(target->chan2) : "<none>", target->chan2 ? ast_state2str(ast_channel_state(target->chan2)) : "(none)"); else ast_debug(4, "-- No target second channel ---\n"); ast_debug(4, "-- END Sip transfer:--------------------\n"); @@ -22816,7 +22819,7 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, in struct ast_channel *targetcall; /* The bridge to the take-over target */ /* Check if we're in ring state */ - if (replacecall->_state == AST_STATE_RING) + if (ast_channel_state(replacecall) == AST_STATE_RING) earlyreplace = 1; /* Check if we have a bridge */ @@ -22827,7 +22830,7 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, in oneleggedreplace = 1; } } - if (targetcall && targetcall->_state == AST_STATE_RINGING) + if (targetcall && ast_channel_state(targetcall) == AST_STATE_RINGING) ast_debug(4, "SIP transfer: Target channel is in ringing state\n"); if (targetcall) @@ -22912,13 +22915,13 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, in } ast_channel_lock(c); if (earlyreplace || oneleggedreplace ) { - c->hangupcause = AST_CAUSE_SWITCH_CONGESTION; + ast_channel_hangupcause_set(c, AST_CAUSE_SWITCH_CONGESTION); } ast_setstate(c, AST_STATE_DOWN); ast_channel_unlock(c); /* The call should be down with no ast_channel, so hang it up */ - c->tech_pvt = dialog_unref(c->tech_pvt, "unref dialog c->tech_pvt"); + ast_channel_tech_pvt_set(c, dialog_unref(ast_channel_tech_pvt(c), "unref dialog c->tech_pvt")); /* c and c's tech pvt must be unlocked at this point for ast_hangup */ ast_hangup(c); @@ -23088,7 +23091,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int p->reqsipoptions = required_profile; /* Check if this is a loop */ - if (ast_test_flag(&p->flags[0], SIP_OUTGOING) && p->owner && (p->invitestate != INV_TERMINATED && p->invitestate != INV_CONFIRMED) && p->owner->_state != AST_STATE_UP) { + if (ast_test_flag(&p->flags[0], SIP_OUTGOING) && p->owner && (p->invitestate != INV_TERMINATED && p->invitestate != INV_CONFIRMED) && ast_channel_state(p->owner) != AST_STATE_UP) { /* This is a call to ourself. Send ourselves an error code and stop processing immediately, as SIP really has no good mechanism for being able to call yourself */ @@ -23287,7 +23290,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int error = 1; } - if (!error && ast_strlen_zero(pickup.exten) && p->refer->refer_call->owner->_state != AST_STATE_RINGING && p->refer->refer_call->owner->_state != AST_STATE_RING && p->refer->refer_call->owner->_state != AST_STATE_UP) { + if (!error && ast_strlen_zero(pickup.exten) && ast_channel_state(p->refer->refer_call->owner) != AST_STATE_RINGING && ast_channel_state(p->refer->refer_call->owner) != AST_STATE_RING && ast_channel_state(p->refer->refer_call->owner) != AST_STATE_UP) { ast_log(LOG_NOTICE, "Supervised transfer attempted to replace non-ringing or active call id (%s)!\n", replace_id); transmit_response_reliable(p, "603 Declined (Replaces)", req); error = 1; @@ -23742,7 +23745,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int if (c) { /* We have a call -either a new call or an old one (RE-INVITE) */ - enum ast_channel_state c_state = c->_state; + enum ast_channel_state c_state = ast_channel_state(c); if (c_state != AST_STATE_UP && reinvite && (p->invitestate == INV_TERMINATED || p->invitestate == INV_CONFIRMED)) { @@ -23801,7 +23804,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int ast_log(LOG_WARNING, "Failed to start Group pickup by %s\n", ast_channel_name(c)); transmit_response_reliable(p, "480 Temporarily Unavailable", req); sip_alreadygone(p); - c->hangupcause = AST_CAUSE_FAILURE; + ast_channel_hangupcause_set(c, AST_CAUSE_FAILURE); /* Unlock locks so ast_hangup can do its magic */ ast_channel_unlock(c); @@ -23852,7 +23855,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int p->invitestate = INV_TERMINATED; break; default: - ast_log(LOG_WARNING, "Don't know how to handle INVITE in state %d\n", c->_state); + ast_log(LOG_WARNING, "Don't know how to handle INVITE in state %d\n", ast_channel_state(c)); transmit_response(p, "100 Trying", req); break; } @@ -23948,11 +23951,11 @@ static int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual * target.chan1 = targetcall_pvt->owner; /* Transferer to Asterisk */ target.chan2 = ast_bridged_channel(targetcall_pvt->owner); /* Asterisk to target */ - if (!target.chan2 || !(target.chan2->_state == AST_STATE_UP || target.chan2->_state == AST_STATE_RINGING) ) { + if (!target.chan2 || !(ast_channel_state(target.chan2) == AST_STATE_UP || ast_channel_state(target.chan2) == AST_STATE_RINGING) ) { /* Wrong state of new channel */ if (target.chan2) - ast_debug(4, "SIP attended transfer: Error: Wrong state of target call: %s\n", ast_state2str(target.chan2->_state)); - else if (target.chan1->_state != AST_STATE_RING) + ast_debug(4, "SIP attended transfer: Error: Wrong state of target call: %s\n", ast_state2str(ast_channel_state(target.chan2))); + else if (ast_channel_state(target.chan1) != AST_STATE_RING) ast_debug(4, "SIP attended transfer: Error: No target channel\n"); else ast_debug(4, "SIP attended transfer: Attempting transfer in ringing state\n"); @@ -24041,7 +24044,7 @@ static int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual * ast_indicate(target.chan2, AST_CONTROL_UNHOLD); } - if (current->chan2 && current->chan2->_state == AST_STATE_RING) { + if (current->chan2 && ast_channel_state(current->chan2) == AST_STATE_RING) { ast_indicate(target.chan1, AST_CONTROL_RINGING); } @@ -24515,7 +24518,7 @@ static int handle_request_refer(struct sip_pvt *p, struct sip_request *req, int p->refer->status = REFER_200OK; } if (p->owner) { - p->owner->hangupcause = AST_CAUSE_NORMAL_CLEARING; + ast_channel_hangupcause_set(p->owner, AST_CAUSE_NORMAL_CLEARING); } append_history(p, "Xfer", "Refer succeeded."); ast_clear_flag(&p->flags[0], SIP_GOTREFER); @@ -24553,7 +24556,7 @@ static int handle_request_cancel(struct sip_pvt *p, struct sip_request *req) check_via(p, req); sip_alreadygone(p); - if (p->owner && p->owner->_state == AST_STATE_UP) { + if (p->owner && ast_channel_state(p->owner) == AST_STATE_UP) { /* This call is up, cancel is ignored, we need a bye */ transmit_response(p, "200 OK", req); ast_debug(1, "Got CANCEL on an answered call. Ignoring... \n"); @@ -24680,9 +24683,9 @@ static int handle_request_bye(struct sip_pvt *p, struct sip_request *req) } if (bridge) { - struct sip_pvt *q = bridge->tech_pvt; + struct sip_pvt *q = ast_channel_tech_pvt(bridge); - if (IS_SIP_TECH(bridge->tech) && q && q->rtp) { + if (IS_SIP_TECH(ast_channel_tech(bridge)) && q && q->rtp) { ast_rtp_instance_set_stats_vars(bridge, q->rtp); } ast_channel_unlock(bridge); @@ -26744,7 +26747,7 @@ static int check_rtp_timeout(struct sip_pvt *dialog, time_t t) return CMP_MATCH; } /* If the call is not in UP state return for later check. */ - if (dialog->owner->_state != AST_STATE_UP) { + if (ast_channel_state(dialog->owner) != AST_STATE_UP) { return 0; } @@ -26999,7 +27002,7 @@ static int proc_session_timer(const void *vp) goto return_unref; } - if ((p->stimer->st_active != TRUE) || (p->owner->_state != AST_STATE_UP)) { + if ((p->stimer->st_active != TRUE) || (ast_channel_state(p->owner) != AST_STATE_UP)) { goto return_unref; } @@ -30138,7 +30141,7 @@ static struct ast_udptl *sip_get_udptl_peer(struct ast_channel *chan) struct sip_pvt *p; struct ast_udptl *udptl = NULL; - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) { return NULL; } @@ -30159,7 +30162,7 @@ static int sip_set_udptl_peer(struct ast_channel *chan, struct ast_udptl *udptl) /* Lock the channel and the private safely. */ ast_channel_lock(chan); - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) { ast_channel_unlock(chan); return -1; @@ -30201,7 +30204,7 @@ static enum ast_rtp_glue_result sip_get_rtp_peer(struct ast_channel *chan, struc struct sip_pvt *p = NULL; enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_LOCAL; - if (!(p = chan->tech_pvt)) { + if (!(p = ast_channel_tech_pvt(chan))) { return AST_RTP_GLUE_RESULT_FORBID; } @@ -30239,7 +30242,7 @@ static enum ast_rtp_glue_result sip_get_vrtp_peer(struct ast_channel *chan, stru struct sip_pvt *p = NULL; enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_FORBID; - if (!(p = chan->tech_pvt)) { + if (!(p = ast_channel_tech_pvt(chan))) { return AST_RTP_GLUE_RESULT_FORBID; } @@ -30269,7 +30272,7 @@ static enum ast_rtp_glue_result sip_get_trtp_peer(struct ast_channel *chan, stru struct sip_pvt *p = NULL; enum ast_rtp_glue_result res = AST_RTP_GLUE_RESULT_FORBID; - if (!(p = chan->tech_pvt)) { + if (!(p = ast_channel_tech_pvt(chan))) { return AST_RTP_GLUE_RESULT_FORBID; } @@ -30301,7 +30304,7 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *i /* Lock the channel and the private safely. */ ast_channel_lock(chan); - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) { ast_channel_unlock(chan); return -1; @@ -30363,7 +30366,7 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *i changed = 1; } if (changed && !ast_test_flag(&p->flags[0], SIP_GOTREFER) && !ast_test_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER)) { - if (chan->_state != AST_STATE_UP) { /* We are in early state */ + if (ast_channel_state(chan) != AST_STATE_UP) { /* We are in early state */ if (p->do_history) append_history(p, "ExtInv", "Initial invite sent with remote bridge proposal."); ast_debug(1, "Early remote bridge setting SIP '%s' - Sending media to %s\n", p->callid, ast_sockaddr_stringify(instance ? &p->redirip : &p->ourip)); @@ -30385,7 +30388,7 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *i static void sip_get_codec(struct ast_channel *chan, struct ast_format_cap *result) { - struct sip_pvt *p = chan->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(chan); ast_format_cap_append(result, ast_format_cap_is_empty(p->peercaps) ? p->caps : p->peercaps); } @@ -30413,12 +30416,12 @@ static int sip_dtmfmode(struct ast_channel *chan, const char *data) return 0; } ast_channel_lock(chan); - if (!IS_SIP_TECH(chan->tech)) { + if (!IS_SIP_TECH(ast_channel_tech(chan))) { ast_log(LOG_WARNING, "Call this application only on SIP incoming calls\n"); ast_channel_unlock(chan); return 0; } - p = chan->tech_pvt; + p = ast_channel_tech_pvt(chan); if (!p) { ast_channel_unlock(chan); return 0; diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 0bfce4dfd..a63fb6ec6 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -3154,7 +3154,7 @@ static void update_connectedline(struct skinny_subchannel *sub, const void *data } send_callinfo(sub); - if (sub->owner->_state == AST_STATE_UP) { + if (ast_channel_state(sub->owner) == AST_STATE_UP) { transmit_callstate(d, l->instance, sub->callid, SKINNY_CONNECTED); transmit_displaypromptstatus(d, "Connected", 0, l->instance, sub->callid); } else { @@ -3220,7 +3220,7 @@ static enum ast_rtp_glue_result skinny_get_vrtp_peer(struct ast_channel *c, stru { struct skinny_subchannel *sub = NULL; - if (!(sub = c->tech_pvt) || !(sub->vrtp)) + if (!(sub = ast_channel_tech_pvt(c)) || !(sub->vrtp)) return AST_RTP_GLUE_RESULT_FORBID; ao2_ref(sub->vrtp, +1); @@ -3239,7 +3239,7 @@ static enum ast_rtp_glue_result skinny_get_rtp_peer(struct ast_channel *c, struc ast_verb(1, "skinny_get_rtp_peer() Channel = %s\n", ast_channel_name(c)); - if (!(sub = c->tech_pvt)) + if (!(sub = ast_channel_tech_pvt(c))) return AST_RTP_GLUE_RESULT_FORBID; ast_mutex_lock(&sub->lock); @@ -3277,9 +3277,9 @@ static int skinny_set_rtp_peer(struct ast_channel *c, struct ast_rtp_instance *r struct ast_sockaddr them_tmp; struct ast_sockaddr us_tmp; - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); - if (c->_state != AST_STATE_UP) + if (ast_channel_state(c) != AST_STATE_UP) return 0; if (!sub) { @@ -4222,7 +4222,7 @@ static void start_rtp(struct skinny_subchannel *sub) static void *skinny_newcall(void *data) { struct ast_channel *c = data; - struct skinny_subchannel *sub = c->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(c); struct skinny_line *l = sub->line; struct skinny_device *d = l->device; int res = 0; @@ -4255,7 +4255,7 @@ static void *skinny_newcall(void *data) static void *skinny_ss(void *data) { struct ast_channel *c = data; - struct skinny_subchannel *sub = c->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(c); struct skinny_line *l = sub->line; struct skinny_device *d = l->device; int len = 0; @@ -4305,7 +4305,7 @@ static void *skinny_ss(void *data) ast_safe_sleep(c, 1000); len = 0; l->getforward = 0; - if (sub->owner && sub->owner->_state != AST_STATE_UP) { + if (sub->owner && ast_channel_state(sub->owner) != AST_STATE_UP) { ast_indicate(c, -1); ast_hangup(c); } @@ -4326,7 +4326,7 @@ static void *skinny_ss(void *data) if (d->hookstate == SKINNY_OFFHOOK) { transmit_start_tone(d, SKINNY_REORDER, l->instance, sub->callid); } - if (sub->owner && sub->owner->_state != AST_STATE_UP) { + if (sub->owner && ast_channel_state(sub->owner) != AST_STATE_UP) { ast_indicate(c, -1); ast_hangup(c); } @@ -4367,7 +4367,7 @@ static int skinny_autoanswer_cb(const void *data) static int skinny_call(struct ast_channel *ast, const char *dest, int timeout) { int res = 0; - struct skinny_subchannel *sub = ast->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(ast); struct skinny_line *l = sub->line; struct skinny_device *d = l->device; struct ast_var_t *current; @@ -4378,7 +4378,7 @@ static int skinny_call(struct ast_channel *ast, const char *dest, int timeout) return -1; } - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "skinny_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -4434,7 +4434,7 @@ static int skinny_call(struct ast_channel *ast, const char *dest, int timeout) static int skinny_hangup(struct ast_channel *ast) { - struct skinny_subchannel *sub = ast->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(ast); if (!sub) { ast_debug(1, "Asked to hangup channel not connected\n"); @@ -4448,7 +4448,7 @@ static int skinny_hangup(struct ast_channel *ast) ast_mutex_lock(&sub->lock); sub->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); if (sub->rtp) { ast_rtp_instance_destroy(sub->rtp); sub->rtp = NULL; @@ -4462,7 +4462,7 @@ static int skinny_hangup(struct ast_channel *ast) static int skinny_answer(struct ast_channel *ast) { int res = 0; - struct skinny_subchannel *sub = ast->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(ast); struct skinny_line *l = sub->line; struct skinny_device *d = l->device; @@ -4496,7 +4496,7 @@ static struct ast_frame *skinny_rtp_read(struct skinny_subchannel *sub) return &ast_null_frame; } - switch(ast->fdno) { + switch(ast_channel_fdno(ast)) { case 0: f = ast_rtp_instance_read(sub->rtp, 0); /* RTP Audio */ break; @@ -4522,9 +4522,9 @@ static struct ast_frame *skinny_rtp_read(struct skinny_subchannel *sub) if (ast) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { - if (!(ast_format_cap_iscompatible(ast->nativeformats, &f->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &f->subclass.format))) { ast_debug(1, "Oooh, format changed to %s\n", ast_getformatname(&f->subclass.format)); - ast_format_cap_set(ast->nativeformats, &f->subclass.format); + ast_format_cap_set(ast_channel_nativeformats(ast), &f->subclass.format); ast_set_read_format(ast, &ast->readformat); ast_set_write_format(ast, &ast->writeformat); } @@ -4536,7 +4536,7 @@ static struct ast_frame *skinny_rtp_read(struct skinny_subchannel *sub) static struct ast_frame *skinny_read(struct ast_channel *ast) { struct ast_frame *fr; - struct skinny_subchannel *sub = ast->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(ast); ast_mutex_lock(&sub->lock); fr = skinny_rtp_read(sub); ast_mutex_unlock(&sub->lock); @@ -4545,7 +4545,7 @@ static struct ast_frame *skinny_read(struct ast_channel *ast) static int skinny_write(struct ast_channel *ast, struct ast_frame *frame) { - struct skinny_subchannel *sub = ast->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(ast); int res = 0; if (frame->frametype != AST_FRAME_VOICE) { if (frame->frametype == AST_FRAME_IMAGE) { @@ -4555,11 +4555,11 @@ static int skinny_write(struct ast_channel *ast, struct ast_frame *frame) return 0; } } else { - if (!(ast_format_cap_iscompatible(ast->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &frame->subclass.format))) { char buf[256]; ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_getformatname(&frame->subclass.format), - ast_getformatname_multiple(buf, sizeof(buf), ast->nativeformats), + ast_getformatname_multiple(buf, sizeof(buf), ast_channel_nativeformats(ast)), ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat)); return -1; @@ -4577,7 +4577,7 @@ static int skinny_write(struct ast_channel *ast, struct ast_frame *frame) static int skinny_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct skinny_subchannel *sub = newchan->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(newchan); ast_log(LOG_NOTICE, "skinny_fixup(%s, %s)\n", ast_channel_name(oldchan), ast_channel_name(newchan)); if (sub->owner != oldchan) { ast_log(LOG_WARNING, "old channel wasn't %p but was %p\n", oldchan, sub->owner); @@ -4726,9 +4726,9 @@ static int skinny_transfer(struct skinny_subchannel *sub) if (ast_bridged_channel(xferee->owner)) { ast_queue_control(xferee->owner, AST_CONTROL_UNHOLD); } - if (xferor->owner->_state == AST_STATE_RING) { + if (ast_channel_state(xferor->owner) == AST_STATE_RING) { /* play ringing inband */ - if ((ts = ast_get_indication_tone(xferor->owner->zone, "ring"))) { + if ((ts = ast_get_indication_tone(ast_channel_zone(xferor->owner), "ring"))) { ast_playtones_start(xferor->owner, 0, ts->data, 1); ts = ast_tone_zone_sound_unref(ts); } @@ -4743,9 +4743,9 @@ static int skinny_transfer(struct skinny_subchannel *sub) } } else if (ast_bridged_channel(xferee->owner)) { ast_queue_control(xferee->owner, AST_CONTROL_UNHOLD); - if (xferor->owner->_state == AST_STATE_RING) { + if (ast_channel_state(xferor->owner) == AST_STATE_RING) { /* play ringing inband */ - if ((ts = ast_get_indication_tone(xferor->owner->zone, "ring"))) { + if ((ts = ast_get_indication_tone(ast_channel_zone(xferor->owner), "ring"))) { ast_playtones_start(xferor->owner, 0, ts->data, 1); ts = ast_tone_zone_sound_unref(ts); } @@ -4769,7 +4769,7 @@ static int skinny_transfer(struct skinny_subchannel *sub) static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, size_t datalen) { - struct skinny_subchannel *sub = ast->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(ast); struct skinny_line *l = sub->line; struct skinny_device *d = l->device; struct skinnysession *s = d->session; @@ -4880,25 +4880,25 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli AST_LIST_INSERT_HEAD(&l->sub, sub, list); //l->activesub = sub; } - tmp->tech = &skinny_tech; - tmp->tech_pvt = sub; - ast_format_cap_copy(tmp->nativeformats, l->cap); - if (ast_format_cap_is_empty(tmp->nativeformats)) { + ast_channel_tech_set(tmp, &skinny_tech); + ast_channel_tech_pvt_set(tmp, sub); + ast_format_cap_copy(ast_channel_nativeformats(tmp), l->cap); + if (ast_format_cap_is_empty(ast_channel_nativeformats(tmp))) { // Should throw an error - ast_format_cap_copy(tmp->nativeformats, default_cap); + ast_format_cap_copy(ast_channel_nativeformats(tmp), default_cap); } - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); if (skinnydebug) { char buf[256]; ast_verb(1, "skinny_new: tmp->nativeformats=%s fmt=%s\n", - ast_getformatname_multiple(buf, sizeof(buf), tmp->nativeformats), + ast_getformatname_multiple(buf, sizeof(buf), ast_channel_nativeformats(tmp)), ast_getformatname(&tmpfmt)); } if (sub->rtp) { ast_channel_set_fd(tmp, 0, ast_rtp_instance_fd(sub->rtp, 0)); } if (state == AST_STATE_RING) { - tmp->rings = 1; + ast_channel_rings_set(tmp, 1); } ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); @@ -4912,7 +4912,7 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli if (!ast_strlen_zero(l->parkinglot)) ast_channel_parkinglot_set(tmp, l->parkinglot); if (l->amaflags) - tmp->amaflags = l->amaflags; + ast_channel_amaflags_set(tmp, l->amaflags); ast_module_ref(ast_module_info->self); tmp->callgroup = l->callgroup; @@ -4941,8 +4941,8 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli tmp->caller.ani.number.str = ast_strdup(l->cid_num); } - tmp->priority = 1; - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_priority_set(tmp, 1); + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); if (sub->rtp) ast_jb_configure(tmp, &global_jbconf); @@ -5101,7 +5101,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state) if (sub->substate == SUBSTATE_DIALING || sub->substate == SUBSTATE_RINGOUT) { transmit_dialednumber(d, l->lastnumberdialed, l->instance, sub->callid); } - if (sub->owner->_state != AST_STATE_UP) { + if (ast_channel_state(sub->owner) != AST_STATE_UP) { ast_setstate(sub->owner, AST_STATE_UP); } sub->substate = SUBSTATE_CONNECTED; @@ -5317,7 +5317,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state) if (sub->substate == SUBSTATE_DIALING || sub->substate == SUBSTATE_RINGOUT) { transmit_dialednumber(d, l->lastnumberdialed, l->instance, sub->callid); } - if (sub->owner->_state != AST_STATE_UP) { + if (ast_channel_state(sub->owner) != AST_STATE_UP) { ast_setstate(sub->owner, AST_STATE_UP); } sub->substate = SUBSTATE_CONNECTED; @@ -5517,7 +5517,7 @@ static int handle_transfer_button(struct skinny_subchannel *sub) } c = skinny_new(l, NULL, AST_STATE_DOWN, NULL, SKINNY_OUTGOING); if (c) { - newsub = c->tech_pvt; + newsub = ast_channel_tech_pvt(c); /* point the sub and newsub at each other so we know they are related */ newsub->related = sub; sub->related = newsub; @@ -5535,7 +5535,7 @@ static int handle_transfer_button(struct skinny_subchannel *sub) /* we really need some indications */ } else { /* We were doing attended transfer */ - if (sub->owner->_state == AST_STATE_DOWN || sub->related->owner->_state == AST_STATE_DOWN) { + if (ast_channel_state(sub->owner) == AST_STATE_DOWN || ast_channel_state(sub->related->owner) == AST_STATE_DOWN) { /* one of the subs so we cant transfer yet, toggle blindxfer on */ sub->blindxfer = 1; sub->related->blindxfer = 1; @@ -5574,7 +5574,7 @@ static int handle_callforward_button(struct skinny_subchannel *sub, int cfwdtype transmit_selectsoftkeys(d, 0, 0, KEYDEF_ONHOOK); transmit_activatecallplane(d, l); transmit_displaynotify(d, "CFwd disabled", 10); - if (sub->owner && sub->owner->_state != AST_STATE_UP) { + if (sub->owner && ast_channel_state(sub->owner) != AST_STATE_UP) { ast_indicate(c, -1); ast_hangup(c); } @@ -5639,7 +5639,7 @@ static int handle_keypad_button_message(struct skinny_req *req, struct skinnyses l = sub->line; if (sub->owner) { - if (sub->owner->_state == 0) { + if (ast_channel_state(sub->owner) == 0) { f.frametype = AST_FRAME_DTMF_BEGIN; ast_queue_frame(sub->owner, &f); } @@ -5648,7 +5648,7 @@ static int handle_keypad_button_message(struct skinny_req *req, struct skinnyses ast_queue_frame(sub->owner, &f); /* XXX This seriously needs to be fixed */ if (AST_LIST_NEXT(sub, list) && AST_LIST_NEXT(sub, list)->owner) { - if (sub->owner->_state == 0) { + if (ast_channel_state(sub->owner) == 0) { f.frametype = AST_FRAME_DTMF_BEGIN; ast_queue_frame(AST_LIST_NEXT(sub, list)->owner, &f); } @@ -5707,7 +5707,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); l = sub->line; dialandactivatesub(sub, l->lastnumberdialed); } @@ -5730,7 +5730,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); dialandactivatesub(sub, sd->exten); } } @@ -5769,7 +5769,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession break; } - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); if (sub->substate == SUBSTATE_UNSET || sub->substate == SUBSTATE_OFFHOOK){ dialandactivatesub(sub, l->vmexten); } @@ -5782,7 +5782,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if (skinnydebug) ast_verb(1, "Received Stimulus: Park Call(%d/%d)\n", instance, callreference); - if ((sub && sub->owner) && (sub->owner->_state == AST_STATE_UP)){ + if ((sub && sub->owner) && (ast_channel_state(sub->owner) == AST_STATE_UP)){ c = sub->owner; if (ast_bridged_channel(c)) { if (!ast_masq_park_call(ast_bridged_channel(c), c, 0, &extout)) { @@ -5829,7 +5829,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); handle_callforward_button(sub, SKINNY_CFWD_ALL); } break; @@ -5846,7 +5846,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); handle_callforward_button(sub, SKINNY_CFWD_BUSY); } break; @@ -5901,7 +5901,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession } else { c = skinny_new(l, NULL, AST_STATE_DOWN, NULL, SKINNY_OUTGOING); if (c) { - setsubstate(c->tech_pvt, SUBSTATE_OFFHOOK); + setsubstate(ast_channel_tech_pvt(c), SUBSTATE_OFFHOOK); } else { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } @@ -5976,7 +5976,7 @@ static int handle_offhook_message(struct skinny_req *req, struct skinnysession * } else { c = skinny_new(l, NULL, AST_STATE_DOWN, NULL, SKINNY_OUTGOING); if (c) { - setsubstate(c->tech_pvt, SUBSTATE_OFFHOOK); + setsubstate(ast_channel_tech_pvt(c), SUBSTATE_OFFHOOK); } else { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } @@ -6017,7 +6017,7 @@ static int handle_onhook_message(struct skinny_req *req, struct skinnysession *s return 0; } - if (l->transfer && sub->xferor && sub->owner->_state >= AST_STATE_RING) { + if (l->transfer && sub->xferor && ast_channel_state(sub->owner) >= AST_STATE_RING) { /* We're allowed to transfer, we have two active calls and we made at least one of the calls. Let's try and transfer */ handle_transfer_button(sub); @@ -6323,7 +6323,7 @@ static int handle_enbloc_call_message(struct skinny_req *req, struct skinnysessi } else { d->hookstate = SKINNY_OFFHOOK; - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); dialandactivatesub(sub, req->data.enbloccallmessage.calledParty); } @@ -6387,7 +6387,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); dialandactivatesub(sub, l->lastnumberdialed); } break; @@ -6397,7 +6397,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse /* New Call ALWAYS gets a new sub-channel */ c = skinny_new(l, NULL, AST_STATE_DOWN, NULL, SKINNY_OUTGOING); - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); @@ -6458,7 +6458,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); l->activesub = sub; handle_callforward_button(sub, SKINNY_CFWD_ALL); } @@ -6476,7 +6476,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); l->activesub = sub; handle_callforward_button(sub, SKINNY_CFWD_BUSY); } @@ -6509,7 +6509,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (skinnydebug) ast_verb(1, "Received Softkey Event: End Call(%d/%d)\n", instance, callreference); - if (l->transfer && sub && sub->xferor && sub->owner->_state >= AST_STATE_RING) { + if (l->transfer && sub && sub->xferor && ast_channel_state(sub->owner) >= AST_STATE_RING) { /* We're allowed to transfer, we have two active calls and we made at least one of the calls. Let's try and transfer */ handle_transfer_button(sub); @@ -6546,7 +6546,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); dialandactivatesub(sub, subline->exten); } } @@ -6583,7 +6583,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (skinnydebug) ast_verb(1, "Received Softkey Event: Park Call(%d/%d)\n", instance, callreference); - if ((sub && sub->owner) && (sub->owner->_state == AST_STATE_UP)){ + if ((sub && sub->owner) && (ast_channel_state(sub->owner) == AST_STATE_UP)){ c = sub->owner; if (ast_bridged_channel(c)) { if (!ast_masq_park_call(ast_bridged_channel(c), c, 0, &extout)) { @@ -6611,7 +6611,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); } else { - sub = c->tech_pvt; + sub = ast_channel_tech_pvt(c); dialandactivatesub(sub, subline->exten); } } @@ -6691,7 +6691,7 @@ static int handle_message(struct skinny_req *req, struct skinnysession *s) sub = d->activeline->activesub; } - if (sub && ((sub->owner && sub->owner->_state < AST_STATE_UP) || sub->substate == SUBSTATE_HOLD)) { + if (sub && ((sub->owner && ast_channel_state(sub->owner) < AST_STATE_UP) || sub->substate == SUBSTATE_HOLD)) { char dgt; int digit = letohl(req->data.keypad.button); @@ -7105,7 +7105,7 @@ static struct ast_channel *skinny_request(const char *type, struct ast_format_ca if (!tmpc) { ast_log(LOG_WARNING, "Unable to make channel for '%s'\n", tmp); } else if (subline) { - struct skinny_subchannel *sub = tmpc->tech_pvt; + struct skinny_subchannel *sub = ast_channel_tech_pvt(tmpc); subline->sub = sub; subline->calldirection = SKINNY_INCOMING; subline->substate = SUBSTATE_UNSET; diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c index 6eca792ec..a059d5cb1 100644 --- a/channels/chan_unistim.c +++ b/channels/chan_unistim.c @@ -1957,19 +1957,19 @@ static int attempt_transfer(struct unistim_subchannel *p1, struct unistim_subcha ast_quiet_chan(peerc); ast_quiet_chan(peerd); */ - if (peera->cdr && peerb->cdr) { - peerb->cdr = ast_cdr_append(peerb->cdr, peera->cdr); - } else if (peera->cdr) { - peerb->cdr = peera->cdr; + if (ast_channel_cdr(peera) && ast_channel_cdr(peerb)) { + ast_channel_cdr_set(peerb, ast_cdr_append(ast_channel_cdr(peerb), ast_channel_cdr(peera))); + } else if (ast_channel_cdr(peera)) { + ast_channel_cdr_set(peerb, ast_channel_cdr(peera)); } - peera->cdr = NULL; + ast_channel_cdr_set(peera, NULL); - if (peerb->cdr && peerc->cdr) { - peerb->cdr = ast_cdr_append(peerb->cdr, peerc->cdr); - } else if (peerc->cdr) { - peerb->cdr = peerc->cdr; + if (ast_channel_cdr(peerb) && ast_channel_cdr(peerc)) { + ast_channel_cdr_set(peerb, ast_cdr_append(ast_channel_cdr(peerb), ast_channel_cdr(peerc))); + } else if (ast_channel_cdr(peerc)) { + ast_channel_cdr_set(peerb, ast_channel_cdr(peerc)); } - peerc->cdr = NULL; + ast_channel_cdr_set(peerc, NULL); if (ast_channel_masquerade(peerb, peerc)) { ast_log(LOG_WARNING, "Failed to masquerade %s into %s\n", ast_channel_name(peerb), @@ -2050,7 +2050,7 @@ static void IgnoreCall(struct unistimsession *pte) static void *unistim_ss(void *data) { struct ast_channel *chan = data; - struct unistim_subchannel *sub = chan->tech_pvt; + struct unistim_subchannel *sub = ast_channel_tech_pvt(chan); struct unistim_line *l = sub->parent; struct unistimsession *s = l->parent->session; int res; @@ -2129,15 +2129,15 @@ static void start_rtp(struct unistim_subchannel *sub) sin.sin_port = htons(sub->parent->parent->rtp_port); ast_sockaddr_from_sin(&sin_tmp, &sin); ast_rtp_instance_set_remote_address(sub->rtp, &sin_tmp); - if (!(ast_format_cap_iscompatible(sub->owner->nativeformats, &sub->owner->readformat))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(sub->owner), &sub->owner->readformat))) { struct ast_format tmpfmt; char tmp[256]; - ast_best_codec(sub->owner->nativeformats, &tmpfmt); + ast_best_codec(ast_channel_nativeformats(sub->owner), &tmpfmt); ast_log(LOG_WARNING, "Our read/writeformat has been changed to something incompatible: %s, using %s best codec from %s\n", ast_getformatname(&sub->owner->readformat), ast_getformatname(&tmpfmt), - ast_getformatname_multiple(tmp, sizeof(tmp), sub->owner->nativeformats)); + ast_getformatname_multiple(tmp, sizeof(tmp), ast_channel_nativeformats(sub->owner))); ast_format_copy(&sub->owner->readformat, &tmpfmt); ast_format_copy(&sub->owner->writeformat, &tmpfmt); } @@ -3721,11 +3721,11 @@ static struct unistimsession *channel_to_session(struct ast_channel *ast) ast_log(LOG_WARNING, "Unistim callback function called with a null channel\n"); return NULL; } - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Unistim callback function called without a tech_pvt\n"); return NULL; } - sub = ast->tech_pvt; + sub = ast_channel_tech_pvt(ast); if (!sub->parent) { ast_log(LOG_WARNING, "Unistim callback function called without a line\n"); @@ -3756,8 +3756,8 @@ static int unistim_call(struct ast_channel *ast, const char *dest, int timeout) return -1; } - sub = ast->tech_pvt; - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + sub = ast_channel_tech_pvt(ast); + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "unistim_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; @@ -3821,12 +3821,12 @@ static int unistim_hangup(struct ast_channel *ast) struct unistimsession *s; s = channel_to_session(ast); - sub = ast->tech_pvt; + sub = ast_channel_tech_pvt(ast); if (!s) { ast_debug(1, "Asked to hangup channel not connected\n"); ast_mutex_lock(&sub->lock); sub->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); sub->alreadygone = 0; ast_mutex_unlock(&sub->lock); if (sub->rtp) { @@ -3845,7 +3845,7 @@ static int unistim_hangup(struct ast_channel *ast) if (unistimdebug) ast_verb(0, "Real call disconnected while talking to threeway\n"); sub->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); return 0; } if ((l->subs[SUB_REAL]->owner) && (sub->subtype == SUB_THREEWAY) && @@ -3861,14 +3861,14 @@ static int unistim_hangup(struct ast_channel *ast) l->parent->moh = 0; ast_mutex_lock(&sub->lock); sub->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); ast_mutex_unlock(&sub->lock); unalloc_sub(l, SUB_THREEWAY); return 0; } ast_mutex_lock(&sub->lock); sub->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); sub->alreadygone = 0; ast_mutex_unlock(&sub->lock); if (!s) { @@ -3932,7 +3932,7 @@ static int unistim_answer(struct ast_channel *ast) ast_log(LOG_WARNING, "unistim_answer on a disconnected device ?\n"); return -1; } - sub = ast->tech_pvt; + sub = ast_channel_tech_pvt(ast); l = sub->parent; if ((!sub->rtp) && (!l->subs[SUB_THREEWAY])) @@ -3946,7 +3946,7 @@ static int unistim_answer(struct ast_channel *ast) else send_text_status(l->parent->session, "Hangup Transf"); send_start_timer(l->parent->session); - if (ast->_state != AST_STATE_UP) + if (ast_channel_state(ast) != AST_STATE_UP) ast_setstate(ast, AST_STATE_UP); return res; } @@ -4027,7 +4027,7 @@ static struct ast_frame *unistim_rtp_read(const struct ast_channel *ast, return &ast_null_frame; } - switch (ast->fdno) { + switch (ast_channel_fdno(ast)) { case 0: f = ast_rtp_instance_read(sub->rtp, 0); /* RTP Audio */ break; @@ -4041,14 +4041,14 @@ static struct ast_frame *unistim_rtp_read(const struct ast_channel *ast, if (sub->owner) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { - if (!(ast_format_cap_iscompatible(sub->owner->nativeformats, &f->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(sub->owner), &f->subclass.format))) { char tmp[256]; ast_debug(1, "Oooh, format changed from %s to %s\n", - ast_getformatname_multiple(tmp, sizeof(tmp), sub->owner->nativeformats), + ast_getformatname_multiple(tmp, sizeof(tmp), ast_channel_nativeformats(sub->owner)), ast_getformatname(&f->subclass.format)); - ast_format_cap_set(sub->owner->nativeformats, &f->subclass.format); + ast_format_cap_set(ast_channel_nativeformats(sub->owner), &f->subclass.format); ast_set_read_format(sub->owner, &sub->owner->readformat); ast_set_write_format(sub->owner, &sub->owner->writeformat); } @@ -4061,7 +4061,7 @@ static struct ast_frame *unistim_rtp_read(const struct ast_channel *ast, static struct ast_frame *unistim_read(struct ast_channel *ast) { struct ast_frame *fr; - struct unistim_subchannel *sub = ast->tech_pvt; + struct unistim_subchannel *sub = ast_channel_tech_pvt(ast); ast_mutex_lock(&sub->lock); fr = unistim_rtp_read(ast, sub); @@ -4072,7 +4072,7 @@ static struct ast_frame *unistim_read(struct ast_channel *ast) static int unistim_write(struct ast_channel *ast, struct ast_frame *frame) { - struct unistim_subchannel *sub = ast->tech_pvt; + struct unistim_subchannel *sub = ast_channel_tech_pvt(ast); int res = 0; if (frame->frametype != AST_FRAME_VOICE) { @@ -4084,12 +4084,12 @@ static int unistim_write(struct ast_channel *ast, struct ast_frame *frame) return 0; } } else { - if (!(ast_format_cap_iscompatible(ast->nativeformats, &frame->subclass.format))) { + if (!(ast_format_cap_iscompatible(ast_channel_nativeformats(ast), &frame->subclass.format))) { char tmp[256]; ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = (%s/%s)\n", ast_getformatname(&frame->subclass.format), - ast_getformatname_multiple(tmp, sizeof(tmp), ast->nativeformats), + ast_getformatname_multiple(tmp, sizeof(tmp), ast_channel_nativeformats(ast)), ast_getformatname(&ast->readformat), ast_getformatname(&ast->writeformat)); return -1; @@ -4109,7 +4109,7 @@ static int unistim_write(struct ast_channel *ast, struct ast_frame *frame) static int unistim_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct unistim_subchannel *p = newchan->tech_pvt; + struct unistim_subchannel *p = ast_channel_tech_pvt(newchan); struct unistim_line *l = p->parent; ast_mutex_lock(&p->lock); @@ -4195,12 +4195,12 @@ static int unistim_indicate(struct ast_channel *ast, int ind, const void *data, if (!s) return -1; - sub = ast->tech_pvt; + sub = ast_channel_tech_pvt(ast); l = sub->parent; switch (ind) { case AST_CONTROL_RINGING: - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { send_text(TEXT_LINE2, TEXT_NORMAL, s, "Ringing..."); in_band_indication(ast, l->parent->tz, "ring"); s->device->missed_call = -1; @@ -4208,7 +4208,7 @@ static int unistim_indicate(struct ast_channel *ast, int ind, const void *data, } return -1; case AST_CONTROL_BUSY: - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { sub->alreadygone = 1; send_text(TEXT_LINE2, TEXT_NORMAL, s, "Busy"); in_band_indication(ast, l->parent->tz, "busy"); @@ -4221,7 +4221,7 @@ static int unistim_indicate(struct ast_channel *ast, int ind, const void *data, * of incomplete as congestion */ case AST_CONTROL_CONGESTION: - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { sub->alreadygone = 1; send_text(TEXT_LINE2, TEXT_NORMAL, s, "Congestion"); in_band_indication(ast, l->parent->tz, "congestion"); @@ -4560,15 +4560,15 @@ static struct ast_channel *unistim_new(struct unistim_subchannel *sub, int state return NULL; } - ast_format_cap_copy(tmp->nativeformats, l->cap); - if (ast_format_cap_is_empty(tmp->nativeformats)) - ast_format_cap_copy(tmp->nativeformats, global_cap); - ast_best_codec(tmp->nativeformats, &tmpfmt); + ast_format_cap_copy(ast_channel_nativeformats(tmp), l->cap); + if (ast_format_cap_is_empty(ast_channel_nativeformats(tmp))) + ast_format_cap_copy(ast_channel_nativeformats(tmp), global_cap); + ast_best_codec(ast_channel_nativeformats(tmp), &tmpfmt); if (unistimdebug) { char tmp1[256], tmp2[256], tmp3[256]; ast_verb(0, "Best codec = %s from nativeformats %s (line cap=%s global=%s)\n", ast_getformatname(&tmpfmt), - ast_getformatname_multiple(tmp1, sizeof(tmp1), tmp->nativeformats), + ast_getformatname_multiple(tmp1, sizeof(tmp1), ast_channel_nativeformats(tmp)), ast_getformatname_multiple(tmp2, sizeof(tmp2), l->cap), ast_getformatname_multiple(tmp3, sizeof(tmp3), global_cap)); } @@ -4584,14 +4584,14 @@ static struct ast_channel *unistim_new(struct unistim_subchannel *sub, int state /* tmp->type = type; */ ast_setstate(tmp, state); if (state == AST_STATE_RING) - tmp->rings = 1; - tmp->adsicpe = AST_ADSI_UNAVAILABLE; + ast_channel_rings_set(tmp, 1); + ast_channel_adsicpe_set(tmp, AST_ADSI_UNAVAILABLE); ast_format_copy(&tmp->writeformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); ast_format_copy(&tmp->readformat, &tmpfmt); ast_format_copy(&tmp->rawreadformat, &tmpfmt); - tmp->tech_pvt = sub; - tmp->tech = &unistim_tech; + ast_channel_tech_pvt_set(tmp, sub); + ast_channel_tech_set(tmp, &unistim_tech); if (!ast_strlen_zero(l->language)) ast_channel_language_set(tmp, l->language); sub->owner = tmp; @@ -4616,7 +4616,7 @@ static struct ast_channel *unistim_new(struct unistim_subchannel *sub, int state ast_free(instr); } } - tmp->priority = 1; + ast_channel_priority_set(tmp, 1); if (state != AST_STATE_DOWN) { if (unistimdebug) ast_verb(0, "Starting pbx in unistim_new\n"); @@ -5653,7 +5653,7 @@ static int reload_config(void) static enum ast_rtp_glue_result unistim_get_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance **instance) { - struct unistim_subchannel *sub = chan->tech_pvt; + struct unistim_subchannel *sub = ast_channel_tech_pvt(chan); ao2_ref(sub->rtp, +1); *instance = sub->rtp; diff --git a/channels/chan_usbradio.c b/channels/chan_usbradio.c index 51bf91119..22dd93bbb 100644 --- a/channels/chan_usbradio.c +++ b/channels/chan_usbradio.c @@ -1684,7 +1684,7 @@ static void ring(struct chan_usbradio_pvt *o, int x) */ static int usbradio_call(struct ast_channel *c, const char *dest, int timeout) { - struct chan_usbradio_pvt *o = c->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(c); o->stophid = 0; time(&o->lasthidtime); @@ -1699,7 +1699,7 @@ static int usbradio_call(struct ast_channel *c, const char *dest, int timeout) static int usbradio_answer(struct ast_channel *c) { #ifndef NEW_ASTERISK - struct chan_usbradio_pvt *o = c->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(c); #endif ast_setstate(c, AST_STATE_UP); @@ -1712,14 +1712,14 @@ static int usbradio_answer(struct ast_channel *c) static int usbradio_hangup(struct ast_channel *c) { - struct chan_usbradio_pvt *o = c->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(c); //ast_log(LOG_NOTICE, "usbradio_hangup()\n"); #ifndef NEW_ASTERISK o->cursound = -1; o->nosound = 0; #endif - c->tech_pvt = NULL; + ast_channel_tech_pvt_set(c, NULL); o->owner = NULL; ast_module_unref(ast_module_info->self); if (o->hookstate) { @@ -1741,7 +1741,7 @@ static int usbradio_hangup(struct ast_channel *c) /* used for data coming from the network */ static int usbradio_write(struct ast_channel *c, struct ast_frame *f) { - struct chan_usbradio_pvt *o = c->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(c); traceusb2(("usbradio_write() o->nosound= %i\n",o->nosound)); @@ -1786,7 +1786,7 @@ static struct ast_frame *usbradio_read(struct ast_channel *c) { int res, src, datalen, oldpttout; int cd,sd; - struct chan_usbradio_pvt *o = c->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(c); struct ast_frame *f = &o->read_f,*f1; struct ast_frame wf = { AST_FRAME_CONTROL }; time_t now; @@ -2059,7 +2059,7 @@ static struct ast_frame *usbradio_read(struct ast_channel *c) } o->readpos = AST_FRIENDLY_OFFSET; /* reset read pointer for next frame */ - if (c->_state != AST_STATE_UP) /* drop data if frame is not up */ + if (ast_channel_state(c) != AST_STATE_UP) /* drop data if frame is not up */ return f; /* ok we can build and deliver the frame to the caller */ f->frametype = AST_FRAME_VOICE; @@ -2103,7 +2103,7 @@ static struct ast_frame *usbradio_read(struct ast_channel *c) static int usbradio_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct chan_usbradio_pvt *o = newchan->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(newchan); ast_log(LOG_WARNING,"usbradio_fixup()\n"); o->owner = newchan; return 0; @@ -2111,7 +2111,7 @@ static int usbradio_fixup(struct ast_channel *oldchan, struct ast_channel *newch static int usbradio_indicate(struct ast_channel *c, int cond, const void *data, size_t datalen) { - struct chan_usbradio_pvt *o = c->tech_pvt; + struct chan_usbradio_pvt *o = ast_channel_tech_pvt(c); int res = -1; switch (cond) { @@ -2178,14 +2178,14 @@ static struct ast_channel *usbradio_new(struct chan_usbradio_pvt *o, char *ext, c = ast_channel_alloc(1, state, o->cid_num, o->cid_name, "", ext, ctx, linkedid, 0, "Radio/%s", o->name); if (c == NULL) return NULL; - c->tech = &usbradio_tech; + ast_channel_tech_set(c, &usbradio_tech); if (o->sounddev < 0) setformat(o, O_RDWR); c->fds[0] = o->sounddev; /* -1 if device closed, override later */ - ast_format_cap_add(c->nativeformats, &slin); + ast_format_cap_add(ast_channel_nativeformats(c), &slin); ast_format_set(&c->readformat, AST_FORMAT_SLINEAR, 0); ast_format_set(&c->writeformat, AST_FORMAT_SLINEAR, 0); - c->tech_pvt = o; + ast_channel_tech_pvt_set(c, o); if (!ast_strlen_zero(o->language)) ast_channel_language_set(c, o->language); diff --git a/channels/chan_vpb.cc b/channels/chan_vpb.cc index 9a5a1265d..551738d37 100644 --- a/channels/chan_vpb.cc +++ b/channels/chan_vpb.cc @@ -425,8 +425,8 @@ static struct ast_channel_tech vpb_tech_indicate = { /* This is the Native bridge code, which Asterisk will try before using its own bridging code */ static enum ast_bridge_result ast_vpb_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc, int timeoutms) { - struct vpb_pvt *p0 = (struct vpb_pvt *)c0->tech_pvt; - struct vpb_pvt *p1 = (struct vpb_pvt *)c1->tech_pvt; + struct vpb_pvt *p0 = (struct vpb_pvt *)ast_channel_tech_pvt(c0); + struct vpb_pvt *p1 = (struct vpb_pvt *)ast_channel_tech_pvt(c1); int i; int res; struct ast_channel *cs[3]; @@ -861,7 +861,7 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e) f.frametype = AST_FRAME_NULL; } else if (e->data == p->ring_timer_id) { /* We didnt get another ring in time! */ - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { /* Assume caller has hung up */ vpb_timer_stop(p->ring_timer); f.subclass.integer = AST_CONTROL_HANGUP; @@ -879,7 +879,7 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e) case VPB_DTMF: if (use_ast_dtmfdet) { f.frametype = AST_FRAME_NULL; - } else if (p->owner->_state == AST_STATE_UP) { + } else if (ast_channel_state(p->owner) == AST_STATE_UP) { f.frametype = AST_FRAME_DTMF; f.subclass.integer = e->data; } else @@ -889,7 +889,7 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e) case VPB_TONEDETECT: if (e->data == VPB_BUSY || e->data == VPB_BUSY_308 || e->data == VPB_BUSY_AUST ) { ast_debug(4, "%s: handle_owned: got event: BUSY\n", p->dev); - if (p->owner->_state == AST_STATE_UP) { + if (ast_channel_state(p->owner) == AST_STATE_UP) { f.subclass.integer = AST_CONTROL_HANGUP; } else { f.subclass.integer = AST_CONTROL_BUSY; @@ -955,7 +955,7 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e) case VPB_DROP: if ((p->mode == MODE_FXO) && (UseLoopDrop)) { /* ignore loop drop on stations */ - if (p->owner->_state == AST_STATE_UP) { + if (ast_channel_state(p->owner) == AST_STATE_UP) { f.subclass.integer = AST_CONTROL_HANGUP; } else { f.frametype = AST_FRAME_NULL; @@ -963,7 +963,7 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e) } break; case VPB_LOOP_ONHOOK: - if (p->owner->_state == AST_STATE_UP) { + if (ast_channel_state(p->owner) == AST_STATE_UP) { f.subclass.integer = AST_CONTROL_HANGUP; } else { f.frametype = AST_FRAME_NULL; @@ -1189,7 +1189,7 @@ static inline int monitor_handle_notowned(struct vpb_pvt *p, VPB_EVENT *e) } else if (e->data == p->ring_timer_id) { /* We didnt get another ring in time! */ if (p->owner) { - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { /* Assume caller has hung up */ vpb_timer_stop(p->ring_timer); } @@ -1653,7 +1653,7 @@ static struct vpb_pvt *mkif(int board, int channel, int mode, int gains, float t static int vpb_indicate(struct ast_channel *ast, int condition, const void *data, size_t datalen) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); int res = 0; if (use_ast_ind == 1) { @@ -1661,7 +1661,7 @@ static int vpb_indicate(struct ast_channel *ast, int condition, const void *data return 0; } - ast_verb(4, "%s: vpb_indicate [%d] state[%d]\n", p->dev, condition,ast->_state); + ast_verb(4, "%s: vpb_indicate [%d] state[%d]\n", p->dev, condition,ast_channel_state(ast)); /* if (ast->_state != AST_STATE_UP) { ast_verb(4, "%s: vpb_indicate Not in AST_STATE_UP\n", p->dev, condition,ast->_state); @@ -1677,7 +1677,7 @@ static int vpb_indicate(struct ast_channel *ast, int condition, const void *data switch (condition) { case AST_CONTROL_BUSY: case AST_CONTROL_CONGESTION: - if (ast->_state == AST_STATE_UP) { + if (ast_channel_state(ast) == AST_STATE_UP) { playtone(p->handle, &Busytone); p->state = VPB_STATE_PLAYBUSY; vpb_timer_stop(p->busy_timer); @@ -1685,7 +1685,7 @@ static int vpb_indicate(struct ast_channel *ast, int condition, const void *data } break; case AST_CONTROL_RINGING: - if (ast->_state == AST_STATE_UP) { + if (ast_channel_state(ast) == AST_STATE_UP) { playtone(p->handle, &Ringbacktone); p->state = VPB_STATE_PLAYRING; ast_verb(4, "%s: vpb indicate: setting ringback timer [%d]\n", p->dev,p->ringback_timer_id); @@ -1701,7 +1701,7 @@ static int vpb_indicate(struct ast_channel *ast, int condition, const void *data stoptone(p->handle); break; case AST_CONTROL_HANGUP: - if (ast->_state == AST_STATE_UP) { + if (ast_channel_state(ast) == AST_STATE_UP) { playtone(p->handle, &Busytone); p->state = VPB_STATE_PLAYBUSY; vpb_timer_stop(p->busy_timer); @@ -1724,7 +1724,7 @@ static int vpb_indicate(struct ast_channel *ast, int condition, const void *data static int vpb_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { - struct vpb_pvt *p = (struct vpb_pvt *)newchan->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(newchan); /* ast_verb(4, "%s: LOCKING in fixup \n", p->dev); @@ -1737,7 +1737,7 @@ static int vpb_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) p->owner = newchan; } - if (newchan->_state == AST_STATE_RINGING){ + if (ast_channel_state(newchan) == AST_STATE_RINGING){ if (use_ast_ind == 1) { ast_verb(4, "%s: vpb_fixup Calling ast_indicate\n", p->dev); ast_indicate(newchan, AST_CONTROL_RINGING); @@ -1758,7 +1758,7 @@ static int vpb_digit_begin(struct ast_channel *ast, char digit) } static int vpb_digit_end(struct ast_channel *ast, char digit, unsigned int duration) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); char s[2]; if (use_ast_dtmf) { @@ -1789,7 +1789,7 @@ static int vpb_digit_end(struct ast_channel *ast, char digit, unsigned int durat /* Places a call out of a VPB channel */ static int vpb_call(struct ast_channel *ast, const char *dest, int timeout) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); int res = 0, i; const char *s = strrchr(dest, '/'); char dialstring[254] = ""; @@ -1813,7 +1813,7 @@ static int vpb_call(struct ast_channel *ast, const char *dest, int timeout) dialstring[i] = '&'; } - if (ast->_state != AST_STATE_DOWN && ast->_state != AST_STATE_RESERVED) { + if (ast_channel_state(ast) != AST_STATE_DOWN && ast_channel_state(ast) != AST_STATE_RESERVED) { ast_log(LOG_WARNING, "vpb_call on %s neither down nor reserved!\n", ast_channel_name(ast)); ast_mutex_unlock(&p->lock); return -1; @@ -1890,7 +1890,7 @@ static int vpb_call(struct ast_channel *ast, const char *dest, int timeout) static int vpb_hangup(struct ast_channel *ast) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); VPB_EVENT je; char str[VPB_MAX_STR]; @@ -1902,7 +1902,7 @@ static int vpb_hangup(struct ast_channel *ast) */ ast_verb(2, "%s: Hangup requested\n", ast_channel_name(ast)); - if (!ast->tech || !ast->tech_pvt) { + if (!ast_channel_tech(ast) || !ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "%s: channel not connected?\n", ast_channel_name(ast)); ast_mutex_unlock(&p->lock); /* Free up ast dsp if we have one */ @@ -1978,7 +1978,7 @@ static int vpb_hangup(struct ast_channel *ast) p->dialtone = 0; p->owner = NULL; - ast->tech_pvt = NULL; + ast_channel_tech_pvt_set(ast, NULL); /* Free up ast dsp if we have one */ if (use_ast_dtmfdet && p->vad) { @@ -1995,7 +1995,7 @@ static int vpb_hangup(struct ast_channel *ast) static int vpb_answer(struct ast_channel *ast) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); /* VPB_EVENT je; int ret; @@ -2011,7 +2011,7 @@ static int vpb_answer(struct ast_channel *ast) vpb_disable_event(p->handle, VPB_MDROP); } - if (ast->_state != AST_STATE_UP) { + if (ast_channel_state(ast) != AST_STATE_UP) { if (p->mode == MODE_FXO) { vpb_sethook_sync(p->handle, VPB_OFFHOOK); p->state = VPB_STATE_OFFHOOK; @@ -2028,7 +2028,7 @@ static int vpb_answer(struct ast_channel *ast) ast_verb(2, "%s: Answered call on %s [%s]\n", p->dev, ast_channel_name(ast), (p->mode == MODE_FXO) ? "FXO" : "FXS"); - ast->rings = 0; + ast_channel_rings_set(ast, 0); if (!p->readthread) { /* res = ast_mutex_unlock(&p->lock); */ /* ast_verbose("%s: unLOCKING in answer [%d]\n", p->dev,res); */ @@ -2052,7 +2052,7 @@ static int vpb_answer(struct ast_channel *ast) static struct ast_frame *vpb_read(struct ast_channel *ast) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); static struct ast_frame f = { AST_FRAME_NULL }; f.src = "vpb"; @@ -2126,7 +2126,7 @@ int a_gain_vector(float g, short *v, int n) /* Writes a frame of voice data to a VPB channel */ static int vpb_write(struct ast_channel *ast, struct ast_frame *frame) { - struct vpb_pvt *p = (struct vpb_pvt *)ast->tech_pvt; + struct vpb_pvt *p = (struct vpb_pvt *)ast_channel_tech_pvt(ast); int res = 0; AudioCompress fmt = VPB_RAW; struct timeval play_buf_time_start; @@ -2139,8 +2139,8 @@ static int vpb_write(struct ast_channel *ast, struct ast_frame *frame) ast_verb(4, "%s: vpb_write: Don't know how to handle from type %d\n", ast_channel_name(ast), frame->frametype); /* ast_mutex_unlock(&p->lock); */ return 0; - } else if (ast->_state != AST_STATE_UP) { - ast_verb(4, "%s: vpb_write: Attempt to Write frame type[%d]subclass[%s] on not up chan(state[%d])\n", ast_channel_name(ast), frame->frametype, ast_getformatname(&frame->subclass.format), ast->_state); + } else if (ast_channel_state(ast) != AST_STATE_UP) { + ast_verb(4, "%s: vpb_write: Attempt to Write frame type[%d]subclass[%s] on not up chan(state[%d])\n", ast_channel_name(ast), frame->frametype, ast_getformatname(&frame->subclass.format), ast_channel_state(ast)); p->lastoutput = -1; /* ast_mutex_unlock(&p->lock); */ return 0; @@ -2266,9 +2266,9 @@ static void *do_chanreads(void *pvt) } /* if ((p->owner->_state != AST_STATE_UP) || !bridgerec) */ - if ((p->owner->_state != AST_STATE_UP)) { - if (p->owner->_state != AST_STATE_UP) { - ast_verb(5, "%s: chanreads: Im not up[%d]\n", p->dev, p->owner->_state); + if ((ast_channel_state(p->owner) != AST_STATE_UP)) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { + ast_verb(5, "%s: chanreads: Im not up[%d]\n", p->dev, ast_channel_state(p->owner)); } else { ast_verb(5, "%s: chanreads: No bridgerec[%d]\n", p->dev, bridgerec); } @@ -2370,7 +2370,7 @@ static void *do_chanreads(void *pvt) * (ast_hangup() immediately gets lock) */ if (p->owner && !p->stopreads) { - ast_verb(6, "%s: chanreads: queueing buffer on read frame q (state[%d])\n", p->dev, p->owner->_state); + ast_verb(6, "%s: chanreads: queueing buffer on read frame q (state[%d])\n", p->dev, ast_channel_state(p->owner)); do { res = ast_channel_trylock(p->owner); trycnt++; @@ -2445,9 +2445,9 @@ static struct ast_channel *vpb_new(struct vpb_pvt *me, enum ast_channel_state st tmp = ast_channel_alloc(1, state, 0, 0, "", me->ext, me->context, linkedid, 0, "%s", me->dev); if (tmp) { if (use_ast_ind == 1){ - tmp->tech = &vpb_tech_indicate; + ast_channel_tech_set(tmp, &vpb_tech_indicate); } else { - tmp->tech = &vpb_tech; + ast_channel_tech_set(tmp, &vpb_tech); } tmp->callgroup = me->callgroup; @@ -2457,17 +2457,17 @@ static struct ast_channel *vpb_new(struct vpb_pvt *me, enum ast_channel_state st * they are all converted to/from linear in the vpb code. Best for us to use * linear since we can then adjust volume in this modules. */ - ast_format_cap_add(tmp->nativeformats, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); + ast_format_cap_add(ast_channel_nativeformats(tmp), ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0)); ast_format_copy(&tmp->rawreadformat, &tmpfmt); ast_format_copy(&tmp->rawwriteformat, &tmpfmt); if (state == AST_STATE_RING) { - tmp->rings = 1; + ast_channel_rings_set(tmp, 1); cid_name[0] = '\0'; cid_num[0] = '\0'; ast_callerid_split(me->callerid, cid_name, sizeof(cid_name), cid_num, sizeof(cid_num)); ast_set_callerid(tmp, cid_num, cid_name, cid_num); } - tmp->tech_pvt = me; + ast_channel_tech_pvt_set(tmp, me); ast_channel_context_set(tmp, context); if (!ast_strlen_zero(me->ext)) diff --git a/channels/sig_analog.c b/channels/sig_analog.c index 21a96317a..01cac4b76 100644 --- a/channels/sig_analog.c +++ b/channels/sig_analog.c @@ -710,8 +710,8 @@ static int analog_attempt_transfer(struct analog_pvt *p, int inthreeway) if (bridge_3way) { ast_verb(3, "TRANSFERRING %s to %s\n", ast_channel_name(owner_3way), ast_channel_name(owner_real)); ast_cel_report_event(owner_3way, - (owner_real->_state == AST_STATE_RINGING - || owner_3way->_state == AST_STATE_RINGING) + (ast_channel_state(owner_real) == AST_STATE_RINGING + || ast_channel_state(owner_3way) == AST_STATE_RINGING) ? AST_CEL_BLINDTRANSFER : AST_CEL_ATTENDEDTRANSFER, NULL, ast_channel_linkedid(owner_3way), NULL); @@ -736,8 +736,8 @@ static int analog_attempt_transfer(struct analog_pvt *p, int inthreeway) /* Try transferring the other way. */ ast_verb(3, "TRANSFERRING %s to %s\n", ast_channel_name(owner_real), ast_channel_name(owner_3way)); ast_cel_report_event(owner_3way, - (owner_real->_state == AST_STATE_RINGING - || owner_3way->_state == AST_STATE_RINGING) + (ast_channel_state(owner_real) == AST_STATE_RINGING + || ast_channel_state(owner_3way) == AST_STATE_RINGING) ? AST_CEL_BLINDTRANSFER : AST_CEL_ATTENDEDTRANSFER, NULL, ast_channel_linkedid(owner_3way), NULL); @@ -864,8 +864,8 @@ int analog_available(struct analog_pvt *p) return 0; } - if ((p->owner->_state != AST_STATE_UP) && - ((p->owner->_state != AST_STATE_RINGING) || p->outgoing)) { + if ((ast_channel_state(p->owner) != AST_STATE_UP) && + ((ast_channel_state(p->owner) != AST_STATE_RINGING) || p->outgoing)) { /* If the current call is not up, then don't allow the call */ return 0; } @@ -1023,12 +1023,12 @@ int analog_call(struct analog_pvt *p, struct ast_channel *ast, const char *rdest ast_copy_string(dest, rdest, sizeof(dest)); ast_copy_string(p->dialdest, rdest, sizeof(p->dialdest)); - if ((ast->_state == AST_STATE_BUSY)) { + if ((ast_channel_state(ast) == AST_STATE_BUSY)) { ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_BUSY); return 0; } - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "analog_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -1283,7 +1283,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast) int idx, x; ast_debug(1, "%s %d\n", __FUNCTION__, p->channel); - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } @@ -1352,7 +1352,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast) analog_swap_subs(p, ANALOG_SUB_CALLWAIT, ANALOG_SUB_REAL); analog_unalloc_sub(p, ANALOG_SUB_CALLWAIT); analog_set_new_owner(p, p->subs[ANALOG_SUB_REAL].owner); - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_ANSWER); } if (ast_bridged_channel(p->subs[ANALOG_SUB_REAL].owner)) { @@ -1463,7 +1463,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast) case ANALOG_SIG_FXSKS: /* Make sure we're not made available for at least two seconds assuming we were actually used for an inbound or outbound call. */ - if (ast->_state != AST_STATE_RESERVED) { + if (ast_channel_state(ast) != AST_STATE_RESERVED) { time(&p->guardtime); p->guardtime += 2; } @@ -1497,7 +1497,7 @@ int analog_answer(struct analog_pvt *p, struct ast_channel *ast) { int res = 0; int idx; - int oldstate = ast->_state; + int oldstate = ast_channel_state(ast); ast_debug(1, "%s %d\n", __FUNCTION__, p->channel); ast_setstate(ast, AST_STATE_UP); @@ -1778,7 +1778,7 @@ static void *__analog_ss_thread(void *data) /* in the bizarre case where the channel has become a zombie before we even get started here, abort safely */ - if (!chan->tech_pvt) { + if (!ast_channel_tech_pvt(chan)) { ast_log(LOG_WARNING, "Channel became a zombie before simple switch could be started (%s)\n", ast_channel_name(chan)); ast_hangup(chan); goto quit; @@ -2312,8 +2312,8 @@ static void *__analog_ss_thread(void *data) pbridge = analog_get_bridged_channel(p, nbridge); } if (nbridge && pbridge && - (nbridge->tech == p->chan_tech) && - (ast_bridged_channel(nbridge)->tech == p->chan_tech) && + (ast_channel_tech(nbridge) == p->chan_tech) && + (ast_channel_tech(ast_bridged_channel(nbridge)) == p->chan_tech) && ISTRUNK(pbridge)) { /* Clear out the dial buffer */ p->dop.dialstr[0] = '\0'; @@ -2383,7 +2383,7 @@ static void *__analog_ss_thread(void *data) /* If we want caller id, we're in a prering state due to a polarity reversal * and we're set to use a polarity reversal to trigger the start of caller id, * grab the caller id and wait for ringing to start... */ - } else if (p->use_callerid && (chan->_state == AST_STATE_PRERING + } else if (p->use_callerid && (ast_channel_state(chan) == AST_STATE_PRERING && (p->cid_start == ANALOG_CID_START_POLARITY || p->cid_start == ANALOG_CID_START_POLARITY_IN || p->cid_start == ANALOG_CID_START_DTMF_NOALERT))) { @@ -2430,8 +2430,8 @@ static void *__analog_ss_thread(void *data) res = 4000;/* This is a typical OFF time between rings. */ } ast_frfree(f); - if (chan->_state == AST_STATE_RING || - chan->_state == AST_STATE_RINGING) { + if (ast_channel_state(chan) == AST_STATE_RING || + ast_channel_state(chan) == AST_STATE_RINGING) { break; /* Got ring */ } } @@ -2514,8 +2514,8 @@ static void *__analog_ss_thread(void *data) goto quit; } ast_frfree(f); - if (chan->_state == AST_STATE_RING || - chan->_state == AST_STATE_RINGING) + if (ast_channel_state(chan) == AST_STATE_RING || + ast_channel_state(chan) == AST_STATE_RINGING) break; /* Got ring */ } @@ -2618,7 +2618,7 @@ static void *__analog_ss_thread(void *data) analog_handle_notify_message(chan, p, flags, -1); ast_setstate(chan, AST_STATE_RING); - chan->rings = 1; + ast_channel_rings_set(chan, 1); analog_set_ringtimeout(p, p->ringt_base); res = ast_pbx_run(chan); if (res) { @@ -2730,7 +2730,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ #endif case ANALOG_EVENT_PULSE_START: /* Stop tone if there's a pulse start and the PBX isn't started */ - if (!ast->pbx) + if (!ast_channel_pbx(ast)) analog_play_tone(p, ANALOG_SUB_REAL, -1); break; case ANALOG_EVENT_DIALCOMPLETE: @@ -2750,7 +2750,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ analog_set_dialing(p, 0); if ((mysig == ANALOG_SIG_E911) || (mysig == ANALOG_SIG_FGC_CAMA) || (mysig == ANALOG_SIG_FGC_CAMAMF)) { /* if thru with dialing after offhook */ - if (ast->_state == AST_STATE_DIALING_OFFHOOK) { + if (ast_channel_state(ast) == AST_STATE_DIALING_OFFHOOK) { ast_setstate(ast, AST_STATE_UP); p->subs[idx].f.frametype = AST_FRAME_CONTROL; p->subs[idx].f.subclass.integer = AST_CONTROL_ANSWER; @@ -2760,7 +2760,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ ast_setstate(ast,AST_STATE_DIALING_OFFHOOK); } } - if (ast->_state == AST_STATE_DIALING) { + if (ast_channel_state(ast) == AST_STATE_DIALING) { if (analog_have_progressdetect(p)) { ast_debug(1, "Done dialing, but waiting for progress detection before doing more...\n"); } else if (analog_check_confirmanswer(p) || (!p->dialednone @@ -2821,7 +2821,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ analog_stop_callwait(p); analog_set_new_owner(p, NULL); /* Don't start streaming audio yet if the incoming call isn't up yet */ - if (p->subs[ANALOG_SUB_REAL].owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->subs[ANALOG_SUB_REAL].owner) != AST_STATE_UP) { analog_set_dialing(p, 1); } /* Unlock the call-waiting call that we swapped to real-call. */ @@ -2853,7 +2853,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ ast_queue_hangup_with_cause(p->subs[ANALOG_SUB_THREEWAY].owner, AST_CAUSE_NO_ANSWER); ast_softhangup_nolock(p->subs[ANALOG_SUB_THREEWAY].owner, AST_SOFTHANGUP_DEV); ast_channel_unlock(p->subs[ANALOG_SUB_THREEWAY].owner); - } else if ((ast->pbx) || (ast->_state == AST_STATE_UP)) { + } else if ((ast_channel_pbx(ast)) || (ast_channel_state(ast) == AST_STATE_UP)) { if (p->transfer) { int inthreeway; @@ -2864,7 +2864,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ analog_set_inthreeway(p, ANALOG_SUB_THREEWAY, 0); /* Only attempt transfer if the phone is ringing; why transfer to busy tone eh? */ - if (!p->transfertobusy && ast->_state == AST_STATE_BUSY) { + if (!p->transfertobusy && ast_channel_state(ast) == AST_STATE_BUSY) { /* Swap subs and dis-own channel */ analog_swap_subs(p, ANALOG_SUB_THREEWAY, ANALOG_SUB_REAL); /* Unlock the 3-way call that we swapped to real-call. */ @@ -2912,7 +2912,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ } /* for E911, its supposed to wait for offhook then dial the second half of the dial string */ - if (((mysig == ANALOG_SIG_E911) || (mysig == ANALOG_SIG_FGC_CAMA) || (mysig == ANALOG_SIG_FGC_CAMAMF)) && (ast->_state == AST_STATE_DIALING_OFFHOOK)) { + if (((mysig == ANALOG_SIG_E911) || (mysig == ANALOG_SIG_FGC_CAMA) || (mysig == ANALOG_SIG_FGC_CAMAMF)) && (ast_channel_state(ast) == AST_STATE_DIALING_OFFHOOK)) { c = strchr(p->dialdest, '/'); if (c) { c++; @@ -2947,7 +2947,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ case ANALOG_SIG_FXOGS: case ANALOG_SIG_FXOKS: p->fxsoffhookstate = 1; - switch (ast->_state) { + switch (ast_channel_state(ast)) { case AST_STATE_RINGING: analog_set_echocanceller(p, 1); analog_train_echocanceller(p); @@ -2989,7 +2989,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ return &p->subs[idx].f; case AST_STATE_DOWN: ast_setstate(ast, AST_STATE_RING); - ast->rings = 1; + ast_channel_rings_set(ast, 1); p->subs[idx].f.frametype = AST_FRAME_CONTROL; p->subs[idx].f.subclass.integer = AST_CONTROL_OFFHOOK; ast_debug(1, "channel %d picked up\n", p->channel); @@ -3011,13 +3011,13 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ } break; default: - ast_log(LOG_WARNING, "FXO phone off hook in weird state %d??\n", ast->_state); + ast_log(LOG_WARNING, "FXO phone off hook in weird state %d??\n", ast_channel_state(ast)); } break; case ANALOG_SIG_FXSLS: case ANALOG_SIG_FXSGS: case ANALOG_SIG_FXSKS: - if (ast->_state == AST_STATE_RING) { + if (ast_channel_state(ast) == AST_STATE_RING) { analog_set_ringtimeout(p, p->ringt_base); } @@ -3037,7 +3037,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ case ANALOG_SIG_SF_FEATD: case ANALOG_SIG_SF_FEATDMF: case ANALOG_SIG_SF_FEATB: - switch (ast->_state) { + switch (ast_channel_state(ast)) { case AST_STATE_PRERING: ast_setstate(ast, AST_STATE_RING); /* Fall through */ @@ -3063,7 +3063,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ } /* Fall through */ default: - ast_log(LOG_WARNING, "Ring/Off-hook in strange state %d on channel %d\n", ast->_state, p->channel); + ast_log(LOG_WARNING, "Ring/Off-hook in strange state %d on channel %d\n", ast_channel_state(ast), p->channel); break; } break; @@ -3077,7 +3077,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ case ANALOG_SIG_FXSLS: case ANALOG_SIG_FXSGS: case ANALOG_SIG_FXSKS: - if (ast->_state == AST_STATE_RING) { + if (ast_channel_state(ast) == AST_STATE_RING) { analog_set_ringtimeout(p, p->ringt_base); } break; @@ -3087,12 +3087,12 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ break; case ANALOG_EVENT_RINGEROFF: if (p->inalarm) break; - ast->rings++; - if (ast->rings == p->cidrings) { + ast_channel_rings_set(ast, ast_channel_rings(ast) + 1); + if (ast_channel_rings(ast) == p->cidrings) { analog_send_callerid(p, 0, &p->caller); } - if (ast->rings > p->cidrings) { + if (ast_channel_rings(ast) > p->cidrings) { analog_cancel_cidspill(p); p->callwaitcas = 0; } @@ -3146,7 +3146,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ analog_play_tone(p, ANALOG_SUB_REAL, -1); analog_set_new_owner(p, p->subs[ANALOG_SUB_REAL].owner); ast_debug(1, "Making %s the new owner\n", ast_channel_name(p->owner)); - if (p->subs[ANALOG_SUB_REAL].owner->_state == AST_STATE_RINGING) { + if (ast_channel_state(p->subs[ANALOG_SUB_REAL].owner) == AST_STATE_RINGING) { ast_setstate(p->subs[ANALOG_SUB_REAL].owner, AST_STATE_UP); ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_ANSWER); } @@ -3192,9 +3192,9 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ } /* XXX This section needs much more error checking!!! XXX */ /* Start a 3-way call if feasible */ - if (!((ast->pbx) || - (ast->_state == AST_STATE_UP) || - (ast->_state == AST_STATE_RING))) { + if (!((ast_channel_pbx(ast)) || + (ast_channel_state(ast) == AST_STATE_UP) || + (ast_channel_state(ast) == AST_STATE_RING))) { ast_debug(1, "Flash when call not up or ringing\n"); goto winkflashdone; } @@ -3267,8 +3267,8 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ /* Call is already up, drop the last person */ ast_debug(1, "Got flash with three way call up, dropping last call on %d\n", p->channel); /* If the primary call isn't answered yet, use it */ - if ((p->subs[ANALOG_SUB_REAL].owner->_state != AST_STATE_UP) && - (p->subs[ANALOG_SUB_THREEWAY].owner->_state == AST_STATE_UP)) { + if ((ast_channel_state(p->subs[ANALOG_SUB_REAL].owner) != AST_STATE_UP) && + (ast_channel_state(p->subs[ANALOG_SUB_THREEWAY].owner) == AST_STATE_UP)) { /* Swap back -- we're dropping the real 3-way that isn't finished yet*/ analog_swap_subs(p, ANALOG_SUB_THREEWAY, ANALOG_SUB_REAL); orig_3way_sub = ANALOG_SUB_REAL; @@ -3281,15 +3281,15 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ analog_set_inthreeway(p, ANALOG_SUB_THREEWAY, 0); } else { /* Lets see what we're up to */ - if (((ast->pbx) || (ast->_state == AST_STATE_UP)) && - (p->transfertobusy || (ast->_state != AST_STATE_BUSY))) { + if (((ast_channel_pbx(ast)) || (ast_channel_state(ast) == AST_STATE_UP)) && + (p->transfertobusy || (ast_channel_state(ast) != AST_STATE_BUSY))) { ast_verb(3, "Building conference call with %s and %s\n", ast_channel_name(p->subs[ANALOG_SUB_THREEWAY].owner), ast_channel_name(p->subs[ANALOG_SUB_REAL].owner)); /* Put them in the threeway, and flip */ analog_set_inthreeway(p, ANALOG_SUB_THREEWAY, 1); analog_set_inthreeway(p, ANALOG_SUB_REAL, 1); - if (ast->_state == AST_STATE_UP) { + if (ast_channel_state(ast) == AST_STATE_UP) { analog_swap_subs(p, ANALOG_SUB_THREEWAY, ANALOG_SUB_REAL); orig_3way_sub = ANALOG_SUB_REAL; } @@ -3325,7 +3325,7 @@ winkflashdone: if (p->dialing) { ast_debug(1, "Ignoring wink on channel %d\n", p->channel); } else { - ast_debug(1, "Got wink in weird state %d on channel %d\n", ast->_state, p->channel); + ast_debug(1, "Got wink in weird state %d on channel %d\n", ast_channel_state(ast), p->channel); } break; case ANALOG_SIG_FEATDMF_TA: @@ -3429,7 +3429,7 @@ winkflashdone: if (p->polarityonanswerdelay > 0) { /* check if event is not too soon after OffHook or Answer */ if (ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) > p->polarityonanswerdelay) { - switch (ast->_state) { + switch (ast_channel_state(ast)) { case AST_STATE_DIALING: /*!< Digits (or equivalent) have been dialed */ case AST_STATE_RINGING: /*!< Remote end is ringing */ if (p->answeronpolarityswitch) { @@ -3463,31 +3463,31 @@ winkflashdone: case AST_STATE_PRERING: /*!< Channel has detected an incoming call and is waiting for ring */ default: if (p->answeronpolarityswitch || p->hanguponpolarityswitch) { - ast_debug(1, "Ignoring Polarity switch on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Ignoring Polarity switch on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } break; } } else { /* event is too soon after OffHook or Answer */ - switch (ast->_state) { + switch (ast_channel_state(ast)) { case AST_STATE_DIALING: /*!< Digits (or equivalent) have been dialed */ case AST_STATE_RINGING: /*!< Remote end is ringing */ if (p->answeronpolarityswitch) { - ast_debug(1, "Polarity switch detected but NOT answering (too close to OffHook event) on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Polarity switch detected but NOT answering (too close to OffHook event) on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } break; case AST_STATE_UP: /*!< Line is up */ case AST_STATE_RING: /*!< Line is ringing */ if (p->hanguponpolarityswitch) { - ast_debug(1, "Polarity switch detected but NOT hanging up (too close to Answer event) on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Polarity switch detected but NOT hanging up (too close to Answer event) on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } break; default: if (p->answeronpolarityswitch || p->hanguponpolarityswitch) { - ast_debug(1, "Polarity switch detected (too close to previous event) on channel %d, state %d\n", p->channel, ast->_state); + ast_debug(1, "Polarity switch detected (too close to previous event) on channel %d, state %d\n", p->channel, ast_channel_state(ast)); } break; } @@ -3495,7 +3495,7 @@ winkflashdone: } /* Added more log_debug information below to provide a better indication of what is going on */ - ast_debug(1, "Polarity Reversal event occured - DEBUG 2: channel %d, state %d, pol= %d, aonp= %d, honp= %d, pdelay= %d, tv= %" PRIi64 "\n", p->channel, ast->_state, p->polarity, p->answeronpolarityswitch, p->hanguponpolarityswitch, p->polarityonanswerdelay, ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) ); + ast_debug(1, "Polarity Reversal event occured - DEBUG 2: channel %d, state %d, pol= %d, aonp= %d, honp= %d, pdelay= %d, tv= %" PRIi64 "\n", p->channel, ast_channel_state(ast), p->polarity, p->answeronpolarityswitch, p->hanguponpolarityswitch, p->polarityonanswerdelay, ast_tvdiff_ms(ast_tvnow(), p->polaritydelaytv) ); break; default: ast_debug(1, "Dunno what to do with event %d on channel %d\n", res, p->channel); @@ -3567,7 +3567,7 @@ struct ast_frame *analog_exception(struct analog_pvt *p, struct ast_channel *ast case ANALOG_EVENT_RINGOFFHOOK: analog_set_echocanceller(p, 1); analog_off_hook(p); - if (p->owner && (p->owner->_state == AST_STATE_RINGING)) { + if (p->owner && (ast_channel_state(p->owner) == AST_STATE_RINGING)) { ast_queue_control(p->owner, AST_CONTROL_ANSWER); analog_set_dialing(p, 0); } @@ -3581,7 +3581,7 @@ struct ast_frame *analog_exception(struct analog_pvt *p, struct ast_channel *ast gettimeofday(&p->flashtime, NULL); if (p->owner) { ast_verb(3, "Channel %d flashed to other channel %s\n", p->channel, ast_channel_name(p->owner)); - if (p->owner->_state != AST_STATE_UP) { + if (ast_channel_state(p->owner) != AST_STATE_UP) { /* Answer if necessary */ ast_queue_control(p->owner, AST_CONTROL_ANSWER); ast_setstate(p->owner, AST_STATE_UP); diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 5c70179ef..6d48a5d11 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -952,7 +952,7 @@ static struct ast_channel *sig_pri_new_ast_channel(struct sig_pri_chan *p, int s p->owner = c; p->isidlecall = 0; p->alreadyhungup = 0; - c->transfercapability = transfercapability; + ast_channel_transfercapability_set(c, transfercapability); pbx_builtin_setvar_helper(c, "TRANSFERCAPABILITY", ast_transfercapability2str(transfercapability)); if (transfercapability & AST_TRANS_CAP_DIGITAL) { @@ -1302,7 +1302,7 @@ static void sig_pri_kill_call(struct sig_pri_span *pri, q931_call *call, int cau sig_pri_span_devstate_changed(pri); return; } - pri->pvts[chanpos]->owner->hangupcause = cause; + ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, cause); pri_queue_control(pri, chanpos, AST_CONTROL_HANGUP); sig_pri_unlock_private(pri->pvts[chanpos]); } @@ -1839,7 +1839,7 @@ static void *do_idle_thread(void *v_pvt) /* Launch the PBX */ ast_channel_exten_set(chan, pvt->pri->idleext); ast_channel_context_set(chan, pvt->pri->idlecontext); - chan->priority = 1; + ast_channel_priority_set(chan, 1); ast_verb(4, "Idle channel '%s' answered, sending to %s@%s\n", ast_channel_name(chan), ast_channel_exten(chan), ast_channel_context(chan)); ast_pbx_run(chan); /* It's already hungup, return immediately */ @@ -1878,7 +1878,7 @@ static void *pri_ss_thread(void *data) * In the bizarre case where the channel has become a zombie before we * even get started here, abort safely. */ - if (!chan->tech_pvt) { + if (!ast_channel_tech_pvt(chan)) { ast_log(LOG_WARNING, "Channel became a zombie before simple switch could be started (%s)\n", ast_channel_name(chan)); ast_hangup(chan); return NULL; @@ -1973,7 +1973,7 @@ static void *pri_ss_thread(void *data) } } else { ast_debug(1, "No such possible extension '%s' in context '%s'\n", exten, ast_channel_context(chan)); - chan->hangupcause = AST_CAUSE_UNALLOCATED; + ast_channel_hangupcause_set(chan, AST_CAUSE_UNALLOCATED); ast_hangup(chan); p->exten[0] = '\0'; /* Since we send release complete here, we won't get one */ @@ -6409,7 +6409,7 @@ static void *pri_dchannel(void *vpri) if (pri->pvts[chanpos]->owner) { ast_verb(3, "PROGRESS with 'user busy' received, signaling AST_CONTROL_BUSY instead of AST_CONTROL_PROGRESS\n"); - pri->pvts[chanpos]->owner->hangupcause = e->proceeding.cause; + ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, e->proceeding.cause); pri_queue_control(pri, chanpos, AST_CONTROL_BUSY); } } @@ -6545,8 +6545,8 @@ static void *pri_dchannel(void *vpri) sig_pri_cc_generic_check(pri, chanpos, AST_CC_CCBS); sig_pri_lock_owner(pri, chanpos); if (pri->pvts[chanpos]->owner) { - pri->pvts[chanpos]->owner->hangupcause = PRI_CAUSE_NORMAL_CIRCUIT_CONGESTION; - switch (pri->pvts[chanpos]->owner->_state) { + ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, PRI_CAUSE_NORMAL_CIRCUIT_CONGESTION); + switch (ast_channel_state(pri->pvts[chanpos]->owner)) { case AST_STATE_BUSY: case AST_STATE_UP: ast_softhangup_nolock(pri->pvts[chanpos]->owner, AST_SOFTHANGUP_DEV); @@ -6691,8 +6691,8 @@ static void *pri_dchannel(void *vpri) int do_hangup = 0; /* Queue a BUSY instead of a hangup if our cause is appropriate */ - pri->pvts[chanpos]->owner->hangupcause = e->hangup.cause; - switch (pri->pvts[chanpos]->owner->_state) { + ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, e->hangup.cause); + switch (ast_channel_state(pri->pvts[chanpos]->owner)) { case AST_STATE_BUSY: case AST_STATE_UP: do_hangup = 1; @@ -6839,8 +6839,8 @@ static void *pri_dchannel(void *vpri) if (pri->pvts[chanpos]->owner) { int do_hangup = 0; - pri->pvts[chanpos]->owner->hangupcause = e->hangup.cause; - switch (pri->pvts[chanpos]->owner->_state) { + ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, e->hangup.cause); + switch (ast_channel_state(pri->pvts[chanpos]->owner)) { case AST_STATE_BUSY: case AST_STATE_UP: do_hangup = 1; @@ -7231,7 +7231,7 @@ void sig_pri_init_pri(struct sig_pri_span *pri) int sig_pri_hangup(struct sig_pri_chan *p, struct ast_channel *ast) { ast_debug(1, "%s %d\n", __FUNCTION__, p->channel); - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } @@ -7278,7 +7278,7 @@ int sig_pri_hangup(struct sig_pri_chan *p, struct ast_channel *ast) p->call = NULL; } else { const char *cause = pbx_builtin_getvar_helper(ast,"PRI_CAUSE"); - int icause = ast->hangupcause ? ast->hangupcause : -1; + int icause = ast_channel_hangupcause(ast) ? ast_channel_hangupcause(ast) : -1; p->alreadyhungup = 1; if (!ast_strlen_zero(cause)) { @@ -7442,7 +7442,7 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, const char *rd return -1; } - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { + if ((ast_channel_state(ast) != AST_STATE_DOWN) && (ast_channel_state(ast) != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "sig_pri_call called on %s, neither down nor reserved\n", ast_channel_name(ast)); return -1; } @@ -7544,7 +7544,7 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, const char *rd return -1; } - sig_pri_set_digital(p, IS_DIGITAL(ast->transfercapability)); /* push up to parent for EC */ + sig_pri_set_digital(p, IS_DIGITAL(ast_channel_transfercapability(ast))); /* push up to parent for EC */ #if defined(HAVE_PRI_CALL_WAITING) if (p->is_call_waiting) { @@ -7565,13 +7565,13 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, const char *rd pri_sr_set_channel(sr, PVT_TO_CHANNEL(p), exclusive, 1); } - pri_sr_set_bearer(sr, p->digital ? PRI_TRANS_CAP_DIGITAL : ast->transfercapability, + pri_sr_set_bearer(sr, p->digital ? PRI_TRANS_CAP_DIGITAL : ast_channel_transfercapability(ast), (p->digital ? -1 : layer1)); if (p->pri->facilityenable) pri_facility_enable(p->pri->pri); - ast_verb(3, "Requested transfer capability: 0x%.2x - %s\n", ast->transfercapability, ast_transfercapability2str(ast->transfercapability)); + ast_verb(3, "Requested transfer capability: 0x%.2x - %s\n", ast_channel_transfercapability(ast), ast_transfercapability2str(ast_channel_transfercapability(ast))); dp_strip = 0; pridialplan = p->pri->dialplan - 1; if (pridialplan == -2 || pridialplan == -3) { /* compute dynamically */ @@ -7862,19 +7862,19 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi switch (condition) { case AST_CONTROL_BUSY: if (p->priindication_oob || p->no_b_channel) { - chan->hangupcause = AST_CAUSE_USER_BUSY; + ast_channel_hangupcause_set(chan, AST_CAUSE_USER_BUSY); chan->_softhangup |= AST_SOFTHANGUP_DEV; res = 0; break; } res = sig_pri_play_tone(p, SIG_PRI_TONE_BUSY); if (p->call_level < SIG_PRI_CALL_LEVEL_ALERTING && !p->outgoing) { - chan->hangupcause = AST_CAUSE_USER_BUSY; + ast_channel_hangupcause_set(chan, AST_CAUSE_USER_BUSY); p->progress = 1;/* No need to send plain PROGRESS after this. */ if (p->pri && p->pri->pri) { pri_grab(p, p->pri); #ifdef HAVE_PRI_PROG_W_CAUSE - pri_progress_with_cause(p->pri->pri, p->call, PVT_TO_CHANNEL(p), 1, chan->hangupcause); + pri_progress_with_cause(p->pri->pri, p->call, PVT_TO_CHANNEL(p), 1, ast_channel_hangupcause(chan)); #else pri_progress(p->pri->pri,p->call, PVT_TO_CHANNEL(p), 1); #endif @@ -7893,8 +7893,8 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi } } res = sig_pri_play_tone(p, SIG_PRI_TONE_RINGTONE); - if (chan->_state != AST_STATE_UP) { - if (chan->_state != AST_STATE_RING) + if (ast_channel_state(chan) != AST_STATE_UP) { + if (ast_channel_state(chan) != AST_STATE_RING) ast_setstate(chan, AST_STATE_RINGING); } break; @@ -7941,17 +7941,17 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi break; } /* Otherwise, treat as congestion */ - chan->hangupcause = AST_CAUSE_INVALID_NUMBER_FORMAT; + ast_channel_hangupcause_set(chan, AST_CAUSE_INVALID_NUMBER_FORMAT); /* Falls through */ case AST_CONTROL_CONGESTION: if (p->priindication_oob || p->no_b_channel) { /* There are many cause codes that generate an AST_CONTROL_CONGESTION. */ - switch (chan->hangupcause) { + switch (ast_channel_hangupcause(chan)) { case AST_CAUSE_USER_BUSY: case AST_CAUSE_NORMAL_CLEARING: case 0:/* Cause has not been set. */ /* Supply a more appropriate cause. */ - chan->hangupcause = AST_CAUSE_SWITCH_CONGESTION; + ast_channel_hangupcause_set(chan, AST_CAUSE_SWITCH_CONGESTION); break; default: break; @@ -7963,12 +7963,12 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi res = sig_pri_play_tone(p, SIG_PRI_TONE_CONGESTION); if (p->call_level < SIG_PRI_CALL_LEVEL_ALERTING && !p->outgoing) { /* There are many cause codes that generate an AST_CONTROL_CONGESTION. */ - switch (chan->hangupcause) { + switch (ast_channel_hangupcause(chan)) { case AST_CAUSE_USER_BUSY: case AST_CAUSE_NORMAL_CLEARING: case 0:/* Cause has not been set. */ /* Supply a more appropriate cause. */ - chan->hangupcause = AST_CAUSE_SWITCH_CONGESTION; + ast_channel_hangupcause_set(chan, AST_CAUSE_SWITCH_CONGESTION); break; default: break; @@ -7977,7 +7977,7 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi if (p->pri && p->pri->pri) { pri_grab(p, p->pri); #ifdef HAVE_PRI_PROG_W_CAUSE - pri_progress_with_cause(p->pri->pri, p->call, PVT_TO_CHANNEL(p), 1, chan->hangupcause); + pri_progress_with_cause(p->pri->pri, p->call, PVT_TO_CHANNEL(p), 1, ast_channel_hangupcause(chan)); #else pri_progress(p->pri->pri,p->call, PVT_TO_CHANNEL(p), 1); #endif @@ -8279,7 +8279,7 @@ int sig_pri_available(struct sig_pri_chan **pvt, int is_specific_channel) * functions should handle it normally (generate inband DTMF) */ int sig_pri_digit_begin(struct sig_pri_chan *pvt, struct ast_channel *ast, char digit) { - if (ast->_state == AST_STATE_DIALING) { + if (ast_channel_state(ast) == AST_STATE_DIALING) { if (pvt->call_level < SIG_PRI_CALL_LEVEL_OVERLAP) { unsigned int len; diff --git a/channels/sig_ss7.c b/channels/sig_ss7.c index 9edb04bbb..c37cf619c 100644 --- a/channels/sig_ss7.c +++ b/channels/sig_ss7.c @@ -257,7 +257,7 @@ static struct ast_channel *sig_ss7_new_ast_channel(struct sig_ss7_chan *p, int s p->owner = ast; } p->alreadyhungup = 0; - ast->transfercapability = transfercapability; + ast_channel_transfercapability_set(ast, transfercapability); pbx_builtin_setvar_helper(ast, "TRANSFERCAPABILITY", ast_transfercapability2str(transfercapability)); if (transfercapability & AST_TRANS_CAP_DIGITAL) { @@ -893,7 +893,7 @@ void *ss7_linkset(void *data) } p->call_level = SIG_SS7_CALL_LEVEL_GLARE; if (p->owner) { - p->owner->hangupcause = AST_CAUSE_NORMAL_CLEARING; + ast_channel_hangupcause_set(p->owner, AST_CAUSE_NORMAL_CLEARING); ast_softhangup_nolock(p->owner, AST_SOFTHANGUP_DEV); ast_channel_unlock(p->owner); } @@ -1036,7 +1036,7 @@ void *ss7_linkset(void *data) sig_ss7_lock_private(p); sig_ss7_lock_owner(linkset, chanpos); if (p->owner) { - p->owner->hangupcause = e->rel.cause; + ast_channel_hangupcause_set(p->owner, e->rel.cause); ast_softhangup_nolock(p->owner, AST_SOFTHANGUP_DEV); ast_channel_unlock(p->owner); } @@ -1571,7 +1571,7 @@ int sig_ss7_hangup(struct sig_ss7_chan *p, struct ast_channel *ast) { int res = 0; - if (!ast->tech_pvt) { + if (!ast_channel_tech_pvt(ast)) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); return 0; } @@ -1588,7 +1588,7 @@ int sig_ss7_hangup(struct sig_ss7_chan *p, struct ast_channel *ast) if (p->ss7call) { if (!p->alreadyhungup) { const char *cause = pbx_builtin_getvar_helper(ast,"SS7_CAUSE"); - int icause = ast->hangupcause ? ast->hangupcause : -1; + int icause = ast_channel_hangupcause(ast) ? ast_channel_hangupcause(ast) : -1; if (cause) { if (atoi(cause)) { @@ -1682,7 +1682,7 @@ int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condi res = sig_ss7_play_tone(p, SIG_SS7_TONE_RINGTONE); - if (chan->_state != AST_STATE_UP && chan->_state != AST_STATE_RING) { + if (ast_channel_state(chan) != AST_STATE_UP && ast_channel_state(chan) != AST_STATE_RING) { ast_setstate(chan, AST_STATE_RINGING); } break; @@ -1690,7 +1690,7 @@ int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condi ast_debug(1,"Received AST_CONTROL_PROCEEDING on %s\n",ast_channel_name(chan)); ss7_grab(p, p->ss7); /* This IF sends the FAR for an answered ALEG call */ - if (chan->_state == AST_STATE_UP && (p->rlt != 1)){ + if (ast_channel_state(chan) == AST_STATE_UP && (p->rlt != 1)){ if ((isup_far(p->ss7->ss7, p->ss7call)) != -1) { p->rlt = 1; } @@ -1726,10 +1726,10 @@ int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condi res = 0; break; } - chan->hangupcause = AST_CAUSE_INVALID_NUMBER_FORMAT; + ast_channel_hangupcause_set(chan, AST_CAUSE_INVALID_NUMBER_FORMAT); break; case AST_CONTROL_CONGESTION: - chan->hangupcause = AST_CAUSE_CONGESTION; + ast_channel_hangupcause_set(chan, AST_CAUSE_CONGESTION); break; case AST_CONTROL_HOLD: ast_moh_start(chan, data, p->mohinterpret); diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c index 0d019c543..152f7caa4 100644 --- a/channels/sip/dialplan_functions.c +++ b/channels/sip/dialplan_functions.c @@ -39,7 +39,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") int sip_acf_channel_read(struct ast_channel *chan, const char *funcname, char *preparse, char *buf, size_t buflen) { - struct sip_pvt *p = chan->tech_pvt; + struct sip_pvt *p = ast_channel_tech_pvt(chan); char *parse = ast_strdupa(preparse); int res = 0; AST_DECLARE_APP_ARGS(args, @@ -57,7 +57,7 @@ int sip_acf_channel_read(struct ast_channel *chan, const char *funcname, char *p AST_STANDARD_APP_ARGS(args, parse); /* Sanity check */ - if (!IS_SIP_TECH(chan->tech)) { + if (!IS_SIP_TECH(ast_channel_tech(chan))) { ast_log(LOG_ERROR, "Cannot call %s on a non-SIP channel\n", funcname); return 0; } @@ -348,8 +348,8 @@ AST_TEST_DEFINE(test_sip_rtpqos_1) res = AST_TEST_NOT_RUN; goto done; } - chan->tech = &sip_tech; - chan->tech_pvt = p; + ast_channel_tech_set(chan, &sip_tech); + ast_channel_tech_pvt_set(chan, p); p->owner = chan; varstr = ast_str_create(16); |