ninh.inc 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. Const
  2. IPPROTO_IP = 0;
  3. IPPROTO_HOPOPTS = 0;
  4. IPPROTO_ICMP = 1;
  5. IPPROTO_IGMP = 2;
  6. IPPROTO_IPIP = 4;
  7. IPPROTO_TCP = 6;
  8. IPPROTO_EGP = 8;
  9. IPPROTO_PUP = 12;
  10. IPPROTO_UDP = 17;
  11. IPPROTO_IDP = 22;
  12. IPPROTO_TP = 29;
  13. IPPROTO_IPV6 = 41;
  14. IPPROTO_ROUTING = 43;
  15. IPPROTO_FRAGMENT = 44;
  16. IPPROTO_RSVP = 46;
  17. IPPROTO_GRE = 47;
  18. IPPROTO_ESP = 50;
  19. IPPROTO_AH = 51;
  20. IPPROTO_ICMPV6 = 58;
  21. IPPROTO_NONE = 59;
  22. IPPROTO_DSTOPTS = 60;
  23. IPPROTO_MTP = 92;
  24. IPPROTO_ENCAP = 98;
  25. IPPROTO_PIM = 103;
  26. IPPROTO_COMP = 108;
  27. IPPROTO_RAW = 255;
  28. IPPROTO_MAX = 256;
  29. type
  30. Pin_port_t = ^in_port_t;
  31. in_port_t = uint16_t;
  32. Const
  33. IPPORT_ECHO = 7;
  34. IPPORT_DISCARD = 9;
  35. IPPORT_SYSTAT = 11;
  36. IPPORT_DAYTIME = 13;
  37. IPPORT_NETSTAT = 15;
  38. IPPORT_FTP = 21;
  39. IPPORT_TELNET = 23;
  40. IPPORT_SMTP = 25;
  41. IPPORT_TIMESERVER = 37;
  42. IPPORT_NAMESERVER = 42;
  43. IPPORT_WHOIS = 43;
  44. IPPORT_MTP = 57;
  45. IPPORT_TFTP = 69;
  46. IPPORT_RJE = 77;
  47. IPPORT_FINGER = 79;
  48. IPPORT_TTYLINK = 87;
  49. IPPORT_SUPDUP = 95;
  50. IPPORT_EXECSERVER = 512;
  51. IPPORT_LOGINSERVER = 513;
  52. IPPORT_CMDSERVER = 514;
  53. IPPORT_EFSSERVER = 520;
  54. IPPORT_BIFFUDP = 512;
  55. IPPORT_WHOSERVER = 513;
  56. IPPORT_ROUTESERVER = 520;
  57. IPPORT_RESERVED = 1024;
  58. IPPORT_USERRESERVED = 5000;
  59. type
  60. Pin_addr_t = ^in_addr_t;
  61. in_addr_t = uint32_t;
  62. Pin_addr = ^in_addr;
  63. {
  64. in_addr = record
  65. s_addr : in_addr_t;
  66. end;
  67. }
  68. const
  69. IN_CLASSA_NET = $ff000000;
  70. IN_CLASSA_NSHIFT = 24;
  71. IN_CLASSA_HOST = $ffffffff and ( not (IN_CLASSA_NET));
  72. IN_CLASSA_MAX = 128;
  73. const
  74. IN_CLASSB_NET = $ffff0000;
  75. IN_CLASSB_NSHIFT = 16;
  76. IN_CLASSB_HOST = $ffffffff and ( not (IN_CLASSB_NET));
  77. IN_CLASSB_MAX = 65536;
  78. const
  79. IN_CLASSC_NET = $ffffff00;
  80. IN_CLASSC_NSHIFT = 8;
  81. IN_CLASSC_HOST = $ffffffff and ( not (IN_CLASSC_NET));
  82. Function IN_CLASSA(a: in_addr_t): Boolean;
  83. Function IN_CLASSB(a: in_addr_t): Boolean;
  84. Function IN_CLASSC(a: in_addr_t): Boolean;
  85. Function IN_CLASSD(a: in_addr_t): Boolean;
  86. Function IN_MULTICAST(a: in_addr_t): Boolean;
  87. Function IN_EXPERIMENTAL(a: in_addr_t): Boolean;
  88. Function IN_BADCLASS(a: in_addr_t): Boolean;
  89. const
  90. IN_LOOPBACKNET = 127;
  91. INADDR_LOOPBACK = in_addr_t($7f000001);
  92. INADDR_UNSPEC_GROUP = in_addr_t($e0000000);
  93. INADDR_ALLHOSTS_GROUP = in_addr_t($e0000001);
  94. INADDR_ALLRTRS_GROUP = in_addr_t($0000002);
  95. INADDR_MAX_LOCAL_GROUP = in_addr_t($e00000ff);
  96. type
  97. Pin6_addr = ^in6_addr;
  98. in6_addr = record
  99. case longint of
  100. 0 : ( in6_u : record
  101. case longint of
  102. 0 : ( u6_addr8 : array[0..15] of uint8_t );
  103. 1 : ( u6_addr16 : array[0..7] of uint16_t );
  104. 2 : ( u6_addr32 : array[0..3] of uint32_t );
  105. end;);
  106. 1 : (case Integer of
  107. 0: (s6_addr: packed array [0..16-1] of __uint8_t);
  108. 1: (s6_addr16: packed array [0..8-1] of uint16_t);
  109. 2: (s6_addr32: packed array [0..4-1] of uint32_t);
  110. );
  111. end;
  112. Const
  113. IN6ADDR_ANY_INIT : in6_addr = ( in6_u : (U6_addr8 : (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 )) );
  114. IN6ADDR_LOOPBACK_INIT : in6_addr = ( in6_u : (U6_addr8 : ( 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 )));
  115. const
  116. INET_ADDRSTRLEN = 16;
  117. INET6_ADDRSTRLEN = 46;
  118. Type
  119. Psockaddr_in6 = ^sockaddr_in6;
  120. sockaddr_in6 = record
  121. sin6_family: sa_family_t;
  122. sin6_port : in_port_t;
  123. sin6_flowinfo : uint32_t;
  124. sin6_addr : in6_addr;
  125. sin6_scope_id : uint32_t;
  126. end;
  127. Pipv6_mreq = ^ipv6_mreq;
  128. ipv6_mreq = record
  129. ipv6mr_multiaddr : in6_addr;
  130. ipv6mr_interface : dword;
  131. end;
  132. type
  133. in6_pktinfo = {packed} record
  134. ipi6_addr: in6_addr; { src/dst IPv6 address }
  135. ipi6_ifindex: Cardinal; { send/recv interface index }
  136. end;
  137. Function IN6_IS_ADDR_UNSPECIFIED(const a: in6_addr): Boolean;
  138. Function IN6_IS_ADDR_LOOPBACK(const a: in6_addr): Boolean;
  139. Function IN6_IS_ADDR_MULTICAST(const a: in6_addr): Boolean;
  140. Function IN6_IS_ADDR_LINKLOCAL(const a: in6_addr): Boolean;
  141. Function IN6_IS_ADDR_SITELOCAL(const a: in6_addr): Boolean;
  142. Function IN6_IS_ADDR_V4MAPPED(const a: in6_addr): Boolean;
  143. Function IN6_IS_ADDR_V4COMPAT(const a: in6_addr): Boolean;
  144. Function IN6_ARE_ADDR_EQUAL(const a, b: in6_addr): Boolean;
  145. Function IN6_IS_ADDR_MC_NODELOCAL(const a: in6_addr): Boolean;
  146. Function IN6_IS_ADDR_MC_LINKLOCAL(const a: in6_addr): Boolean;
  147. Function IN6_IS_ADDR_MC_SITELOCAL(const a: in6_addr): Boolean;
  148. Function IN6_IS_ADDR_MC_ORGLOCAL(const a: in6_addr): Boolean;
  149. Function IN6_IS_ADDR_MC_GLOBAL(const a: in6_addr): Boolean;
  150. function ntohl(__netlong:uint32_t):uint32_t;cdecl;external clib name 'ntohl';
  151. function ntohs(__netshort:uint16_t):uint16_t;cdecl;external clib name 'ntohs';
  152. function htonl(__hostlong:uint32_t):uint32_t;cdecl;external clib name 'htonl';
  153. function htons(__hostshort:uint16_t):uint16_t;cdecl;external clib name 'htons';
  154. function bindresvport6(__sockfd:longint; __sock_in:Psockaddr_in6):longint;cdecl;external clib name 'bindresvport6';
  155. function bindresvport(__sockfd:longint; __sock_in:Psockaddr_in):longint;cdecl;external clib name 'bindresvport';