ip.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma src "/sys/src/libip"
  2. #pragma lib "libip.a"
  3. enum
  4. {
  5. IPaddrlen= 16,
  6. IPv4addrlen= 4,
  7. IPv4off= 12,
  8. IPllen= 4,
  9. };
  10. /*
  11. * for reading /net/ipifc
  12. */
  13. typedef struct Ipifc Ipifc;
  14. typedef struct Ipifcs Ipifcs;
  15. struct Ipifc
  16. {
  17. char dev[64];
  18. uchar ip[IPaddrlen];
  19. uchar mask[IPaddrlen];
  20. uchar net[IPaddrlen]; /* ip & mask */
  21. Ipifc *next;
  22. };
  23. struct Ipifcs
  24. {
  25. Ipifc *first;
  26. Ipifc *last;
  27. };
  28. /*
  29. * user level udp headers
  30. */
  31. enum
  32. {
  33. Udphdrsize= 36, /* size of a Udphdr */
  34. };
  35. typedef struct Udphdr Udphdr;
  36. struct Udphdr
  37. {
  38. uchar raddr[IPaddrlen]; /* remote address and port */
  39. uchar laddr[IPaddrlen]; /* local address and port */
  40. uchar rport[2];
  41. uchar lport[2];
  42. };
  43. uchar* defmask(uchar*);
  44. void maskip(uchar*, uchar*, uchar*);
  45. int eipconv(va_list*, Fconv*);
  46. ulong parseip(uchar*, char*);
  47. ulong parseipmask(uchar*, char*);
  48. int parseether(uchar*, char*);
  49. int myipaddr(uchar*, char*);
  50. int myetheraddr(uchar*, char*);
  51. void readipifc(char*, Ipifcs*);
  52. void hnputl(void*, uint);
  53. void hnputs(void*, ushort);
  54. uint nhgetl(void*);
  55. ushort nhgets(void*);
  56. #define ipcmp(x, y) memcmp(x, y, IPaddrlen)
  57. #define ipmove(x, y) memmove(x, y, IPaddrlen)
  58. extern uchar IPv4bcast[IPaddrlen];
  59. extern uchar IPv4bcastobs[IPaddrlen];
  60. extern uchar IPv4allsys[IPaddrlen];
  61. extern uchar IPv4allrouter[IPaddrlen];
  62. extern uchar IPnoaddr[IPaddrlen];
  63. extern uchar v4prefix[IPaddrlen];
  64. extern uchar IPallbits[IPaddrlen];
  65. #define CLASS(p) ((*(uchar*)(p))>>6)