4#include <boost/asio.hpp>
5#include <boost/lexical_cast.hpp>
8namespace fc {
namespace ip {
17 _ip = boost::asio::ip::address_v4::from_string(
s.c_str()).to_ulong();
33 _ip = boost::asio::ip::address_v4::from_string(
s.c_str()).to_ulong();
43 return boost::asio::ip::address_v4(_ip).to_string().c_str();
58 return a._port == b._port &&
a._ip == b._ip;
61 return a._port != b._port ||
a._ip != b._ip;
79 auto pos = endpoint_string.find(
':');
80 ep._ip = boost::asio::ip::address_v4::from_string(endpoint_string.substr( 0, pos ) ).to_ulong();
81 ep._port = boost::lexical_cast<uint16_t>( endpoint_string.substr( pos+1, endpoint_string.size() ) );
91 return string(_ip) +
':' +
fc::string(boost::lexical_cast<std::string>(_port).c_str());
107 static address min10_ip(
"10.0.0.0");
108 static address max10_ip(
"10.255.255.255");
109 static address min172_ip(
"172.16.0.0");
110 static address max172_ip(
"172.31.255.255");
111 static address min192_ip(
"192.168.0.0");
112 static address max192_ip(
"192.168.255.255");
113 static address min169_ip(
"169.254.0.0");
114 static address max169_ip(
"169.254.255.255");
115 if( _ip >= min10_ip._ip && _ip <= max10_ip._ip )
return true;
116 if( _ip >= min172_ip._ip && _ip <= max172_ip._ip )
return true;
117 if( _ip >= min192_ip._ip && _ip <= max192_ip._ip )
return true;
118 if( _ip >= min169_ip._ip && _ip <= max169_ip._ip )
return true;
127 static address min_ip(
"224.0.0.0");
128 static address max_ip(
"239.255.255.255");
129 return _ip >= min_ip._ip && _ip <= max_ip._ip;
address & operator=(const fc::string &s)
bool is_private_address() const
bool is_public_address() const
bool is_multicast_address() const
const address & get_address() const
static endpoint from_string(const string &s)
stores null, int64, uint64, double, bool, string, std::vector<variant>, and variant_object's.
Defines exception's used by fc.
#define FC_RETHROW_EXCEPTIONS(LOG_LEVEL, FORMAT,...)
Catchs all exception's, std::exceptions, and ... and rethrows them after appending the provided log m...
bool operator<(const endpoint &a, const endpoint &b)
bool operator!=(const address &a, const address &b)
bool operator==(const address &a, const address &b)
void from_variant(const fc::variant &v, sysio::chain::chain_id_type &cid)
void to_variant(const sysio::chain::shared_public_key &var, fc::variant &vo)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a