[asterisk-dev] [Code Review] dial by name in chan_dahdi

Tzafrir Cohen tzafrir.cohen at xorcom.com
Sun May 30 19:41:58 CDT 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/535/
-----------------------------------------------------------

(Updated 2010-05-30 19:41:58.517073)


Review request for Asterisk Developers.


Changes
-------

* Got rid of a separate 'subdir' setting in chan_dahdi.conf . The sub-directory is set as part of the channel name.
* Added config option ignore_failed_channels: continue even if some channels failed. For instance, if one device is missing, the other one should work.


Summary (updated)
-------

Currently a name of a channel in chan_dahdi must (with some exception of trunk-groups syntax) rely on DAHDI channel numbers. Sadly channel numbers depend on the specific order of registration. Changing that seems to be quite difficult.

Thus we try to use the original open-by-device-file (rather than indirect open through /dev/dahdi/channel), and allow files to reside in sub-directories of /dev/dahdi .

Specifically, the file name must still be a number (to allow using the same ranges syntax). However it should be preceded with the string '<dirname>!' .

For instance we have: /dev/dahdi/work/dir/1 and /dev/dahdi/work/dir/2 that are symlinks to /dev/dahdi/9 and /dev/dahdi/10 (DAHDI channels 9 and 10), I can refer to them in chan_dahdi.conf as:

  channel => work!dir!1
  channel => work!dir!2

Or:
  channel => work!dir!1-2

And likewise can dial through them using:

  Dial(DAHDI/work!dir!1/123456)

Now that we have a naming scheme that does not depend on the specific load order of DAHDI devices, it should be safe to allow a configuration to continue even if some channels have failed. For this we allow setting

  ignore_failed_channels = true

in chan_dahdi.conf (it only makes sense to set it in the beginning of the [channels] section). This tells chan_dahdi not to fail even if a channel has failed to configure.

See also:
http://svn.asterisk.org/dahdi/linux/team/tzafrir/sysfs
http://svn.asterisk.org/dahdi/tools/team/tzafrir/sysfs
https://reviewboard.asterisk.org/r/677

Current status: 

* Tested to basically work. 

TODO:
* Adapt better to Asterisk coding style.
* Can the original path be exposed to the dialplan?
  The equivalent of:
  Set(DAHDI_CHAN=${CUT(-,${CHANNEL}))}


Diffs (updated)
-----

  /trunk/channels/chan_dahdi.c 266565 
  /trunk/configs/chan_dahdi.conf.sample 266565 

Diff: https://reviewboard.asterisk.org/r/535/diff


Testing
-------


Thanks,

Tzafrir




More information about the asterisk-dev mailing list