Routing bugs: zebra/quagga are unusable => I have found the cause

Adrian Bocaniciu a.bocaniciu at computer.org
Wed Jan 5 03:37:00 PST 2005


  I have found the reason why ospfd crashes with segmentation faults.

    The culprit is line 261 of /usr/include/net/route.h

#define        sa_dst        rti_info[RTAX_DST]

    This macro hides some local variables from ospfd and leads to 
attempts to read from a null address.

    This macro and the other similar macrodefintions do not exist in 
FreeBSD.  I believe that they break a large number of networking 
programs.  The origin of the problem is that in this case the old C 
tradition to use small letters for variables and capital letters for 
macrodefintions has not been observed.  This example shows that there 
was a very good reason for that tradition.

    I suggest to change these macros to capital letters and in the 
future to define macros according to the tradition, because otherwise it 
is impossible to avoid name conflicts and the C compiler cannot signal 
the error in such cases.

    The panic that appears with vlan interfaces is caused by a field 
(ifma_lladdr) in the interface structures that remains uninitialized in 
DragonFly, unlike in FreeBSD, but I have yet to find where it should 
have been initialized.

    Best regards !






More information about the Bugs mailing list