[asterisk-bugs] [DAHDI-linux 0013205]: [patch] bad master selection
Asterisk Bug Tracker
noreply at bugs.digium.com
Fri Mar 6 04:19:27 CST 2009
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=13205
======================================================================
Reported By: biohumanoid
Assigned To: kpfleming
======================================================================
Project: DAHDI-linux
Issue ID: 13205
Category: dahdi (the module)
Reproducibility: always
Severity: major
Priority: normal
Status: assigned
======================================================================
Date Submitted: 2008-07-31 00:11 CDT
Last Modified: 2009-03-06 04:19 CST
======================================================================
Summary: [patch] bad master selection
Description:
Current dahdi master handling work in the following way:
The first SPAN become a master
If a new registered !!! SPAN is preferred , it is the new master
If a span is unregistered - the new master is the first available span
If master SPAN is in alarm state - the new master is the first non in
alarm state SPAN
So
1. dahdi-dummy once loaded will be the master forever.
2. even not-running SPAN can be a master
3. master implementation is ugly...
======================================================================
----------------------------------------------------------------------
(0101299) biohumanoid (reporter) - 2009-03-06 04:19
http://bugs.digium.com/view.php?id=13205#c101299
----------------------------------------------------------------------
A brief history (an addition to madrouter):
There was no sync_tick callback at all.
Once, someone made dynamic SPAN to inter-connect 2 PC's (zaptels).
But one of 2 dynamic SPAN's (2 PC's) MUST send the first packet to
initiate a talk. Moreover, one of 2 PC's should be a master (provide
timing).
So, he made an ugly hack:
if (span == master) {
/* If we have dynamic stuff, call the ioctl with 0,0 parameters
make it run */
if (dahdi_dynamic_ioctl)
dahdi_dynamic_ioctl(0,0);
}
DAHDI(Xorcom) have added better code:
for (x=0;x<maxspans;x++) {
struct dahdi_span *s = spans[x];
if (s && s->sync_tick)
s->sync_tick(s, s == master);
}
So:
1. No more need to dahdi_dynamic_ioctl(0,0)
2. dahdi_dynamic can now work as an ordinary SPAN.
No need to have own "timing" parameter.
arbitrage can now be removed in dahdi_dynamic, but it MUST be implemented
in dahdi-base.c...
SLIP/SKIP is bad for Fax, dacs=, CCS signaling...
Issue History
Date Modified Username Field Change
======================================================================
2009-03-06 04:19 biohumanoid Note Added: 0101299
======================================================================
More information about the asterisk-bugs
mailing list