nicmp6h.inc 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. const
  2. ICMP6_FILTER = 1;
  3. ICMP6_FILTER_BLOCK = 1;
  4. ICMP6_FILTER_PASS = 2;
  5. ICMP6_FILTER_BLOCKOTHERS = 3;
  6. ICMP6_FILTER_PASSONLY = 4;
  7. type
  8. Picmp6_filter = ^_icmp6_filter;
  9. _icmp6_filter = record
  10. data : array[0..7] of uint32_t;
  11. end;
  12. TICMP6_Filter = _icmp6_filter;
  13. Picmp6_hdr = ^icmp6_hdr;
  14. icmp6_hdr = record
  15. icmp6_type : uint8_t;
  16. icmp6_code : uint8_t;
  17. icmp6_cksum : uint16_t;
  18. icmp6_dataun : record
  19. case longint of
  20. 0 : ( icmp6_un_data32 : array[0..0] of uint32_t );
  21. 1 : ( icmp6_un_data16 : array[0..1] of uint16_t );
  22. 2 : ( icmp6_un_data8 : array[0..3] of uint8_t );
  23. end;
  24. end;
  25. const
  26. ICMP6_DST_UNREACH = 1;
  27. ICMP6_PACKET_TOO_BIG = 2;
  28. ICMP6_TIME_EXCEEDED = 3;
  29. ICMP6_PARAM_PROB = 4;
  30. ICMP6_INFOMSG_MASK = $80;
  31. ICMP6_ECHO_REQUEST = 128;
  32. ICMP6_ECHO_REPLY = 129;
  33. ICMP6_MEMBERSHIP_QUERY = 130;
  34. ICMP6_MEMBERSHIP_REPORT = 131;
  35. ICMP6_MEMBERSHIP_REDUCTION = 132;
  36. ICMP6_DST_UNREACH_NOROUTE = 0;
  37. ICMP6_DST_UNREACH_ADMIN = 1;
  38. ICMP6_DST_UNREACH_NOTNEIGHBOR = 2;
  39. ICMP6_DST_UNREACH_ADDR = 3;
  40. ICMP6_DST_UNREACH_NOPORT = 4;
  41. ICMP6_TIME_EXCEED_TRANSIT = 0;
  42. ICMP6_TIME_EXCEED_REASSEMBLY = 1;
  43. ICMP6_PARAMPROB_HEADER = 0;
  44. ICMP6_PARAMPROB_NEXTHEADER = 1;
  45. ICMP6_PARAMPROB_OPTION = 2;
  46. function ICMP6_FILTER_WILLPASS(__type: Integer; const filterp: TICMP6_Filter): Boolean;
  47. function ICMP6_FILTER_WILLBLOCK(__type: Integer; const filterp: TICMP6_Filter): Boolean;
  48. procedure ICMP6_FILTER_SETPASS(__type: Integer; var filterp: TICMP6_Filter);
  49. procedure ICMP6_FILTER_SETBLOCK(__type: Integer; var filterp: TICMP6_Filter);
  50. procedure ICMP6_FILTER_SETPASSALL(var filterp: TICMP6_Filter);
  51. procedure ICMP6_FILTER_SETBLOCKALL(var filterp: TICMP6_Filter);
  52. const
  53. ND_ROUTER_SOLICIT = 133;
  54. ND_ROUTER_ADVERT = 134;
  55. ND_NEIGHBOR_SOLICIT = 135;
  56. ND_NEIGHBOR_ADVERT = 136;
  57. ND_REDIRECT = 137;
  58. type
  59. Pnd_router_solicit = ^_nd_router_solicit;
  60. _nd_router_solicit = record
  61. nd_rs_hdr : icmp6_hdr;
  62. end;
  63. type
  64. Pnd_router_advert = ^_nd_router_advert;
  65. _nd_router_advert = record
  66. nd_ra_hdr : icmp6_hdr;
  67. nd_ra_reachable : uint32_t;
  68. nd_ra_retransmit : uint32_t;
  69. end;
  70. const
  71. ND_RA_FLAG_MANAGED = $80;
  72. ND_RA_FLAG_OTHER = $40;
  73. ND_RA_FLAG_HOME_AGENT = $20;
  74. type
  75. Pnd_neighbor_solicit = ^_nd_neighbor_solicit;
  76. _nd_neighbor_solicit = record
  77. nd_ns_hdr : icmp6_hdr;
  78. nd_ns_target : in6_addr;
  79. end;
  80. type
  81. Pnd_neighbor_advert = ^_nd_neighbor_advert;
  82. _nd_neighbor_advert = record
  83. nd_na_hdr : icmp6_hdr;
  84. nd_na_target : in6_addr;
  85. end;
  86. const
  87. ND_NA_FLAG_ROUTER = $00000080;
  88. ND_NA_FLAG_SOLICITED = $00000040;
  89. ND_NA_FLAG_OVERRIDE = $00000020;
  90. type
  91. Pnd_redirect = ^_nd_redirect;
  92. _nd_redirect = record
  93. nd_rd_hdr : icmp6_hdr;
  94. nd_rd_target : in6_addr;
  95. nd_rd_dst : in6_addr;
  96. end;
  97. type
  98. Pnd_opt_hdr = ^nd_opt_hdr;
  99. nd_opt_hdr = record
  100. nd_opt_type : uint8_t;
  101. nd_opt_len : uint8_t;
  102. end;
  103. const
  104. ND_OPT_SOURCE_LINKADDR = 1;
  105. ND_OPT_TARGET_LINKADDR = 2;
  106. ND_OPT_PREFIX_INFORMATION = 3;
  107. ND_OPT_REDIRECTED_HEADER = 4;
  108. ND_OPT_MTU = 5;
  109. ND_OPT_RTR_ADV_INTERVAL = 7;
  110. ND_OPT_HOME_AGENT_INFO = 8;
  111. type
  112. Pnd_opt_prefix_info = ^nd_opt_prefix_info;
  113. nd_opt_prefix_info = record
  114. nd_opt_pi_type : uint8_t;
  115. nd_opt_pi_len : uint8_t;
  116. nd_opt_pi_prefix_len : uint8_t;
  117. nd_opt_pi_flags_reserved : uint8_t;
  118. nd_opt_pi_valid_time : uint32_t;
  119. nd_opt_pi_preferred_time : uint32_t;
  120. nd_opt_pi_reserved2 : uint32_t;
  121. nd_opt_pi_prefix : in6_addr;
  122. end;
  123. const
  124. ND_OPT_PI_FLAG_ONLINK = $80;
  125. ND_OPT_PI_FLAG_AUTO = $40;
  126. ND_OPT_PI_FLAG_RADDR = $20;
  127. type
  128. Pnd_opt_rd_hdr = ^nd_opt_rd_hdr;
  129. nd_opt_rd_hdr = record
  130. nd_opt_rh_type : uint8_t;
  131. nd_opt_rh_len : uint8_t;
  132. nd_opt_rh_reserved1 : uint16_t;
  133. nd_opt_rh_reserved2 : uint32_t;
  134. end;
  135. Pnd_opt_mtu = ^_nd_opt_mtu;
  136. _nd_opt_mtu = record
  137. nd_opt_mtu_type : uint8_t;
  138. nd_opt_mtu_len : uint8_t;
  139. nd_opt_mtu_reserved : uint16_t;
  140. nd_opt_mtu_mtu : uint32_t;
  141. end;
  142. Pnd_opt_adv_interval = ^_nd_opt_adv_interval;
  143. _nd_opt_adv_interval = record
  144. nd_opt_adv_interval_type : uint8_t;
  145. nd_opt_adv_interval_len : uint8_t;
  146. nd_opt_adv_interval_reserved : uint16_t;
  147. nd_opt_adv_interval_ival : uint32_t;
  148. end;
  149. Pnd_opt_home_agent_info = ^_nd_opt_home_agent_info;
  150. _nd_opt_home_agent_info = record
  151. nd_opt_home_agent_info_type : uint8_t;
  152. nd_opt_home_agent_info_len : uint8_t;
  153. nd_opt_home_agent_info_reserved : uint16_t;
  154. nd_opt_home_agent_info_preference : int16_t;
  155. nd_opt_home_agent_info_lifetime : uint16_t;
  156. end;
  157. { ---------------------------------------------------------------------
  158. Borland compatibility types
  159. ---------------------------------------------------------------------}
  160. // Type