pypcapkit 1.3.3.post1__cp313-none-any.whl

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 (466) hide show
  1. pcapkit/__init__.py +126 -0
  2. pcapkit/__main__.py +138 -0
  3. pcapkit/all.py +136 -0
  4. pcapkit/const/__init__.py +81 -0
  5. pcapkit/const/arp/__init__.py +25 -0
  6. pcapkit/const/arp/hardware.py +181 -0
  7. pcapkit/const/arp/operation.py +131 -0
  8. pcapkit/const/ftp/__init__.py +25 -0
  9. pcapkit/const/ftp/command.py +309 -0
  10. pcapkit/const/ftp/return_code.py +304 -0
  11. pcapkit/const/hip/__init__.py +94 -0
  12. pcapkit/const/hip/certificate.py +77 -0
  13. pcapkit/const/hip/cipher.py +65 -0
  14. pcapkit/const/hip/di.py +59 -0
  15. pcapkit/const/hip/ecdsa_curve.py +59 -0
  16. pcapkit/const/hip/ecdsa_low_curve.py +56 -0
  17. pcapkit/const/hip/eddsa_curve.py +65 -0
  18. pcapkit/const/hip/esp_transform_suite.py +98 -0
  19. pcapkit/const/hip/group.py +86 -0
  20. pcapkit/const/hip/hi_algorithm.py +86 -0
  21. pcapkit/const/hip/hit_suite.py +68 -0
  22. pcapkit/const/hip/nat_traversal.py +62 -0
  23. pcapkit/const/hip/notify_message.py +200 -0
  24. pcapkit/const/hip/packet.py +89 -0
  25. pcapkit/const/hip/parameter.py +377 -0
  26. pcapkit/const/hip/registration.py +68 -0
  27. pcapkit/const/hip/registration_failure.py +84 -0
  28. pcapkit/const/hip/suite.py +71 -0
  29. pcapkit/const/hip/transport.py +59 -0
  30. pcapkit/const/http/__init__.py +39 -0
  31. pcapkit/const/http/error_code.py +95 -0
  32. pcapkit/const/http/frame.py +95 -0
  33. pcapkit/const/http/method.py +184 -0
  34. pcapkit/const/http/setting.py +96 -0
  35. pcapkit/const/http/status_code.py +294 -0
  36. pcapkit/const/ipv4/__init__.py +57 -0
  37. pcapkit/const/ipv4/classification_level.py +64 -0
  38. pcapkit/const/ipv4/option_class.py +55 -0
  39. pcapkit/const/ipv4/option_number.py +137 -0
  40. pcapkit/const/ipv4/protection_authority.py +63 -0
  41. pcapkit/const/ipv4/qs_function.py +51 -0
  42. pcapkit/const/ipv4/router_alert.py +251 -0
  43. pcapkit/const/ipv4/tos_del.py +51 -0
  44. pcapkit/const/ipv4/tos_ecn.py +55 -0
  45. pcapkit/const/ipv4/tos_pre.py +63 -0
  46. pcapkit/const/ipv4/tos_rel.py +51 -0
  47. pcapkit/const/ipv4/tos_thr.py +51 -0
  48. pcapkit/const/ipv4/ts_flag.py +53 -0
  49. pcapkit/const/ipv6/__init__.py +53 -0
  50. pcapkit/const/ipv6/extension_header.py +66 -0
  51. pcapkit/const/ipv6/option.py +137 -0
  52. pcapkit/const/ipv6/option_action.py +55 -0
  53. pcapkit/const/ipv6/qs_function.py +51 -0
  54. pcapkit/const/ipv6/router_alert.py +266 -0
  55. pcapkit/const/ipv6/routing.py +80 -0
  56. pcapkit/const/ipv6/seed_id.py +55 -0
  57. pcapkit/const/ipv6/smf_dpd_mode.py +51 -0
  58. pcapkit/const/ipv6/tagger_id.py +62 -0
  59. pcapkit/const/ipx/__init__.py +27 -0
  60. pcapkit/const/ipx/packet.py +72 -0
  61. pcapkit/const/ipx/socket.py +104 -0
  62. pcapkit/const/l2tp/__init__.py +21 -0
  63. pcapkit/const/l2tp/type.py +51 -0
  64. pcapkit/const/mh/__init__.py +204 -0
  65. pcapkit/const/mh/access_type.py +92 -0
  66. pcapkit/const/mh/ack_status_code.py +71 -0
  67. pcapkit/const/mh/ani_suboption.py +74 -0
  68. pcapkit/const/mh/auth_subtype.py +53 -0
  69. pcapkit/const/mh/binding_ack_flag.py +66 -0
  70. pcapkit/const/mh/binding_error.py +51 -0
  71. pcapkit/const/mh/binding_revocation.py +59 -0
  72. pcapkit/const/mh/binding_update_flag.py +81 -0
  73. pcapkit/const/mh/cga_extension.py +66 -0
  74. pcapkit/const/mh/cga_sec.py +57 -0
  75. pcapkit/const/mh/cga_type.py +68 -0
  76. pcapkit/const/mh/dhcp_support_mode.py +53 -0
  77. pcapkit/const/mh/dns_status_code.py +65 -0
  78. pcapkit/const/mh/dsmip6_tls_packet.py +62 -0
  79. pcapkit/const/mh/dsmipv6_home_address.py +74 -0
  80. pcapkit/const/mh/enumerating_algorithm.py +56 -0
  81. pcapkit/const/mh/fb_ack_status.py +62 -0
  82. pcapkit/const/mh/fb_action.py +71 -0
  83. pcapkit/const/mh/fb_indication_trigger.py +65 -0
  84. pcapkit/const/mh/fb_type.py +59 -0
  85. pcapkit/const/mh/flow_id_status.py +77 -0
  86. pcapkit/const/mh/flow_id_suboption.py +71 -0
  87. pcapkit/const/mh/handoff_type.py +71 -0
  88. pcapkit/const/mh/handover_ack_flag.py +54 -0
  89. pcapkit/const/mh/handover_ack_status.py +92 -0
  90. pcapkit/const/mh/handover_initiate_flag.py +57 -0
  91. pcapkit/const/mh/handover_initiate_status.py +62 -0
  92. pcapkit/const/mh/home_address_reply.py +71 -0
  93. pcapkit/const/mh/lla_code.py +63 -0
  94. pcapkit/const/mh/lma_mag_suboption.py +59 -0
  95. pcapkit/const/mh/mn_group_id.py +59 -0
  96. pcapkit/const/mh/mn_id_subtype.py +77 -0
  97. pcapkit/const/mh/operator_id.py +63 -0
  98. pcapkit/const/mh/option.py +260 -0
  99. pcapkit/const/mh/packet.py +119 -0
  100. pcapkit/const/mh/qos_attribute.py +89 -0
  101. pcapkit/const/mh/revocation_status_code.py +83 -0
  102. pcapkit/const/mh/revocation_trigger.py +86 -0
  103. pcapkit/const/mh/status_code.py +232 -0
  104. pcapkit/const/mh/traffic_selector.py +62 -0
  105. pcapkit/const/mh/upa_status.py +71 -0
  106. pcapkit/const/mh/upn_reason.py +80 -0
  107. pcapkit/const/ospf/__init__.py +27 -0
  108. pcapkit/const/ospf/authentication.py +65 -0
  109. pcapkit/const/ospf/packet.py +71 -0
  110. pcapkit/const/pcapng/__init__.py +51 -0
  111. pcapkit/const/pcapng/block_type.py +152 -0
  112. pcapkit/const/pcapng/filter_type.py +48 -0
  113. pcapkit/const/pcapng/hash_algorithm.py +59 -0
  114. pcapkit/const/pcapng/option_type.py +233 -0
  115. pcapkit/const/pcapng/record_type.py +57 -0
  116. pcapkit/const/pcapng/secrets_type.py +56 -0
  117. pcapkit/const/pcapng/verdict_type.py +53 -0
  118. pcapkit/const/reg/__init__.py +34 -0
  119. pcapkit/const/reg/apptype.py +32702 -0
  120. pcapkit/const/reg/ethertype.py +714 -0
  121. pcapkit/const/reg/linktype.py +902 -0
  122. pcapkit/const/reg/transtype.py +523 -0
  123. pcapkit/const/tcp/__init__.py +35 -0
  124. pcapkit/const/tcp/checksum.py +55 -0
  125. pcapkit/const/tcp/flags.py +73 -0
  126. pcapkit/const/tcp/mp_tcp_option.py +80 -0
  127. pcapkit/const/tcp/option.py +198 -0
  128. pcapkit/const/vlan/__init__.py +23 -0
  129. pcapkit/const/vlan/priority_level.py +71 -0
  130. pcapkit/corekit/__init__.py +59 -0
  131. pcapkit/corekit/fields/__init__.py +45 -0
  132. pcapkit/corekit/fields/collections.py +282 -0
  133. pcapkit/corekit/fields/field.py +269 -0
  134. pcapkit/corekit/fields/ipaddress.py +274 -0
  135. pcapkit/corekit/fields/misc.py +722 -0
  136. pcapkit/corekit/fields/numbers.py +375 -0
  137. pcapkit/corekit/fields/strings.py +245 -0
  138. pcapkit/corekit/infoclass.py +394 -0
  139. pcapkit/corekit/io.py +506 -0
  140. pcapkit/corekit/module.py +39 -0
  141. pcapkit/corekit/multidict.py +626 -0
  142. pcapkit/corekit/protochain.py +263 -0
  143. pcapkit/corekit/version.py +33 -0
  144. pcapkit/dumpkit/__init__.py +15 -0
  145. pcapkit/dumpkit/common.py +199 -0
  146. pcapkit/dumpkit/null.py +77 -0
  147. pcapkit/dumpkit/pcap.py +144 -0
  148. pcapkit/foundation/__init__.py +45 -0
  149. pcapkit/foundation/engines/__init__.py +36 -0
  150. pcapkit/foundation/engines/dpkt.py +230 -0
  151. pcapkit/foundation/engines/engine.py +194 -0
  152. pcapkit/foundation/engines/pcap.py +188 -0
  153. pcapkit/foundation/engines/pcapng.py +310 -0
  154. pcapkit/foundation/engines/pyshark.py +166 -0
  155. pcapkit/foundation/engines/scapy.py +161 -0
  156. pcapkit/foundation/extraction.py +915 -0
  157. pcapkit/foundation/reassembly/__init__.py +49 -0
  158. pcapkit/foundation/reassembly/data/__init__.py +48 -0
  159. pcapkit/foundation/reassembly/data/ip.py +117 -0
  160. pcapkit/foundation/reassembly/data/tcp.py +145 -0
  161. pcapkit/foundation/reassembly/ip.py +192 -0
  162. pcapkit/foundation/reassembly/ipv4.py +50 -0
  163. pcapkit/foundation/reassembly/ipv6.py +50 -0
  164. pcapkit/foundation/reassembly/reassembly.py +389 -0
  165. pcapkit/foundation/reassembly/tcp.py +249 -0
  166. pcapkit/foundation/registry/__init__.py +41 -0
  167. pcapkit/foundation/registry/foundation.py +327 -0
  168. pcapkit/foundation/registry/protocols.py +885 -0
  169. pcapkit/foundation/traceflow/__init__.py +44 -0
  170. pcapkit/foundation/traceflow/data/__init__.py +30 -0
  171. pcapkit/foundation/traceflow/data/tcp.py +105 -0
  172. pcapkit/foundation/traceflow/tcp.py +159 -0
  173. pcapkit/foundation/traceflow/traceflow.py +390 -0
  174. pcapkit/interface/__init__.py +22 -0
  175. pcapkit/interface/core.py +185 -0
  176. pcapkit/interface/misc.py +120 -0
  177. pcapkit/protocols/__init__.py +85 -0
  178. pcapkit/protocols/application/NotImplemented/bgp.py +0 -0
  179. pcapkit/protocols/application/NotImplemented/dhcp.py +0 -0
  180. pcapkit/protocols/application/NotImplemented/dhcpv6.py +0 -0
  181. pcapkit/protocols/application/NotImplemented/dns.py +0 -0
  182. pcapkit/protocols/application/NotImplemented/imap.py +0 -0
  183. pcapkit/protocols/application/NotImplemented/ldap.py +0 -0
  184. pcapkit/protocols/application/NotImplemented/mqtt.py +0 -0
  185. pcapkit/protocols/application/NotImplemented/nntp.py +0 -0
  186. pcapkit/protocols/application/NotImplemented/ntp.py +0 -0
  187. pcapkit/protocols/application/NotImplemented/onc_rpc.py +0 -0
  188. pcapkit/protocols/application/NotImplemented/pop.py +0 -0
  189. pcapkit/protocols/application/NotImplemented/rip.py +0 -0
  190. pcapkit/protocols/application/NotImplemented/rtp.py +0 -0
  191. pcapkit/protocols/application/NotImplemented/sip.py +0 -0
  192. pcapkit/protocols/application/NotImplemented/smtp.py +0 -0
  193. pcapkit/protocols/application/NotImplemented/snmp.py +0 -0
  194. pcapkit/protocols/application/NotImplemented/ssh.py +0 -0
  195. pcapkit/protocols/application/NotImplemented/telnet.py +0 -0
  196. pcapkit/protocols/application/NotImplemented/tls.py +0 -0
  197. pcapkit/protocols/application/NotImplemented/xmpp.py +0 -0
  198. pcapkit/protocols/application/__init__.py +34 -0
  199. pcapkit/protocols/application/application.py +114 -0
  200. pcapkit/protocols/application/ftp.py +206 -0
  201. pcapkit/protocols/application/http.py +176 -0
  202. pcapkit/protocols/application/httpv1.py +320 -0
  203. pcapkit/protocols/application/httpv2.py +1255 -0
  204. pcapkit/protocols/data/__init__.py +192 -0
  205. pcapkit/protocols/data/application/__init__.py +57 -0
  206. pcapkit/protocols/data/application/ftp.py +59 -0
  207. pcapkit/protocols/data/application/httpv1.py +79 -0
  208. pcapkit/protocols/data/application/httpv2.py +293 -0
  209. pcapkit/protocols/data/data.py +25 -0
  210. pcapkit/protocols/data/internet/__init__.py +298 -0
  211. pcapkit/protocols/data/internet/ah.py +31 -0
  212. pcapkit/protocols/data/internet/hip.py +804 -0
  213. pcapkit/protocols/data/internet/hopopt.py +351 -0
  214. pcapkit/protocols/data/internet/ipv4.py +369 -0
  215. pcapkit/protocols/data/internet/ipv6.py +67 -0
  216. pcapkit/protocols/data/internet/ipv6_frag.py +29 -0
  217. pcapkit/protocols/data/internet/ipv6_opts.py +368 -0
  218. pcapkit/protocols/data/internet/ipv6_route.py +86 -0
  219. pcapkit/protocols/data/internet/ipx.py +56 -0
  220. pcapkit/protocols/data/internet/mh.py +509 -0
  221. pcapkit/protocols/data/link/__init__.py +33 -0
  222. pcapkit/protocols/data/link/arp.py +74 -0
  223. pcapkit/protocols/data/link/ethernet.py +28 -0
  224. pcapkit/protocols/data/link/l2tp.py +63 -0
  225. pcapkit/protocols/data/link/ospf.py +58 -0
  226. pcapkit/protocols/data/link/vlan.py +42 -0
  227. pcapkit/protocols/data/misc/__init__.py +109 -0
  228. pcapkit/protocols/data/misc/null.py +18 -0
  229. pcapkit/protocols/data/misc/pcap/__init__.py +18 -0
  230. pcapkit/protocols/data/misc/pcap/frame.py +56 -0
  231. pcapkit/protocols/data/misc/pcap/header.py +53 -0
  232. pcapkit/protocols/data/misc/pcapng.py +925 -0
  233. pcapkit/protocols/data/misc/raw.py +25 -0
  234. pcapkit/protocols/data/protocol.py +32 -0
  235. pcapkit/protocols/data/transport/__init__.py +71 -0
  236. pcapkit/protocols/data/transport/tcp.py +555 -0
  237. pcapkit/protocols/data/transport/udp.py +29 -0
  238. pcapkit/protocols/internet/NotImplemented/ecn.py +0 -0
  239. pcapkit/protocols/internet/NotImplemented/esp.py +97 -0
  240. pcapkit/protocols/internet/NotImplemented/icmp.py +0 -0
  241. pcapkit/protocols/internet/NotImplemented/icmpv6.py +0 -0
  242. pcapkit/protocols/internet/NotImplemented/igmp.py +0 -0
  243. pcapkit/protocols/internet/NotImplemented/shim6.py +0 -0
  244. pcapkit/protocols/internet/__init__.py +43 -0
  245. pcapkit/protocols/internet/ah.py +275 -0
  246. pcapkit/protocols/internet/hip.py +4727 -0
  247. pcapkit/protocols/internet/hopopt.py +1879 -0
  248. pcapkit/protocols/internet/internet.py +240 -0
  249. pcapkit/protocols/internet/ip.py +51 -0
  250. pcapkit/protocols/internet/ipsec.py +50 -0
  251. pcapkit/protocols/internet/ipv4.py +1782 -0
  252. pcapkit/protocols/internet/ipv6.py +361 -0
  253. pcapkit/protocols/internet/ipv6_frag.py +258 -0
  254. pcapkit/protocols/internet/ipv6_opts.py +1890 -0
  255. pcapkit/protocols/internet/ipv6_route.py +710 -0
  256. pcapkit/protocols/internet/ipx.py +230 -0
  257. pcapkit/protocols/internet/mh.py +2764 -0
  258. pcapkit/protocols/link/NotImplemented/dsl.py +0 -0
  259. pcapkit/protocols/link/NotImplemented/eapol.py +1 -0
  260. pcapkit/protocols/link/NotImplemented/fddi.py +0 -0
  261. pcapkit/protocols/link/NotImplemented/isdn.py +0 -0
  262. pcapkit/protocols/link/NotImplemented/ndp.py +0 -0
  263. pcapkit/protocols/link/NotImplemented/ppp.py +0 -0
  264. pcapkit/protocols/link/__init__.py +35 -0
  265. pcapkit/protocols/link/arp.py +421 -0
  266. pcapkit/protocols/link/ethernet.py +248 -0
  267. pcapkit/protocols/link/l2tp.py +267 -0
  268. pcapkit/protocols/link/link.py +140 -0
  269. pcapkit/protocols/link/ospf.py +342 -0
  270. pcapkit/protocols/link/rarp.py +82 -0
  271. pcapkit/protocols/link/vlan.py +225 -0
  272. pcapkit/protocols/misc/__init__.py +37 -0
  273. pcapkit/protocols/misc/null.py +129 -0
  274. pcapkit/protocols/misc/pcap/__init__.py +17 -0
  275. pcapkit/protocols/misc/pcap/frame.py +478 -0
  276. pcapkit/protocols/misc/pcap/header.py +358 -0
  277. pcapkit/protocols/misc/pcapng.py +5520 -0
  278. pcapkit/protocols/misc/raw.py +180 -0
  279. pcapkit/protocols/protocol.py +1216 -0
  280. pcapkit/protocols/schema/__init__.py +140 -0
  281. pcapkit/protocols/schema/application/__init__.py +40 -0
  282. pcapkit/protocols/schema/application/ftp.py +21 -0
  283. pcapkit/protocols/schema/application/httpv1.py +21 -0
  284. pcapkit/protocols/schema/application/httpv2.py +384 -0
  285. pcapkit/protocols/schema/internet/__init__.py +294 -0
  286. pcapkit/protocols/schema/internet/ah.py +40 -0
  287. pcapkit/protocols/schema/internet/hip.py +1184 -0
  288. pcapkit/protocols/schema/internet/hopopt.py +679 -0
  289. pcapkit/protocols/schema/internet/ipv4.py +576 -0
  290. pcapkit/protocols/schema/internet/ipv6.py +63 -0
  291. pcapkit/protocols/schema/internet/ipv6_frag.py +48 -0
  292. pcapkit/protocols/schema/internet/ipv6_opts.py +680 -0
  293. pcapkit/protocols/schema/internet/ipv6_route.py +198 -0
  294. pcapkit/protocols/schema/internet/ipx.py +40 -0
  295. pcapkit/protocols/schema/internet/mh.py +718 -0
  296. pcapkit/protocols/schema/link/__init__.py +19 -0
  297. pcapkit/protocols/schema/link/arp.py +39 -0
  298. pcapkit/protocols/schema/link/ethernet.py +51 -0
  299. pcapkit/protocols/schema/link/l2tp.py +88 -0
  300. pcapkit/protocols/schema/link/ospf.py +90 -0
  301. pcapkit/protocols/schema/link/vlan.py +69 -0
  302. pcapkit/protocols/schema/misc/__init__.py +108 -0
  303. pcapkit/protocols/schema/misc/null.py +18 -0
  304. pcapkit/protocols/schema/misc/pcap/__init__.py +10 -0
  305. pcapkit/protocols/schema/misc/pcap/frame.py +51 -0
  306. pcapkit/protocols/schema/misc/pcap/header.py +63 -0
  307. pcapkit/protocols/schema/misc/pcapng.py +1689 -0
  308. pcapkit/protocols/schema/misc/raw.py +24 -0
  309. pcapkit/protocols/schema/schema.py +809 -0
  310. pcapkit/protocols/schema/transport/__init__.py +69 -0
  311. pcapkit/protocols/schema/transport/tcp.py +928 -0
  312. pcapkit/protocols/schema/transport/udp.py +90 -0
  313. pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
  314. pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
  315. pcapkit/protocols/transport/NotImplemented/sctp.py +0 -0
  316. pcapkit/protocols/transport/__init__.py +27 -0
  317. pcapkit/protocols/transport/tcp.py +3025 -0
  318. pcapkit/protocols/transport/transport.py +158 -0
  319. pcapkit/protocols/transport/udp.py +214 -0
  320. pcapkit/py.typed +0 -0
  321. pcapkit/toolkit/__init__.py +57 -0
  322. pcapkit/toolkit/dpkt.py +306 -0
  323. pcapkit/toolkit/pcap.py +212 -0
  324. pcapkit/toolkit/pcapng.py +251 -0
  325. pcapkit/toolkit/pyshark.py +99 -0
  326. pcapkit/toolkit/scapy.py +297 -0
  327. pcapkit/utilities/__init__.py +20 -0
  328. pcapkit/utilities/compat.py +196 -0
  329. pcapkit/utilities/decorators.py +192 -0
  330. pcapkit/utilities/exceptions.py +365 -0
  331. pcapkit/utilities/logging.py +55 -0
  332. pcapkit/utilities/warnings.py +185 -0
  333. pcapkit/vendor/__init__.py +105 -0
  334. pcapkit/vendor/__main__.py +92 -0
  335. pcapkit/vendor/arp/__init__.py +27 -0
  336. pcapkit/vendor/arp/hardware.py +29 -0
  337. pcapkit/vendor/arp/operation.py +29 -0
  338. pcapkit/vendor/default.py +474 -0
  339. pcapkit/vendor/ftp/__init__.py +27 -0
  340. pcapkit/vendor/ftp/command.py +244 -0
  341. pcapkit/vendor/ftp/return_code.py +256 -0
  342. pcapkit/vendor/hip/__init__.py +94 -0
  343. pcapkit/vendor/hip/certificate.py +29 -0
  344. pcapkit/vendor/hip/cipher.py +29 -0
  345. pcapkit/vendor/hip/di.py +29 -0
  346. pcapkit/vendor/hip/ecdsa_curve.py +29 -0
  347. pcapkit/vendor/hip/ecdsa_low_curve.py +29 -0
  348. pcapkit/vendor/hip/eddsa_curve.py +85 -0
  349. pcapkit/vendor/hip/esp_transform_suite.py +29 -0
  350. pcapkit/vendor/hip/group.py +87 -0
  351. pcapkit/vendor/hip/hi_algorithm.py +29 -0
  352. pcapkit/vendor/hip/hit_suite.py +29 -0
  353. pcapkit/vendor/hip/nat_traversal.py +29 -0
  354. pcapkit/vendor/hip/notify_message.py +29 -0
  355. pcapkit/vendor/hip/packet.py +88 -0
  356. pcapkit/vendor/hip/parameter.py +88 -0
  357. pcapkit/vendor/hip/registration.py +29 -0
  358. pcapkit/vendor/hip/registration_failure.py +29 -0
  359. pcapkit/vendor/hip/suite.py +29 -0
  360. pcapkit/vendor/hip/transport.py +29 -0
  361. pcapkit/vendor/http/__init__.py +39 -0
  362. pcapkit/vendor/http/error_code.py +95 -0
  363. pcapkit/vendor/http/frame.py +91 -0
  364. pcapkit/vendor/http/method.py +167 -0
  365. pcapkit/vendor/http/setting.py +93 -0
  366. pcapkit/vendor/http/status_code.py +185 -0
  367. pcapkit/vendor/ipv4/__init__.py +57 -0
  368. pcapkit/vendor/ipv4/classification_level.py +91 -0
  369. pcapkit/vendor/ipv4/option_class.py +80 -0
  370. pcapkit/vendor/ipv4/option_number.py +105 -0
  371. pcapkit/vendor/ipv4/protection_authority.py +84 -0
  372. pcapkit/vendor/ipv4/qs_function.py +78 -0
  373. pcapkit/vendor/ipv4/router_alert.py +93 -0
  374. pcapkit/vendor/ipv4/tos_del.py +78 -0
  375. pcapkit/vendor/ipv4/tos_ecn.py +95 -0
  376. pcapkit/vendor/ipv4/tos_pre.py +84 -0
  377. pcapkit/vendor/ipv4/tos_rel.py +78 -0
  378. pcapkit/vendor/ipv4/tos_thr.py +77 -0
  379. pcapkit/vendor/ipv4/ts_flag.py +79 -0
  380. pcapkit/vendor/ipv6/__init__.py +53 -0
  381. pcapkit/vendor/ipv6/extension_header.py +171 -0
  382. pcapkit/vendor/ipv6/option.py +104 -0
  383. pcapkit/vendor/ipv6/option_action.py +90 -0
  384. pcapkit/vendor/ipv6/qs_function.py +78 -0
  385. pcapkit/vendor/ipv6/router_alert.py +93 -0
  386. pcapkit/vendor/ipv6/routing.py +87 -0
  387. pcapkit/vendor/ipv6/seed_id.py +81 -0
  388. pcapkit/vendor/ipv6/smf_dpd_mode.py +78 -0
  389. pcapkit/vendor/ipv6/tagger_id.py +81 -0
  390. pcapkit/vendor/ipx/__init__.py +37 -0
  391. pcapkit/vendor/ipx/packet.py +123 -0
  392. pcapkit/vendor/ipx/socket.py +125 -0
  393. pcapkit/vendor/l2tp/__init__.py +21 -0
  394. pcapkit/vendor/l2tp/type.py +78 -0
  395. pcapkit/vendor/mh/__init__.py +204 -0
  396. pcapkit/vendor/mh/access_type.py +87 -0
  397. pcapkit/vendor/mh/ack_status_code.py +88 -0
  398. pcapkit/vendor/mh/ani_suboption.py +88 -0
  399. pcapkit/vendor/mh/auth_subtype.py +83 -0
  400. pcapkit/vendor/mh/binding_ack_flag.py +148 -0
  401. pcapkit/vendor/mh/binding_error.py +78 -0
  402. pcapkit/vendor/mh/binding_revocation.py +87 -0
  403. pcapkit/vendor/mh/binding_update_flag.py +147 -0
  404. pcapkit/vendor/mh/cga_extension.py +91 -0
  405. pcapkit/vendor/mh/cga_sec.py +91 -0
  406. pcapkit/vendor/mh/cga_type.py +74 -0
  407. pcapkit/vendor/mh/dhcp_support_mode.py +77 -0
  408. pcapkit/vendor/mh/dns_status_code.py +87 -0
  409. pcapkit/vendor/mh/dsmip6_tls_packet.py +87 -0
  410. pcapkit/vendor/mh/dsmipv6_home_address.py +87 -0
  411. pcapkit/vendor/mh/enumerating_algorithm.py +82 -0
  412. pcapkit/vendor/mh/fb_ack_status.py +87 -0
  413. pcapkit/vendor/mh/fb_action.py +88 -0
  414. pcapkit/vendor/mh/fb_indication_trigger.py +87 -0
  415. pcapkit/vendor/mh/fb_type.py +88 -0
  416. pcapkit/vendor/mh/flow_id_status.py +87 -0
  417. pcapkit/vendor/mh/flow_id_suboption.py +87 -0
  418. pcapkit/vendor/mh/handoff_type.py +87 -0
  419. pcapkit/vendor/mh/handover_ack_flag.py +143 -0
  420. pcapkit/vendor/mh/handover_ack_status.py +87 -0
  421. pcapkit/vendor/mh/handover_initiate_flag.py +143 -0
  422. pcapkit/vendor/mh/handover_initiate_status.py +87 -0
  423. pcapkit/vendor/mh/home_address_reply.py +87 -0
  424. pcapkit/vendor/mh/lla_code.py +97 -0
  425. pcapkit/vendor/mh/lma_mag_suboption.py +88 -0
  426. pcapkit/vendor/mh/mn_group_id.py +87 -0
  427. pcapkit/vendor/mh/mn_id_subtype.py +87 -0
  428. pcapkit/vendor/mh/operator_id.py +87 -0
  429. pcapkit/vendor/mh/option.py +83 -0
  430. pcapkit/vendor/mh/packet.py +82 -0
  431. pcapkit/vendor/mh/qos_attribute.py +87 -0
  432. pcapkit/vendor/mh/revocation_status_code.py +87 -0
  433. pcapkit/vendor/mh/revocation_trigger.py +87 -0
  434. pcapkit/vendor/mh/status_code.py +91 -0
  435. pcapkit/vendor/mh/traffic_selector.py +87 -0
  436. pcapkit/vendor/mh/upa_status.py +87 -0
  437. pcapkit/vendor/mh/upn_reason.py +87 -0
  438. pcapkit/vendor/ospf/__init__.py +27 -0
  439. pcapkit/vendor/ospf/authentication.py +29 -0
  440. pcapkit/vendor/ospf/packet.py +29 -0
  441. pcapkit/vendor/pcapng/__init__.py +51 -0
  442. pcapkit/vendor/pcapng/block_type.py +94 -0
  443. pcapkit/vendor/pcapng/filter_type.py +77 -0
  444. pcapkit/vendor/pcapng/hash_algorithm.py +82 -0
  445. pcapkit/vendor/pcapng/option_type.py +287 -0
  446. pcapkit/vendor/pcapng/record_type.py +81 -0
  447. pcapkit/vendor/pcapng/secrets_type.py +81 -0
  448. pcapkit/vendor/pcapng/verdict_type.py +79 -0
  449. pcapkit/vendor/reg/__init__.py +34 -0
  450. pcapkit/vendor/reg/apptype.py +338 -0
  451. pcapkit/vendor/reg/ethertype.py +121 -0
  452. pcapkit/vendor/reg/linktype.py +110 -0
  453. pcapkit/vendor/reg/transtype.py +111 -0
  454. pcapkit/vendor/tcp/__init__.py +35 -0
  455. pcapkit/vendor/tcp/checksum.py +80 -0
  456. pcapkit/vendor/tcp/flags.py +149 -0
  457. pcapkit/vendor/tcp/mp_tcp_option.py +90 -0
  458. pcapkit/vendor/tcp/option.py +103 -0
  459. pcapkit/vendor/vlan/__init__.py +23 -0
  460. pcapkit/vendor/vlan/priority_level.py +97 -0
  461. pypcapkit-1.3.3.post1.dist-info/LICENSE +29 -0
  462. pypcapkit-1.3.3.post1.dist-info/METADATA +236 -0
  463. pypcapkit-1.3.3.post1.dist-info/RECORD +466 -0
  464. pypcapkit-1.3.3.post1.dist-info/WHEEL +5 -0
  465. pypcapkit-1.3.3.post1.dist-info/entry_points.txt +3 -0
  466. pypcapkit-1.3.3.post1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Handoff Indicator Option Type Values
3
+ ===============================================
4
+
5
+ .. module:: pcapkit.vendor.mh.handoff_type
6
+
7
+ This module contains the vendor crawler for **Handoff Indicator Option Type Values**,
8
+ which is automatically generating :class:`pcapkit.const.mh.handoff_type.HandoffType`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+
16
+ from pcapkit.vendor.default import Vendor
17
+
18
+ __all__ = ['HandoffType']
19
+
20
+
21
+ class HandoffType(Vendor):
22
+ """Handoff Indicator Option Type Values"""
23
+
24
+ #: Value limit checker.
25
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
26
+ #: Link to registry.
27
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/mobility-parameters-9.csv'
28
+
29
+ def process(self, data: 'list[str]') -> 'tuple[list[str], list[str]]':
30
+ """Process CSV data.
31
+
32
+ Args:
33
+ data: CSV data.
34
+
35
+ Returns:
36
+ Enumeration fields and missing fields.
37
+
38
+ """
39
+ reader = csv.reader(data)
40
+ next(reader) # header
41
+
42
+ enum = [] # type: list[str]
43
+ miss = [] # type: list[str]
44
+ for item in reader:
45
+ long = item[1]
46
+ rfcs = item[2]
47
+
48
+ temp = [] # type: list[str]
49
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
50
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
51
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
52
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
53
+ else:
54
+ temp.append(f'[{rfc}]'.replace('_', ' '))
55
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
56
+
57
+ split = long.split(' (', 1)
58
+ if len(split) == 2:
59
+ name = split[0]
60
+ cmmt = f" ({split[1]}"
61
+ else:
62
+ name, cmmt = long, ''
63
+ desc = self.wrap_comment(f'{name}{cmmt}{tmp1}')
64
+
65
+ try:
66
+ code, _ = item[0], int(item[0])
67
+ renm = self.rename(name, code, original=long)
68
+
69
+ pres = f"{renm} = {code}"
70
+ sufs = f'#: {desc}'
71
+
72
+ # if len(pres) > 74:
73
+ # sufs = f"\n{' '*80}{sufs}"
74
+
75
+ # enum.append(f'{pres.ljust(76)}{sufs}')
76
+ enum.append(f'{sufs}\n {pres}')
77
+ except ValueError:
78
+ start, stop = item[0].split('-')
79
+
80
+ miss.append(f'if {start} <= value <= {stop}:')
81
+ miss.append(f' #: {desc}')
82
+ miss.append(f" return extend_enum(cls, '{self.safe_name(name)}_%d' % value, value)")
83
+ return enum, miss
84
+
85
+
86
+ if __name__ == '__main__':
87
+ sys.exit(HandoffType()) # type: ignore[arg-type]
@@ -0,0 +1,143 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Handover Acknowledge Flags
3
+ ================================
4
+
5
+ .. module:: pcapkit.vendor.mh.handover_ack_flag
6
+
7
+ This module contains the vendor crawler for **Handover Acknowledge Flags**,
8
+ which is automatically generating :class:`pcapkit.const.mh.handover_ack_flag.HandoverACKFlag`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+ from typing import TYPE_CHECKING
16
+
17
+ from pcapkit.vendor.default import Vendor
18
+
19
+ __all__ = ['HandoverACKFlag']
20
+
21
+ if TYPE_CHECKING:
22
+ from typing import Callable
23
+
24
+
25
+ LINE = lambda NAME, DOCS, FLAG, ENUM, MODL: f'''\
26
+ # -*- coding: utf-8 -*-
27
+ # pylint: disable=line-too-long,consider-using-f-string
28
+ """{(name := DOCS.split(' [', maxsplit=1)[0])}
29
+ {'=' * (len(name) + 6)}
30
+
31
+ .. module:: {MODL.replace('vendor', 'const')}
32
+
33
+ This module contains the constant enumeration for **{name}**,
34
+ which is automatically generated from :class:`{MODL}.{NAME}`.
35
+
36
+ """
37
+
38
+ from aenum import IntFlag
39
+
40
+ __all__ = ['{NAME}']
41
+
42
+
43
+ class {NAME}(IntFlag):
44
+ """[{NAME}] {DOCS}"""
45
+
46
+ {ENUM}
47
+
48
+ @staticmethod
49
+ def get(key: 'int | str', default: 'int' = -1) -> '{NAME}':
50
+ """Backport support for original codes.
51
+
52
+ Args:
53
+ key: Key to get enum item.
54
+ default: Default value if not found.
55
+
56
+ :meta private:
57
+ """
58
+ if isinstance(key, int):
59
+ return {NAME}(key)
60
+ return {NAME}[key] # type: ignore[misc]
61
+
62
+ @classmethod
63
+ def _missing_(cls, value: 'int') -> '{NAME}':
64
+ """Lookup function used when value is not found.
65
+
66
+ Args:
67
+ value: Value to get enum item.
68
+
69
+ """
70
+ if not ({FLAG}):
71
+ raise ValueError('%r is not a valid %s' % (value, cls.__name__))
72
+ return cls(value)
73
+ ''' # type: Callable[[str, str, str, str, str], str]
74
+
75
+
76
+ class HandoverACKFlag(Vendor):
77
+ """Handover Acknowledge Flags"""
78
+
79
+ #: Value limit checker.
80
+ FLAG = 'isinstance(value, int) and 0 <= value <= 0xFF'
81
+ #: Link to registry.
82
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/handover-acknowledge-flags.csv'
83
+
84
+ def process(self, data: 'list[str]') -> 'list[str]': # type: ignore[override] # pylint: disable=arguments-differ,arguments-renamed
85
+ """Process CSV data.
86
+
87
+ Args:
88
+ data: CSV data.
89
+
90
+ Returns:
91
+ Enumeration fields and missing fields.
92
+
93
+ """
94
+ reader = csv.reader(data)
95
+ next(reader) # header
96
+
97
+ enum = [] # type: list[str]
98
+ for item in reader:
99
+ name = item[0]
100
+ dscp = item[2]
101
+ rfcs = item[3]
102
+
103
+ temp = [] # type: list[str]
104
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
105
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
106
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
107
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
108
+ else:
109
+ temp.append(f'[{rfc}]'.replace('_', ' '))
110
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
111
+
112
+ desc = self.wrap_comment(f'{dscp}{tmp1}')
113
+
114
+ code, code_val = item[1], int(item[1], base=16)
115
+ renm = self.rename(name, code)
116
+
117
+ pres = f"{renm} = 0x{code_val:02x}"
118
+ sufs = f'#: {desc}'
119
+
120
+ # if len(pres) > 74:
121
+ # sufs = f"\n{' '*80}{sufs}"
122
+
123
+ # enum.append(f'{pres.ljust(76)}{sufs}')
124
+ enum.append(f'{sufs}\n {pres}')
125
+ return enum
126
+
127
+ def context(self, data: 'list[str]') -> 'str': # pylint: disable=arguments-differ,arguments-renamed
128
+ """Generate constant context.
129
+
130
+ Args:
131
+ soup: Parsed HTML source.
132
+
133
+ Returns:
134
+ Constant context.
135
+
136
+ """
137
+ enum = self.process(data)
138
+ ENUM = '\n\n '.join(map(lambda s: s.rstrip(), enum))
139
+ return LINE(self.NAME, self.DOCS, self.FLAG, ENUM, self.__module__)
140
+
141
+
142
+ if __name__ == '__main__':
143
+ sys.exit(HandoverACKFlag()) # type: ignore[arg-type]
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Handover Acknowledge Status Codes
3
+ =======================================
4
+
5
+ .. module:: pcapkit.vendor.mh.handover_ack_status
6
+
7
+ This module contains the vendor crawler for **Handover Acknowledge Status Codes**,
8
+ which is automatically generating :class:`pcapkit.const.mh.handover_ack_status.HandoverACKStatus`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+
16
+ from pcapkit.vendor.default import Vendor
17
+
18
+ __all__ = ['HandoverACKStatus']
19
+
20
+
21
+ class HandoverACKStatus(Vendor):
22
+ """Handover Acknowledge Status Codes"""
23
+
24
+ #: Value limit checker.
25
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
26
+ #: Link to registry.
27
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/handover-acknowledge-status.csv'
28
+
29
+ def process(self, data: 'list[str]') -> 'tuple[list[str], list[str]]':
30
+ """Process CSV data.
31
+
32
+ Args:
33
+ data: CSV data.
34
+
35
+ Returns:
36
+ Enumeration fields and missing fields.
37
+
38
+ """
39
+ reader = csv.reader(data)
40
+ next(reader) # header
41
+
42
+ enum = [] # type: list[str]
43
+ miss = [] # type: list[str]
44
+ for item in reader:
45
+ long = item[1]
46
+ rfcs = item[2]
47
+
48
+ temp = [] # type: list[str]
49
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
50
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
51
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
52
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
53
+ else:
54
+ temp.append(f'[{rfc}]'.replace('_', ' '))
55
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
56
+
57
+ split = long.split(' (', 1)
58
+ if len(split) == 2:
59
+ name = split[0]
60
+ cmmt = f" ({split[1]}"
61
+ else:
62
+ name, cmmt = long, ''
63
+ desc = self.wrap_comment(f'{name}{cmmt}{tmp1}')
64
+
65
+ try:
66
+ code, _ = item[0], int(item[0])
67
+ renm = self.rename(name, code, original=long)
68
+
69
+ pres = f"{renm} = {code}"
70
+ sufs = f'#: {desc}'
71
+
72
+ # if len(pres) > 74:
73
+ # sufs = f"\n{' '*80}{sufs}"
74
+
75
+ # enum.append(f'{pres.ljust(76)}{sufs}')
76
+ enum.append(f'{sufs}\n {pres}')
77
+ except ValueError:
78
+ start, stop = item[0].split('-')
79
+
80
+ miss.append(f'if {start} <= value <= {stop}:')
81
+ miss.append(f' #: {desc}')
82
+ miss.append(f" return extend_enum(cls, '{self.safe_name(name)}_%d' % value, value)")
83
+ return enum, miss
84
+
85
+
86
+ if __name__ == '__main__':
87
+ sys.exit(HandoverACKStatus()) # type: ignore[arg-type]
@@ -0,0 +1,143 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Handover Initiate Flags
3
+ =============================
4
+
5
+ .. module:: pcapkit.vendor.mh.handover_initiate_flag
6
+
7
+ This module contains the vendor crawler for **Handover Initiate Flags**,
8
+ which is automatically generating :class:`pcapkit.const.mh.handover_initiate_flag.HandoverInitiateFlag`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+ from typing import TYPE_CHECKING
16
+
17
+ from pcapkit.vendor.default import Vendor
18
+
19
+ __all__ = ['HandoverInitiateFlag']
20
+
21
+ if TYPE_CHECKING:
22
+ from typing import Callable
23
+
24
+
25
+ LINE = lambda NAME, DOCS, FLAG, ENUM, MODL: f'''\
26
+ # -*- coding: utf-8 -*-
27
+ # pylint: disable=line-too-long,consider-using-f-string
28
+ """{(name := DOCS.split(' [', maxsplit=1)[0])}
29
+ {'=' * (len(name) + 6)}
30
+
31
+ .. module:: {MODL.replace('vendor', 'const')}
32
+
33
+ This module contains the constant enumeration for **{name}**,
34
+ which is automatically generated from :class:`{MODL}.{NAME}`.
35
+
36
+ """
37
+
38
+ from aenum import IntFlag
39
+
40
+ __all__ = ['{NAME}']
41
+
42
+
43
+ class {NAME}(IntFlag):
44
+ """[{NAME}] {DOCS}"""
45
+
46
+ {ENUM}
47
+
48
+ @staticmethod
49
+ def get(key: 'int | str', default: 'int' = -1) -> '{NAME}':
50
+ """Backport support for original codes.
51
+
52
+ Args:
53
+ key: Key to get enum item.
54
+ default: Default value if not found.
55
+
56
+ :meta private:
57
+ """
58
+ if isinstance(key, int):
59
+ return {NAME}(key)
60
+ return {NAME}[key] # type: ignore[misc]
61
+
62
+ @classmethod
63
+ def _missing_(cls, value: 'int') -> '{NAME}':
64
+ """Lookup function used when value is not found.
65
+
66
+ Args:
67
+ value: Value to get enum item.
68
+
69
+ """
70
+ if not ({FLAG}):
71
+ raise ValueError('%r is not a valid %s' % (value, cls.__name__))
72
+ return cls(value)
73
+ ''' # type: Callable[[str, str, str, str, str], str]
74
+
75
+
76
+ class HandoverInitiateFlag(Vendor):
77
+ """Handover Initiate Flags"""
78
+
79
+ #: Value limit checker.
80
+ FLAG = 'isinstance(value, int) and 0 <= value <= 0xFF'
81
+ #: Link to registry.
82
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/handover-initiate-flags.csv'
83
+
84
+ def process(self, data: 'list[str]') -> 'list[str]': # type: ignore[override] # pylint: disable=arguments-differ,arguments-renamed
85
+ """Process CSV data.
86
+
87
+ Args:
88
+ data: CSV data.
89
+
90
+ Returns:
91
+ Enumeration fields and missing fields.
92
+
93
+ """
94
+ reader = csv.reader(data)
95
+ next(reader) # header
96
+
97
+ enum = [] # type: list[str]
98
+ for item in reader:
99
+ name = item[0]
100
+ dscp = item[2]
101
+ rfcs = item[3]
102
+
103
+ temp = [] # type: list[str]
104
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
105
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
106
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
107
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
108
+ else:
109
+ temp.append(f'[{rfc}]'.replace('_', ' '))
110
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
111
+
112
+ desc = self.wrap_comment(f'{dscp}{tmp1}')
113
+
114
+ code, code_val = item[1], int(item[1], base=16)
115
+ renm = self.rename(name, code)
116
+
117
+ pres = f"{renm} = 0x{code_val:02x}"
118
+ sufs = f'#: {desc}'
119
+
120
+ # if len(pres) > 74:
121
+ # sufs = f"\n{' '*80}{sufs}"
122
+
123
+ # enum.append(f'{pres.ljust(76)}{sufs}')
124
+ enum.append(f'{sufs}\n {pres}')
125
+ return enum
126
+
127
+ def context(self, data: 'list[str]') -> 'str': # pylint: disable=arguments-differ,arguments-renamed
128
+ """Generate constant context.
129
+
130
+ Args:
131
+ soup: Parsed HTML source.
132
+
133
+ Returns:
134
+ Constant context.
135
+
136
+ """
137
+ enum = self.process(data)
138
+ ENUM = '\n\n '.join(map(lambda s: s.rstrip(), enum))
139
+ return LINE(self.NAME, self.DOCS, self.FLAG, ENUM, self.__module__)
140
+
141
+
142
+ if __name__ == '__main__':
143
+ sys.exit(HandoverInitiateFlag()) # type: ignore[arg-type]
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Handover Initiate Status Codes
3
+ ====================================
4
+
5
+ .. module:: pcapkit.vendor.mh.handover_initiate_status
6
+
7
+ This module contains the vendor crawler for **Handover Initiate Status Codes**,
8
+ which is automatically generating :class:`pcapkit.const.mh.handover_initiate_status.HandoverInitiateStatus`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+
16
+ from pcapkit.vendor.default import Vendor
17
+
18
+ __all__ = ['HandoverInitiateStatus']
19
+
20
+
21
+ class HandoverInitiateStatus(Vendor):
22
+ """Handover Initiate Status Codes"""
23
+
24
+ #: Value limit checker.
25
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
26
+ #: Link to registry.
27
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/handover-initiate-status.csv'
28
+
29
+ def process(self, data: 'list[str]') -> 'tuple[list[str], list[str]]':
30
+ """Process CSV data.
31
+
32
+ Args:
33
+ data: CSV data.
34
+
35
+ Returns:
36
+ Enumeration fields and missing fields.
37
+
38
+ """
39
+ reader = csv.reader(data)
40
+ next(reader) # header
41
+
42
+ enum = [] # type: list[str]
43
+ miss = [] # type: list[str]
44
+ for item in reader:
45
+ long = item[1]
46
+ rfcs = item[2]
47
+
48
+ temp = [] # type: list[str]
49
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
50
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
51
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
52
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
53
+ else:
54
+ temp.append(f'[{rfc}]'.replace('_', ' '))
55
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
56
+
57
+ split = long.split(' (', 1)
58
+ if len(split) == 2:
59
+ name = split[0]
60
+ cmmt = f" ({split[1]}"
61
+ else:
62
+ name, cmmt = long, ''
63
+ desc = self.wrap_comment(f'{name}{cmmt}{tmp1}')
64
+
65
+ try:
66
+ code, _ = item[0], int(item[0])
67
+ renm = self.rename(name, code, original=long)
68
+
69
+ pres = f"{renm} = {code}"
70
+ sufs = f'#: {desc}'
71
+
72
+ # if len(pres) > 74:
73
+ # sufs = f"\n{' '*80}{sufs}"
74
+
75
+ # enum.append(f'{pres.ljust(76)}{sufs}')
76
+ enum.append(f'{sufs}\n {pres}')
77
+ except ValueError:
78
+ start, stop = item[0].split('-')
79
+
80
+ miss.append(f'if {start} <= value <= {stop}:')
81
+ miss.append(f' #: {desc}')
82
+ miss.append(f" return extend_enum(cls, '{self.safe_name(name)}_%d' % value, value)")
83
+ return enum, miss
84
+
85
+
86
+ if __name__ == '__main__':
87
+ sys.exit(HandoverInitiateStatus()) # type: ignore[arg-type]
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ """IPv4 Home Address Reply Status Codes
3
+ ==========================================
4
+
5
+ .. module:: pcapkit.vendor.mh.home_address_reply
6
+
7
+ This module contains the vendor crawler for **IPv4 Home Address Reply Status Codes**,
8
+ which is automatically generating :class:`pcapkit.const.mh.home_address_reply.HomeAddressReply`.
9
+
10
+ """
11
+
12
+ import csv
13
+ import re
14
+ import sys
15
+
16
+ from pcapkit.vendor.default import Vendor
17
+
18
+ __all__ = ['HomeAddressReply']
19
+
20
+
21
+ class HomeAddressReply(Vendor):
22
+ """IPv4 Home Address Reply Status Codes"""
23
+
24
+ #: Value limit checker.
25
+ FLAG = 'isinstance(value, int) and 0 <= value <= 255'
26
+ #: Link to registry.
27
+ LINK = 'https://www.iana.org/assignments/mobility-parameters/home-address-reply.csv'
28
+
29
+ def process(self, data: 'list[str]') -> 'tuple[list[str], list[str]]':
30
+ """Process CSV data.
31
+
32
+ Args:
33
+ data: CSV data.
34
+
35
+ Returns:
36
+ Enumeration fields and missing fields.
37
+
38
+ """
39
+ reader = csv.reader(data)
40
+ next(reader) # header
41
+
42
+ enum = [] # type: list[str]
43
+ miss = [] # type: list[str]
44
+ for item in reader:
45
+ long = item[1]
46
+ rfcs = item[2]
47
+
48
+ temp = [] # type: list[str]
49
+ for rfc in filter(None, re.split(r'\[|\]', rfcs)):
50
+ if 'RFC' in rfc and re.match(r'\d+', rfc[3:]):
51
+ # temp.append(f'[{rfc[:3]} {rfc[3:]}]')
52
+ temp.append(f'[:rfc:`{rfc[3:]}`]')
53
+ else:
54
+ temp.append(f'[{rfc}]'.replace('_', ' '))
55
+ tmp1 = f" {''.join(temp)}" if rfcs else ''
56
+
57
+ split = long.split(' (', 1)
58
+ if len(split) == 2:
59
+ name = split[0]
60
+ cmmt = f" ({split[1]}"
61
+ else:
62
+ name, cmmt = long, ''
63
+ desc = self.wrap_comment(f'{name}{cmmt}{tmp1}')
64
+
65
+ try:
66
+ code, _ = item[0], int(item[0])
67
+ renm = self.rename(name, code, original=long)
68
+
69
+ pres = f"{renm} = {code}"
70
+ sufs = f'#: {desc}'
71
+
72
+ # if len(pres) > 74:
73
+ # sufs = f"\n{' '*80}{sufs}"
74
+
75
+ # enum.append(f'{pres.ljust(76)}{sufs}')
76
+ enum.append(f'{sufs}\n {pres}')
77
+ except ValueError:
78
+ start, stop = item[0].split('-')
79
+
80
+ miss.append(f'if {start} <= value <= {stop}:')
81
+ miss.append(f' #: {desc}')
82
+ miss.append(f" return extend_enum(cls, '{self.safe_name(name)}_%d' % value, value)")
83
+ return enum, miss
84
+
85
+
86
+ if __name__ == '__main__':
87
+ sys.exit(HomeAddressReply()) # type: ignore[arg-type]