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

Reply via email to