pypcapkit 1.0.3.post3__tar.gz → 1.1.0.post1__tar.gz

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 (475) hide show
  1. {pypcapkit-1.0.3.post3/pypcapkit.egg-info → pypcapkit-1.1.0.post1}/PKG-INFO +1 -1
  2. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/__init__.py +1 -1
  3. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/option_type.py +25 -1
  4. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/reg/apptype.py +25 -1
  5. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/collections.py +4 -5
  6. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/field.py +33 -8
  7. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/ipaddress.py +0 -1
  8. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/misc.py +14 -19
  9. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/numbers.py +2 -3
  10. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/strings.py +2 -3
  11. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/infoclass.py +59 -6
  12. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/protochain.py +8 -1
  13. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/registry/protocols.py +30 -51
  14. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/__init__.py +4 -4
  15. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/__init__.py +4 -4
  16. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/mh.py +4 -4
  17. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/transport/__init__.py +4 -4
  18. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/transport/tcp.py +4 -4
  19. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/mh.py +20 -20
  20. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/protocol.py +3 -2
  21. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/__init__.py +4 -4
  22. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/application/httpv2.py +16 -29
  23. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/__init__.py +4 -4
  24. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/hip.py +62 -111
  25. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/hopopt.py +46 -48
  26. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ipv4.py +36 -41
  27. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ipv6_opts.py +48 -52
  28. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ipv6_route.py +9 -20
  29. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/mh.py +49 -84
  30. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/pcapng.py +178 -195
  31. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/schema.py +252 -53
  32. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/transport/__init__.py +4 -4
  33. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/transport/tcp.py +52 -83
  34. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/tcp.py +14 -14
  35. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/option_type.py +25 -1
  36. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/reg/apptype.py +25 -1
  37. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1/pypcapkit.egg-info}/PKG-INFO +1 -1
  38. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/LICENSE +0 -0
  39. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/MANIFEST.in +0 -0
  40. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/README.rst +0 -0
  41. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/__main__.py +0 -0
  42. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/all.py +0 -0
  43. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/__init__.py +0 -0
  44. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/arp/__init__.py +0 -0
  45. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/arp/hardware.py +0 -0
  46. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/arp/operation.py +0 -0
  47. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ftp/__init__.py +0 -0
  48. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ftp/command.py +0 -0
  49. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ftp/return_code.py +0 -0
  50. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/__init__.py +0 -0
  51. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/certificate.py +0 -0
  52. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/cipher.py +0 -0
  53. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/di.py +0 -0
  54. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/ecdsa_curve.py +0 -0
  55. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/ecdsa_low_curve.py +0 -0
  56. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/eddsa_curve.py +0 -0
  57. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/esp_transform_suite.py +0 -0
  58. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/group.py +0 -0
  59. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/hi_algorithm.py +0 -0
  60. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/hit_suite.py +0 -0
  61. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/nat_traversal.py +0 -0
  62. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/notify_message.py +0 -0
  63. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/packet.py +0 -0
  64. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/parameter.py +0 -0
  65. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/registration.py +0 -0
  66. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/registration_failure.py +0 -0
  67. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/suite.py +0 -0
  68. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/hip/transport.py +0 -0
  69. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/http/__init__.py +0 -0
  70. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/http/error_code.py +0 -0
  71. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/http/frame.py +0 -0
  72. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/http/method.py +0 -0
  73. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/http/setting.py +0 -0
  74. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/http/status_code.py +0 -0
  75. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/__init__.py +0 -0
  76. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/classification_level.py +0 -0
  77. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/option_class.py +0 -0
  78. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/option_number.py +0 -0
  79. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/protection_authority.py +0 -0
  80. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/qs_function.py +0 -0
  81. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/router_alert.py +0 -0
  82. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/tos_del.py +0 -0
  83. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/tos_ecn.py +0 -0
  84. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/tos_pre.py +0 -0
  85. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/tos_rel.py +0 -0
  86. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/tos_thr.py +0 -0
  87. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv4/ts_flag.py +0 -0
  88. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/__init__.py +0 -0
  89. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/extension_header.py +0 -0
  90. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/option.py +0 -0
  91. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/option_action.py +0 -0
  92. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/qs_function.py +0 -0
  93. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/router_alert.py +0 -0
  94. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/routing.py +0 -0
  95. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/seed_id.py +0 -0
  96. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/smf_dpd_mode.py +0 -0
  97. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipv6/tagger_id.py +0 -0
  98. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipx/__init__.py +0 -0
  99. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipx/packet.py +0 -0
  100. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ipx/socket.py +0 -0
  101. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/l2tp/__init__.py +0 -0
  102. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/l2tp/type.py +0 -0
  103. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/__init__.py +0 -0
  104. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/access_type.py +0 -0
  105. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/ack_status_code.py +0 -0
  106. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/ani_suboption.py +0 -0
  107. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/auth_subtype.py +0 -0
  108. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/binding_ack_flag.py +0 -0
  109. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/binding_error.py +0 -0
  110. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/binding_revocation.py +0 -0
  111. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/binding_update_flag.py +0 -0
  112. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/cga_extension.py +0 -0
  113. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/cga_sec.py +0 -0
  114. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/cga_type.py +0 -0
  115. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/dhcp_support_mode.py +0 -0
  116. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/dns_status_code.py +0 -0
  117. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/dsmip6_tls_packet.py +0 -0
  118. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/dsmipv6_home_address.py +0 -0
  119. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/enumerating_algorithm.py +0 -0
  120. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/fb_ack_status.py +0 -0
  121. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/fb_action.py +0 -0
  122. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/fb_indication_trigger.py +0 -0
  123. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/fb_type.py +0 -0
  124. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/flow_id_status.py +0 -0
  125. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/flow_id_suboption.py +0 -0
  126. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/handoff_type.py +0 -0
  127. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/handover_ack_flag.py +0 -0
  128. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/handover_ack_status.py +0 -0
  129. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/handover_initiate_flag.py +0 -0
  130. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/handover_initiate_status.py +0 -0
  131. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/home_address_reply.py +0 -0
  132. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/lla_code.py +0 -0
  133. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/lma_mag_suboption.py +0 -0
  134. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/mn_group_id.py +0 -0
  135. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/mn_id_subtype.py +0 -0
  136. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/operator_id.py +0 -0
  137. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/option.py +0 -0
  138. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/packet.py +0 -0
  139. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/qos_attribute.py +0 -0
  140. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/revocation_status_code.py +0 -0
  141. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/revocation_trigger.py +0 -0
  142. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/status_code.py +0 -0
  143. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/traffic_selector.py +0 -0
  144. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/upa_status.py +0 -0
  145. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/mh/upn_reason.py +0 -0
  146. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ospf/__init__.py +0 -0
  147. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ospf/authentication.py +0 -0
  148. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/ospf/packet.py +0 -0
  149. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/__init__.py +0 -0
  150. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/block_type.py +0 -0
  151. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/filter_type.py +0 -0
  152. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/hash_algorithm.py +0 -0
  153. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/record_type.py +0 -0
  154. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/secrets_type.py +0 -0
  155. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/pcapng/verdict_type.py +0 -0
  156. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/reg/__init__.py +0 -0
  157. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/reg/ethertype.py +0 -0
  158. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/reg/linktype.py +0 -0
  159. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/reg/transtype.py +0 -0
  160. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/tcp/__init__.py +0 -0
  161. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/tcp/checksum.py +0 -0
  162. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/tcp/flags.py +0 -0
  163. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/tcp/mp_tcp_option.py +0 -0
  164. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/tcp/option.py +0 -0
  165. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/vlan/__init__.py +0 -0
  166. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/const/vlan/priority_level.py +0 -0
  167. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/__init__.py +0 -0
  168. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/fields/__init__.py +0 -0
  169. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/multidict.py +0 -0
  170. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/corekit/version.py +0 -0
  171. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/dumpkit/__init__.py +0 -0
  172. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/dumpkit/common.py +0 -0
  173. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/dumpkit/null.py +0 -0
  174. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/dumpkit/pcap.py +0 -0
  175. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/__init__.py +0 -0
  176. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/__init__.py +0 -0
  177. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/dpkt.py +0 -0
  178. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/engine.py +0 -0
  179. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/pcap.py +0 -0
  180. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/pcapng.py +0 -0
  181. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/pyshark.py +0 -0
  182. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/engines/scapy.py +0 -0
  183. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/extraction.py +0 -0
  184. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/__init__.py +0 -0
  185. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/data/__init__.py +0 -0
  186. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/data/ip.py +0 -0
  187. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/data/tcp.py +0 -0
  188. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/ip.py +0 -0
  189. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/ipv4.py +0 -0
  190. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/ipv6.py +0 -0
  191. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/reassembly.py +0 -0
  192. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/reassembly/tcp.py +0 -0
  193. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/registry/__init__.py +0 -0
  194. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/registry/foundation.py +0 -0
  195. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/traceflow/__init__.py +0 -0
  196. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/traceflow/data/__init__.py +0 -0
  197. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/traceflow/data/tcp.py +0 -0
  198. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/traceflow/tcp.py +0 -0
  199. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/foundation/traceflow/traceflow.py +0 -0
  200. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/interface/__init__.py +0 -0
  201. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/interface/core.py +0 -0
  202. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/interface/misc.py +0 -0
  203. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/__init__.py +0 -0
  204. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/bgp.py +0 -0
  205. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/dhcp.py +0 -0
  206. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/dhcpv6.py +0 -0
  207. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/dns.py +0 -0
  208. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/imap.py +0 -0
  209. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/ldap.py +0 -0
  210. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/mqtt.py +0 -0
  211. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/nntp.py +0 -0
  212. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/ntp.py +0 -0
  213. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/onc_rpc.py +0 -0
  214. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/pop.py +0 -0
  215. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/rip.py +0 -0
  216. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/rtp.py +0 -0
  217. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/sip.py +0 -0
  218. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/smtp.py +0 -0
  219. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/snmp.py +0 -0
  220. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/ssh.py +0 -0
  221. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/telnet.py +0 -0
  222. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/tls.py +0 -0
  223. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/NotImplemented/xmpp.py +0 -0
  224. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/__init__.py +0 -0
  225. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/application.py +0 -0
  226. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/ftp.py +0 -0
  227. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/http.py +0 -0
  228. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/httpv1.py +0 -0
  229. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/application/httpv2.py +0 -0
  230. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/application/__init__.py +0 -0
  231. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/application/ftp.py +0 -0
  232. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/application/httpv1.py +0 -0
  233. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/application/httpv2.py +0 -0
  234. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/data.py +0 -0
  235. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ah.py +0 -0
  236. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/hip.py +0 -0
  237. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/hopopt.py +0 -0
  238. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ipv4.py +0 -0
  239. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ipv6.py +0 -0
  240. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ipv6_frag.py +0 -0
  241. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ipv6_opts.py +0 -0
  242. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ipv6_route.py +0 -0
  243. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/internet/ipx.py +0 -0
  244. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/link/__init__.py +0 -0
  245. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/link/arp.py +0 -0
  246. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/link/ethernet.py +0 -0
  247. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/link/l2tp.py +0 -0
  248. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/link/ospf.py +0 -0
  249. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/link/vlan.py +0 -0
  250. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/__init__.py +0 -0
  251. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/null.py +0 -0
  252. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/pcap/__init__.py +0 -0
  253. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/pcap/frame.py +0 -0
  254. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/pcap/header.py +0 -0
  255. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/pcapng.py +0 -0
  256. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/misc/raw.py +0 -0
  257. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/protocol.py +0 -0
  258. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/data/transport/udp.py +0 -0
  259. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/NotImplemented/ecn.py +0 -0
  260. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/NotImplemented/esp.py +0 -0
  261. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/NotImplemented/icmp.py +0 -0
  262. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/NotImplemented/icmpv6.py +0 -0
  263. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/NotImplemented/igmp.py +0 -0
  264. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/NotImplemented/shim6.py +0 -0
  265. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/__init__.py +0 -0
  266. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ah.py +0 -0
  267. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/hip.py +0 -0
  268. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/hopopt.py +0 -0
  269. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/internet.py +0 -0
  270. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ip.py +0 -0
  271. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipsec.py +0 -0
  272. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipv4.py +0 -0
  273. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipv6.py +0 -0
  274. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipv6_frag.py +0 -0
  275. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipv6_opts.py +0 -0
  276. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipv6_route.py +0 -0
  277. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/internet/ipx.py +0 -0
  278. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/NotImplemented/dsl.py +0 -0
  279. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/NotImplemented/eapol.py +0 -0
  280. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/NotImplemented/fddi.py +0 -0
  281. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/NotImplemented/isdn.py +0 -0
  282. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/NotImplemented/ndp.py +0 -0
  283. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/NotImplemented/ppp.py +0 -0
  284. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/__init__.py +0 -0
  285. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/arp.py +0 -0
  286. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/ethernet.py +0 -0
  287. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/l2tp.py +0 -0
  288. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/link.py +0 -0
  289. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/ospf.py +0 -0
  290. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/rarp.py +0 -0
  291. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/link/vlan.py +0 -0
  292. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/__init__.py +0 -0
  293. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/null.py +0 -0
  294. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/pcap/__init__.py +0 -0
  295. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/pcap/frame.py +0 -0
  296. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/pcap/header.py +0 -0
  297. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/pcapng.py +0 -0
  298. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/misc/raw.py +0 -0
  299. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/application/__init__.py +0 -0
  300. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/application/ftp.py +0 -0
  301. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/application/httpv1.py +0 -0
  302. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ah.py +0 -0
  303. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ipv6.py +0 -0
  304. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ipv6_frag.py +0 -0
  305. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/internet/ipx.py +0 -0
  306. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/link/__init__.py +0 -0
  307. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/link/arp.py +0 -0
  308. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/link/ethernet.py +0 -0
  309. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/link/l2tp.py +0 -0
  310. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/link/ospf.py +0 -0
  311. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/link/vlan.py +0 -0
  312. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/__init__.py +0 -0
  313. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/null.py +0 -0
  314. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/pcap/__init__.py +0 -0
  315. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/pcap/frame.py +0 -0
  316. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/pcap/header.py +0 -0
  317. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/misc/raw.py +0 -0
  318. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/schema/transport/udp.py +0 -0
  319. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
  320. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
  321. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/NotImplemented/sctp.py +0 -0
  322. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/__init__.py +0 -0
  323. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/transport.py +0 -0
  324. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/protocols/transport/udp.py +0 -0
  325. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/toolkit/__init__.py +0 -0
  326. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/toolkit/dpkt.py +0 -0
  327. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/toolkit/pcap.py +0 -0
  328. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/toolkit/pcapng.py +0 -0
  329. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/toolkit/pyshark.py +0 -0
  330. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/toolkit/scapy.py +0 -0
  331. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/utilities/__init__.py +0 -0
  332. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/utilities/compat.py +0 -0
  333. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/utilities/decorators.py +0 -0
  334. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/utilities/exceptions.py +0 -0
  335. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/utilities/logging.py +0 -0
  336. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/utilities/warnings.py +0 -0
  337. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/__init__.py +0 -0
  338. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/__main__.py +0 -0
  339. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/arp/__init__.py +0 -0
  340. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/arp/hardware.py +0 -0
  341. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/arp/operation.py +0 -0
  342. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/default.py +0 -0
  343. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ftp/__init__.py +0 -0
  344. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ftp/command.py +0 -0
  345. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ftp/return_code.py +0 -0
  346. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/__init__.py +0 -0
  347. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/certificate.py +0 -0
  348. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/cipher.py +0 -0
  349. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/di.py +0 -0
  350. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/ecdsa_curve.py +0 -0
  351. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/ecdsa_low_curve.py +0 -0
  352. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/eddsa_curve.py +0 -0
  353. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/esp_transform_suite.py +0 -0
  354. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/group.py +0 -0
  355. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/hi_algorithm.py +0 -0
  356. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/hit_suite.py +0 -0
  357. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/nat_traversal.py +0 -0
  358. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/notify_message.py +0 -0
  359. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/packet.py +0 -0
  360. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/parameter.py +0 -0
  361. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/registration.py +0 -0
  362. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/registration_failure.py +0 -0
  363. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/suite.py +0 -0
  364. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/hip/transport.py +0 -0
  365. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/http/__init__.py +0 -0
  366. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/http/error_code.py +0 -0
  367. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/http/frame.py +0 -0
  368. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/http/method.py +0 -0
  369. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/http/setting.py +0 -0
  370. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/http/status_code.py +0 -0
  371. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/__init__.py +0 -0
  372. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/classification_level.py +0 -0
  373. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/option_class.py +0 -0
  374. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/option_number.py +0 -0
  375. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/protection_authority.py +0 -0
  376. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/qs_function.py +0 -0
  377. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/router_alert.py +0 -0
  378. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/tos_del.py +0 -0
  379. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/tos_ecn.py +0 -0
  380. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/tos_pre.py +0 -0
  381. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/tos_rel.py +0 -0
  382. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/tos_thr.py +0 -0
  383. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv4/ts_flag.py +0 -0
  384. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/__init__.py +0 -0
  385. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/extension_header.py +0 -0
  386. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/option.py +0 -0
  387. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/option_action.py +0 -0
  388. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/qs_function.py +0 -0
  389. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/router_alert.py +0 -0
  390. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/routing.py +0 -0
  391. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/seed_id.py +0 -0
  392. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/smf_dpd_mode.py +0 -0
  393. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipv6/tagger_id.py +0 -0
  394. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipx/__init__.py +0 -0
  395. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipx/packet.py +0 -0
  396. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ipx/socket.py +0 -0
  397. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/l2tp/__init__.py +0 -0
  398. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/l2tp/type.py +0 -0
  399. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/__init__.py +0 -0
  400. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/access_type.py +0 -0
  401. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/ack_status_code.py +0 -0
  402. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/ani_suboption.py +0 -0
  403. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/auth_subtype.py +0 -0
  404. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/binding_ack_flag.py +0 -0
  405. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/binding_error.py +0 -0
  406. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/binding_revocation.py +0 -0
  407. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/binding_update_flag.py +0 -0
  408. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/cga_extension.py +0 -0
  409. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/cga_sec.py +0 -0
  410. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/cga_type.py +0 -0
  411. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/dhcp_support_mode.py +0 -0
  412. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/dns_status_code.py +0 -0
  413. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/dsmip6_tls_packet.py +0 -0
  414. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/dsmipv6_home_address.py +0 -0
  415. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/enumerating_algorithm.py +0 -0
  416. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/fb_ack_status.py +0 -0
  417. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/fb_action.py +0 -0
  418. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/fb_indication_trigger.py +0 -0
  419. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/fb_type.py +0 -0
  420. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/flow_id_status.py +0 -0
  421. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/flow_id_suboption.py +0 -0
  422. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/handoff_type.py +0 -0
  423. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/handover_ack_flag.py +0 -0
  424. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/handover_ack_status.py +0 -0
  425. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/handover_initiate_flag.py +0 -0
  426. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/handover_initiate_status.py +0 -0
  427. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/home_address_reply.py +0 -0
  428. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/lla_code.py +0 -0
  429. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/lma_mag_suboption.py +0 -0
  430. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/mn_group_id.py +0 -0
  431. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/mn_id_subtype.py +0 -0
  432. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/operator_id.py +0 -0
  433. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/option.py +0 -0
  434. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/packet.py +0 -0
  435. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/qos_attribute.py +0 -0
  436. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/revocation_status_code.py +0 -0
  437. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/revocation_trigger.py +0 -0
  438. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/status_code.py +0 -0
  439. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/traffic_selector.py +0 -0
  440. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/upa_status.py +0 -0
  441. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/mh/upn_reason.py +0 -0
  442. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ospf/__init__.py +0 -0
  443. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ospf/authentication.py +0 -0
  444. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/ospf/packet.py +0 -0
  445. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/__init__.py +0 -0
  446. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/block_type.py +0 -0
  447. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/filter_type.py +0 -0
  448. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/hash_algorithm.py +0 -0
  449. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/record_type.py +0 -0
  450. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/secrets_type.py +0 -0
  451. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/pcapng/verdict_type.py +0 -0
  452. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/reg/__init__.py +0 -0
  453. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/reg/ethertype.py +0 -0
  454. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/reg/linktype.py +0 -0
  455. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/reg/transtype.py +0 -0
  456. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/tcp/__init__.py +0 -0
  457. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/tcp/checksum.py +0 -0
  458. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/tcp/flags.py +0 -0
  459. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/tcp/mp_tcp_option.py +0 -0
  460. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/tcp/option.py +0 -0
  461. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/vlan/__init__.py +0 -0
  462. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pcapkit/vendor/vlan/priority_level.py +0 -0
  463. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pypcapkit.egg-info/SOURCES.txt +0 -0
  464. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pypcapkit.egg-info/dependency_links.txt +0 -0
  465. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pypcapkit.egg-info/entry_points.txt +0 -0
  466. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pypcapkit.egg-info/not-zip-safe +0 -0
  467. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pypcapkit.egg-info/requires.txt +0 -0
  468. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pypcapkit.egg-info/top_level.txt +0 -0
  469. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/pyproject.toml +0 -0
  470. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/setup.cfg +0 -0
  471. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/setup.py +0 -0
  472. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/util/bump_version.py +0 -0
  473. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/util/conda-build.py +0 -0
  474. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/util/conda-dist.py +0 -0
  475. {pypcapkit-1.0.3.post3 → pypcapkit-1.1.0.post1}/util/wheel_rename.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pypcapkit
3
- Version: 1.0.3.post3
3
+ Version: 1.1.0.post1
4
4
  Summary: PyPCAPKit: comprehensive network packet analysis library
5
5
  Author-email: Jarry Shaw <jarryshaw@icloud.com>
6
6
  Maintainer: Jarry Shaw
@@ -123,4 +123,4 @@ __all__ = [
123
123
  ]
124
124
 
125
125
  #: version number
126
- __version__ = '1.0.3.post3'
126
+ __version__ = '1.1.0.post1'
@@ -18,7 +18,7 @@ from aenum import StrEnum, extend_enum
18
18
  __all__ = ['OptionType']
19
19
 
20
20
  if TYPE_CHECKING:
21
- from typing import DefaultDict, Optional, Type
21
+ from typing import Any, DefaultDict, Optional, Type
22
22
 
23
23
 
24
24
  class OptionType(StrEnum):
@@ -53,6 +53,30 @@ class OptionType(StrEnum):
53
53
  def __str__(self) -> 'str':
54
54
  return '%s [%d]' % (self.opt_name, self.opt_value)
55
55
 
56
+ def __int__(self) -> 'int':
57
+ return self.opt_value
58
+
59
+ def __lt__(self, other: 'OptionType') -> 'bool':
60
+ return self.opt_value < other
61
+
62
+ def __gt__(self, other: 'OptionType') -> 'bool':
63
+ return self.opt_value > other
64
+
65
+ def __le__(self, other: 'OptionType') -> 'bool':
66
+ return self.opt_value <= other
67
+
68
+ def __ge__(self, other: 'OptionType') -> 'bool':
69
+ return self.opt_value >= other
70
+
71
+ def __eq__(self, other: 'Any') -> 'bool':
72
+ return self.opt_value == other
73
+
74
+ def __ne__(self, other: 'Any') -> 'bool':
75
+ return self.opt_value != other
76
+
77
+ def __hash__(self) -> 'int':
78
+ return hash(self.opt_value)
79
+
56
80
  #: opt_endofopt
57
81
  opt_endofopt: 'OptionType' = 0, 'opt_endofopt'
58
82
 
@@ -20,7 +20,7 @@ from pcapkit.utilities.compat import show_flag_values
20
20
  __all__ = ['AppType']
21
21
 
22
22
  if TYPE_CHECKING:
23
- from typing import DefaultDict, Type
23
+ from typing import Any, DefaultDict, Type
24
24
 
25
25
 
26
26
  class TransportProtocol(IntFlag):
@@ -92,6 +92,30 @@ class AppType(StrEnum):
92
92
  def __str__(self) -> 'str':
93
93
  return '%s [%d - %s]' % (self.svc, self.port, self.proto.name)
94
94
 
95
+ def __int__(self) -> 'int':
96
+ return self.opt_value
97
+
98
+ def __lt__(self, other: 'AppType') -> 'bool':
99
+ return self.opt_value < other
100
+
101
+ def __gt__(self, other: 'AppType') -> 'bool':
102
+ return self.opt_value > other
103
+
104
+ def __le__(self, other: 'AppType') -> 'bool':
105
+ return self.opt_value <= other
106
+
107
+ def __ge__(self, other: 'AppType') -> 'bool':
108
+ return self.opt_value >= other
109
+
110
+ def __eq__(self, other: 'Any') -> 'bool':
111
+ return self.opt_value == other
112
+
113
+ def __ne__(self, other: 'Any') -> 'bool':
114
+ return self.opt_value != other
115
+
116
+ def __hash__(self) -> 'int':
117
+ return hash(self.opt_value)
118
+
95
119
  #: - [TCP] Reserved
96
120
  #: - [UDP] Reserved
97
121
  reserved_0: 'AppType' = 0, 'reserved', TransportProtocol.get('tcp') | TransportProtocol.get('udp')
@@ -56,7 +56,7 @@ class ListField(_Field[List[_TL]], Generic[_TL]):
56
56
  def __init__(self, length: 'int | Callable[[dict[str, Any]], int]' = lambda _: -1,
57
57
  item_type: 'Optional[_Field]' = None,
58
58
  callback: 'Callable[[Self, dict[str, Any]], None]' = lambda *_: None) -> 'None':
59
- self._name = '<list>'
59
+ #self._name = '<list>'
60
60
  self._callback = callback
61
61
  self._item_type = item_type
62
62
 
@@ -75,9 +75,8 @@ class ListField(_Field[List[_TL]], Generic[_TL]):
75
75
  Returns:
76
76
  Updated field instance.
77
77
 
78
- Notes:
79
- This method will return a new instance of :class:`ListField`
80
- instead of updating the current instance.
78
+ This method will return a new instance of :class:`ListField`
79
+ instead of updating the current instance.
81
80
 
82
81
  """
83
82
  new_self = copy.copy(self)
@@ -213,7 +212,7 @@ class OptionField(ListField, Generic[_TS]):
213
212
  eool: 'Optional[int | StdlibEnum | AenumEnum]' = None,
214
213
  callback: 'Callable[[Self, dict[str, Any]], None]' = lambda *_: None) -> 'None':
215
214
  super().__init__(length, None, callback)
216
- self._name = '<option>'
215
+ #self._name = '<option>'
217
216
  self._eool = eool
218
217
  self._option_padding = 0
219
218
 
@@ -16,6 +16,8 @@ if TYPE_CHECKING:
16
16
 
17
17
  from typing_extensions import Literal, Self
18
18
 
19
+ from pcapkit.protocols.schema.schema import Schema
20
+
19
21
  _T = TypeVar('_T')
20
22
 
21
23
 
@@ -41,6 +43,10 @@ class _Field(Generic[_T], metaclass=abc.ABCMeta):
41
43
  :meth:`~_Field.pack` should be considerate of the template format
42
44
  and the actual value provided for packing.
43
45
 
46
+ Args:
47
+ *args: Arbitrary positional arguments.
48
+ **kwargs: Arbitrary keyword arguments.
49
+
44
50
  """
45
51
 
46
52
  if TYPE_CHECKING:
@@ -98,9 +104,8 @@ class _Field(Generic[_T], metaclass=abc.ABCMeta):
98
104
  Returns:
99
105
  Updated field instance.
100
106
 
101
- Notes:
102
- This method will return a new instance of :class:`_Field` instead of
103
- updating the current instance.
107
+ This method will return a new instance of :class:`_Field` instead of
108
+ updating the current instance.
104
109
 
105
110
  """
106
111
  new_self = copy.copy(self)
@@ -109,7 +114,9 @@ class _Field(Generic[_T], metaclass=abc.ABCMeta):
109
114
 
110
115
  # NOTE: This method is created as a placeholder for the necessary attributes.
111
116
  def __init__(self, *args: 'Any', **kwargs: 'Any') -> 'None':
112
- self._name = f'<{type(self).__name__[:-5].lower()}>'
117
+ if not hasattr(self, '_name'):
118
+ self._name = f'<{type(self).__name__[:-5].lower()}>'
119
+
113
120
  self._default = NoValue
114
121
  self._template = '0s'
115
122
  self._callback = lambda *_: None
@@ -119,6 +126,22 @@ class _Field(Generic[_T], metaclass=abc.ABCMeta):
119
126
  return f'<{self.__class__.__name__}>'
120
127
  return f'<{self.__class__.__name__} {self.name}>'
121
128
 
129
+ def __set_name__(self, owner: 'Schema', name: 'str') -> 'None':
130
+ """Set field name and update field list (if applicable).
131
+
132
+ This method is to be called by the metaclass during class creation.
133
+ It is used to set the field name and update the field list, i.e.,
134
+ :attr:`Schema.__fields__ <pcapkit.protocols.schema.schema.Schema.__fields__>`
135
+ mapping dictionary.
136
+
137
+ """
138
+ # Update field list (if applicable)
139
+ if hasattr(owner, '__fields__'):
140
+ owner.__fields__[name] = self
141
+
142
+ # Set field name
143
+ self.name = name
144
+
122
145
  def pre_process(self, value: '_T', packet: 'dict[str, Any]') -> 'Any': # pylint: disable=unused-argument
123
146
  """Process field value before construction (packing).
124
147
 
@@ -204,7 +227,10 @@ class Field(_Field[_T], Generic[_T]):
204
227
  def __init__(self, length: 'int | Callable[[dict[str, Any]], int]',
205
228
  default: '_T | NoValueType' = NoValue,
206
229
  callback: 'Callable[[Self, dict[str, Any]], None]' = lambda *_: None) -> 'None':
207
- self._name = '<unknown>'
230
+ #self._name = '<unknown>'
231
+ if not hasattr(self, '_name'):
232
+ self._name = f'<{type(self).__name__[:-5].lower()}>'
233
+
208
234
  self._default = default
209
235
  self._callback = callback
210
236
 
@@ -222,9 +248,8 @@ class Field(_Field[_T], Generic[_T]):
222
248
  Returns:
223
249
  New instance of :class:`Field`.
224
250
 
225
- Notes:
226
- This method will return a new instance of :class:`Field` instead of
227
- updating the current instance.
251
+ This method will return a new instance of :class:`Field` instead of
252
+ updating the current instance.
228
253
 
229
254
  """
230
255
  new_self = copy.copy(self)
@@ -3,7 +3,6 @@
3
3
 
4
4
  import abc
5
5
  import ipaddress
6
- from sys import prefix
7
6
  from typing import TYPE_CHECKING, Generic, TypeVar, cast
8
7
 
9
8
  from pcapkit.corekit.fields.field import _T, Field, NoValue
@@ -141,9 +141,8 @@ class ConditionalField(_Field[_TC]):
141
141
  Returns:
142
142
  Updated field instance.
143
143
 
144
- Notes:
145
- This method will return a new instance of :class:`ConditionalField`
146
- instead of updating the current instance.
144
+ This method will return a new instance of :class:`ConditionalField`
145
+ instead of updating the current instance.
147
146
 
148
147
  """
149
148
  new_self = copy.copy(self)
@@ -273,7 +272,7 @@ class PayloadField(_Field[_TP]):
273
272
  default: '_TP | NoValueType | bytes' = NoValue,
274
273
  protocol: 'Optional[Type[_TP]]' = None,
275
274
  callback: 'Callable[[Self, dict[str, Any]], None]' = lambda *_: None) -> 'None':
276
- self._name = '<payload>'
275
+ #self._name = '<payload>'
277
276
  self._default = default # type: ignore[assignment]
278
277
  self._protocol = protocol # type: ignore[assignment]
279
278
  self._callback = callback
@@ -293,9 +292,8 @@ class PayloadField(_Field[_TP]):
293
292
  Returns:
294
293
  Updated field instance.
295
294
 
296
- Notes:
297
- This method will return a new instance of :class:`PayloadField`
298
- instead of updating the current instance.
295
+ This method will return a new instance of :class:`PayloadField`
296
+ instead of updating the current instance.
299
297
 
300
298
  """
301
299
  new_self = copy.copy(self)
@@ -409,7 +407,7 @@ class SwitchField(_Field[_TC]):
409
407
  return self._field
410
408
 
411
409
  def __init__(self, selector: 'Callable[[dict[str, Any]], _Field[_TC]]' = lambda _: NoValueField()) -> 'None': # type: ignore[assignment,return-value]
412
- self._name = '<switch>'
410
+ #self._name = '<switch>'
413
411
  self._field = cast('_Field[_TC]', NoValueField())
414
412
  self._selector = selector
415
413
 
@@ -422,9 +420,8 @@ class SwitchField(_Field[_TC]):
422
420
  Returns:
423
421
  New field instance.
424
422
 
425
- Notes:
426
- This method will return a new instance of :class:`SwitchField`
427
- instead of updating the current instance.
423
+ This method will return a new instance of :class:`SwitchField`
424
+ instead of updating the current instance.
428
425
 
429
426
  """
430
427
  new_self = copy.copy(self)
@@ -527,7 +524,7 @@ class SchemaField(_Field[_TS]):
527
524
  default: '_TS | NoValueType | bytes' = NoValue,
528
525
  packet: 'Optional[dict[str, Any]]' = None,
529
526
  callback: 'Callable[[Self, dict[str, Any]], None]' = lambda *_: None) -> 'None':
530
- self._name = '<schema>'
527
+ #self._name = '<schema>'
531
528
  self._callback = callback
532
529
 
533
530
  if packet is None:
@@ -557,9 +554,8 @@ class SchemaField(_Field[_TS]):
557
554
  Returns:
558
555
  New field instance.
559
556
 
560
- Notes:
561
- This method will return a new instance of :class:`SchemaField`
562
- instead of updating the current instance.
557
+ This method will return a new instance of :class:`SchemaField`
558
+ instead of updating the current instance.
563
559
 
564
560
  """
565
561
  new_self = copy.copy(self)
@@ -679,7 +675,7 @@ class ForwardMatchField(_Field[_TC]):
679
675
  return self._field
680
676
 
681
677
  def __init__(self, field: '_Field[_TC]') -> 'None':
682
- self._name = '<forward_match>'
678
+ #self._name = '<forward_match>'
683
679
  self._field = field
684
680
 
685
681
  def __call__(self, packet: 'dict[str, Any]') -> 'Self':
@@ -691,9 +687,8 @@ class ForwardMatchField(_Field[_TC]):
691
687
  Returns:
692
688
  Updated field instance.
693
689
 
694
- Notes:
695
- This method will return a new instance of :class:`ConditionalField`
696
- instead of updating the current instance.
690
+ This method will return a new instance of :class:`ConditionalField`
691
+ instead of updating the current instance.
697
692
 
698
693
  """
699
694
  new_self = copy.copy(self)
@@ -92,9 +92,8 @@ class NumberField(Field[int], Generic[_T]):
92
92
  Returns:
93
93
  New instance of :class:`NumberField`.
94
94
 
95
- Notes:
96
- This method will return a new instance of :class:`NumberField` instead of
97
- updating the current instance.
95
+ This method will return a new instance of :class:`NumberField` instead of
96
+ updating the current instance.
98
97
 
99
98
  """
100
99
  new_self = super().__call__(packet)
@@ -56,9 +56,8 @@ class _TextField(Field[_T], Generic[_T]):
56
56
  Returns:
57
57
  New instance of :class:`_TextField`.
58
58
 
59
- Notes:
60
- This method will return a new instance of :class:`_TextField` instead of
61
- updating the current instance.
59
+ This method will return a new instance of :class:`_TextField` instead of
60
+ updating the current instance.
62
61
 
63
62
  """
64
63
  new_self = super().__call__(packet)
@@ -10,6 +10,7 @@ designed to work alike :func:`dataclasses.dataclass` as introduced
10
10
  in :pep:`557`.
11
11
 
12
12
  """
13
+ import abc
13
14
  import collections.abc
14
15
  import enum
15
16
  import itertools
@@ -49,6 +50,11 @@ def info_final(cls: 'ST', *, _finalised: 'bool' = True) -> 'ST':
49
50
  class. It can be useful to reduce runtime generation
50
51
  time as well as caching already generated attributes.
51
52
 
53
+ Notes:
54
+ The decorator should only be used on the *final*
55
+ class, otherwise, any subclasses derived from a
56
+ finalised info class will not be re-finalised.
57
+
52
58
  Args:
53
59
  cls: Info class.
54
60
  _finalised: Whether to make the info class as finalised.
@@ -56,11 +62,6 @@ def info_final(cls: 'ST', *, _finalised: 'bool' = True) -> 'ST':
56
62
  Returns:
57
63
  Finalised info class.
58
64
 
59
- Notes:
60
- The decorator should only be used on the *final*
61
- class, otherwise, any subclasses derived from a
62
- finalised info class will not be re-finalised.
63
-
64
65
  :meta decorator:
65
66
  """
66
67
  if cls.__finalised__ == FinalisedState.FINAL:
@@ -140,7 +141,59 @@ def info_final(cls: 'ST', *, _finalised: 'bool' = True) -> 'ST':
140
141
  return final(cls)
141
142
 
142
143
 
143
- class Info(Mapping[str, VT], Generic[VT]):
144
+ class InfoMeta(abc.ABCMeta):
145
+ """Meta class to add dynamic support to :class:`Info`.
146
+
147
+ This meta class is used to generate necessary attributes for the
148
+ :class:`Info` class. It can be useful to reduce runtime generation
149
+ cost as well as caching already generated attributes.
150
+
151
+ * :attr:`Info.__additional__` and :attr:`Info.__excluded__` are
152
+ lists of additional and excluded field names, which are used to
153
+ determine certain names to be included or excluded from the field
154
+ dictionary. They will be automatically populated from the class
155
+ attributes of the :class:`Info` class and its base classes.
156
+
157
+ .. note::
158
+
159
+ This is implemented thru the :meth:`__new__` method, which will
160
+ inherit the additional and excluded field names from the base
161
+ classes, as well as populating the additional and excluded field
162
+ from the subclass attributes.
163
+
164
+ .. code-block:: python
165
+
166
+ class A(Info):
167
+ __additional__ = ['a', 'b']
168
+
169
+ class B(A):
170
+ __additional__ = ['c', 'd']
171
+
172
+ class C(B):
173
+ __additional__ = ['e', 'f']
174
+
175
+ print(A.__additional__) # ['a', 'b']
176
+ print(B.__additional__) # ['a', 'b', 'c', 'd']
177
+ print(C.__additional__) # ['a', 'b', 'c', 'd', 'e', 'f']
178
+
179
+ """
180
+
181
+ def __new__(cls, name: 'str', bases: 'tuple[type, ...]', attrs: 'dict[str, Any]', **kwargs: 'Any') -> 'Type[Info]':
182
+ if '__additional__' not in attrs:
183
+ attrs['__additional__'] = []
184
+ if '__excluded__' not in attrs:
185
+ attrs['__excluded__'] = []
186
+
187
+ for base in bases:
188
+ if hasattr(base, '__additional__'):
189
+ attrs['__additional__'].extend(
190
+ name for name in base.__additional__ if name not in attrs['__additional__'])
191
+ if hasattr(base, '__excluded__'):
192
+ attrs['__excluded__'].extend(name for name in base.__excluded__ if name not in attrs['__excluded__'])
193
+ return super().__new__(cls, name, bases, attrs, **kwargs) # type: ignore[return-value]
194
+
195
+
196
+ class Info(Mapping[str, VT], Generic[VT], metaclass=InfoMeta):
144
197
  """Turn dictionaries into :obj:`object` like instances.
145
198
 
146
199
  * :class:`Info` objects inherit from :obj:`dict` type
@@ -26,7 +26,14 @@ __all__ = ['ProtoChain']
26
26
 
27
27
 
28
28
  class ProtoChain(collections.abc.Sequence):
29
- """Protocols chain."""
29
+ """Protocols chain.
30
+
31
+ Args:
32
+ proto: New protocol class on the top stack.
33
+ alias: New protocol alias on the top stack.
34
+ basis: Original protocol chain as base stacks.
35
+
36
+ """
30
37
 
31
38
  #: Internal data storage for protocol chain.
32
39
  __data__: 'tuple[tuple[str, Type[Protocol]], ...]'
@@ -8,7 +8,7 @@ This module provides the protocol registries for :mod:`pcapkit`.
8
8
 
9
9
  """
10
10
  import importlib
11
- from typing import TYPE_CHECKING, cast
11
+ from typing import TYPE_CHECKING
12
12
 
13
13
  from pcapkit.protocols import __proto__ as protocol_registry
14
14
  from pcapkit.protocols.application.httpv2 import HTTP as HTTPv2
@@ -23,21 +23,23 @@ from pcapkit.protocols.link.link import Link
23
23
  from pcapkit.protocols.misc.pcap.frame import Frame
24
24
  from pcapkit.protocols.misc.pcapng import PCAPNG
25
25
  from pcapkit.protocols.protocol import Protocol
26
- from pcapkit.protocols.schema.application.httpv2 import MAP_HTTP_FRAME
27
- from pcapkit.protocols.schema.internet.hip import HIP as Schema_HIP
28
- from pcapkit.protocols.schema.internet.hopopt import HOPOPT as Schema_HOPOPT
29
- from pcapkit.protocols.schema.internet.ipv4 import IPv4 as Schema_IPv4
30
- from pcapkit.protocols.schema.internet.ipv6_opts import IPv6_Opts as Schema_IPv6_Opts
31
- from pcapkit.protocols.schema.internet.ipv6_route import MAP_IPV6_ROUTE_DATA
32
- from pcapkit.protocols.schema.internet.mh import MAP_MH_DATA
33
- from pcapkit.protocols.schema.internet.mh import CGAParameter as Schema_MH_CGAParameter
26
+ from pcapkit.protocols.schema.application.httpv2 import FrameType as Schema_HTTP_FrameType
27
+ from pcapkit.protocols.schema.internet.hip import Parameter as Schema_HIP_Parameter
28
+ from pcapkit.protocols.schema.internet.hopopt import Option as Schema_HOPOPT_Option
29
+ from pcapkit.protocols.schema.internet.ipv4 import Option as Schema_IPv4_Option
30
+ from pcapkit.protocols.schema.internet.ipv6_opts import Option as Schema_IPv6_Opts_Option
31
+ from pcapkit.protocols.schema.internet.ipv6_route import \
32
+ RoutingType as Schema_IPv6_Route_RoutingType
33
+ from pcapkit.protocols.schema.internet.mh import CGAExtension as Schema_MH_CGAExtension
34
+ from pcapkit.protocols.schema.internet.mh import Option as Schema_MH_Option
34
35
  from pcapkit.protocols.schema.internet.mh import Packet as Schema_MH_Packet
35
- from pcapkit.protocols.schema.misc.pcapng import MAP_DSB_SECRETS, MAP_PCAPNG_BLOCK
36
36
  from pcapkit.protocols.schema.misc.pcapng import BlockType as Schema_PCAPNG_BlockType
37
+ from pcapkit.protocols.schema.misc.pcapng import DSBSecrets as Schema_PCAPNG_DSBSecrets
37
38
  from pcapkit.protocols.schema.misc.pcapng import \
38
- NameResolutionBlock as Schema_PCAPNG_NameResolutionBlock
39
- from pcapkit.protocols.schema.transport.tcp import MAP_MPTCP_DATA
40
- from pcapkit.protocols.schema.transport.tcp import TCP as Schema_TCP
39
+ NameResolutionRecord as Schema_PCAPNG_NameResolutionRecord
40
+ from pcapkit.protocols.schema.misc.pcapng import Option as Schema_PCAPNG_Option
41
+ from pcapkit.protocols.schema.transport.tcp import MPTCP as Schema_TCP_MPTCP
42
+ from pcapkit.protocols.schema.transport.tcp import Option as Schema_TCP_Option
41
43
  from pcapkit.protocols.transport.tcp import TCP
42
44
  from pcapkit.protocols.transport.udp import UDP
43
45
  from pcapkit.utilities.exceptions import RegistryError
@@ -65,7 +67,6 @@ if TYPE_CHECKING:
65
67
  from pcapkit.const.reg.transtype import TransType
66
68
  from pcapkit.const.tcp.mp_tcp_option import MPTCPOption as TCP_MPTCPOption
67
69
  from pcapkit.const.tcp.option import Option as TCP_Option
68
- from pcapkit.corekit.fields.collections import OptionField
69
70
  from pcapkit.protocols.application.httpv2 import FrameConstructor as HTTP_FrameConstructor
70
71
  from pcapkit.protocols.application.httpv2 import FrameParser as HTTP_FrameParser
71
72
  from pcapkit.protocols.internet.hip import ParameterConstructor as HIP_ParameterConstructor
@@ -93,22 +94,6 @@ if TYPE_CHECKING:
93
94
  from pcapkit.protocols.misc.pcapng import RecordParser as PCAPNG_RecordParser
94
95
  from pcapkit.protocols.misc.pcapng import SecretsConstructor as PCAPNG_SecretsConstructor
95
96
  from pcapkit.protocols.misc.pcapng import SecretsParser as PCAPNG_SecretsParser
96
- from pcapkit.protocols.schema.application.httpv2 import FrameType as Schema_HTTP_FrameType
97
- from pcapkit.protocols.schema.internet.hip import Parameter as Schema_HIP_Parameter
98
- from pcapkit.protocols.schema.internet.hopopt import Option as Schema_HOPOPT_Option
99
- from pcapkit.protocols.schema.internet.ipv4 import Option as Schema_IPv4_Option
100
- from pcapkit.protocols.schema.internet.ipv6_opts import Option as Schema_IPv6_Opts_Option
101
- from pcapkit.protocols.schema.internet.ipv6_route import \
102
- RoutingType as Schema_IPv6_Route_RoutingType
103
- from pcapkit.protocols.schema.internet.mh import CGAExtension as Schema_MH_CGAExtension
104
- from pcapkit.protocols.schema.internet.mh import Option as Schema_MH_Option
105
- from pcapkit.protocols.schema.internet.mh import Packet as Schema_MH_Packet
106
- from pcapkit.protocols.schema.misc.pcapng import DSBSecrets as Schema_PCAPNG_DSBSecrets
107
- from pcapkit.protocols.schema.misc.pcapng import \
108
- NameResolutionRecord as Schema_PCAPNG_NameResolutionRecord
109
- from pcapkit.protocols.schema.misc.pcapng import Option as Schema_PCAPNG_Option
110
- from pcapkit.protocols.schema.transport.tcp import MPTCP as Schema_TCP_MPTCP
111
- from pcapkit.protocols.schema.transport.tcp import Option as Schema_TCP_Option
112
97
  from pcapkit.protocols.transport.tcp import MPOptionConstructor as TCP_MPOptionConstructor
113
98
  from pcapkit.protocols.transport.tcp import MPOptionParser as TCP_MPOptionParser
114
99
  from pcapkit.protocols.transport.tcp import OptionConstructor as TCP_OptionConstructor
@@ -340,7 +325,7 @@ def register_ipv4_option(code: 'IPv4_OptionNumber', meth: 'str | tuple[IPv4_Opti
340
325
 
341
326
  IPv4.register_option(code, meth)
342
327
  if schema is not None:
343
- cast('OptionField[Schema_IPv4_Option]', Schema_IPv4.options).registry[code] = schema
328
+ Schema_IPv4_Option.register(code, schema)
344
329
  logger.info('registered IPv4 option parser: %s', code.name)
345
330
 
346
331
 
@@ -365,7 +350,7 @@ def register_hip_parameter(code: 'HIP_Parameter', meth: 'str | tuple[HIP_Paramet
365
350
 
366
351
  HIP.register_parameter(code, meth)
367
352
  if schema is not None:
368
- cast('OptionField[Schema_HIP_Parameter]', Schema_HIP.param).registry[code] = schema
353
+ Schema_HIP_Parameter.register(code, schema)
369
354
  logger.info('registered HIP parameter parser: %s', code.name)
370
355
 
371
356
 
@@ -390,7 +375,7 @@ def register_hopopt_option(code: 'IPv6_Option', meth: 'str | tuple[HOPOPT_Option
390
375
 
391
376
  HOPOPT.register_option(code, meth)
392
377
  if schema is not None:
393
- cast('OptionField[Schema_HOPOPT_Option]', Schema_HOPOPT.options).registry[code] = schema
378
+ Schema_HOPOPT_Option.register(code, schema)
394
379
  logger.info('registered HOPOPT option parser: %s', code.name)
395
380
 
396
381
 
@@ -415,7 +400,7 @@ def register_ipv6_opts_option(code: 'IPv6_Option', meth: 'str | tuple[IPv6_Opts_
415
400
 
416
401
  IPv6_Opts.register_option(code, meth)
417
402
  if schema is not None:
418
- cast('OptionField[Schema_IPv6_Opts_Option]', Schema_IPv6_Opts.options).registry[code] = schema
403
+ Schema_IPv6_Opts_Option.register(code, schema)
419
404
  logger.info('registered IPv6-Opts option parser: %s', code.name)
420
405
 
421
406
 
@@ -440,7 +425,7 @@ def register_ipv6_route_routing(code: 'IPv6_Routing', meth: 'str | tuple[IPv6_Ro
440
425
 
441
426
  IPv6_Route.register_routing(code, meth)
442
427
  if schema is not None:
443
- MAP_IPV6_ROUTE_DATA[code] = schema
428
+ Schema_IPv6_Route_RoutingType.register(code, schema)
444
429
  logger.info('registered IPv6-Route routing data parser: %s', code.name)
445
430
 
446
431
 
@@ -465,7 +450,7 @@ def register_mh_message(code: 'MH_Packet', meth: 'str | tuple[MH_PacketParser, M
465
450
 
466
451
  MH.register_message(code, meth)
467
452
  if schema is not None:
468
- MAP_MH_DATA[code] = schema
453
+ Schema_MH_Packet.register(code, schema)
469
454
  logger.info('registered MH message type parser: %s', code.name)
470
455
 
471
456
 
@@ -490,10 +475,7 @@ def register_mh_option(code: 'MH_Option', meth: 'str | tuple[MH_OptionParser, MH
490
475
 
491
476
  MH.register_option(code, meth)
492
477
  if schema is not None:
493
- for subclass in Schema_MH_Packet.__subclasses__():
494
- if not hasattr(subclass, 'options'):
495
- continue
496
- cast('OptionField[Schema_MH_Option]', subclass.options).registry[code] = schema
478
+ Schema_MH_Option.register(code, schema)
497
479
  logger.info('registered MH option parser: %s', code.name)
498
480
 
499
481
 
@@ -518,7 +500,7 @@ def register_mh_extension(code: 'MH_CGAExtension', meth: 'str | tuple[MH_Extensi
518
500
 
519
501
  MH.register_extension(code, meth)
520
502
  if schema is not None:
521
- cast('OptionField[Schema_MH_CGAExtension]', Schema_MH_CGAParameter.extensions).registry[code] = schema
503
+ Schema_MH_CGAExtension.register(code, schema)
522
504
  logger.info('registered MH CGA extension: %s', code.name)
523
505
 
524
506
 
@@ -616,7 +598,7 @@ def register_tcp_option(code: 'TCP_Option', meth: 'str | tuple[TCP_OptionParser,
616
598
 
617
599
  TCP.register_option(code, meth)
618
600
  if schema is not None:
619
- cast('OptionField[Schema_TCP_Option]', Schema_TCP.options).registry[code] = schema
601
+ Schema_TCP_Option.register(code, schema)
620
602
  logger.info('registered TCP option parser: %s', code.name)
621
603
 
622
604
 
@@ -641,7 +623,7 @@ def register_tcp_mp_option(code: 'TCP_MPTCPOption', meth: 'str | tuple[TCP_MPOpt
641
623
 
642
624
  TCP.register_mp_option(code, meth)
643
625
  if schema is not None:
644
- MAP_MPTCP_DATA[code] = schema
626
+ Schema_TCP_MPTCP.register(code, schema)
645
627
  logger.info('registered MPTCP option parser: %s', code.name)
646
628
 
647
629
 
@@ -699,7 +681,7 @@ def register_http_frame(code: 'HTTP_Frame', meth: 'str | tuple[HTTP_FrameParser,
699
681
 
700
682
  HTTPv2.register_frame(code, meth)
701
683
  if schema is not None:
702
- MAP_HTTP_FRAME[code] = schema
684
+ Schema_HTTP_FrameType.register(code, schema)
703
685
  logger.info('registered HTTP/2 frame parser: %s', code.name)
704
686
 
705
687
 
@@ -729,7 +711,7 @@ def register_pcapng_block(code: 'PCAPNG_BlockType', meth: 'str | tuple[PCAPNG_Bl
729
711
 
730
712
  PCAPNG.register_block(code, meth)
731
713
  if schema is not None:
732
- MAP_PCAPNG_BLOCK[code] = schema
714
+ Schema_PCAPNG_BlockType.register(code, schema)
733
715
  logger.info('registered PCAP-NG block parser: %s', code.name)
734
716
 
735
717
 
@@ -754,10 +736,7 @@ def register_pcapng_option(code: 'PCAPNG_OptionType', meth: 'str | tuple[PCAPNG_
754
736
 
755
737
  PCAPNG.register_option(code, meth)
756
738
  if schema is not None:
757
- for subclass in Schema_PCAPNG_BlockType.__subclasses__():
758
- if not hasattr(subclass, 'options'):
759
- continue
760
- cast('OptionField[Schema_PCAPNG_Option]', subclass.options).registry[code] = schema
739
+ Schema_PCAPNG_Option.register(code, schema)
761
740
  logger.info('registered PCAP-NG option parser: %s', code.name)
762
741
 
763
742
 
@@ -783,7 +762,7 @@ def register_pcapng_record(code: 'PCAPNG_RecordType', meth: 'str | tuple[PCAPNG_
783
762
 
784
763
  PCAPNG.register_record(code, meth)
785
764
  if schema is not None:
786
- cast('OptionField[Schema_PCAPNG_NameResolutionRecord]', Schema_PCAPNG_NameResolutionBlock.records).registry[code] = schema
765
+ Schema_PCAPNG_NameResolutionRecord.register(code, schema)
787
766
  logger.info('registered PCAP-NG name resolution record parser: %s', code.name)
788
767
 
789
768
 
@@ -808,5 +787,5 @@ def register_pcapng_secrets(code: 'PCAPNG_SecretsType', meth: 'str | tuple[PCAPN
808
787
 
809
788
  PCAPNG.register_secrets(code, meth)
810
789
  if schema is not None:
811
- MAP_DSB_SECRETS[code] = schema
790
+ Schema_PCAPNG_DSBSecrets.register(code, schema)
812
791
  logger.info('registered PCAP-NG decryption secrets parser: %s', code.name)