Update iprange.cpp

This commit is contained in:
bjyb 2023-09-22 21:43:20 +08:00
parent e807068a8f
commit 5d826c856b
1 changed files with 42 additions and 4 deletions

View File

@ -22,6 +22,11 @@
*
* ---------------------------------------------------------------------------------------
*/
/*IP address, called Internet protocol address, is a way to address a host on the Internet.
It is a unified address format provided by IP protocol. Common IP addresses can be divided
into IPv4 and IPv6. It assigns a logical address to every network and every host on the Internet
to shield the difference of physical addresses.*/
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
@ -134,6 +139,11 @@ void IPRange::net_ipv6_to_host_order(IPV6 *ip, const struct sockaddr_in6 *sa) co
ip->ip_32.d = ntohl(tmp_ip.ip_32.a);
}
/*Function name: net_ Ipv4_ To_ Host_ Order
Formal parameters: (IPV6 * ip, const construct in_addr * addr)
Return value: None
Convert IPv4 addresses to host addresses*/
void IPRange::net_ipv4_to_host_order(IPV6 *ip, const struct in_addr *addr) const
{
ip->ip_32.a = ntohl(addr->s_addr);
@ -141,6 +151,10 @@ void IPRange::net_ipv4_to_host_order(IPV6 *ip, const struct in_addr *addr) const
ip->ip_32.c = ip->ip_32.d = 0;
}
/*Function name: str_ To_ IP
Formal parameters: (const char * ip_str, IPV6 * ip)
Return value: bool
Convert string to IP address*/
bool IPRange::str_to_ip(const char* ip_str, IPV6 *ip)
{
struct in_addr addr;
@ -160,7 +174,10 @@ bool IPRange::str_to_ip(const char* ip_str, IPV6 *ip)
}
return true;
}
/*Function name: mask_ Range
Formal parameter: (Range * range, unsigned short cidr)
Return value: bool
Calculate Mask*/
bool IPRange::mask_range(Range *range, unsigned short cidr)
{
if (IPRANGE_IS_IPV4(range->from)) { /* ipv4 */
@ -211,6 +228,10 @@ bool IPRange::mask_range(Range *range, unsigned short cidr)
* parse the ip with mask into range sturst , format is as below:
* x.x.x.x|x, ptr is the postion of "|"
*/
/*Function name: parse_ Mask
Formal parameters: (const char * range, size_t range_len, const char * ptr, Range * new_range)
Return value: bool
Resolve mask.*/
bool IPRange::parse_mask(const char* range, size_t range_len, const char *ptr, Range *new_range)
{
if (range_len > 100) {
@ -250,6 +271,10 @@ bool IPRange::parse_mask(const char* range, size_t range_len, const char *ptr, R
return true;
}
/*Function name: parse_ Single
Formal parameters: (const char * range, size_t range_len, Range * new_range)
Return value: bool
Resolve a single IP.*/
bool IPRange::parse_single(const char* range, size_t range_len, Range *new_range)
{
if (range_len > 100) {
@ -479,14 +504,20 @@ bool IPRange::add_range(Range *new_range)
m_ranges.swap(new_ranges);
return true;
}
/*Function name: is_ Range_ Valid
Formal parameter: (const std:: string range)
Return value: bool
Determine if the IP type is empty*/
bool IPRange::is_range_valid(const std::string range)
{
IPRange tmp;
Range new_range;
return tmp.parse_range(range.c_str(), range.size(), &new_range);
}
/*Function name: add_ Range
Formal parameter: (Range * new_range)
Return value: void
Increase range IP*/
bool IPRange::add_range(const char* range, size_t range_len)
{
Range new_range;
@ -496,7 +527,10 @@ bool IPRange::add_range(const char* range, size_t range_len)
}
return add_range(&new_range);
}
/*Function name: remove_ Range
Formal parameters: (const char * range, size_t range_len)
Return value: bool
Delete Scope IP*/
bool IPRange::remove_range(const char *range, size_t range_len)
{
Ranges_t new_ranges;
@ -530,6 +564,10 @@ std::string IPRange::ip_to_str(const IPV6 *ip) const
return std::string(ip_str);
}
/*Function name: binary_ Search
Formal parameter: (const IPV6 ip)
Return value: bool
Binary search IP*/
bool IPRange::binary_search(const IPV6 ip) const
{
/* do a binary search */