add function is_private_ip
parent
a9388ab7fe
commit
3a3abaf148
4
HISTORY
4
HISTORY
|
|
@ -1,6 +1,8 @@
|
|||
|
||||
Version 1.22 2015-09-15
|
||||
Version 1.22 2015-10-09
|
||||
* export php function: fastcommon_get_first_local_ip
|
||||
* add function is_private_ip
|
||||
* add function get_next_local_ip
|
||||
|
||||
Version 1.21 2015-09-14
|
||||
* ini_file_reader support annotation function
|
||||
|
|
|
|||
|
|
@ -134,26 +134,49 @@ void print_local_host_ip_addrs()
|
|||
printf("\n");
|
||||
}
|
||||
|
||||
const char *get_first_local_ip()
|
||||
const char *get_next_local_ip(const char *previous_ip)
|
||||
{
|
||||
char *p;
|
||||
char *pEnd;
|
||||
bool found;
|
||||
|
||||
if (g_local_host_ip_count == 0)
|
||||
{
|
||||
load_local_host_ip_addrs();
|
||||
}
|
||||
|
||||
found = (previous_ip == NULL);
|
||||
pEnd = g_local_host_ip_addrs + \
|
||||
IP_ADDRESS_SIZE * g_local_host_ip_count;
|
||||
for (p=g_local_host_ip_addrs; p<pEnd; p+=IP_ADDRESS_SIZE)
|
||||
{
|
||||
if (strcmp(p, LOCAL_LOOPBACK_IP) != 0)
|
||||
{
|
||||
return p;
|
||||
if (found)
|
||||
{
|
||||
return p;
|
||||
}
|
||||
else if (strcmp(p, previous_ip) == 0)
|
||||
{
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return LOCAL_LOOPBACK_IP;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *get_first_local_ip()
|
||||
{
|
||||
const char *first_ip;
|
||||
first_ip = get_next_local_ip(NULL);
|
||||
if (first_ip != NULL)
|
||||
{
|
||||
return first_ip;
|
||||
}
|
||||
else
|
||||
{
|
||||
return LOCAL_LOOPBACK_IP;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,10 @@ extern char g_if_alias_prefix[FAST_IF_ALIAS_PREFIX_MAX_SIZE];
|
|||
|
||||
void load_local_host_ip_addrs();
|
||||
bool is_local_host_ip(const char *client_ip);
|
||||
|
||||
const char *get_first_local_ip();
|
||||
const char *get_next_local_ip(const char *previous_ip);
|
||||
|
||||
int insert_into_local_host_ip(const char *client_ip);
|
||||
void log_local_host_ip_addrs();
|
||||
void print_local_host_ip_addrs();
|
||||
|
|
|
|||
|
|
@ -2227,3 +2227,27 @@ double get_line_distance_km(const double lat1, const double lon1,
|
|||
return sqrt(lat_distance * lat_distance + lng_distance * lng_distance);
|
||||
}
|
||||
|
||||
bool is_private_ip(const char* ip)
|
||||
{
|
||||
if (ip == NULL || (int)strlen(ip) < 8)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (memcmp(ip, "10.", 3) == 0 || memcmp(ip, "192.168.", 8) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (memcmp(ip, "172.", 4) == 0)
|
||||
{
|
||||
int b;
|
||||
b = atoi(ip + 4);
|
||||
if (b >= 16 && b < 32)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -515,6 +515,11 @@ int ignore_signal_pipe();
|
|||
double get_line_distance_km(const double lat1, const double lon1,
|
||||
const double lat2, const double lon2);
|
||||
|
||||
/** is private ip address for IPv4
|
||||
* return: true for private ip, otherwise false
|
||||
*/
|
||||
bool is_private_ip(const char* ip);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue