summaryrefslogtreecommitdiff
path: root/drivers/dahdi/dahdi-base.c
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-09-20 20:33:27 +0000
committerShaun Ruffell <sruffell@digium.com>2010-09-20 20:33:27 +0000
commit253f1624ce4f36285896a1691f56a897bc3be04c (patch)
tree3e5481cf9eac8203b523fd0c534edb94e2e93e31 /drivers/dahdi/dahdi-base.c
parent2d10ca4b8833a278dc6a38a131fd67fe097774a4 (diff)
dahdi: Modify "is_monitor_mode" to be usable by dahdi_chan_unreg.
Review: https://reviewboard.asterisk.org/r/905/ Signed-off-by: Shaun Ruffell <sruffell@digium.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9367 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/dahdi-base.c')
-rw-r--r--drivers/dahdi/dahdi-base.c50
1 files changed, 23 insertions, 27 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index 84b9528..9b0ccdc 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -1985,6 +1985,26 @@ static struct ppp_channel_ops ztppp_ops =
#endif
+/**
+ * is_monitor_mode() - True if the confmode indicates that one channel is monitoring another.
+ *
+ */
+static bool is_monitor_mode(int confmode)
+{
+ confmode &= DAHDI_CONF_MODE_MASK;
+ if ((confmode == DAHDI_CONF_MONITOR) ||
+ (confmode == DAHDI_CONF_MONITORTX) ||
+ (confmode == DAHDI_CONF_MONITORBOTH) ||
+ (confmode == DAHDI_CONF_MONITOR_RX_PREECHO) ||
+ (confmode == DAHDI_CONF_MONITOR_TX_PREECHO) ||
+ (confmode == DAHDI_CONF_MONITORBOTH_PREECHO)) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
static void dahdi_chan_unreg(struct dahdi_chan *chan)
{
int x;
@@ -2031,13 +2051,8 @@ static void dahdi_chan_unreg(struct dahdi_chan *chan)
chans[x]->master = chans[x];
}
if ((chans[x]->confna == chan->channo) &&
- ((chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_MONITOR ||
- (chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_MONITORTX ||
- (chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_MONITORBOTH ||
- (chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_MONITOR_RX_PREECHO ||
- (chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_MONITOR_TX_PREECHO ||
- (chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_MONITORBOTH_PREECHO ||
- (chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_DIGITALMON)) {
+ is_monitor_mode(chans[x]->confmode) &&
+ ((chans[x]->confmode & DAHDI_CONF_MODE_MASK) == DAHDI_CONF_DIGITALMON)) {
/* Take them out of conference with us */
/* release conference resource if any */
if (chans[x]->confna) {
@@ -4834,25 +4849,6 @@ static int ioctl_dahdi_dial(struct dahdi_chan *chan, unsigned long data)
return rv;
}
-/**
- * is_monitor_mode() - true if dahdi_confinfo is putting chan in monitor mode
- *
- */
-static bool is_monitor_mode(const struct dahdi_confinfo *conf)
-{
- const int confmode = conf->confmode & DAHDI_CONF_MODE_MASK;
- if ((confmode == DAHDI_CONF_MONITOR) ||
- (confmode == DAHDI_CONF_MONITORTX) ||
- (confmode == DAHDI_CONF_MONITORBOTH) ||
- (confmode == DAHDI_CONF_MONITOR_RX_PREECHO) ||
- (confmode == DAHDI_CONF_MONITOR_TX_PREECHO) ||
- (confmode == DAHDI_CONF_MONITORBOTH_PREECHO)) {
- return true;
- } else {
- return false;
- }
-}
-
static int dahdi_ioctl_setconf(struct file *file, unsigned long data)
{
struct dahdi_confinfo conf;
@@ -4881,7 +4877,7 @@ static int dahdi_ioctl_setconf(struct file *file, unsigned long data)
if (!(chan->flags & DAHDI_FLAG_AUDIO))
return -EINVAL;
- if (is_monitor_mode(&conf)) {
+ if (is_monitor_mode(conf.confmode)) {
/* Monitor mode -- it's a channel */
if ((conf.confno < 0) || (conf.confno >= DAHDI_MAX_CHANNELS) ||
!chans[conf.confno])