I mentioned during today's Clearview I-Team meeting that the
clearview_iptun builds were failing due to a mysterious new global
symbol in the ip module called dld_str. This is tripping up the global
symbol check that IP instances does as part of nightly. I was a bit
stumped, since there is no such global variable in any of the ip
module's .c files in the clearview_iptun gate.
I've since solved the mystery, and it turns out to be a bug in
<sys/dld_impl.h>. As part of the IP tunneling work, spd.c (linked into
the ip module) includes <inet/iptun/iptun_impl.h>, which in turn
includes <sys/dld_impl.h>. The definition of dld_str_t in dld_impl.h is
botched:
typedef struct dld_str dld_str_t;
/*
* dld_str_t object definition.
*/
struct dld_str {
...
} dld_str;
This actually instanciates a global variable named "dld_str" in the file
that includes <sys/dld_impl.h>. Most GLDv3 modules have this bogus
global symbol, but this hasn't caused any problems as the Clearview IP
tunneling project is the first one that caused the ip module to
indirectly include <sys/dld_impl.h>, thus tripping up the global symbol
checking that's done as part of the ip module's compilation.
Anyway, this is of no consequence to most people, but I thought I'd
share this problem with folks who might run into similar problems in the
future.
-Seb