network_v4 network_v4::from_string( const std::string& network ) { std::size_t found = network.find_last_of( "/" ); if ( found == 0 ) { // FIXME: Throw exception } boost::asio::ip::address_v4 addr = boost::asio::ip::address_v4::from_string( network.substr( 0, found ) ); unsigned short cidr = boost::lexical_cast<unsigned short>( network.substr( found + 1 ) ); return network_v4( addr.to_ulong(), cidr ); }
/** * @relates address_v4 */ inline network_v4 make_network_v4( const address_v4& addr, const address_v4& mask) { return network_v4(addr, mask); }
/** * @relates address_v4 */ inline network_v4 make_network_v4( const address_v4& addr, unsigned short prefix_len) { return network_v4(addr, prefix_len); }