xref: /plan9/sys/src/libip/classmask.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
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