Newer FreeBSD versions require (/32, /128) nmasks for aliases on public interfaces. Warn, but do not quit if the explicit mask is too small. Index: src/pgl/VerFourAsSym.cc =================================================================== RCS file: /usr/local/CVS/polygraph/src/pgl/VerFourAsSym.cc,v retrieving revision 1.5 diff -u -r1.5 VerFourAsSym.cc --- src/pgl/VerFourAsSym.cc 9 Sep 2003 23:37:05 -0000 1.5 +++ src/pgl/VerFourAsSym.cc 17 May 2006 00:29:59 -0000 @@ -171,17 +171,24 @@ int VerFourAsSym::addAddr(Array &ranges, const NetAddrSym &addr, int subnet) const { NetAddrSym *clone = (NetAddrSym*)addr.clone(); int explicitSubnet = -1; - // note: newer FreeBSD versions may require (/32, /128) nmasks for aliases if (!clone->subnet(explicitSubnet)) clone->setSubnet(subnet); else if (explicitSubnet <= subnet) // XXX: this logic is not IPv6-aware subnet = explicitSubnet; else { - cerr << addr.loc() << "error: the explicit subnet of the " << addr - << " address (/" << explicitSubnet << ") is 'smaller' than" - << " minimal subnet required to accomodate all agent addresses" - << " on one host (/" << subnet << ")" << endl << xexit; + // Newer FreeBSD versions require (/32, /128) nmasks for aliases. + // Warn, but do not quit. + const int currentHash = explicitSubnet ^ subnet; + static int warnLessHash = ~currentHash; // initialized once + if (currentHash != warnLessHash) { + warnLessHash = currentHash; + clog << addr.loc() << "warning: the explicit subnet of the " << + addr << " address (/" << explicitSubnet << ") is 'smaller' " << + "than minimal subnet required to accomodate all agent " << + "addresses on one host (/" << subnet << "). Whether this " << + "is OK depends on your environment." << endl; + } } PglNetAddrRange r;