判断ip是否为保留ip
来源:互联网 发布:盘古数据骗局 编辑:程序博客网 时间:2024/06/05 03:33
bool isReservedIp(const char *ip){ static const char *address_blocks[] = { "0.0.0.0/8", "10.0.0.0/8", "100.64.0.0/10", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.2.0/24", "192.88.99.0/24", "192.168.0.0/16", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "224.0.0.0/4", "240.0.0.0/4", "255.255.255.255/32" }; static const int blk_nums = sizeof(address_blocks) / sizeof(*address_blocks); static __thread char buf[40]; for (int i = 0; i < blk_nums; ++i) { strncpy(buf, address_blocks[i], sizeof(buf)); char *pos = strchr(buf, '/'); assert(pos != NULL); *pos = '\0'; uint32_t val = ntohl(inet_addr(buf)); // little endian uint32_t msk = atoi(pos + 1); uint32_t offset = 32 - msk; uint32_t tar = ntohl(inet_addr(ip)); if ((val >> offset) == (tar >> offset)) return true; } return false;}bool isReservedIp(uint32_t ip) // little endian{ static const char *address_blocks[] = { "0.0.0.0/8", "10.0.0.0/8", "100.64.0.0/10", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.2.0/24", "192.88.99.0/24", "192.168.0.0/16", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "224.0.0.0/4", "240.0.0.0/4", "255.255.255.255/32" }; static const int blk_nums = sizeof(address_blocks) / sizeof(*address_blocks); static __thread char buf[40]; for (int i = 0; i < blk_nums; ++i) { strncpy(buf, address_blocks[i], sizeof(buf)); char *pos = strchr(buf, '/'); assert(pos != NULL); *pos = '\0'; uint32_t val = ntohl(inet_addr(buf)); // little endian uint32_t msk = atoi(pos + 1); uint32_t offset = 32 - msk; if ((val >> offset) == (ip >> offset)) return true; } return false;}
阅读全文
0 0
- C++判断ip是否为保留ip
- 判断ip是否为保留ip
- 判断IP是否为内网IP
- 判断是否为IP地址
- 判断是否为IP地址
- 判断是否为IP的正则表达式
- 判断字符串是否为IP地址。
- Java 判断 String 是否为合法IP
- JS 判断是否为IP格式
- c# 判断字符串是否为IP地址
- 判断字符串是否为IP地址
- 判断字符串是否为IP地址
- 判断IP 字符串是否为有效地址
- 判断字符串是否为合法ip
- 判断IP地址是否为公有地址
- Cpp判断是否为局域网IP
- 判断IP地址是否为内网IP地址
- 判断IP地址是否为内网IP地址
- MySQL Trigger(触发器)简例
- tensorflow笔记 :常用函数说明
- Eclipse 使用Egit回退版本
- HashMap工作原理
- 云服务器启动tomcat很慢
- 判断ip是否为保留ip
- 《计算机操作系统原理-linux实例分析》_肖竞华_第一章_知识点
- spark是什么,就看看
- 枚举
- [Vue.js破浪]——单文件组件(一)
- eclipse里安装SVN插件
- win10 ubuntu 16.04 双系统安装
- 515. Find Largest Value in Each Tree Row(Java)
- com/fasterxml/classmate/TypeResolver