@netkitty/codec 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +352 -0
  4. package/README.zh-CN.md +342 -0
  5. package/dist/Codec.d.ts +133 -0
  6. package/dist/Codec.js +632 -0
  7. package/dist/PacketHeaders.d.ts +189 -0
  8. package/dist/PacketHeaders.js +384 -0
  9. package/dist/abstracts/BaseHeader.d.ts +325 -0
  10. package/dist/abstracts/BaseHeader.js +734 -0
  11. package/dist/errors/CodecSchemaValidateError.d.ts +4 -0
  12. package/dist/errors/CodecSchemaValidateError.js +11 -0
  13. package/dist/headers/ADSAMS.d.ts +33 -0
  14. package/dist/headers/ADSAMS.js +208 -0
  15. package/dist/headers/AH.d.ts +28 -0
  16. package/dist/headers/AH.js +137 -0
  17. package/dist/headers/AMQP.d.ts +31 -0
  18. package/dist/headers/AMQP.js +316 -0
  19. package/dist/headers/ARP.d.ts +26 -0
  20. package/dist/headers/ARP.js +243 -0
  21. package/dist/headers/BACnetIP.d.ts +27 -0
  22. package/dist/headers/BACnetIP.js +97 -0
  23. package/dist/headers/BFD.d.ts +28 -0
  24. package/dist/headers/BFD.js +155 -0
  25. package/dist/headers/BGP.d.ts +27 -0
  26. package/dist/headers/BGP.js +111 -0
  27. package/dist/headers/BSAPIP.d.ts +33 -0
  28. package/dist/headers/BSAPIP.js +78 -0
  29. package/dist/headers/Babel.d.ts +32 -0
  30. package/dist/headers/Babel.js +224 -0
  31. package/dist/headers/BitTorrent.d.ts +28 -0
  32. package/dist/headers/BitTorrent.js +72 -0
  33. package/dist/headers/C37118.d.ts +26 -0
  34. package/dist/headers/C37118.js +147 -0
  35. package/dist/headers/CAPWAP.d.ts +38 -0
  36. package/dist/headers/CAPWAP.js +275 -0
  37. package/dist/headers/CDP.d.ts +25 -0
  38. package/dist/headers/CDP.js +117 -0
  39. package/dist/headers/CMS.d.ts +33 -0
  40. package/dist/headers/CMS.js +238 -0
  41. package/dist/headers/COTP.d.ts +30 -0
  42. package/dist/headers/COTP.js +193 -0
  43. package/dist/headers/CassandraCQL.d.ts +28 -0
  44. package/dist/headers/CassandraCQL.js +117 -0
  45. package/dist/headers/CoAP.d.ts +29 -0
  46. package/dist/headers/CoAP.js +140 -0
  47. package/dist/headers/Codesys.d.ts +32 -0
  48. package/dist/headers/Codesys.js +119 -0
  49. package/dist/headers/Collectd.d.ts +29 -0
  50. package/dist/headers/Collectd.js +154 -0
  51. package/dist/headers/DCCP.d.ts +30 -0
  52. package/dist/headers/DCCP.js +204 -0
  53. package/dist/headers/DHCP.d.ts +26 -0
  54. package/dist/headers/DHCP.js +148 -0
  55. package/dist/headers/DHCPFailover.d.ts +30 -0
  56. package/dist/headers/DHCPFailover.js +104 -0
  57. package/dist/headers/DHCPv6.d.ts +25 -0
  58. package/dist/headers/DHCPv6.js +145 -0
  59. package/dist/headers/DNP3.d.ts +27 -0
  60. package/dist/headers/DNP3.js +150 -0
  61. package/dist/headers/DNS.d.ts +55 -0
  62. package/dist/headers/DNS.js +309 -0
  63. package/dist/headers/DTLS.d.ts +33 -0
  64. package/dist/headers/DTLS.js +142 -0
  65. package/dist/headers/Diameter.d.ts +34 -0
  66. package/dist/headers/Diameter.js +229 -0
  67. package/dist/headers/EAPOL.d.ts +32 -0
  68. package/dist/headers/EAPOL.js +135 -0
  69. package/dist/headers/EIGRP.d.ts +28 -0
  70. package/dist/headers/EIGRP.js +165 -0
  71. package/dist/headers/ENIP.d.ts +31 -0
  72. package/dist/headers/ENIP.js +164 -0
  73. package/dist/headers/ESP.d.ts +27 -0
  74. package/dist/headers/ESP.js +140 -0
  75. package/dist/headers/Elasticsearch.d.ts +30 -0
  76. package/dist/headers/Elasticsearch.js +125 -0
  77. package/dist/headers/EtherCAT.d.ts +35 -0
  78. package/dist/headers/EtherCAT.js +150 -0
  79. package/dist/headers/EthernetII.d.ts +28 -0
  80. package/dist/headers/EthernetII.js +117 -0
  81. package/dist/headers/FCoE.d.ts +38 -0
  82. package/dist/headers/FCoE.js +210 -0
  83. package/dist/headers/FTP.d.ts +34 -0
  84. package/dist/headers/FTP.js +158 -0
  85. package/dist/headers/Finger.d.ts +41 -0
  86. package/dist/headers/Finger.js +135 -0
  87. package/dist/headers/FoundationFieldbusHSE.d.ts +43 -0
  88. package/dist/headers/FoundationFieldbusHSE.js +163 -0
  89. package/dist/headers/GELF.d.ts +35 -0
  90. package/dist/headers/GELF.js +261 -0
  91. package/dist/headers/GENEVE.d.ts +26 -0
  92. package/dist/headers/GENEVE.js +209 -0
  93. package/dist/headers/GESRTP.d.ts +32 -0
  94. package/dist/headers/GESRTP.js +141 -0
  95. package/dist/headers/GLBP.d.ts +29 -0
  96. package/dist/headers/GLBP.js +159 -0
  97. package/dist/headers/GRE.d.ts +27 -0
  98. package/dist/headers/GRE.js +181 -0
  99. package/dist/headers/GTPU.d.ts +25 -0
  100. package/dist/headers/GTPU.js +203 -0
  101. package/dist/headers/GTPv2C.d.ts +30 -0
  102. package/dist/headers/GTPv2C.js +281 -0
  103. package/dist/headers/GitProtocol.d.ts +34 -0
  104. package/dist/headers/GitProtocol.js +141 -0
  105. package/dist/headers/Goose.d.ts +115 -0
  106. package/dist/headers/Goose.js +1067 -0
  107. package/dist/headers/Gopher.d.ts +43 -0
  108. package/dist/headers/Gopher.js +182 -0
  109. package/dist/headers/HARTIP.d.ts +30 -0
  110. package/dist/headers/HARTIP.js +145 -0
  111. package/dist/headers/HSR.d.ts +27 -0
  112. package/dist/headers/HSR.js +105 -0
  113. package/dist/headers/HSRP.d.ts +26 -0
  114. package/dist/headers/HSRP.js +173 -0
  115. package/dist/headers/HTTP.d.ts +32 -0
  116. package/dist/headers/HTTP.js +153 -0
  117. package/dist/headers/HTTP2.d.ts +34 -0
  118. package/dist/headers/HTTP2.js +190 -0
  119. package/dist/headers/IAX2.d.ts +33 -0
  120. package/dist/headers/IAX2.js +274 -0
  121. package/dist/headers/ICMP.d.ts +15 -0
  122. package/dist/headers/ICMP.js +148 -0
  123. package/dist/headers/ICMPv6.d.ts +15 -0
  124. package/dist/headers/ICMPv6.js +129 -0
  125. package/dist/headers/IEC104_I_Frame.d.ts +23 -0
  126. package/dist/headers/IEC104_I_Frame.js +6489 -0
  127. package/dist/headers/IEC104_S_Frame.d.ts +26 -0
  128. package/dist/headers/IEC104_S_Frame.js +135 -0
  129. package/dist/headers/IEC104_U_Frame.d.ts +27 -0
  130. package/dist/headers/IEC104_U_Frame.js +176 -0
  131. package/dist/headers/IEC61850SampledValues.d.ts +20 -0
  132. package/dist/headers/IEC61850SampledValues.js +420 -0
  133. package/dist/headers/IGMP.d.ts +31 -0
  134. package/dist/headers/IGMP.js +274 -0
  135. package/dist/headers/IMAP.d.ts +32 -0
  136. package/dist/headers/IMAP.js +185 -0
  137. package/dist/headers/IPFIX.d.ts +29 -0
  138. package/dist/headers/IPFIX.js +156 -0
  139. package/dist/headers/IPv4.d.ts +20 -0
  140. package/dist/headers/IPv4.js +370 -0
  141. package/dist/headers/IPv6.d.ts +29 -0
  142. package/dist/headers/IPv6.js +209 -0
  143. package/dist/headers/IPv6HopByHopOptions.d.ts +81 -0
  144. package/dist/headers/IPv6HopByHopOptions.js +495 -0
  145. package/dist/headers/IRC.d.ts +34 -0
  146. package/dist/headers/IRC.js +175 -0
  147. package/dist/headers/ISAKMP.d.ts +29 -0
  148. package/dist/headers/ISAKMP.js +197 -0
  149. package/dist/headers/ISCSI.d.ts +39 -0
  150. package/dist/headers/ISCSI.js +289 -0
  151. package/dist/headers/ISIS.d.ts +25 -0
  152. package/dist/headers/ISIS.js +79 -0
  153. package/dist/headers/ISOSession.d.ts +27 -0
  154. package/dist/headers/ISOSession.js +343 -0
  155. package/dist/headers/Ident.d.ts +42 -0
  156. package/dist/headers/Ident.js +184 -0
  157. package/dist/headers/KNXnetIP.d.ts +30 -0
  158. package/dist/headers/KNXnetIP.js +135 -0
  159. package/dist/headers/Kafka.d.ts +35 -0
  160. package/dist/headers/Kafka.js +128 -0
  161. package/dist/headers/Kerberos.d.ts +30 -0
  162. package/dist/headers/Kerberos.js +217 -0
  163. package/dist/headers/L2TP.d.ts +26 -0
  164. package/dist/headers/L2TP.js +297 -0
  165. package/dist/headers/LACP.d.ts +31 -0
  166. package/dist/headers/LACP.js +151 -0
  167. package/dist/headers/LDAP.d.ts +31 -0
  168. package/dist/headers/LDAP.js +226 -0
  169. package/dist/headers/LDP.d.ts +31 -0
  170. package/dist/headers/LDP.js +138 -0
  171. package/dist/headers/LISP.d.ts +30 -0
  172. package/dist/headers/LISP.js +103 -0
  173. package/dist/headers/LLC.d.ts +27 -0
  174. package/dist/headers/LLC.js +81 -0
  175. package/dist/headers/LLDP.d.ts +26 -0
  176. package/dist/headers/LLDP.js +126 -0
  177. package/dist/headers/LLMNR.d.ts +23 -0
  178. package/dist/headers/LLMNR.js +40 -0
  179. package/dist/headers/LPD.d.ts +31 -0
  180. package/dist/headers/LPD.js +159 -0
  181. package/dist/headers/MACsec.d.ts +34 -0
  182. package/dist/headers/MACsec.js +178 -0
  183. package/dist/headers/MDNS.d.ts +26 -0
  184. package/dist/headers/MDNS.js +45 -0
  185. package/dist/headers/MGCP.d.ts +30 -0
  186. package/dist/headers/MGCP.js +155 -0
  187. package/dist/headers/MMS.d.ts +29 -0
  188. package/dist/headers/MMS.js +243 -0
  189. package/dist/headers/MPLS.d.ts +31 -0
  190. package/dist/headers/MPLS.js +145 -0
  191. package/dist/headers/MQTT.d.ts +30 -0
  192. package/dist/headers/MQTT.js +173 -0
  193. package/dist/headers/MQTTSN.d.ts +34 -0
  194. package/dist/headers/MQTTSN.js +177 -0
  195. package/dist/headers/MarkerProtocol.d.ts +32 -0
  196. package/dist/headers/MarkerProtocol.js +153 -0
  197. package/dist/headers/Megaco.d.ts +32 -0
  198. package/dist/headers/Megaco.js +144 -0
  199. package/dist/headers/Memcached.d.ts +44 -0
  200. package/dist/headers/Memcached.js +285 -0
  201. package/dist/headers/ModbusTCP.d.ts +25 -0
  202. package/dist/headers/ModbusTCP.js +99 -0
  203. package/dist/headers/ModbusUDP.d.ts +26 -0
  204. package/dist/headers/ModbusUDP.js +100 -0
  205. package/dist/headers/MongoDB.d.ts +33 -0
  206. package/dist/headers/MongoDB.js +143 -0
  207. package/dist/headers/MySQL.d.ts +30 -0
  208. package/dist/headers/MySQL.js +114 -0
  209. package/dist/headers/NATS.d.ts +29 -0
  210. package/dist/headers/NATS.js +135 -0
  211. package/dist/headers/NBDS.d.ts +34 -0
  212. package/dist/headers/NBDS.js +176 -0
  213. package/dist/headers/NBNS.d.ts +34 -0
  214. package/dist/headers/NBNS.js +78 -0
  215. package/dist/headers/NBSS.d.ts +36 -0
  216. package/dist/headers/NBSS.js +137 -0
  217. package/dist/headers/NFS.d.ts +36 -0
  218. package/dist/headers/NFS.js +273 -0
  219. package/dist/headers/NHRP.d.ts +32 -0
  220. package/dist/headers/NHRP.js +154 -0
  221. package/dist/headers/NNTP.d.ts +35 -0
  222. package/dist/headers/NNTP.js +162 -0
  223. package/dist/headers/NTP.d.ts +18 -0
  224. package/dist/headers/NTP.js +73 -0
  225. package/dist/headers/NetFlowV5.d.ts +28 -0
  226. package/dist/headers/NetFlowV5.js +205 -0
  227. package/dist/headers/OLSR.d.ts +31 -0
  228. package/dist/headers/OLSR.js +213 -0
  229. package/dist/headers/OPCUA.d.ts +33 -0
  230. package/dist/headers/OPCUA.js +165 -0
  231. package/dist/headers/OPCUAPubSub.d.ts +33 -0
  232. package/dist/headers/OPCUAPubSub.js +144 -0
  233. package/dist/headers/OSPF.d.ts +31 -0
  234. package/dist/headers/OSPF.js +365 -0
  235. package/dist/headers/OmronFINS.d.ts +31 -0
  236. package/dist/headers/OmronFINS.js +90 -0
  237. package/dist/headers/OpenFlow.d.ts +30 -0
  238. package/dist/headers/OpenFlow.js +113 -0
  239. package/dist/headers/OpenVPN.d.ts +35 -0
  240. package/dist/headers/OpenVPN.js +214 -0
  241. package/dist/headers/PCWorx.d.ts +35 -0
  242. package/dist/headers/PCWorx.js +115 -0
  243. package/dist/headers/PIM.d.ts +27 -0
  244. package/dist/headers/PIM.js +129 -0
  245. package/dist/headers/POP3.d.ts +31 -0
  246. package/dist/headers/POP3.js +152 -0
  247. package/dist/headers/POWERLINK.d.ts +28 -0
  248. package/dist/headers/POWERLINK.js +116 -0
  249. package/dist/headers/PPPoEDiscovery.d.ts +29 -0
  250. package/dist/headers/PPPoEDiscovery.js +198 -0
  251. package/dist/headers/PPPoESession.d.ts +28 -0
  252. package/dist/headers/PPPoESession.js +125 -0
  253. package/dist/headers/PPTP.d.ts +30 -0
  254. package/dist/headers/PPTP.js +122 -0
  255. package/dist/headers/PROFINETRT.d.ts +28 -0
  256. package/dist/headers/PROFINETRT.js +74 -0
  257. package/dist/headers/PTP.d.ts +34 -0
  258. package/dist/headers/PTP.js +213 -0
  259. package/dist/headers/PostgreSQL.d.ts +40 -0
  260. package/dist/headers/PostgreSQL.js +236 -0
  261. package/dist/headers/QUIC.d.ts +34 -0
  262. package/dist/headers/QUIC.js +308 -0
  263. package/dist/headers/RADIUS.d.ts +24 -0
  264. package/dist/headers/RADIUS.js +138 -0
  265. package/dist/headers/RDP.d.ts +27 -0
  266. package/dist/headers/RDP.js +93 -0
  267. package/dist/headers/RFB.d.ts +39 -0
  268. package/dist/headers/RFB.js +151 -0
  269. package/dist/headers/RGoose.d.ts +72 -0
  270. package/dist/headers/RGoose.js +340 -0
  271. package/dist/headers/RIP.d.ts +29 -0
  272. package/dist/headers/RIP.js +133 -0
  273. package/dist/headers/RIPng.d.ts +26 -0
  274. package/dist/headers/RIPng.js +140 -0
  275. package/dist/headers/RMCP.d.ts +26 -0
  276. package/dist/headers/RMCP.js +155 -0
  277. package/dist/headers/RSVP.d.ts +31 -0
  278. package/dist/headers/RSVP.js +263 -0
  279. package/dist/headers/RTCP.d.ts +34 -0
  280. package/dist/headers/RTCP.js +217 -0
  281. package/dist/headers/RTP.d.ts +33 -0
  282. package/dist/headers/RTP.js +291 -0
  283. package/dist/headers/RTPS.d.ts +33 -0
  284. package/dist/headers/RTPS.js +182 -0
  285. package/dist/headers/RTSP.d.ts +36 -0
  286. package/dist/headers/RTSP.js +184 -0
  287. package/dist/headers/RawData.d.ts +17 -0
  288. package/dist/headers/RawData.js +43 -0
  289. package/dist/headers/Redis.d.ts +32 -0
  290. package/dist/headers/Redis.js +202 -0
  291. package/dist/headers/Rlogin.d.ts +42 -0
  292. package/dist/headers/Rlogin.js +139 -0
  293. package/dist/headers/Rsync.d.ts +28 -0
  294. package/dist/headers/Rsync.js +117 -0
  295. package/dist/headers/S7comm.d.ts +36 -0
  296. package/dist/headers/S7comm.js +244 -0
  297. package/dist/headers/SCTP.d.ts +35 -0
  298. package/dist/headers/SCTP.js +174 -0
  299. package/dist/headers/SFlow.d.ts +29 -0
  300. package/dist/headers/SFlow.js +242 -0
  301. package/dist/headers/SIP.d.ts +27 -0
  302. package/dist/headers/SIP.js +146 -0
  303. package/dist/headers/SLMP.d.ts +36 -0
  304. package/dist/headers/SLMP.js +154 -0
  305. package/dist/headers/SLP.d.ts +30 -0
  306. package/dist/headers/SLP.js +207 -0
  307. package/dist/headers/SLPv1.d.ts +32 -0
  308. package/dist/headers/SLPv1.js +138 -0
  309. package/dist/headers/SMB1.d.ts +37 -0
  310. package/dist/headers/SMB1.js +200 -0
  311. package/dist/headers/SMB2.d.ts +36 -0
  312. package/dist/headers/SMB2.js +203 -0
  313. package/dist/headers/SMPP.d.ts +33 -0
  314. package/dist/headers/SMPP.js +119 -0
  315. package/dist/headers/SMTP.d.ts +33 -0
  316. package/dist/headers/SMTP.js +157 -0
  317. package/dist/headers/SNAP.d.ts +22 -0
  318. package/dist/headers/SNAP.js +68 -0
  319. package/dist/headers/SNMP.d.ts +28 -0
  320. package/dist/headers/SNMP.js +302 -0
  321. package/dist/headers/SOCKS4.d.ts +42 -0
  322. package/dist/headers/SOCKS4.js +302 -0
  323. package/dist/headers/SOCKS5.d.ts +45 -0
  324. package/dist/headers/SOCKS5.js +223 -0
  325. package/dist/headers/SSDP.d.ts +27 -0
  326. package/dist/headers/SSDP.js +161 -0
  327. package/dist/headers/SSH.d.ts +44 -0
  328. package/dist/headers/SSH.js +274 -0
  329. package/dist/headers/STOMP.d.ts +48 -0
  330. package/dist/headers/STOMP.js +177 -0
  331. package/dist/headers/STP.d.ts +26 -0
  332. package/dist/headers/STP.js +150 -0
  333. package/dist/headers/STUN.d.ts +25 -0
  334. package/dist/headers/STUN.js +183 -0
  335. package/dist/headers/SercosIII.d.ts +43 -0
  336. package/dist/headers/SercosIII.js +199 -0
  337. package/dist/headers/Skinny.d.ts +32 -0
  338. package/dist/headers/Skinny.js +139 -0
  339. package/dist/headers/StatsD.d.ts +27 -0
  340. package/dist/headers/StatsD.js +134 -0
  341. package/dist/headers/SunRPC.d.ts +34 -0
  342. package/dist/headers/SunRPC.js +268 -0
  343. package/dist/headers/Syslog.d.ts +21 -0
  344. package/dist/headers/Syslog.js +91 -0
  345. package/dist/headers/TCP.d.ts +19 -0
  346. package/dist/headers/TCP.js +905 -0
  347. package/dist/headers/TFTP.d.ts +28 -0
  348. package/dist/headers/TFTP.js +224 -0
  349. package/dist/headers/TLS_Alert.d.ts +24 -0
  350. package/dist/headers/TLS_Alert.js +639 -0
  351. package/dist/headers/TLS_ApplicationData.d.ts +24 -0
  352. package/dist/headers/TLS_ApplicationData.js +170 -0
  353. package/dist/headers/TLS_ChangeCipherSpec.d.ts +23 -0
  354. package/dist/headers/TLS_ChangeCipherSpec.js +168 -0
  355. package/dist/headers/TLS_Handshake.d.ts +65 -0
  356. package/dist/headers/TLS_Handshake.js +860 -0
  357. package/dist/headers/TLS_Heartbeat.d.ts +27 -0
  358. package/dist/headers/TLS_Heartbeat.js +247 -0
  359. package/dist/headers/TPKT.d.ts +26 -0
  360. package/dist/headers/TPKT.js +99 -0
  361. package/dist/headers/TacacsPlus.d.ts +27 -0
  362. package/dist/headers/TacacsPlus.js +133 -0
  363. package/dist/headers/Telnet.d.ts +40 -0
  364. package/dist/headers/Telnet.js +193 -0
  365. package/dist/headers/Teredo.d.ts +40 -0
  366. package/dist/headers/Teredo.js +251 -0
  367. package/dist/headers/TimeProtocol.d.ts +25 -0
  368. package/dist/headers/TimeProtocol.js +53 -0
  369. package/dist/headers/UDP.d.ts +19 -0
  370. package/dist/headers/UDP.js +171 -0
  371. package/dist/headers/VLAN_802dot1Q.d.ts +24 -0
  372. package/dist/headers/VLAN_802dot1Q.js +96 -0
  373. package/dist/headers/VRRP.d.ts +26 -0
  374. package/dist/headers/VRRP.js +309 -0
  375. package/dist/headers/VXLAN.d.ts +24 -0
  376. package/dist/headers/VXLAN.js +75 -0
  377. package/dist/headers/WCCP.d.ts +29 -0
  378. package/dist/headers/WCCP.js +117 -0
  379. package/dist/headers/WHOIS.d.ts +37 -0
  380. package/dist/headers/WHOIS.js +126 -0
  381. package/dist/headers/WSDiscovery.d.ts +29 -0
  382. package/dist/headers/WSDiscovery.js +118 -0
  383. package/dist/headers/WakeOnLAN.d.ts +30 -0
  384. package/dist/headers/WakeOnLAN.js +126 -0
  385. package/dist/headers/WebSocket.d.ts +26 -0
  386. package/dist/headers/WebSocket.js +173 -0
  387. package/dist/headers/WireGuard.d.ts +38 -0
  388. package/dist/headers/WireGuard.js +216 -0
  389. package/dist/headers/XMPP.d.ts +37 -0
  390. package/dist/headers/XMPP.js +149 -0
  391. package/dist/headers/Zabbix.d.ts +35 -0
  392. package/dist/headers/Zabbix.js +153 -0
  393. package/dist/headers/cms/AcsiPdu.d.ts +45 -0
  394. package/dist/headers/cms/AcsiPdu.js +112 -0
  395. package/dist/headers/cms/PerDecoder.d.ts +68 -0
  396. package/dist/headers/cms/PerDecoder.js +211 -0
  397. package/dist/headers/cms/PerReader.d.ts +64 -0
  398. package/dist/headers/cms/PerReader.js +155 -0
  399. package/dist/helper/BufferToHex.d.ts +5 -0
  400. package/dist/helper/BufferToHex.js +10 -0
  401. package/dist/helper/BufferToIP.d.ts +12 -0
  402. package/dist/helper/BufferToIP.js +23 -0
  403. package/dist/helper/BufferToNumber.d.ts +18 -0
  404. package/dist/helper/BufferToNumber.js +47 -0
  405. package/dist/helper/HexToBuffer.d.ts +7 -0
  406. package/dist/helper/HexToBuffer.js +27 -0
  407. package/dist/helper/HexToNumber.d.ts +18 -0
  408. package/dist/helper/HexToNumber.js +48 -0
  409. package/dist/helper/IPToBuffer.d.ts +12 -0
  410. package/dist/helper/IPToBuffer.js +34 -0
  411. package/dist/helper/NumberToBERBuffer.d.ts +18 -0
  412. package/dist/helper/NumberToBERBuffer.js +31 -0
  413. package/dist/helper/NumberToBERHex.d.ts +18 -0
  414. package/dist/helper/NumberToBERHex.js +52 -0
  415. package/dist/helper/NumberToBuffer.d.ts +18 -0
  416. package/dist/helper/NumberToBuffer.js +38 -0
  417. package/dist/helper/NumberToHex.d.ts +18 -0
  418. package/dist/helper/NumberToHex.js +35 -0
  419. package/dist/index.d.ts +52 -0
  420. package/dist/index.js +113 -0
  421. package/dist/lib/FlexibleObject.d.ts +27 -0
  422. package/dist/lib/FlexibleObject.js +113 -0
  423. package/dist/lib/GetBERIntegerLengthFromBuffer.d.ts +6 -0
  424. package/dist/lib/GetBERIntegerLengthFromBuffer.js +16 -0
  425. package/dist/lib/ProcessPacketPostHandlers.d.ts +13 -0
  426. package/dist/lib/ProcessPacketPostHandlers.js +53 -0
  427. package/dist/lib/SortPostHandlers.d.ts +7 -0
  428. package/dist/lib/SortPostHandlers.js +11 -0
  429. package/dist/lib/StringContentEncodingEnum.d.ts +10 -0
  430. package/dist/lib/StringContentEncodingEnum.js +14 -0
  431. package/dist/schema/ProtocolFieldJSONSchema.d.ts +35 -0
  432. package/dist/schema/ProtocolFieldJSONSchema.js +2 -0
  433. package/dist/schema/ProtocolFieldJSONSchemaDefinition.d.ts +2 -0
  434. package/dist/schema/ProtocolFieldJSONSchemaDefinition.js +2 -0
  435. package/dist/schema/ProtocolJSONSchema.d.ts +32 -0
  436. package/dist/schema/ProtocolJSONSchema.js +2 -0
  437. package/dist/types/CodecData.d.ts +7 -0
  438. package/dist/types/CodecData.js +2 -0
  439. package/dist/types/CodecDecodeResult.d.ts +10 -0
  440. package/dist/types/CodecDecodeResult.js +2 -0
  441. package/dist/types/CodecEncodeInput.d.ts +2 -0
  442. package/dist/types/CodecEncodeInput.js +2 -0
  443. package/dist/types/CodecEncodeResult.d.ts +5 -0
  444. package/dist/types/CodecEncodeResult.js +2 -0
  445. package/dist/types/CodecErrorInfo.d.ts +5 -0
  446. package/dist/types/CodecErrorInfo.js +2 -0
  447. package/dist/types/CodecModule.d.ts +2 -0
  448. package/dist/types/CodecModule.js +2 -0
  449. package/dist/types/CodecModuleConstructor.d.ts +2 -0
  450. package/dist/types/CodecModuleConstructor.js +2 -0
  451. package/dist/types/CodecSchema.d.ts +6 -0
  452. package/dist/types/CodecSchema.js +2 -0
  453. package/dist/types/DemuxProducer.d.ts +23 -0
  454. package/dist/types/DemuxProducer.js +2 -0
  455. package/dist/types/Dissection.d.ts +23 -0
  456. package/dist/types/Dissection.js +2 -0
  457. package/dist/types/HeaderTreeNode.d.ts +4 -0
  458. package/dist/types/HeaderTreeNode.js +2 -0
  459. package/dist/types/LayerGraph.d.ts +32 -0
  460. package/dist/types/LayerGraph.js +2 -0
  461. package/dist/types/PostHandlerItem.d.ts +4 -0
  462. package/dist/types/PostHandlerItem.js +2 -0
  463. package/package.json +141 -0
@@ -0,0 +1,495 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IPv6HopByHopOptions = void 0;
7
+ const BaseHeader_1 = require("../abstracts/BaseHeader");
8
+ const BufferToNumber_1 = require("../helper/BufferToNumber");
9
+ const NumberToBuffer_1 = require("../helper/NumberToBuffer");
10
+ const StringContentEncodingEnum_1 = require("../lib/StringContentEncodingEnum");
11
+ const node_tlv_1 = __importDefault(require("node-tlv"));
12
+ const HexToNumber_1 = require("../helper/HexToNumber");
13
+ //Type=1 PadN
14
+ //Type=4 Tunnel Encapsulation Limit
15
+ //Type=5 Router Alert
16
+ //Type=7 CALIPSO
17
+ //Type=8 SMF_DPD
18
+ //Type=11 MPL Option
19
+ //Type=12 ILNP Nonce
20
+ //Type=13 Line-Identification Option
21
+ //Type=30 IPv6 DFF Header
22
+ //Type=138 Endpoint Identification
23
+ var Type;
24
+ (function (Type) {
25
+ Type["Pad1"] = "Pad1";
26
+ Type["PadN"] = "PadN";
27
+ Type["Tunnel_Encapsulation_Limit"] = "Tunnel-Encapsulation-Limit";
28
+ Type["Router_Alert"] = "Router-Alert";
29
+ Type["CALIPSO"] = "CALIPSO";
30
+ Type["SMF_DPD"] = "SMF_DPD";
31
+ Type["MPL_Option"] = "MPL-Option";
32
+ Type["ILNP_Nonce"] = "ILNP-Nonce";
33
+ Type["Line_Identification_Option"] = "Line-Identification-Option";
34
+ Type["IPv6_DFF_Header"] = "IPv6-DFF-Header";
35
+ Type["Endpoint_Identification"] = "Endpoint-Identification";
36
+ })(Type || (Type = {}));
37
+ class IPv6HopByHopOptions extends BaseHeader_1.BaseHeader {
38
+ constructor() {
39
+ super(...arguments);
40
+ //Byte length of the encoded options area after 8-octet alignment padding.
41
+ //Set during items encode, consumed by the len recompute handler.
42
+ this.paddedOptionsLength = 0;
43
+ this.items = [];
44
+ this.SCHEMA = {
45
+ type: 'object',
46
+ properties: {
47
+ nxt: {
48
+ type: 'integer',
49
+ label: 'Next Header',
50
+ minimum: 0,
51
+ maximum: 255,
52
+ decode: () => {
53
+ this.instance.nxt.setValue((0, BufferToNumber_1.BufferToUInt8)(this.readBytes(0, 1)));
54
+ },
55
+ encode: () => {
56
+ const nxt = this.instance.nxt.getValue(0, (nodePath) => this.recordError(nodePath, 'Not Found'));
57
+ this.instance.nxt.setValue(nxt);
58
+ this.writeBytes(0, (0, NumberToBuffer_1.UInt8ToBuffer)(nxt));
59
+ }
60
+ },
61
+ len: {
62
+ type: 'integer',
63
+ label: 'Length',
64
+ minimum: 0,
65
+ maximum: 255,
66
+ decode: () => {
67
+ this.instance.len.setValue((0, BufferToNumber_1.BufferToUInt8)(this.readBytes(1, 1)));
68
+ },
69
+ encode: () => {
70
+ const len = this.instance.len.getValue(0);
71
+ this.instance.len.setValue(len);
72
+ this.writeBytes(1, (0, NumberToBuffer_1.UInt8ToBuffer)(len));
73
+ if (!len) {
74
+ this.addPostSelfEncodeHandler(() => {
75
+ //Total header = 2 (nxt+len) + options area, and must be an integral
76
+ //multiple of 8 octets (RFC 8200 §4.3). items encode already padded the
77
+ //options area to alignment, so (2 + paddedOptionsLength) is a multiple
78
+ //of 8 and HdrExtLen = totalOctets/8 - 1.
79
+ const totalOctets = 2 + this.paddedOptionsLength;
80
+ const calcLength = Math.max(0, Math.ceil(totalOctets / 8) - 1);
81
+ this.instance.len.setValue(calcLength);
82
+ this.writeBytes(1, (0, NumberToBuffer_1.UInt8ToBuffer)(calcLength));
83
+ });
84
+ }
85
+ }
86
+ },
87
+ items: {
88
+ type: 'array',
89
+ label: 'Option Items',
90
+ items: {
91
+ anyOf: [
92
+ //Type=0 Pad1 (single octet, no length/value)
93
+ {
94
+ type: 'object',
95
+ label: 'Pad1',
96
+ properties: {
97
+ type: {
98
+ type: 'string',
99
+ label: 'Type',
100
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
101
+ enum: [Type.Pad1],
102
+ const: Type.Pad1,
103
+ hidden: true
104
+ }
105
+ }
106
+ },
107
+ //Type=1 PadN
108
+ {
109
+ type: 'object',
110
+ label: 'PadN',
111
+ properties: {
112
+ type: {
113
+ type: 'string',
114
+ label: 'Type',
115
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
116
+ enum: [Type.PadN],
117
+ const: Type.PadN,
118
+ hidden: true
119
+ },
120
+ n: {
121
+ type: 'integer',
122
+ label: 'N'
123
+ }
124
+ }
125
+ },
126
+ //Type=4 Tunnel Encapsulation Limit
127
+ {
128
+ type: 'object',
129
+ label: 'Tunnel Encapsulation Limit',
130
+ properties: {
131
+ type: {
132
+ type: 'string',
133
+ label: 'Type',
134
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
135
+ enum: [Type.Tunnel_Encapsulation_Limit],
136
+ const: Type.Tunnel_Encapsulation_Limit,
137
+ hidden: true
138
+ },
139
+ limit: {
140
+ type: 'integer',
141
+ label: 'Limit',
142
+ minimum: 1,
143
+ maximum: 255
144
+ }
145
+ }
146
+ },
147
+ //Type=5 Router Alert
148
+ {
149
+ type: 'object',
150
+ label: 'Router Alert',
151
+ properties: {
152
+ type: {
153
+ type: 'string',
154
+ label: 'Type',
155
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
156
+ enum: [Type.Router_Alert],
157
+ const: Type.Router_Alert,
158
+ hidden: true
159
+ },
160
+ alert: {
161
+ type: 'string',
162
+ label: 'Router Alert',
163
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX,
164
+ minLength: 4,
165
+ maxLength: 4
166
+ }
167
+ }
168
+ },
169
+ //Type=7 CALIPSO
170
+ {
171
+ type: 'object',
172
+ label: 'CALIPSO',
173
+ properties: {
174
+ type: {
175
+ type: 'string',
176
+ label: 'Type',
177
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
178
+ enum: [Type.CALIPSO],
179
+ const: Type.CALIPSO,
180
+ hidden: true
181
+ },
182
+ tag: {
183
+ type: 'string',
184
+ label: 'Tag',
185
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX,
186
+ minLength: 16,
187
+ maxLength: 16
188
+ }
189
+ }
190
+ },
191
+ //Type=8 SMF_DPD
192
+ {
193
+ type: 'object',
194
+ label: 'SMF_DPD',
195
+ properties: {
196
+ type: {
197
+ type: 'string',
198
+ label: 'Type',
199
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
200
+ enum: [Type.SMF_DPD],
201
+ const: Type.SMF_DPD,
202
+ hidden: true
203
+ },
204
+ hash: {
205
+ type: 'string',
206
+ label: 'Hash',
207
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8
208
+ }
209
+ }
210
+ },
211
+ //Type=11 MPL Option
212
+ {
213
+ type: 'object',
214
+ label: 'MPL Option',
215
+ properties: {
216
+ type: {
217
+ type: 'string',
218
+ label: 'Type',
219
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
220
+ enum: [Type.MPL_Option],
221
+ const: Type.MPL_Option,
222
+ hidden: true
223
+ },
224
+ value: {
225
+ type: 'string',
226
+ label: 'Value',
227
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX
228
+ }
229
+ }
230
+ },
231
+ //Type=12 ILNP Nonce
232
+ {
233
+ type: 'object',
234
+ label: 'ILNP Nonce',
235
+ properties: {
236
+ type: {
237
+ type: 'string',
238
+ label: 'Type',
239
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
240
+ enum: [Type.ILNP_Nonce],
241
+ const: Type.ILNP_Nonce,
242
+ hidden: true
243
+ },
244
+ nonce: {
245
+ type: 'string',
246
+ label: 'Nonce',
247
+ minLength: 12,
248
+ maxLength: 12,
249
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX
250
+ }
251
+ }
252
+ },
253
+ //Type=13 Line-Identification Option
254
+ {
255
+ type: 'object',
256
+ label: 'Line-Identification Option',
257
+ properties: {
258
+ type: {
259
+ type: 'string',
260
+ label: 'Type',
261
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
262
+ enum: [Type.Line_Identification_Option],
263
+ const: Type.Line_Identification_Option,
264
+ hidden: true
265
+ },
266
+ id: {
267
+ type: 'string',
268
+ label: 'Identity',
269
+ minLength: 8,
270
+ maxLength: 8,
271
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX
272
+ }
273
+ }
274
+ },
275
+ //Type=30 IPv6 DFF Header
276
+ {
277
+ type: 'object',
278
+ label: 'IPv6 DFF Header',
279
+ properties: {
280
+ type: {
281
+ type: 'string',
282
+ label: 'Type',
283
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
284
+ enum: [Type.IPv6_DFF_Header],
285
+ const: Type.IPv6_DFF_Header,
286
+ hidden: true
287
+ },
288
+ message: {
289
+ type: 'string',
290
+ label: 'Message',
291
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX
292
+ }
293
+ }
294
+ },
295
+ //Type=138 Endpoint Identification
296
+ {
297
+ type: 'object',
298
+ label: 'Endpoint Identification',
299
+ properties: {
300
+ type: {
301
+ type: 'string',
302
+ label: 'Type',
303
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.UTF8,
304
+ enum: [Type.Endpoint_Identification],
305
+ const: Type.Endpoint_Identification,
306
+ hidden: true
307
+ },
308
+ id: {
309
+ type: 'string',
310
+ label: 'Identity',
311
+ minLength: 32,
312
+ maxLength: 32,
313
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX
314
+ }
315
+ }
316
+ },
317
+ //Custom
318
+ {
319
+ type: 'object',
320
+ label: 'Custom',
321
+ properties: {
322
+ type: {
323
+ type: 'integer',
324
+ label: 'Type'
325
+ },
326
+ data: {
327
+ type: 'string',
328
+ label: 'Data',
329
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX
330
+ }
331
+ }
332
+ }
333
+ ]
334
+ },
335
+ decode: () => {
336
+ //Options area length = (HdrExtLen+1)*8 - 2 = len*8 + 6 octets, bounded to the
337
+ //bytes actually present.
338
+ const optionsLength = this.instance.len.getValue(0) * 8 + 6;
339
+ const buffer = this.readBytes(2, optionsLength);
340
+ this.items = [];
341
+ //Walk the options manually (RFC 8200 §4.2): Pad1 (type 0) is a single octet with
342
+ //no Length/Value; every other option is type(1)+length(1)+value(length). Bounds
343
+ //are checked so a truncated area records what it can rather than throwing (and so
344
+ //an interior Pad1 no longer desyncs a length-prefix TLV parser).
345
+ let p = 0;
346
+ while (p < buffer.length) {
347
+ const type = buffer[p];
348
+ if (type === 0x00) {
349
+ this.items.push({ type: Type.Pad1 });
350
+ p += 1;
351
+ continue;
352
+ }
353
+ if (p + 2 > buffer.length)
354
+ break;
355
+ const optionLength = buffer[p + 1];
356
+ if (p + 2 + optionLength > buffer.length)
357
+ break;
358
+ const valueHex = buffer.subarray(p + 2, p + 2 + optionLength).toString('hex');
359
+ this.items.push(this.decodeHbhOption(type, optionLength, valueHex));
360
+ p += 2 + optionLength;
361
+ }
362
+ this.instance.items.setValue(this.items);
363
+ },
364
+ encode: () => {
365
+ this.items = this.instance.items.getValue([]);
366
+ const parts = [];
367
+ const tlvBytes = (tlv) => Buffer.from(tlv.getTLV(), 'hex');
368
+ this.items.forEach((item) => {
369
+ switch (item.type) {
370
+ case Type.Pad1:
371
+ {
372
+ //Pad1 is a single zero octet with no Length/Value.
373
+ parts.push(Buffer.from([0x00]));
374
+ }
375
+ break;
376
+ case Type.PadN:
377
+ {
378
+ const typedItem = { ...item };
379
+ parts.push(tlvBytes(new node_tlv_1.default(0x01, Buffer.alloc(typedItem.n, 0))));
380
+ }
381
+ break;
382
+ case Type.Tunnel_Encapsulation_Limit:
383
+ {
384
+ const typedItem = { ...item };
385
+ parts.push(tlvBytes(new node_tlv_1.default(0x04, (0, NumberToBuffer_1.UInt8ToBuffer)(typedItem.limit))));
386
+ }
387
+ break;
388
+ case Type.Router_Alert:
389
+ {
390
+ const typedItem = { ...item };
391
+ parts.push(tlvBytes(new node_tlv_1.default(0x05, (0, NumberToBuffer_1.UInt16ToBuffer)((0, HexToNumber_1.HexToUInt16)(typedItem.alert)))));
392
+ }
393
+ break;
394
+ case Type.CALIPSO:
395
+ {
396
+ const typedItem = { ...item };
397
+ parts.push(tlvBytes(new node_tlv_1.default(0x07, (0, NumberToBuffer_1.UInt64ToBuffer)((0, HexToNumber_1.HexToUInt64)(typedItem.tag)))));
398
+ }
399
+ break;
400
+ case Type.SMF_DPD:
401
+ {
402
+ const typedItem = { ...item };
403
+ parts.push(tlvBytes(new node_tlv_1.default(0x08, Buffer.from(typedItem.hash, 'hex'))));
404
+ }
405
+ break;
406
+ case Type.MPL_Option:
407
+ {
408
+ const typedItem = { ...item };
409
+ parts.push(tlvBytes(new node_tlv_1.default(0x0B, Buffer.from(typedItem.value, 'hex'))));
410
+ }
411
+ break;
412
+ case Type.ILNP_Nonce:
413
+ {
414
+ const typedItem = { ...item };
415
+ parts.push(tlvBytes(new node_tlv_1.default(0x0C, Buffer.from(typedItem.nonce.padStart(12, '0'), 'hex'))));
416
+ }
417
+ break;
418
+ case Type.Line_Identification_Option:
419
+ {
420
+ const typedItem = { ...item };
421
+ parts.push(tlvBytes(new node_tlv_1.default(0x0D, (0, NumberToBuffer_1.UInt32ToBuffer)((0, HexToNumber_1.HexToUInt32)(typedItem.id)))));
422
+ }
423
+ break;
424
+ case Type.IPv6_DFF_Header:
425
+ {
426
+ const typedItem = { ...item };
427
+ parts.push(tlvBytes(new node_tlv_1.default(0x1E, Buffer.from(typedItem.message, 'hex'))));
428
+ }
429
+ break;
430
+ case Type.Endpoint_Identification:
431
+ {
432
+ const typedItem = { ...item };
433
+ parts.push(tlvBytes(new node_tlv_1.default(0x8A, Buffer.from(typedItem.id.padStart(32, '0'), 'hex'))));
434
+ }
435
+ break;
436
+ default: {
437
+ if (typeof item.type !== 'number')
438
+ return;
439
+ const customItem = { ...item };
440
+ parts.push(tlvBytes(new node_tlv_1.default(customItem.type, Buffer.from(customItem.data, 'hex'))));
441
+ }
442
+ }
443
+ });
444
+ let itemsBuffer = Buffer.concat(parts);
445
+ //Pad the options area so the whole header (2 header bytes + options) is an
446
+ //integral multiple of 8 octets (RFC 8200 §4.3). Use a PadN option (type 0x01)
447
+ //for >=2 bytes so it re-decodes as a PadN, and a single Pad1 (0x00) for 1 byte.
448
+ const pad = (8 - (2 + itemsBuffer.length) % 8) % 8;
449
+ if (pad === 1) {
450
+ itemsBuffer = Buffer.concat([itemsBuffer, Buffer.from([0x00])]);
451
+ }
452
+ else if (pad >= 2) {
453
+ const padN = new node_tlv_1.default(0x01, Buffer.alloc(pad - 2, 0));
454
+ itemsBuffer = Buffer.concat([itemsBuffer, Buffer.from(padN.getTLV(), 'hex')]);
455
+ }
456
+ this.paddedOptionsLength = itemsBuffer.length;
457
+ this.writeBytes(2, itemsBuffer);
458
+ }
459
+ }
460
+ }
461
+ };
462
+ this.id = 'ipv6-hopopt';
463
+ this.matchKeys = ['ipproto:0'];
464
+ //Extension header: it both consumes ipproto:0 and produces the next-header key for the layer after it.
465
+ this.demuxProducers = [{ field: 'nxt', namespace: 'ipproto', kind: 'uint' }];
466
+ this.name = 'IPv6 Hop-by-Hop Option';
467
+ this.nickname = 'HopOpt';
468
+ this.isProtocol = false;
469
+ }
470
+ /**
471
+ * Map a decoded Hop-by-Hop option (type + length + hex value) to its structured item.
472
+ * Unknown types become a Custom item so they still round-trip.
473
+ */
474
+ decodeHbhOption(type, length, valueHex) {
475
+ switch (type) {
476
+ case 0x01: return { type: Type.PadN, n: length };
477
+ case 0x04: return { type: Type.Tunnel_Encapsulation_Limit, limit: (0, HexToNumber_1.HexToUInt8)(valueHex) };
478
+ case 0x05: return { type: Type.Router_Alert, alert: valueHex };
479
+ case 0x07: return { type: Type.CALIPSO, tag: valueHex };
480
+ case 0x08: return { type: Type.SMF_DPD, hash: valueHex };
481
+ case 0x0B: return { type: Type.MPL_Option, value: valueHex };
482
+ case 0x0C: return { type: Type.ILNP_Nonce, nonce: valueHex };
483
+ case 0x0D: return { type: Type.Line_Identification_Option, id: valueHex };
484
+ case 0x1E: return { type: Type.IPv6_DFF_Header, message: valueHex };
485
+ case 0x8A: return { type: Type.Endpoint_Identification, id: valueHex };
486
+ default: return { type: type, data: valueHex };
487
+ }
488
+ }
489
+ match() {
490
+ if (!this.prevCodecModule || this.prevCodecModule.id !== 'ipv6')
491
+ return false;
492
+ return this.prevCodecModule.instance.nxt.getValue() === 0x00;
493
+ }
494
+ }
495
+ exports.IPv6HopByHopOptions = IPv6HopByHopOptions;
@@ -0,0 +1,34 @@
1
+ import { BaseHeader } from '../abstracts/BaseHeader';
2
+ import { ProtocolJSONSchema } from '../schema/ProtocolJSONSchema';
3
+ import { DemuxProducer } from '../types/DemuxProducer';
4
+ /**
5
+ * IRC — the Internet Relay Chat protocol (RFC 1459 / RFC 2812), carried as US-ASCII text over TCP
6
+ * well-known port 6667 (or 6697 for the TLS-wrapped IRC-over-TLS bucket). The channel is line-based: each
7
+ * message is an optional `:prefix` (source), then a COMMAND (a verb word like PRIVMSG/JOIN/NICK, or a
8
+ * 3-digit numeric reply code such as 001/433), then space-separated params with an optional ` :trailing`
9
+ * argument, terminated by CRLF. A client sends `NICK alice\r\n`, `JOIN #chan\r\n`, `PRIVMSG #chan :hi\r\n`;
10
+ * a server prefixes its messages with the source (`:server 001 alice :Welcome\r\n`,
11
+ * `:nick!user@host PRIVMSG #chan :hi\r\n`).
12
+ *
13
+ * Like FTP, SMTP, POP3, Syslog, SIP and HTTP, the message is text whose full internal structure
14
+ * (arbitrary params, significant whitespace, an optional trailing argument, multiple lines per segment)
15
+ * is richer than a form needs. So the ENTIRE raw message is kept verbatim as the authoritative `message`
16
+ * field (hex) and re-emitted untouched; only the FIRST line is parsed on decode into display-only
17
+ * metadata (prefix/command/params/isNumeric). Encode never reconstructs the message from the parsed
18
+ * fields — it writes `message` back byte-for-byte — so any conformant (or even malformed) IRC line
19
+ * round-trips exactly.
20
+ *
21
+ * Note: a single TCP segment may carry more than one line (IRC peers pipeline freely) or only part of a
22
+ * line; reassembly across segments is out of scope. This single-segment codec keeps whatever bytes are
23
+ * present verbatim, which is byte-perfect for the single-packet case.
24
+ */
25
+ export declare class IRC extends BaseHeader {
26
+ #private;
27
+ get SCHEMA(): ProtocolJSONSchema;
28
+ readonly id: string;
29
+ readonly name: string;
30
+ readonly nickname: string;
31
+ readonly matchKeys: string[];
32
+ match(): boolean;
33
+ readonly demuxProducers: DemuxProducer[];
34
+ }