mirror of
https://github.com/asterisk/asterisk.git
synced 2026-07-15 08:04:47 -07:00
Merge "chan_dahdi: remove by_name support"
This commit is contained in:
@@ -32,3 +32,12 @@ Queue:
|
||||
added via the CLI command "queue add" or the AMI action "QueueAdd") now have
|
||||
their ringinuse value updated to the value of the queue. Previously, the
|
||||
ringinuse value for dynamic members was not updated on reload.
|
||||
|
||||
Channel Drivers:
|
||||
|
||||
chan_dahdi:
|
||||
- Support for specifying a DAHDI channel using a path under /dev/dahdi
|
||||
("by name") has been removed. It was never used. Instead you should
|
||||
use kernel-level channel number allocation using span assignments.
|
||||
See the documentation of dahdi-linux and dahdi-tools.
|
||||
|
||||
|
||||
+5
-79
@@ -11975,38 +11975,6 @@ static int sigtype_to_signalling(int sigtype)
|
||||
return sigtype;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Get file name and channel number from (subdir,number)
|
||||
*
|
||||
* \param subdir name of the subdirectory under /dev/dahdi/
|
||||
* \param channel name of device file under /dev/dahdi/<subdir>/
|
||||
* \param path buffer to put file name in
|
||||
* \param pathlen maximal length of path
|
||||
*
|
||||
* \retval minor number of dahdi channel.
|
||||
* \retval -errno on error.
|
||||
*/
|
||||
static int device2chan(const char *subdir, int channel, char *path, int pathlen)
|
||||
{
|
||||
struct stat stbuf;
|
||||
int num;
|
||||
|
||||
snprintf(path, pathlen, "/dev/dahdi/%s/%d", subdir, channel);
|
||||
if (stat(path, &stbuf) < 0) {
|
||||
ast_log(LOG_ERROR, "stat(%s) failed: %s\n", path, strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
if (!S_ISCHR(stbuf.st_mode)) {
|
||||
ast_log(LOG_ERROR, "%s: Not a character device file\n", path);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = minor(stbuf.st_rdev);
|
||||
ast_debug(1, "%s -> %d\n", path, num);
|
||||
return num;
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Initialize/create a channel interface.
|
||||
@@ -17424,33 +17392,9 @@ static int unload_module(void)
|
||||
return __unload_module();
|
||||
}
|
||||
|
||||
static void string_replace(char *str, int char1, int char2)
|
||||
{
|
||||
for (; *str; str++) {
|
||||
if (*str == char1) {
|
||||
*str = char2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static char *parse_spanchan(char *chanstr, char **subdir)
|
||||
{
|
||||
char *p;
|
||||
|
||||
if ((p = strrchr(chanstr, '!')) == NULL) {
|
||||
*subdir = NULL;
|
||||
return chanstr;
|
||||
}
|
||||
*p++ = '\0';
|
||||
string_replace(chanstr, '!', '/');
|
||||
*subdir = chanstr;
|
||||
return p;
|
||||
}
|
||||
|
||||
static int build_channels(struct dahdi_chan_conf *conf, const char *value, int reload, int lineno)
|
||||
{
|
||||
char *c, *chan;
|
||||
char *subdir;
|
||||
int x, start, finish;
|
||||
struct dahdi_pvt *tmp;
|
||||
|
||||
@@ -17460,7 +17404,6 @@ static int build_channels(struct dahdi_chan_conf *conf, const char *value, int r
|
||||
}
|
||||
|
||||
c = ast_strdupa(value);
|
||||
c = parse_spanchan(c, &subdir);
|
||||
|
||||
while ((chan = strsep(&c, ","))) {
|
||||
if (sscanf(chan, "%30d-%30d", &start, &finish) == 2) {
|
||||
@@ -17482,39 +17425,22 @@ static int build_channels(struct dahdi_chan_conf *conf, const char *value, int r
|
||||
}
|
||||
|
||||
for (x = start; x <= finish; x++) {
|
||||
char fn[PATH_MAX];
|
||||
int real_channel = x;
|
||||
|
||||
if (!ast_strlen_zero(subdir)) {
|
||||
real_channel = device2chan(subdir, x, fn, sizeof(fn));
|
||||
if (real_channel < 0) {
|
||||
if (conf->ignore_failed_channels) {
|
||||
ast_log(LOG_WARNING, "Failed configuring %s!%d, (got %d). But moving on to others.\n",
|
||||
subdir, x, real_channel);
|
||||
continue;
|
||||
} else {
|
||||
ast_log(LOG_ERROR, "Failed configuring %s!%d, (got %d).\n",
|
||||
subdir, x, real_channel);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (conf->wanted_channels_start &&
|
||||
(real_channel < conf->wanted_channels_start ||
|
||||
real_channel > conf->wanted_channels_end)
|
||||
(x < conf->wanted_channels_start ||
|
||||
x > conf->wanted_channels_end)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
tmp = mkintf(real_channel, conf, reload);
|
||||
tmp = mkintf(x, conf, reload);
|
||||
|
||||
if (tmp) {
|
||||
ast_verb(3, "%s channel %d, %s signalling\n", reload ? "Reconfigured" : "Registered", real_channel, sig2str(tmp->sig));
|
||||
ast_verb(3, "%s channel %d, %s signalling\n", reload ? "Reconfigured" : "Registered", x, sig2str(tmp->sig));
|
||||
} else {
|
||||
ast_log(LOG_ERROR, "Unable to %s channel '%s'\n",
|
||||
(reload == 1) ? "reconfigure" : "register", value);
|
||||
return -1;
|
||||
}
|
||||
if (real_channel == CHAN_PSEUDO) {
|
||||
if (x == CHAN_PSEUDO) {
|
||||
has_pseudo = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1330,24 +1330,6 @@ pickupgroup=1
|
||||
; signalling = pri_cpe
|
||||
; group = 2
|
||||
; channel => 1-23
|
||||
;
|
||||
; Alternatively, the number of the channel may be replaced with a relative
|
||||
; path to a device file under /dev/dahdi . The final element of that file
|
||||
; must be a number, though. The directory separator is '!', as we can't
|
||||
; use '/' in a dial string. So if we have
|
||||
;
|
||||
; /dev/dahdi/span-name/pstn/00/1
|
||||
; /dev/dahdi/span-name/pstn/00/2
|
||||
; /dev/dahdi/span-name/pstn/00/3
|
||||
; /dev/dahdi/span-name/pstn/00/4
|
||||
;
|
||||
; we could use:
|
||||
;channel => span-name!pstn!00!1-4
|
||||
;
|
||||
; or:
|
||||
;channel => span-name!pstn!00!1,2,3,4
|
||||
;
|
||||
; See also ignore_failed_channels above.
|
||||
|
||||
; Used for distinctive ring support for x100p.
|
||||
; You can see the dringX patterns is to set any one of the dringXcontext fields
|
||||
|
||||
Reference in New Issue
Block a user