看板 DFBSD_bugs 關於我們 聯絡資訊
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 !