From: Joshua C. Colp Date: Mon, 16 Aug 2021 17:56:56 +0000 (-0300) Subject: app_dahdiras: Remove deprecated module. X-Git-Tag: 19.0.0-rc1~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f18107f1913a9a22f5ea466d80393be540fd9bec;p=thirdparty%2Fasterisk.git app_dahdiras: Remove deprecated module. ASTERISK-29591 Change-Id: I021d37b729631d40f84e35bb21e2893777be1858 --- diff --git a/apps/app_dahdiras.c b/apps/app_dahdiras.c deleted file mode 100644 index d2ec137b4f..0000000000 --- a/apps/app_dahdiras.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Asterisk -- An open source telephony toolkit. - * - * Copyright (C) 1999 - 2005, Digium, Inc. - * - * Mark Spencer - * - * See http://www.asterisk.org for more information about - * the Asterisk project. Please do not directly contact - * any of the maintainers of this project for assistance; - * the project provides a web site, mailing lists and IRC - * channels for your use. - * - * This program is free software, distributed under the terms of - * the GNU General Public License Version 2. See the LICENSE file - * at the top of the source tree. - */ - -/*! \file - * - * \brief Execute an ISDN RAS - * - * \author Mark Spencer - * - * \ingroup applications - */ - -/*** MODULEINFO - dahdi - deprecated - 16 - 19 - ***/ - -#include "asterisk.h" - -#include -#include -#include -#include - -#include - -#include "asterisk/lock.h" -#include "asterisk/file.h" -#include "asterisk/channel.h" -#include "asterisk/pbx.h" -#include "asterisk/module.h" -#include "asterisk/app.h" - -/*** DOCUMENTATION - - - Executes DAHDI ISDN RAS application. - - - - A list of parameters to pass to the pppd daemon, - separated by , characters. - - - - Executes a RAS server using pppd on the given channel. - The channel must be a clear channel (i.e. PRI source) and a DAHDI - channel to be able to use this function (No modem emulation is included). - Your pppd must be patched to be DAHDI aware. - - - - ***/ - -static const char app[] = "DAHDIRAS"; - -#define PPP_MAX_ARGS 32 -#define PPP_EXEC "/usr/sbin/pppd" - -static pid_t spawn_ras(struct ast_channel *chan, char *args) -{ - pid_t pid; - char *c; - - char *argv[PPP_MAX_ARGS]; - int argc = 0; - char *stringp=NULL; - - /* Start by forking */ - pid = ast_safe_fork(1); - if (pid) { - return pid; - } - - /* Execute RAS on File handles */ - dup2(ast_channel_fd(chan, 0), STDIN_FILENO); - - /* Drop high priority */ - if (ast_opt_high_priority) - ast_set_priority(0); - - /* Close other file descriptors */ - ast_close_fds_above_n(STDERR_FILENO); - - /* Reset all arguments */ - memset(argv, 0, sizeof(argv)); - - /* First argument is executable, followed by standard - arguments for DAHDI PPP */ - argv[argc++] = PPP_EXEC; - argv[argc++] = "nodetach"; - - /* And all the other arguments */ - stringp=args; - c = strsep(&stringp, ","); - while(c && strlen(c) && (argc < (PPP_MAX_ARGS - 4))) { - argv[argc++] = c; - c = strsep(&stringp, ","); - } - - if (geteuid() == 0) { - argv[argc++] = "plugin"; - argv[argc++] = "dahdi.so"; - } - argv[argc++] = "stdin"; - - /* Finally launch PPP */ - execv(PPP_EXEC, argv); - fprintf(stderr, "Failed to exec PPPD!\n"); - exit(1); -} - -static void run_ras(struct ast_channel *chan, char *args) -{ - pid_t pid; - int status; - int res; - int signalled = 0; - struct dahdi_bufferinfo savebi; - int x; - - res = ioctl(ast_channel_fd(chan, 0), DAHDI_GET_BUFINFO, &savebi); - if(res) { - ast_log(LOG_WARNING, "Unable to check buffer policy on channel %s\n", ast_channel_name(chan)); - return; - } - - pid = spawn_ras(chan, args); - if (pid < 0) { - ast_log(LOG_WARNING, "Failed to spawn RAS\n"); - } else { - for (;;) { - res = waitpid(pid, &status, WNOHANG); - if (!res) { - /* Check for hangup */ - if (ast_check_hangup(chan) && !signalled) { - ast_debug(1, "Channel '%s' hungup. Signalling RAS at %d to die...\n", ast_channel_name(chan), pid); - kill(pid, SIGTERM); - signalled=1; - } - /* Try again */ - sleep(1); - continue; - } - if (res < 0) { - ast_log(LOG_WARNING, "waitpid returned %d: %s\n", res, strerror(errno)); - } - if (WIFEXITED(status)) { - ast_verb(3, "RAS on %s terminated with status %d\n", ast_channel_name(chan), WEXITSTATUS(status)); - } else if (WIFSIGNALED(status)) { - ast_verb(3, "RAS on %s terminated with signal %d\n", - ast_channel_name(chan), WTERMSIG(status)); - } else { - ast_verb(3, "RAS on %s terminated weirdly.\n", ast_channel_name(chan)); - } - /* Throw back into audio mode */ - x = 1; - ioctl(ast_channel_fd(chan, 0), DAHDI_AUDIOMODE, &x); - - /* Restore saved values */ - res = ioctl(ast_channel_fd(chan, 0), DAHDI_SET_BUFINFO, &savebi); - if (res < 0) { - ast_log(LOG_WARNING, "Unable to set buffer policy on channel %s\n", ast_channel_name(chan)); - } - break; - } - } - ast_safe_fork_cleanup(); -} - -static int dahdiras_exec(struct ast_channel *chan, const char *data) -{ - int res=-1; - char *args; - struct dahdi_params dahdip; - - if (!data) - data = ""; - - args = ast_strdupa(data); - - /* Answer the channel if it's not up */ - if (ast_channel_state(chan) != AST_STATE_UP) - ast_answer(chan); - if (strcasecmp(ast_channel_tech(chan)->type, "DAHDI")) { - /* If it's not a DAHDI channel, we're done. Wait a couple of - seconds and then hangup... */ - ast_verb(2, "Channel %s is not a DAHDI channel\n", ast_channel_name(chan)); - sleep(2); - } else { - memset(&dahdip, 0, sizeof(dahdip)); - if (ioctl(ast_channel_fd(chan, 0), DAHDI_GET_PARAMS, &dahdip)) { - ast_log(LOG_WARNING, "Unable to get DAHDI parameters\n"); - } else if (dahdip.sigtype != DAHDI_SIG_CLEAR) { - ast_verb(2, "Channel %s is not a clear channel\n", ast_channel_name(chan)); - } else { - /* Everything should be okay. Run PPP. */ - ast_verb(3, "Starting RAS on %s\n", ast_channel_name(chan)); - /* Execute RAS */ - run_ras(chan, args); - } - } - return res; -} - -static int unload_module(void) -{ - return ast_unregister_application(app); -} - -static int load_module(void) -{ - return ((ast_register_application_xml(app, dahdiras_exec)) ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS); -} - -AST_MODULE_INFO_STANDARD_DEPRECATED(ASTERISK_GPL_KEY, "DAHDI ISDN Remote Access Server"); diff --git a/doc/UPGRADE-staging/app_dahdiras_removal.txt b/doc/UPGRADE-staging/app_dahdiras_removal.txt new file mode 100644 index 0000000000..7baa7ff97f --- /dev/null +++ b/doc/UPGRADE-staging/app_dahdiras_removal.txt @@ -0,0 +1,6 @@ +Subject: app_dahdiras +Master-Only: True + +This module was deprecated in Asterisk 16 +and is now being removed in accordance with +the Asterisk Module Deprecation policy.