mirror of
https://github.com/mfontanini/libtins
synced 2026-01-23 02:35:57 +01:00
Add IPv4Address::from_prefix_length
This commit is contained in:
@@ -53,6 +53,13 @@ public:
|
||||
*/
|
||||
static const IPv4Address broadcast;
|
||||
|
||||
/**
|
||||
* \brief Constructs an IPv4 address from a prefix length
|
||||
*
|
||||
* \param prefix_length The length of the prefix
|
||||
*/
|
||||
static IPv4Address from_prefix_length(uint32_t prefix_length);
|
||||
|
||||
/**
|
||||
* \brief Constructor taking a const char*.
|
||||
*
|
||||
|
||||
@@ -39,15 +39,12 @@ IPv4Range operator/(const IPv4Address& addr, int mask) {
|
||||
if (mask > 32) {
|
||||
throw logic_error("Prefix length cannot exceed 32");
|
||||
}
|
||||
return IPv4Range::from_mask(
|
||||
addr,
|
||||
IPv4Address(Endian::host_to_be(0xffffffff << (32 - mask)))
|
||||
);
|
||||
return IPv4Range::from_mask(addr, IPv4Address::from_prefix_length(mask));
|
||||
}
|
||||
|
||||
IPv6Range operator/(const IPv6Address& addr, int mask) {
|
||||
if (mask > 128) {
|
||||
throw std::logic_error("Prefix length cannot exceed 128");
|
||||
throw logic_error("Prefix length cannot exceed 128");
|
||||
}
|
||||
return IPv6Range::from_mask(addr, IPv6Address::from_prefix_length(mask));
|
||||
}
|
||||
|
||||
@@ -54,7 +54,11 @@ const AddressRange<IPv4Address> private_ranges[] = {
|
||||
|
||||
const AddressRange<IPv4Address> loopback_range = IPv4Address("127.0.0.0") / 8;
|
||||
const AddressRange<IPv4Address> multicast_range = IPv4Address("224.0.0.0") / 4;
|
||||
|
||||
|
||||
IPv4Address IPv4Address::from_prefix_length(uint32_t prefix_length) {
|
||||
return IPv4Address(Endian::host_to_be(0xffffffff << (32 - prefix_length)));
|
||||
}
|
||||
|
||||
IPv4Address::IPv4Address(uint32_t ip)
|
||||
: ip_addr_(Endian::be_to_host(ip)) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user