13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 3*7dd7cddfSDavid du Colombier #include <ip.h> 43e12c5d1SDavid du Colombier 5*7dd7cddfSDavid du Colombier uchar classmask[4][16] = { 6*7dd7cddfSDavid du Colombier 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00, 7*7dd7cddfSDavid du Colombier 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00, 8*7dd7cddfSDavid du Colombier 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00, 9*7dd7cddfSDavid du Colombier 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00, 103e12c5d1SDavid du Colombier }; 113e12c5d1SDavid du Colombier 12*7dd7cddfSDavid du Colombier uchar* 13*7dd7cddfSDavid du Colombier defmask(uchar *ip) 14*7dd7cddfSDavid du Colombier { 15*7dd7cddfSDavid du Colombier return classmask[ip[IPv4off]>>6]; 16*7dd7cddfSDavid du Colombier } 17*7dd7cddfSDavid du Colombier 183e12c5d1SDavid du Colombier void 19*7dd7cddfSDavid du Colombier maskip(uchar *from, uchar *mask, uchar *to) 203e12c5d1SDavid du Colombier { 213e12c5d1SDavid du Colombier int i; 223e12c5d1SDavid du Colombier 23*7dd7cddfSDavid du Colombier for(i = 0; i < IPaddrlen; i++) 24*7dd7cddfSDavid du Colombier to[i] = from[i] & mask[i]; 253e12c5d1SDavid du Colombier } 26