classmask.c 622 B

12345678910111213141516171819202122232425
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <ip.h>
  4. uchar classmask[4][16] = {
  5. 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,
  6. 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,
  7. 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,
  8. 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,
  9. };
  10. uchar*
  11. defmask(uchar *ip)
  12. {
  13. return classmask[ip[IPv4off]>>6];
  14. }
  15. void
  16. maskip(uchar *from, uchar *mask, uchar *to)
  17. {
  18. int i;
  19. for(i = 0; i < IPaddrlen; i++)
  20. to[i] = from[i] & mask[i];
  21. }