0
A
回答
0
这应该工作,如果你已经知道IP地址作为unsigned long类型和数量:
bool cidr_overlap(uint32_t ip1, int n1,
uint32_t ip2, int n2)
{
return (ip1 <= (ip2 | ((1ul << (32-n2))-1)))
|| (ip2 <= (ip1 | ((1ul << (32-n1))-1)));
}
0
为了尽可能简单,基本上斜杠后的部分是要保留的位。因此,例如/ 24表示保留最重要的3个字节(24位)。因此,您可以通过掩盖它并检查相等性来查看地址是否适合。地址和面具本身就是最小的;如果你正在寻找最大你可以或者与面具的反面。
0
让我们假设你的IP地址和掩码如下,IP地址是整数形式。
例30分之3232235896==>(实际IP 192.168.1.120/30)
比方说,你需要找出(ip_one,mask_one)和(ip_two,mask_two)重叠
uint32_t mask_one_max = ((1ul << (32 - mask_one)) - 1);
uint32_t mask_one_min = ~mask_one_max;
uint32_t mask_two_max = ((1ul << (32 - mask_two)) - 1);
uint32_t mask_two_min = ~mask_two_max;
return (((ip_one & mask_one_min) <= (ip_two | mask_two_max)) && ((ip_two & mask_two_min) <= (ip_one | mask_one_max)));
如果发生重叠,这将返回true。
该解决方案建议基于寻找两个整数范围重叠的通用方法。正如您在解决方案中看到的,我首先将CIDR范围转换为整数范围并使用它们来查找重叠。
相关问题
- 1. Amazon VPC n^2 -4 IP地址? CIDR块
- 2. CIDR地址选择
- 3. 文本在Perl代码参数与CIDR IP地址
- 4. 检查IP地址列表是否在R的CIDR注释IP块列表中
- 5. Bash脚本批量转换IP地址到CIDR?
- 6. 计算两个IP地址之间的网络2非CIDR
- 7. 从CIDR范围检索最大/最小IP地址
- 8. 蟒蛇:ip地址包输出,CIDR网站
- 9. CIDR表示法中的IP地址是什么?
- 10. 如何使用IP上的IP和CIDR来计算网络和广播地址
- 11. IP到CIDR/IP范围
- 12. IP地址重新映射
- 13. IIS Url重写IP地址
- 14. 使用重叠的IO获取发件人的IP地址
- 15. 了解IP,CIDR以及IP如何映射到CIDR
- 16. IP地址在Swiftmailer
- 17. MAC地址和IP地址
- 18. 变换IP地址,IP地址范围(起始IP - 结束IP)
- 19. TSQL转换地址列表CIDR标记
- 20. 将IPv6地址匹配到CIDR子网
- 21. 从PHP Ipv6 CIDR获取IPv6地址数
- 22. 计算来自cidr的广播地址
- 23. 将CIDR地址转换成子网掩码和网络地址
- 24. 本地IP地址?
- 25. IP地址
- 26. IP地址
- 27. php:geting ip地址
- 28. cURL IP地址
- 29. IP地址
- 30. ip地址
你是否需要帮助解析给定的字符串,或者你是否已经完成了这些操作并需要位掩码帮助? –
我的问题是从IP地址,我作为无符号长到IP范围表示法的表示开始和结束在无符号长,所以我可以做我的范围检查。换句话说,如何从“10.2.3.98/24”到无符号长整数的低和高范围 – reza