(OK) Android 内核 中,判断 srcaddr, dstaddr 是否属于 某个网段 或 同一个 网段

来源:互联网 发布:什么是aop面向切面编程 编辑:程序博客网 时间:2024/06/14 01:35
  //struct sockaddr_in netaddr1, netaddr2;  //inet_aton("255.255.255.0", &netaddr1.sin_addr);  //inet_aton("112.26.0.0", &netaddr2.sin_addr);//== 判断 srcaddr, dstaddr 是否属于 某个网段 或 同一个 网段//== if (locaddr == 112.26.0.0/24) || ( locaddr/24 == remaddr/24 )//if (((srcaddr.sin_addr.s_addr & netaddr1.sin_addr.s_addr) == netaddr2.sin_addr.s_addr)//|| ((srcaddr.sin_addr.s_addr & netaddr1.sin_addr.s_addr)// == (dstaddr.sin_addr.s_addr & netaddr1.sin_addr.s_addr)))//== netaddr1.sin_addr.s_addr, 即, inet_aton(), 可以使用 inet_addr() 代替//if (((srcaddr.sin_addr.s_addr & inet_addr("255.255.255.0")) == inet_addr("112.26.0.0"))//|| ((srcaddr.sin_addr.s_addr & inet_addr("255.255.255.0"))// == (dstaddr.sin_addr.s_addr & inet_addr("255.255.255.0"))))//== Android 内核 中 没有 inet_aton(), inet_addr(), 直接 使用 IP 地址 的 十六进制表示//== "255.255.255.0" = 0x00ffffff, "112.26.0.0" = 0x00001a70if (((srcaddr.sin_addr.s_addr & 0x00ffffff) == 0x00001a70)|| ((srcaddr.sin_addr.s_addr & 0x00ffffff) == (dstaddr.sin_addr.s_addr & 0x00ffffff)))printf("yes\n");elseprintf("no\n");


阅读全文
0 0