rendered paste bodyint match_cidr(char *addr, char *cidr){ char ip[16]; char mask[16]; unsigned int i, j; long mask1; long mask2; struct in_addr inp1,inp2; memset(ip,0,sizeof(ip)); memset(mask,0,sizeof(mask)); memset(&inp1,0,sizeof(inp1)); memset(&inp2,0,sizeof(inp2)); for(i=0;i<strlen(cidr);i++) { if(cidr[i]=='/') break; ip[i] = cidr[i]; } for(j=i+1;j<strlen(cidr);j++) mask[j-i-1] = cidr[j]; mask1 = atol(mask); mask2 = 0xffffffff << (32 - mask1); inet_aton(addr, (struct in_addr *)&inp1); inet_aton(ip, (struct in_addr *)&inp2); return((inp1.s_addr & mask2) == (inp2.s_addr & mask2));}