irc::sockets::cidr_mask::cidr_mask(const std::string& mask) { std::string::size_type bits_chars = mask.rfind('/'); irc::sockets::sockaddrs sa; if (bits_chars == std::string::npos) { irc::sockets::aptosa(mask, 0, sa); sa2cidr(*this, sa, 128); } else { unsigned char range = ConvToNum<unsigned char>(mask.substr(bits_chars + 1)); irc::sockets::aptosa(mask.substr(0, bits_chars), 0, sa); sa2cidr(*this, sa, range); } }
irc::sockets::cidr_mask::cidr_mask(const irc::sockets::sockaddrs& sa, unsigned char range) { sa2cidr(*this, sa, range); }
irc::sockets::cidr_mask::cidr_mask(const irc::sockets::sockaddrs& sa, int range) { sa2cidr(*this, sa, range); }