[asterisk-dev] What is dahdi.auto_assigned_spans and why should you care? (II)

Tzafrir Cohen tzafrir.cohen at xorcom.com
Tue Jan 21 11:31:41 CST 2014


Hi again,

Some other things missing from the previous message: setting E1/T1/[J1?]
and upgrading.


E1/T1
-----
an E1/T1/J1 should be configured to be either E1 or T1.There are a
number of ways to set this. Specifically: quite a few different ways.

With the new DAHDI initialization scheme we also provide a new standard
method[X] for setting the "type" (E1/T1/J1) of the span.

If you set dahdi.auto_assign_spans=0, the spans are not assigned
automatically. Before assigning them, the user may set the "spantype"
attribute[K]. This "user" is normally the udev hook script
/usr/share/dahdi/dahdi_handle_device which will run 'dahdi_span_types
set' for the span before assigning the spans of the device[C].

There are several sensible values to put in that file:

1. Just not have it. In this case you fall back to the previous settings
of your drivers.

2. All spans are E1: Just include the following line:

* *:E1

(If you want T1 or J1. put that type instead)


3. Anything more complex: it's easy to do that. you can start with:

  dahdi_span_types dumpconfig

and set the specific spans there to be E1 or T1. Note that the
configuration lines are read in order[D] and hence if you have a default
("* *:T1") line and some more specific lines ("id1234 [13]:E1"), the
default must come first.

See the sample span-types.conf[4]

In 2.8 dahdi_genconf generates span-types.conf by default with lines for
each existing Astribank. This has turned out to be a bad idea. In 2.9
merely running 'dahdi_genconf' will not generate span-types.conf .
You'll need to explicitly use 'dahdi_genconf spantypes' . And the option
you'll normally use is:

  dahdi_genconf --tdm-type=J1


Upgrades
--------
You have on your system a version of DAHDI in which
dahdi.auto_assign_spans is set to 1. Now you upgrade it to a version
in which auto_assign_spans is set to 0. What happens?

Workaround
~~~~~~~~~~
There is the workaround of setting 'options dahdi auto_assign_spans=1' 
in a file in /etc/modprobe.d . It will work, but we're trying to avoid
that.


Planning Ahead
~~~~~~~~~~~~~~
If you plan ahead, you can run before the upgrade:

  dahdi_genconf assignedspans

which is a glorified way of running:

  dahdi_span_assignments dumpconfig >/etc/dahdi/assigend-spans.conf

However this will not work for some older versions of DAHDI (as the
interface may not be there, is is not complete). And besides, why plan
ahead?


Just Upgrade
~~~~~~~~~~~~
So, what happens if If you just load the system (make sure that there's
no existing /etc/dahdi/assigned-spans.conf), spans get registered in the
same order as they appear. So basically you should see once that the
system started properly, and then run:

  dahdi_genconf assignedspans

This will be used for the next time the module is loaded, so there is no
need to run anything afterwards to "apply" the changes.

I wonder if this fits in a postinst script of a package of dahdi kernel
modules.


Astribanks
~~~~~~~~~~
For Astribanks the upgrade is trickier: Astribanks have their own
mechanism that was intended to provide stable channel and span numbers
in DAHDI: just before registering all the Astribanks with DAHDI they
would wait and registration was done by a specific order (so it worked
well s long as noon was added or removed).

The configuration is a list of Astribanks in /etc/dahdi/xpp_order .

With the upgrade the Astribanks will no longer wait. Thus the "Just
Upgrade" method will not work[2]. This problem, like any other problem
in DAHDI, can be fixed by adding another layer of shell scripts.
Specifically in case the startup scripts notice that:

* The system has Astribanks
* There is an xpp_order file and is not completely remmed-out
* There is no assigned-spans.conf 

we run a script that unassigns all devices, and re-assigns them by the
order written in the xpp_order file.

And write a notice to the console that asks the user to kindly run
'dahdi_genconf assignedspans'.

So all's well here as well.


Temporarily Set auto_assign_spans=1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following script unloads dahdi and loads it temporarily with
auto_assign_spans set to 1 to generate configuration:

#!/bin/sh
set -e
# Make it the last, in case we have those setting elsewhere:
modprobe_conf="/etc/modprobe.d/zz_xpp_order_upgrade.conf"
echo "options dahdi auto_assign_spans=1" >"$modprobe_conf"
/etc/init.d/dahdi restart
dahdi_genconf assignedspans
rm "$modprobe_conf"
/etc/init.d/dahdi restart

I suspect it won't be needed, but just in case.

Conclusion
~~~~~~~~~~
Upgrading should work. No need to set auto_assign_spans=1 . But please
help us test it.



[X] XKCD-927 compatible

[K] Again, see http://docs.tzafrir.org.il/dahdi-linux/#_devices_bus

[C] Again, see http://docs.tzafrir.org.il/dahdi-tools/#_new_devices

[D] Still not the case in 2.8.0, will be the case in 2.9.0

[4] http://docs.tzafrir.org.il/dahdi-tools/#_new_devices

[2] That is: it will work with probability 1/n!, where n is the number
of the Astribanks on the system.

-- 
               Tzafrir Cohen
icq#16849755              jabber:tzafrir.cohen at xorcom.com
+972-50-7952406           mailto:tzafrir.cohen at xorcom.com
http://www.xorcom.com



More information about the asterisk-dev mailing list