From 564329faee37ed3b42dd7ac13b74eb96b661384c Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Tue, 7 Oct 2008 15:27:51 +0000
Subject: [PATCH] OPENZAP-28 pass opts from mod_openzap to ozmod_isdn

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@589 a93c3328-9c30-0410-af19-c9cd2b2d52af
---
 libs/freetdm/mod_openzap/mod_openzap.c         |  1 +
 libs/freetdm/src/ozmod/ozmod_isdn/ozmod_isdn.c | 10 +++++-----
 libs/freetdm/src/ozmod/ozmod_isdn/zap_isdn.h   |  4 +++-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/libs/freetdm/mod_openzap/mod_openzap.c b/libs/freetdm/mod_openzap/mod_openzap.c
index 7e8173702f..e915c2d368 100644
--- a/libs/freetdm/mod_openzap/mod_openzap.c
+++ b/libs/freetdm/mod_openzap/mod_openzap.c
@@ -1893,6 +1893,7 @@ static switch_status_t load_config(void)
 			if (zap_configure_span("isdn", span, on_clear_channel_signal, 
 								   "mode", mode, 
 								   "dialect", dialect,
+								   "opts", opts,
 								   "q921loglevel", q921loglevel,
 								   "q931loglevel", q931loglevel,
 								   TAG_END) != ZAP_SUCCESS) {
diff --git a/libs/freetdm/src/ozmod/ozmod_isdn/ozmod_isdn.c b/libs/freetdm/src/ozmod/ozmod_isdn/ozmod_isdn.c
index c226d72aec..ca6a7fdd65 100644
--- a/libs/freetdm/src/ozmod/ozmod_isdn/ozmod_isdn.c
+++ b/libs/freetdm/src/ozmod/ozmod_isdn/ozmod_isdn.c
@@ -1726,11 +1726,11 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span)
 				dialect = Q931_Dialect_National;
 			}
 		} else if (!strcasecmp(var, "opts")) {
-			int *optp;
-			if (!(optp = va_arg(ap, int *))) {
-				break;
-			}
-			opts = isdn_data->opts = *optp;
+			opts = va_arg(ap, uint32_t);
+            if  (opts >= ZAP_ISDN_OPT_MAX) {
+                return ZAP_FAIL;
+            }
+			isdn_data->opts = opts;
 		} else if (!strcasecmp(var, "tonemap")) {
 			if (!(val = va_arg(ap, char *))) {
 				break;
diff --git a/libs/freetdm/src/ozmod/ozmod_isdn/zap_isdn.h b/libs/freetdm/src/ozmod/ozmod_isdn/zap_isdn.h
index 86a3f40155..cf45908364 100644
--- a/libs/freetdm/src/ozmod/ozmod_isdn/zap_isdn.h
+++ b/libs/freetdm/src/ozmod/ozmod_isdn/zap_isdn.h
@@ -37,7 +37,9 @@
 
 typedef enum {
 	ZAP_ISDN_OPT_NONE = 0,
-	ZAP_ISDN_OPT_SUGGEST_CHANNEL = (1 << 0)
+	ZAP_ISDN_OPT_SUGGEST_CHANNEL = (1 << 0),
+
+	ZAP_ISDN_OPT_MAX = (2 << 0)
 } zap_isdn_opts_t;
 
 typedef enum {