C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了IP cidr匹配功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要找出来,是ip属于ip mask.
例如:

ip = 192.168.0.1@H_460_5@mask = 192.168.0.1/24.

我找到了将ip转换为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;
}

我如何比较ip和cidr范围?

解决方法

如果您有IP地址,网络地址和网络掩码,那么您可以使用如下函数

bool
is_in_net (
        const struct in_addr*   addr,/* host byte order */
        const struct in_addr*   netaddr,const struct in_addr*   netmask
        )
{
   if ((addr->s_addr & netmask->s_addr) == (netaddr->s_addr & netmask->s_addr))
      return true;
   return false;
}

大佬总结

以上是大佬教程为你收集整理的IP cidr匹配功能全部内容,希望文章能够帮你解决IP cidr匹配功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。