All pastes #494585 Raw Edit

Mine

public c v1 · immutable
·published 2007-05-18 10:08 UTC
rendered paste body
int 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));}