summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_agent.c90
-rw-r--r--channels/chan_alsa.c12
-rw-r--r--channels/chan_bridge.c20
-rw-r--r--channels/chan_console.c22
-rw-r--r--channels/chan_dahdi.c244
-rw-r--r--channels/chan_gtalk.c58
-rw-r--r--channels/chan_h323.c98
-rw-r--r--channels/chan_iax2.c142
-rw-r--r--channels/chan_jingle.c56
-rw-r--r--channels/chan_local.c69
-rw-r--r--channels/chan_mgcp.c78
-rw-r--r--channels/chan_misdn.c68
-rw-r--r--channels/chan_multicast_rtp.c14
-rw-r--r--channels/chan_nbs.c24
-rw-r--r--channels/chan_oss.c26
-rw-r--r--channels/chan_phone.c50
-rw-r--r--channels/chan_sip.c319
-rw-r--r--channels/chan_skinny.c130
-rw-r--r--channels/chan_unistim.c98
-rw-r--r--channels/chan_usbradio.c24
-rw-r--r--channels/chan_vpb.cc74
-rw-r--r--channels/sig_analog.c114
-rw-r--r--channels/sig_pri.c60
-rw-r--r--channels/sig_ss7.c18
-rw-r--r--channels/sip/dialplan_functions.c8
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 = &gtalk_tech;
+ ast_channel_tech_set(tmp, &gtalk_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);