[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