I need to find out, is ip belong to ip mask.
For example:
ip = 192.168.0.1
mask = 192.168.0.1/24.
I found function that convert ip to mask:
inet_cidrtoaddr(int cidr, struct in_addr *addr)
{
int ocets;
if (cidr < 0 || cidr > 32) {
errno = EINVAL;
return -1;
}
ocets = (cidr + 7) / 8;
addr->s_addr = 0;
if (ocets > 0) {
memset(&addr->s_addr, 255, (size_t)ocets - 1);
memset((unsigned char *)&addr->s_addr + (ocets - 1),
(256 - (1 << (32 - cidr) % 8)), 1);
}
return 0;
}
How can i compare ip and cidr range ?
If you have the IP address, the network address, and the netmask, then you can use a function like this: