[asterisk-commits] russell: branch russell/data_retrieval r123331 - in /team/russell/data_retrie...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jun 17 12:57:32 CDT 2008


Author: russell
Date: Tue Jun 17 12:57:31 2008
New Revision: 123331

URL: http://svn.digium.com/view/asterisk?view=rev&rev=123331
Log:
resolve, reset

Added:
    team/russell/data_retrieval/apps/app_dahdibarge.c
      - copied unchanged from r123275, trunk/apps/app_dahdibarge.c
    team/russell/data_retrieval/apps/app_dahdiras.c
      - copied unchanged from r123275, trunk/apps/app_dahdiras.c
    team/russell/data_retrieval/apps/app_dahdiscan.c
      - copied unchanged from r123275, trunk/apps/app_dahdiscan.c
    team/russell/data_retrieval/channels/chan_dahdi.c
      - copied unchanged from r123275, trunk/channels/chan_dahdi.c
    team/russell/data_retrieval/codecs/codec_dahdi.c
      - copied unchanged from r123275, trunk/codecs/codec_dahdi.c
    team/russell/data_retrieval/include/asterisk/dahdi.h
      - copied unchanged from r123275, trunk/include/asterisk/dahdi.h
    team/russell/data_retrieval/include/asterisk/timing.h
      - copied unchanged from r123275, trunk/include/asterisk/timing.h
    team/russell/data_retrieval/main/timing.c
      - copied unchanged from r123275, trunk/main/timing.c
    team/russell/data_retrieval/res/res_timing_dahdi.c
      - copied unchanged from r123275, trunk/res/res_timing_dahdi.c
    team/russell/data_retrieval/res/res_timing_pthread.c
      - copied unchanged from r123275, trunk/res/res_timing_pthread.c
Removed:
    team/russell/data_retrieval/apps/app_zapbarge.c
    team/russell/data_retrieval/apps/app_zapras.c
    team/russell/data_retrieval/apps/app_zapscan.c
    team/russell/data_retrieval/channels/chan_zap.c
    team/russell/data_retrieval/codecs/codec_zap.c
    team/russell/data_retrieval/include/asterisk/zapata.h
Modified:
    team/russell/data_retrieval/   (props changed)
    team/russell/data_retrieval/CHANGES
    team/russell/data_retrieval/Makefile
    team/russell/data_retrieval/README
    team/russell/data_retrieval/UPGRADE.txt
    team/russell/data_retrieval/apps/app_chanisavail.c
    team/russell/data_retrieval/apps/app_chanspy.c
    team/russell/data_retrieval/apps/app_dial.c
    team/russell/data_retrieval/apps/app_externalivr.c
    team/russell/data_retrieval/apps/app_flash.c
    team/russell/data_retrieval/apps/app_forkcdr.c
    team/russell/data_retrieval/apps/app_getcpeid.c
    team/russell/data_retrieval/apps/app_meetme.c
    team/russell/data_retrieval/apps/app_page.c
    team/russell/data_retrieval/apps/app_parkandannounce.c
    team/russell/data_retrieval/apps/app_queue.c
    team/russell/data_retrieval/apps/app_rpt.c
    team/russell/data_retrieval/apps/app_stack.c
    team/russell/data_retrieval/build_tools/menuselect-deps.in
    team/russell/data_retrieval/cdr/cdr_csv.c
    team/russell/data_retrieval/cdr/cdr_tds.c
    team/russell/data_retrieval/channels/chan_h323.c
    team/russell/data_retrieval/channels/chan_iax2.c
    team/russell/data_retrieval/channels/chan_mgcp.c
    team/russell/data_retrieval/channels/chan_sip.c
    team/russell/data_retrieval/channels/chan_skinny.c
    team/russell/data_retrieval/channels/misdn/isdn_lib.c
    team/russell/data_retrieval/configs/extensions.ael.sample
    team/russell/data_retrieval/configs/extensions.conf.sample
    team/russell/data_retrieval/configs/extensions.lua.sample
    team/russell/data_retrieval/configs/meetme.conf.sample
    team/russell/data_retrieval/configs/modules.conf.sample
    team/russell/data_retrieval/configs/muted.conf.sample
    team/russell/data_retrieval/configs/queues.conf.sample
    team/russell/data_retrieval/configs/rpt.conf.sample
    team/russell/data_retrieval/configs/sla.conf.sample
    team/russell/data_retrieval/configs/smdi.conf.sample
    team/russell/data_retrieval/configs/users.conf.sample
    team/russell/data_retrieval/configs/vpb.conf.sample
    team/russell/data_retrieval/configs/zapata.conf.sample
    team/russell/data_retrieval/configure
    team/russell/data_retrieval/configure.ac
    team/russell/data_retrieval/contrib/init.d/rc.mandrake.asterisk
    team/russell/data_retrieval/contrib/init.d/rc.mandrake.zaptel
    team/russell/data_retrieval/contrib/init.d/rc.suse.asterisk
    team/russell/data_retrieval/contrib/scripts/autosupport
    team/russell/data_retrieval/contrib/scripts/loadtest.tcl
    team/russell/data_retrieval/contrib/utils/zones2indications.c
    team/russell/data_retrieval/doc/asterisk.8
    team/russell/data_retrieval/doc/asterisk.sgml
    team/russell/data_retrieval/doc/backtrace.txt
    team/russell/data_retrieval/doc/janitor-projects.txt
    team/russell/data_retrieval/doc/manager_1_1.txt
    team/russell/data_retrieval/doc/osp.txt
    team/russell/data_retrieval/doc/sms.txt
    team/russell/data_retrieval/doc/ss7.txt
    team/russell/data_retrieval/doc/tex/ael.tex
    team/russell/data_retrieval/doc/tex/app-sms.tex
    team/russell/data_retrieval/doc/tex/backtrace.tex
    team/russell/data_retrieval/doc/tex/channelvariables.tex
    team/russell/data_retrieval/doc/tex/configuration.tex
    team/russell/data_retrieval/doc/tex/enum.tex
    team/russell/data_retrieval/doc/tex/hardware.tex
    team/russell/data_retrieval/doc/tex/localchannel.tex
    team/russell/data_retrieval/doc/tex/manager.tex
    team/russell/data_retrieval/doc/tex/privacy.tex
    team/russell/data_retrieval/doc/tex/queues-with-callback-members.tex
    team/russell/data_retrieval/doc/tex/security.tex
    team/russell/data_retrieval/doc/tex/sla.tex
    team/russell/data_retrieval/funcs/func_cdr.c
    team/russell/data_retrieval/funcs/func_channel.c
    team/russell/data_retrieval/include/asterisk/_private.h
    team/russell/data_retrieval/include/asterisk/autoconfig.h.in
    team/russell/data_retrieval/include/asterisk/callerid.h
    team/russell/data_retrieval/include/asterisk/cdr.h
    team/russell/data_retrieval/include/asterisk/channel.h
    team/russell/data_retrieval/include/asterisk/config.h
    team/russell/data_retrieval/include/asterisk/doxyref.h
    team/russell/data_retrieval/include/asterisk/dsp.h
    team/russell/data_retrieval/include/asterisk/network.h
    team/russell/data_retrieval/include/asterisk/options.h
    team/russell/data_retrieval/include/asterisk/pbx.h
    team/russell/data_retrieval/main/Makefile
    team/russell/data_retrieval/main/asterisk.c
    team/russell/data_retrieval/main/astobj2.c
    team/russell/data_retrieval/main/autoservice.c
    team/russell/data_retrieval/main/callerid.c
    team/russell/data_retrieval/main/cdr.c
    team/russell/data_retrieval/main/channel.c
    team/russell/data_retrieval/main/dial.c
    team/russell/data_retrieval/main/features.c
    team/russell/data_retrieval/main/file.c
    team/russell/data_retrieval/main/loader.c
    team/russell/data_retrieval/main/netsock.c
    team/russell/data_retrieval/main/pbx.c
    team/russell/data_retrieval/makeopts.in
    team/russell/data_retrieval/pbx/pbx_config.c
    team/russell/data_retrieval/res/res_config_pgsql.c
    team/russell/data_retrieval/res/res_musiconhold.c
    team/russell/data_retrieval/utils/extconf.c

Propchange: team/russell/data_retrieval/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/russell/data_retrieval/
------------------------------------------------------------------------------
Binary property 'branch-1.4-blocked' - no diff available.

Propchange: team/russell/data_retrieval/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Propchange: team/russell/data_retrieval/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Jun 17 12:57:31 2008
@@ -1,1 +1,1 @@
-/trunk:1-122029
+/trunk:1-123330

Modified: team/russell/data_retrieval/CHANGES
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/CHANGES?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/CHANGES (original)
+++ team/russell/data_retrieval/CHANGES Tue Jun 17 12:57:31 2008
@@ -93,6 +93,12 @@
  * PrivacyManager now takes an option where you can specify a context where the 
    given number will be matched. This way you have more control over who is allowed
    and it stops the people who blindly enter 10 digits.
+ * ForkCDR has new options: 'a' updates the answer time on the new CDR; 'A' locks
+   answer times, disposition, on orig CDR against updates; 'D' Copies the disposition
+   from the orig CDR to the new CDR after reset; 'e' sets the 'end' time on the
+   original CDR; 'R' prevents the new CDR from being reset; 's(var=val)' adds/changes
+   the 'var' variable on the original CDR; 'T' forces ast_cdr_end(), ast_cdr_answer(),
+   obey the LOCKED flag on cdr's in the chain, and also the ast_cdr_setvar() func.
 
 SIP Changes
 -----------

Modified: team/russell/data_retrieval/Makefile
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/Makefile?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/Makefile (original)
+++ team/russell/data_retrieval/Makefile Tue Jun 17 12:57:31 2008
@@ -680,6 +680,7 @@
 		echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \
 		echo ";runuser = asterisk ; The user to run as" ; \
 		echo ";rungroup = asterisk ; The group to run as" ; \
+		echo "dahdichanname = yes" ; Set channel name as DAHDI\
 		echo "" ; \
 		echo "; Changing the following lines may compromise your security." ; \
 		echo ";[files]" ; \

Modified: team/russell/data_retrieval/README
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/README?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/README (original)
+++ team/russell/data_retrieval/README Tue Jun 17 12:57:31 2008
@@ -175,7 +175,7 @@
 understand, and do not affect how it is actually parsed.
 
   Entries of the form 'variable=value' set the value of some parameter in
-asterisk.  For example, in zapata.conf, one might specify:
+asterisk.  For example, in dahdi.conf, one might specify:
 
 	switchtype=national
 

Modified: team/russell/data_retrieval/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/UPGRADE.txt?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/UPGRADE.txt (original)
+++ team/russell/data_retrieval/UPGRADE.txt Tue Jun 17 12:57:31 2008
@@ -181,6 +181,9 @@
 	sip:defaultuser at defaultip
   The "username" setting still work, but is deprecated and will not work in 
   the next version of Asterisk.
+* SIP: All of the functionality in SIPCHANINFO() has been implemented in CHANNEL(),
+  and you should start using that function instead for retrieving information about
+  the channel in a technology-agnostic way.
 
 * chan_local.c: the comma delimiter inside the channel name has been changed to a
   semicolon, in order to make the Local channel driver compatible with the comma

Modified: team/russell/data_retrieval/apps/app_chanisavail.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_chanisavail.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_chanisavail.c (original)
+++ team/russell/data_retrieval/apps/app_chanisavail.c Tue Jun 17 12:57:31 2008
@@ -75,7 +75,7 @@
 	);
 
 	if (ast_strlen_zero(data)) {
-		ast_log(LOG_WARNING, "ChanIsAvail requires an argument (Zap/1&Zap/2)\n");
+		ast_log(LOG_WARNING, "ChanIsAvail requires an argument (DAHDI/1&DAHDI/2)\n");
 		return -1;
 	}
 

Modified: team/russell/data_retrieval/apps/app_chanspy.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_chanspy.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_chanspy.c (original)
+++ team/russell/data_retrieval/apps/app_chanspy.c Tue Jun 17 12:57:31 2008
@@ -47,6 +47,7 @@
 #include "asterisk/translate.h"
 #include "asterisk/module.h"
 #include "asterisk/lock.h"
+#include "asterisk/options.h"
 
 #define AST_NAME_STRLEN 256
 #define NUM_SPYGROUPS 128
@@ -587,6 +588,7 @@
 	const char *exten, const char *context, struct chanspy_ds *chanspy_ds)
 {
 	struct ast_channel *next;
+	char channel_name[AST_CHANNEL_NAME];
 
 redo:
 	if (!ast_strlen_zero(spec))
@@ -599,7 +601,8 @@
 	if (!next)
 		return NULL;
 
-	if (!strncmp(next->name, "Zap/pseudo", 10)) {
+	snprintf(channel_name, AST_CHANNEL_NAME, "%s/pseudo", dahdi_chan_name);
+	if (!strncmp(next->name, channel_name, 10)) {
 		ast_channel_unlock(next);
 		goto redo;
 	} else if (next == chan) {

Modified: team/russell/data_retrieval/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_dial.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_dial.c (original)
+++ team/russell/data_retrieval/apps/app_dial.c Tue Jun 17 12:57:31 2008
@@ -171,8 +171,8 @@
 "    o    - Specify that the CallerID that was present on the *calling* channel\n"
 "           be set as the CallerID on the *called* channel. This was the\n"
 "           behavior of Asterisk 1.0 and earlier.\n"
-"    O([x]) - \"Operator Services\" mode (Zaptel channel to Zaptel channel\n"
-"             only, if specified on non-Zaptel interface, it will be ignored).\n"
+"    O([x]) - \"Operator Services\" mode (DAHDI channel to DAHDI channel\n"
+"             only, if specified on non-DAHDI interface, it will be ignored).\n"
 "             When the destination answers (presumably an operator services\n"
 "             station), the originator no longer has control of their line.\n"
 "             They may hang up, but the switch will not release their line\n"
@@ -1895,9 +1895,9 @@
 				res = -1;
 				goto done;
 			}
-			if (opermode && !strncmp(chan->name, "Zap", 3) && !strncmp(peer->name, "Zap", 3)) {
-				/* what's this special handling for Zap <-> Zap ?
-				 * A: Zap to Zap calls are natively bridged at the kernel driver
+			if (opermode && !strncmp(chan->tech->type, "DAHDI", 3) && !strncmp(peer->name, "DAHDI", 3)) {
+				/* what's this special handling for dahdi <-> dahdi ?
+				 * A: dahdi to dahdi calls are natively bridged at the kernel driver
 				 * level, so we need to ensure that this mode gets propagated
 				 * all the way down. */
 				struct oprmode oprmode;
@@ -2098,7 +2098,7 @@
 	res |= ast_unregister_application(rapp);
 
 	if ((con = ast_context_find("app_dial_gosub_virtual_context"))) {
-		ast_context_remove_extension2(con, "s", 1, NULL);
+		ast_context_remove_extension2(con, "s", 1, NULL, 0);
 		ast_context_destroy(con, "app_dial"); /* leave nothing behind */
 	}
 

Modified: team/russell/data_retrieval/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_externalivr.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_externalivr.c (original)
+++ team/russell/data_retrieval/apps/app_externalivr.c Tue Jun 17 12:57:31 2008
@@ -373,7 +373,7 @@
 		/* Put the application + the arguments in a | delimited list */
 		ast_str_reset(pipe_delim_args);
 		for (j = 0; application_args.cmd[j] != NULL; j++) {
-			ast_str_append(&pipe_delim_args, 0, "%s%s", j == 0 ? "" : "|", application_args.cmd[j]);
+			ast_str_append(&pipe_delim_args, 0, "%s%s", j == 0 ? "" : ",", application_args.cmd[j]);
 		}
 
 		/* Parse the ExternalIVR() arguments */

Modified: team/russell/data_retrieval/apps/app_flash.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_flash.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_flash.c (original)
+++ team/russell/data_retrieval/apps/app_flash.c Tue Jun 17 12:57:31 2008
@@ -18,7 +18,7 @@
 
 /*! \file
  *
- * \brief App to flash a zap trunk
+ * \brief App to flash a DAHDI trunk
  *
  * \author Mark Spencer <markster at digium.com>
  * 
@@ -26,14 +26,14 @@
  */
  
 /*** MODULEINFO
-	<depend>zaptel</depend>
+	<depend>dahdi</depend>
  ***/
 
 #include "asterisk.h"
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
-#include "asterisk/zapata.h"
+#include "asterisk/dahdi.h"
 
 #include "asterisk/lock.h"
 #include "asterisk/file.h"
@@ -45,22 +45,22 @@
 
 static char *app = "Flash";
 
-static char *synopsis = "Flashes a Zap Trunk";
+static char *synopsis = "Flashes a DAHDI Trunk";
 
 static char *descrip = 
-"Performs a flash on a zap trunk.  This can be used\n"
+"Performs a flash on a DAHDI trunk.  This can be used\n"
 "to access features provided on an incoming analogue circuit\n"
 "such as conference and call waiting. Use with SendDTMF() to\n"
 "perform external transfers\n";
 
 
-static inline int zt_wait_event(int fd)
+static inline int dahdi_wait_event(int fd)
 {
-	/* Avoid the silly zt_waitevent which ignores a bunch of events */
+	/* Avoid the silly dahdi_waitevent which ignores a bunch of events */
 	int i,j=0;
-	i = ZT_IOMUX_SIGEVENT;
-	if (ioctl(fd, ZT_IOMUX, &i) == -1) return -1;
-	if (ioctl(fd, ZT_GETEVENT, &j) == -1) return -1;
+	i = DAHDI_IOMUX_SIGEVENT;
+	if (ioctl(fd, DAHDI_IOMUX, &i) == -1) return -1;
+	if (ioctl(fd, DAHDI_GETEVENT, &j) == -1) return -1;
 	return j;
 }
 
@@ -68,23 +68,23 @@
 {
 	int res = -1;
 	int x;
-	struct zt_params ztp;
+	struct dahdi_params dahdip;
 
-	if (strcasecmp(chan->tech->type, "Zap")) {
-		ast_log(LOG_WARNING, "%s is not a Zap channel\n", chan->name);
+	if (strcasecmp(chan->tech->type, "DAHDI")) {
+		ast_log(LOG_WARNING, "%s is not a DAHDI channel\n", chan->name);
 		return -1;
 	}
 	
-	memset(&ztp, 0, sizeof(ztp));
-	res = ioctl(chan->fds[0], ZT_GET_PARAMS, &ztp);
+	memset(&dahdip, 0, sizeof(dahdip));
+	res = ioctl(chan->fds[0], DAHDI_GET_PARAMS, &dahdip);
 	if (!res) {
-		if (ztp.sigtype & __ZT_SIG_FXS) {
-			x = ZT_FLASH;
-			res = ioctl(chan->fds[0], ZT_HOOK, &x);
+		if (dahdip.sigtype & __DAHDI_SIG_FXS) {
+			x = DAHDI_FLASH;
+			res = ioctl(chan->fds[0], DAHDI_HOOK, &x);
 			if (!res || (errno == EINPROGRESS)) {
 				if (res) {
 					/* Wait for the event to finish */
-					zt_wait_event(chan->fds[0]);
+					dahdi_wait_event(chan->fds[0]);
 				}
 				res = ast_safe_sleep(chan, 1000);
 				ast_verb(3, "Flashed channel %s\n", chan->name);

Modified: team/russell/data_retrieval/apps/app_forkcdr.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_forkcdr.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_forkcdr.c (original)
+++ team/russell/data_retrieval/apps/app_forkcdr.c Tue Jun 17 12:57:31 2008
@@ -42,21 +42,82 @@
 "Forks the Call Data Record";
 static char *descrip = 
 "  ForkCDR([options]):  Causes the Call Data Record to fork an additional\n"
-"cdr record starting from the time of the fork call\n"
+"cdr record starting from the time of the fork call. This new cdr record will\n"
+"be linked to end of the list of cdr records attached to the channel. The original CDR is\n"
+"has a LOCKED flag set, which forces most cdr operations to skip it, except\n"
+"for the functions that set the answer and end times, which ignore the LOCKED\n"
+"flag. This allows all the cdr records in the channel to be 'ended' together\n"
+"when the channel is closed.\n"
+"The CDR() func (when setting CDR values) normally ignores the LOCKED flag also,\n"
+"but has options to vary its behavior. The 'T' option (described below), can\n"
+"override this behavior, but beware the risks.\n"
+"\n"
+"Detailed Behavior Description:\n"
+"First, this app finds the last cdr record in the list, and makes\n"
+"a copy of it. This new copy will be the newly forked cdr record.\n"
+"Next, this new record is linked to the end of the cdr record list.\n"
+"Next, The new cdr record is RESET (unless you use an option to prevent this)\n"
+"This means that:\n"
+"   1. All flags are unset on the cdr record\n"
+"   2. the start, end, and answer times are all set to zero.\n"
+"   3. the billsec and duration fields are set to zero.\n"
+"   4. the start time is set to the current time.\n"
+"   5. the disposition is set to NULL.\n"
+"Next, unless you specified the 'v' option, all variables will be\n"
+"removed from the original cdr record. Thus, the 'v' option allows\n"
+"any CDR variables to be replicated to all new forked cdr records.\n"
+"Without the 'v' option, the variables on the original are effectively\n"
+"moved to the new forked cdr record.\n"
+"Next, if the 's' option is set, the provided variable and value\n"
+"are set on the original cdr record.\n"
+"Next, if the 'a' option is given, and the original cdr record has an\n"
+"answer time set, then the new forked cdr record will have its answer\n"
+"time set to its start time. If the old answer time were carried forward,\n"
+"the answer time would be earlier than the start time, giving strange\n"
+"duration and billsec times.\n"
+"Next, if the 'd' option was specified, the disposition is copied from\n"
+"the original cdr record to the new forked cdr.\n"
+"Next, if the 'D' option was specified, the destination channel field\n"
+"in the new forked CDR is erased.\n"
+"Next, if the 'e' option was specified, the 'end' time for the original\n"
+"cdr record is set to the current time. Future hang-up or ending events\n"
+"will not override this time stamp.\n"
+"Next, If the 'A' option is specified, the original cdr record will have\n"
+"it ANS_LOCKED flag set, which prevent future answer events\n"
+"from updating the original cdr record's disposition. Normally, an\n"
+"'ANSWERED' event would mark all cdr records in the chain as 'ANSWERED'.\n"
+"Next, if the 'T' option is specified, the original cdr record will have\n"
+"its 'DONT_TOUCH' flag set, which will force the cdr_answer, cdr_end, and\n"
+"cdr_setvar functions to leave that cdr record alone.\n"
+"And, last but not least, the original cdr record has its LOCKED flag\n"
+"set. Almost all internal CDR functions (except for the funcs that set\n"
+"the end, and answer times, and set a variable) will honor this flag\n"
+"and leave a LOCKED cdr record alone.\n"
+"This means that the newly created forked cdr record will affected\n"
+"by events transpiring within Asterisk, with the previously noted\n"
+"exceptions.\n"
 "  Options:\n"
-"    a  - update the answer time on the NEW CDR just after it's been inited..\n"
+"    a - update the answer time on the NEW CDR just after it's been inited..\n"
 "         The new CDR may have been answered already, the reset that forkcdr.\n"
-"         does will erase the answer time. This will bring it back, but.\n"
+"         does will erase the answer time. This will bring it back, but\n"
 "         the answer time will be a copy of the fork/start time. It will.\n"
 "         only do this if the initial cdr was indeed already answered..\n"
-"    D -  Copy the disposition forward from the old cdr, after the .\n"
+"    A - Lock the original CDR against the answer time being updated.\n"
+"         This will allow the disposition on the original CDR to remain the same.\n"
+"    d - Copy the disposition forward from the old cdr, after the .\n"
 "         init..\n"
-"    d -  Clear the dstchannel on the new CDR after reset..\n"
-"    e -  end the original CDR. Do this after all the necc. data.\n"
+"    D - Clear the dstchannel on the new CDR after reset..\n"
+"    e - end the original CDR. Do this after all the necc. data.\n"
 "         is copied from the original CDR to the new forked CDR..\n"
 "    R -  do NOT reset the new cdr..\n"
 "    s(name=val) - Set the CDR var 'name' in the original CDR, with value.\n"
 "                  'val'.\n"
+"    T -  Mark the original CDR with a DONT_TOUCH flag. setvar, answer, and end\n"
+"          cdr funcs will obey this flag; normally they don't honor the LOCKED\n"
+"          flag set on the original CDR record.\n"
+"          Beware-- using this flag may cause CDR's not to have their end times\n"
+"          updated! It is suggested that if you specify this flag, you might\n"
+"          wish to use the 'e' flag as well!\n"
 "    v  - When the new CDR is forked, it gets a copy of the vars attached\n"
 "         to the current CDR. The vars attached to the original CDR are removed\n"
 "         unless this option is specified.\n";
@@ -70,6 +131,8 @@
 	OPT_NORESET =           (1 << 4),
 	OPT_KEEPVARS =          (1 << 5),
 	OPT_VARSET =            (1 << 6),
+	OPT_ANSLOCK =           (1 << 7),
+	OPT_DONTOUCH =          (1 << 8),
 };
 
 enum {
@@ -80,11 +143,13 @@
 
 AST_APP_OPTIONS(forkcdr_exec_options, {
 	AST_APP_OPTION('a', OPT_SETANS),
+	AST_APP_OPTION('A', OPT_ANSLOCK),
 	AST_APP_OPTION('d', OPT_SETDISP),
 	AST_APP_OPTION('D', OPT_RESETDEST),
 	AST_APP_OPTION('e', OPT_ENDCDR),
 	AST_APP_OPTION('R', OPT_NORESET),
 	AST_APP_OPTION_ARG('s', OPT_VARSET, OPT_ARG_VARSET),
+	AST_APP_OPTION('T', OPT_DONTOUCH),
 	AST_APP_OPTION('v', OPT_KEEPVARS),
 });
 
@@ -132,6 +197,12 @@
 	if (ast_test_flag(&optflags, OPT_ENDCDR))
 		ast_cdr_end(cdr);
 
+	if (ast_test_flag(&optflags, OPT_ANSLOCK))
+		ast_set_flag(cdr, AST_CDR_FLAG_ANSLOCKED);
+	
+	if (ast_test_flag(&optflags, OPT_DONTOUCH))
+		ast_set_flag(cdr, AST_CDR_FLAG_DONT_TOUCH);
+		
 	ast_set_flag(cdr, AST_CDR_FLAG_CHILD | AST_CDR_FLAG_LOCKED);
 }
 

Modified: team/russell/data_retrieval/apps/app_getcpeid.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_getcpeid.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_getcpeid.c (original)
+++ team/russell/data_retrieval/apps/app_getcpeid.c Tue Jun 17 12:57:31 2008
@@ -42,7 +42,7 @@
 
 static char *descrip =
 "  GetCPEID(): Obtains and displays ADSI CPE ID and other information in order\n"
-"to properly setup zapata.conf for on-hook operations.\n";
+"to properly setup dahdi.conf for on-hook operations.\n";
 
 
 static int cpeid_setstatus(struct ast_channel *chan, char *stuff[], int voice)

Modified: team/russell/data_retrieval/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/russell/data_retrieval/apps/app_meetme.c?view=diff&rev=123331&r1=123330&r2=123331
==============================================================================
--- team/russell/data_retrieval/apps/app_meetme.c (original)
+++ team/russell/data_retrieval/apps/app_meetme.c Tue Jun 17 12:57:31 2008
@@ -30,14 +30,14 @@
  */
 
 /*** MODULEINFO
-	<depend>zaptel</depend>
+	<depend>dahdi</depend>
  ***/
 
 #include "asterisk.h"
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
-#include "asterisk/zapata.h"
+#include "asterisk/dahdi.h"
 
 #include "asterisk/lock.h"
 #include "asterisk/file.h"
@@ -228,15 +228,15 @@
 "conference.  If the conference number is omitted, the user will be prompted\n"
 "to enter one.  User can exit the conference by hangup, or if the 'p' option\n"
 "is specified, by pressing '#'.\n"
-"Please note: The Zaptel kernel modules and at least one hardware driver (or ztdummy)\n"
-"             must be present for conferencing to operate properly. In addition, the chan_zap\n"
+"Please note: The DAHDI kernel modules and at least one hardware driver (or dahdi_dummy)\n"
+"             must be present for conferencing to operate properly. In addition, the chan_dahdi\n"
 "             channel driver must be loaded for the 'i' and 'r' options to operate at all.\n\n"
 "The option string may contain zero or more of the following characters:\n"
 "      'a' -- set admin mode\n"
 "      'A' -- set marked mode\n"
 "      'b' -- run AGI script specified in ${MEETME_AGI_BACKGROUND}\n"
 "             Default: conf-background.agi  (Note: This does not work with\n"
-"             non-Zap channels in the same conference)\n"
+"             non-DAHDI channels in the same conference)\n"
 "      'c' -- announce user(s) count on joining a conference\n"
 "      'C' -- continue in dialplan when kicked out of conference\n"
 "      'd' -- dynamically add conference\n"
@@ -361,7 +361,7 @@
 	struct ast_channel *chan;               /*!< Announcements channel */
 	struct ast_channel *lchan;              /*!< Listen/Record channel */
 	int fd;                                 /*!< Announcements fd */
-	int zapconf;                            /*!< Zaptel Conf # */
+	int dahdiconf;                            /*!< DAHDI Conf # */
 	int users;                              /*!< Number of active users */
 	int markedusers;                        /*!< Number of marked users */
 	int maxusers;                           /*!< Participant limit if scheduled */
@@ -403,7 +403,7 @@
 	int adminflags;                         /*!< Flags set by the Admin */
 	struct ast_channel *chan;               /*!< Connected channel */
 	int talking;                            /*!< Is user talking */
-	int zapchannel;                         /*!< Is a Zaptel channel */
+	int dahdichannel;                         /*!< Is a DAHDI channel */
 	char usrvalue[50];                      /*!< Custom User Value */
 	char namerecloc[PATH_MAX];				/*!< Name Recorded file Location */
 	time_t jointime;                        /*!< Time the user joined the conference */
@@ -639,8 +639,8 @@
 
 	while (len) {
 		if (block) {
-			x = ZT_IOMUX_WRITE | ZT_IOMUX_SIGEVENT;
-			res = ioctl(fd, ZT_IOMUX, &x);
+			x = DAHDI_IOMUX_WRITE | DAHDI_IOMUX_SIGEVENT;
+			res = ioctl(fd, DAHDI_IOMUX, &x);
 		} else
 			res = 0;
 		if (res >= 0)
@@ -801,7 +801,7 @@
 static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic, int refcount, const struct ast_channel *chan)
 {
 	struct ast_conference *cnf;
-	struct zt_confinfo ztc = { 0, };
+	struct dahdi_confinfo dahdic = { 0, };
 	int confno_int = 0;
 
 	AST_LIST_LOCK(&confs);
@@ -827,11 +827,11 @@
 	ast_copy_string(cnf->pinadmin, pinadmin, sizeof(cnf->pinadmin));
 	ast_copy_string(cnf->uniqueid, chan->uniqueid, sizeof(cnf->uniqueid));
 
-	/* Setup a new zap conference */
-	ztc.confno = -1;
-	ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
-	cnf->fd = open("/dev/zap/pseudo", O_RDWR);
-	if (cnf->fd < 0 || ioctl(cnf->fd, ZT_SETCONF, &ztc)) {
+	/* Setup a new dahdi conference */
+	dahdic.confno = -1;
+	dahdic.confmode = DAHDI_CONF_CONFANN | DAHDI_CONF_CONFANNMON;
+	cnf->fd = open("/dev/dahdi/pseudo", O_RDWR);
+	if (cnf->fd < 0 || ioctl(cnf->fd, DAHDI_SETCONF, &dahdic)) {
 		ast_log(LOG_WARNING, "Unable to open pseudo device\n");
 		if (cnf->fd >= 0)
 			close(cnf->fd);
@@ -840,17 +840,17 @@
 		goto cnfout;
 	}
 
-	cnf->zapconf = ztc.confno;
+	cnf->dahdiconf = dahdic.confno;
 
 	/* Setup a new channel for playback of audio files */
-	cnf->chan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL);
+	cnf->chan = ast_request("DAHDI", AST_FORMAT_SLINEAR, "pseudo", NULL);
 	if (cnf->chan) {
 		ast_set_read_format(cnf->chan, AST_FORMAT_SLINEAR);
 		ast_set_write_format(cnf->chan, AST_FORMAT_SLINEAR);
-		ztc.chan = 0;
-		ztc.confno = cnf->zapconf;
-		ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
-		if (ioctl(cnf->chan->fds[0], ZT_SETCONF, &ztc)) {
+		dahdic.chan = 0;
+		dahdic.confno = cnf->dahdiconf;
+		dahdic.confmode = DAHDI_CONF_CONFANN | DAHDI_CONF_CONFANNMON;
+		if (ioctl(cnf->chan->fds[0], DAHDI_SETCONF, &dahdic)) {
 			ast_log(LOG_WARNING, "Error setting conference\n");
 			if (cnf->chan)
 				ast_hangup(cnf->chan);
@@ -867,7 +867,7 @@
 	cnf->start = time(NULL);
 	cnf->maxusers = 0x7fffffff;
 	cnf->isdynamic = dynamic ? 1 : 0;
-	ast_verb(3, "Created MeetMe conference %d for conference '%s'\n", cnf->zapconf, cnf->confno);
+	ast_verb(3, "Created MeetMe conference %d for conference '%s'\n", cnf->dahdiconf, cnf->confno);
 	AST_LIST_INSERT_HEAD(&confs, cnf, list);
 
 	/* Reserve conference number in map */
@@ -1309,8 +1309,8 @@
 	}
 
 	/* flush any data sitting in the pseudo channel */
-	x = ZT_FLUSH_ALL;
-	if (ioctl(fd, ZT_FLUSH, &x))
+	x = DAHDI_FLUSH_ALL;
+	if (ioctl(fd, DAHDI_FLUSH, &x))
 		ast_log(LOG_WARNING, "Error flushing channel\n");
 
 }
@@ -1484,7 +1484,7 @@
 	struct ast_conf_user *user = NULL;
 	struct ast_conf_user *usr = NULL;
 	int fd;
-	struct zt_confinfo ztc, ztc_empty;
+	struct dahdi_confinfo dahdic, dahdic_empty;
 	struct ast_frame *f;
 	struct ast_channel *c;
 	struct ast_frame fr;
@@ -1493,7 +1493,7 @@
 	int nfds;
 	int res;
 	int flags;
-	int retryzap;
+	int retrydahdi;
 	int origfd;
 	int musiconhold = 0;
 	int firstpass = 0;
@@ -1520,7 +1520,7 @@
 	char members[10] = "";
 	int dtmf, opt_waitmarked_timeout = 0;
 	time_t timeout = 0;
-	ZT_BUFFERINFO bi;
+	DAHDI_BUFFERINFO bi;
 	char __buf[CONF_SIZE + AST_FRIENDLY_OFFSET];
 	char *buf = __buf + AST_FRIENDLY_OFFSET;
 	char *exitkeys = NULL;
@@ -1645,13 +1645,13 @@
 	}
 
 	ast_mutex_lock(&conf->recordthreadlock);
-	if ((conf->recordthread == AST_PTHREADT_NULL) && (confflags & CONFFLAG_RECORDCONF) && ((conf->lchan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL)))) {
+	if ((conf->recordthread == AST_PTHREADT_NULL) && (confflags & CONFFLAG_RECORDCONF) && ((conf->lchan = ast_request("DAHDI", AST_FORMAT_SLINEAR, "pseudo", NULL)))) {
 		ast_set_read_format(conf->lchan, AST_FORMAT_SLINEAR);
 		ast_set_write_format(conf->lchan, AST_FORMAT_SLINEAR);
-		ztc.chan = 0;
-		ztc.confno = conf->zapconf;
-		ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
-		if (ioctl(conf->lchan->fds[0], ZT_SETCONF, &ztc)) {
+		dahdic.chan = 0;
+		dahdic.confno = conf->dahdiconf;
+		dahdic.confmode = DAHDI_CONF_CONFANN | DAHDI_CONF_CONFANNMON;
+		if (ioctl(conf->lchan->fds[0], DAHDI_SETCONF, &dahdic)) {
 			ast_log(LOG_WARNING, "Error starting listen channel\n");
 			ast_hangup(conf->lchan);
 			conf->lchan = NULL;
@@ -1832,13 +1832,13 @@
 		goto outrun;
 	}
 
-	retryzap = (strcasecmp(chan->tech->type, "Zap") || (chan->audiohooks || chan->monitor) ? 1 : 0);
-	user->zapchannel = !retryzap;
-
- zapretry:
+	retrydahdi = (strcasecmp(chan->tech->type, "DAHDI") || (chan->audiohooks || chan->monitor) ? 1 : 0);
+	user->dahdichannel = !retrydahdi;
+
+ dahdiretry:
 	origfd = chan->fds[0];
-	if (retryzap) {
-		fd = open("/dev/zap/pseudo", O_RDWR);
+	if (retrydahdi) {
+		fd = open("/dev/dahdi/pseudo", O_RDWR);
 		if (fd < 0) {
 			ast_log(LOG_WARNING, "Unable to open pseudo channel: %s\n", strerror(errno));
 			goto outrun;
@@ -1859,16 +1859,16 @@
 		/* Setup buffering information */
 		memset(&bi, 0, sizeof(bi));
 		bi.bufsize = CONF_SIZE / 2;
-		bi.txbufpolicy = ZT_POLICY_IMMEDIATE;
-		bi.rxbufpolicy = ZT_POLICY_IMMEDIATE;
+		bi.txbufpolicy = DAHDI_POLICY_IMMEDIATE;
+		bi.rxbufpolicy = DAHDI_POLICY_IMMEDIATE;
 		bi.numbufs = audio_buffers;
-		if (ioctl(fd, ZT_SET_BUFINFO, &bi)) {
+		if (ioctl(fd, DAHDI_SET_BUFINFO, &bi)) {
 			ast_log(LOG_WARNING, "Unable to set buffering information: %s\n", strerror(errno));
 			close(fd);
 			goto outrun;
 		}
 		x = 1;
-		if (ioctl(fd, ZT_SETLINEAR, &x)) {
+		if (ioctl(fd, DAHDI_SETLINEAR, &x)) {
 			ast_log(LOG_WARNING, "Unable to set linear mode: %s\n", strerror(errno));
 			close(fd);
 			goto outrun;
@@ -1879,27 +1879,27 @@
 		fd = chan->fds[0];
 		nfds = 0;
 	}
-	memset(&ztc, 0, sizeof(ztc));
-	memset(&ztc_empty, 0, sizeof(ztc_empty));
+	memset(&dahdic, 0, sizeof(dahdic));
+	memset(&dahdic_empty, 0, sizeof(dahdic_empty));
 	/* Check to see if we're in a conference... */
-	ztc.chan = 0;	
-	if (ioctl(fd, ZT_GETCONF, &ztc)) {
+	dahdic.chan = 0;	
+	if (ioctl(fd, DAHDI_GETCONF, &dahdic)) {
 		ast_log(LOG_WARNING, "Error getting conference\n");
 		close(fd);
 		goto outrun;
 	}
-	if (ztc.confmode) {
+	if (dahdic.confmode) {
 		/* Whoa, already in a conference...  Retry... */
-		if (!retryzap) {
-			ast_debug(1, "Zap channel is in a conference already, retrying with pseudo\n");
-			retryzap = 1;
-			goto zapretry;
-		}
-	}
-	memset(&ztc, 0, sizeof(ztc));
+		if (!retrydahdi) {
+			ast_debug(1, "DAHDI channel is in a conference already, retrying with pseudo\n");
+			retrydahdi = 1;
+			goto dahdiretry;
+		}
+	}
+	memset(&dahdic, 0, sizeof(dahdic));
 	/* Add us to the conference */
-	ztc.chan = 0;	
-	ztc.confno = conf->zapconf;
+	dahdic.chan = 0;	
+	dahdic.confno = conf->dahdiconf;
 
 	ast_mutex_lock(&conf->playlock);
 
@@ -1913,21 +1913,21 @@
 	}
 
 	if (confflags & CONFFLAG_WAITMARKED && !conf->markedusers)
-		ztc.confmode = ZT_CONF_CONF;
+		dahdic.confmode = DAHDI_CONF_CONF;
 	else if (confflags & CONFFLAG_MONITOR)
-		ztc.confmode = ZT_CONF_CONFMON | ZT_CONF_LISTENER;
+		dahdic.confmode = DAHDI_CONF_CONFMON | DAHDI_CONF_LISTENER;
 	else if (confflags & CONFFLAG_TALKER)
-		ztc.confmode = ZT_CONF_CONF | ZT_CONF_TALKER;
+		dahdic.confmode = DAHDI_CONF_CONF | DAHDI_CONF_TALKER;
 	else 
-		ztc.confmode = ZT_CONF_CONF | ZT_CONF_TALKER | ZT_CONF_LISTENER;
-
-	if (ioctl(fd, ZT_SETCONF, &ztc)) {
+		dahdic.confmode = DAHDI_CONF_CONF | DAHDI_CONF_TALKER | DAHDI_CONF_LISTENER;
+
+	if (ioctl(fd, DAHDI_SETCONF, &dahdic)) {
 		ast_log(LOG_WARNING, "Error setting conference\n");
 		close(fd);
 		ast_mutex_unlock(&conf->playlock);
 		goto outrun;
 	}
-	ast_debug(1, "Placed channel %s in ZAP conf %d\n", chan->name, conf->zapconf);
+	ast_debug(1, "Placed channel %s in ZAP conf %d\n", chan->name, conf->dahdiconf);
 
 	if (!sent_event) {
 		manager_event(EVENT_FLAG_CALL, "MeetmeJoin", 
@@ -1968,8 +1968,8 @@
 		}
 		ast_channel_unlock(chan);
 		
-		if (user->zapchannel) {
-			/*  Set CONFMUTE mode on Zap channel to mute DTMF tones */
+		if (user->dahdichannel) {
+			/*  Set CONFMUTE mode on DAHDI channel to mute DTMF tones */
 			x = 1;
 			ast_channel_setoption(chan, AST_OPTION_TONE_VERIFY, &x, sizeof(char), 0);
 		}
@@ -1981,14 +1981,14 @@
 			ast_log(LOG_WARNING, "Could not find application (agi)\n");
 			ret = -2;
 		}
-		if (user->zapchannel) {
-			/*  Remove CONFMUTE mode on Zap channel */
+		if (user->dahdichannel) {
+			/*  Remove CONFMUTE mode on DAHDI channel */
 			x = 0;
 			ast_channel_setoption(chan, AST_OPTION_TONE_VERIFY, &x, sizeof(char), 0);
 		}
 	} else {
-		if (user->zapchannel && (confflags & CONFFLAG_STARMENU)) {
-			/*  Set CONFMUTE mode on Zap channel to mute DTMF tones when the menu is enabled */
+		if (user->dahdichannel && (confflags & CONFFLAG_STARMENU)) {
+			/*  Set CONFMUTE mode on DAHDI channel to mute DTMF tones when the menu is enabled */
 			x = 1;
 			ast_channel_setoption(chan, AST_OPTION_TONE_VERIFY, &x, sizeof(char), 0);
 		}	
@@ -2139,8 +2139,8 @@
 								ret = 0;
 							break;
 						} else {
-							ztc.confmode = ZT_CONF_CONF;
-							if (ioctl(fd, ZT_SETCONF, &ztc)) {
+							dahdic.confmode = DAHDI_CONF_CONF;
+							if (ioctl(fd, DAHDI_SETCONF, &dahdic)) {
 								ast_log(LOG_WARNING, "Error setting conference\n");
 								close(fd);
 								goto outrun;
@@ -2155,12 +2155,12 @@
 					/* Marked user entered, so cancel timeout */
 					timeout = 0;
 					if (confflags & CONFFLAG_MONITOR)
-						ztc.confmode = ZT_CONF_CONFMON | ZT_CONF_LISTENER;
+						dahdic.confmode = DAHDI_CONF_CONFMON | DAHDI_CONF_LISTENER;
 					else if (confflags & CONFFLAG_TALKER)
-						ztc.confmode = ZT_CONF_CONF | ZT_CONF_TALKER;
+						dahdic.confmode = DAHDI_CONF_CONF | DAHDI_CONF_TALKER;
 					else
-						ztc.confmode = ZT_CONF_CONF | ZT_CONF_TALKER | ZT_CONF_LISTENER;
-					if (ioctl(fd, ZT_SETCONF, &ztc)) {
+						dahdic.confmode = DAHDI_CONF_CONF | DAHDI_CONF_TALKER | DAHDI_CONF_LISTENER;
+					if (ioctl(fd, DAHDI_SETCONF, &dahdic)) {
 						ast_log(LOG_WARNING, "Error setting conference\n");
 						close(fd);
 						goto outrun;
@@ -2204,9 +2204,9 @@

[... 5578 lines stripped ...]



More information about the asterisk-commits mailing list