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.
- pcapkit/__init__.py +126 -0
- pcapkit/__main__.py +138 -0
- pcapkit/all.py +136 -0
- pcapkit/const/__init__.py +81 -0
- pcapkit/const/arp/__init__.py +25 -0
- pcapkit/const/arp/hardware.py +181 -0
- pcapkit/const/arp/operation.py +131 -0
- pcapkit/const/ftp/__init__.py +25 -0
- pcapkit/const/ftp/command.py +309 -0
- pcapkit/const/ftp/return_code.py +304 -0
- pcapkit/const/hip/__init__.py +94 -0
- pcapkit/const/hip/certificate.py +77 -0
- pcapkit/const/hip/cipher.py +65 -0
- pcapkit/const/hip/di.py +59 -0
- pcapkit/const/hip/ecdsa_curve.py +59 -0
- pcapkit/const/hip/ecdsa_low_curve.py +56 -0
- pcapkit/const/hip/eddsa_curve.py +65 -0
- pcapkit/const/hip/esp_transform_suite.py +98 -0
- pcapkit/const/hip/group.py +86 -0
- pcapkit/const/hip/hi_algorithm.py +86 -0
- pcapkit/const/hip/hit_suite.py +68 -0
- pcapkit/const/hip/nat_traversal.py +62 -0
- pcapkit/const/hip/notify_message.py +200 -0
- pcapkit/const/hip/packet.py +89 -0
- pcapkit/const/hip/parameter.py +377 -0
- pcapkit/const/hip/registration.py +68 -0
- pcapkit/const/hip/registration_failure.py +84 -0
- pcapkit/const/hip/suite.py +71 -0
- pcapkit/const/hip/transport.py +59 -0
- pcapkit/const/http/__init__.py +39 -0
- pcapkit/const/http/error_code.py +95 -0
- pcapkit/const/http/frame.py +95 -0
- pcapkit/const/http/method.py +184 -0
- pcapkit/const/http/setting.py +96 -0
- pcapkit/const/http/status_code.py +294 -0
- pcapkit/const/ipv4/__init__.py +57 -0
- pcapkit/const/ipv4/classification_level.py +64 -0
- pcapkit/const/ipv4/option_class.py +55 -0
- pcapkit/const/ipv4/option_number.py +137 -0
- pcapkit/const/ipv4/protection_authority.py +63 -0
- pcapkit/const/ipv4/qs_function.py +51 -0
- pcapkit/const/ipv4/router_alert.py +251 -0
- pcapkit/const/ipv4/tos_del.py +51 -0
- pcapkit/const/ipv4/tos_ecn.py +55 -0
- pcapkit/const/ipv4/tos_pre.py +63 -0
- pcapkit/const/ipv4/tos_rel.py +51 -0
- pcapkit/const/ipv4/tos_thr.py +51 -0
- pcapkit/const/ipv4/ts_flag.py +53 -0
- pcapkit/const/ipv6/__init__.py +53 -0
- pcapkit/const/ipv6/extension_header.py +66 -0
- pcapkit/const/ipv6/option.py +137 -0
- pcapkit/const/ipv6/option_action.py +55 -0
- pcapkit/const/ipv6/qs_function.py +51 -0
- pcapkit/const/ipv6/router_alert.py +266 -0
- pcapkit/const/ipv6/routing.py +80 -0
- pcapkit/const/ipv6/seed_id.py +55 -0
- pcapkit/const/ipv6/smf_dpd_mode.py +51 -0
- pcapkit/const/ipv6/tagger_id.py +62 -0
- pcapkit/const/ipx/__init__.py +27 -0
- pcapkit/const/ipx/packet.py +72 -0
- pcapkit/const/ipx/socket.py +104 -0
- pcapkit/const/l2tp/__init__.py +21 -0
- pcapkit/const/l2tp/type.py +51 -0
- pcapkit/const/mh/__init__.py +204 -0
- pcapkit/const/mh/access_type.py +92 -0
- pcapkit/const/mh/ack_status_code.py +71 -0
- pcapkit/const/mh/ani_suboption.py +74 -0
- pcapkit/const/mh/auth_subtype.py +53 -0
- pcapkit/const/mh/binding_ack_flag.py +66 -0
- pcapkit/const/mh/binding_error.py +51 -0
- pcapkit/const/mh/binding_revocation.py +59 -0
- pcapkit/const/mh/binding_update_flag.py +81 -0
- pcapkit/const/mh/cga_extension.py +66 -0
- pcapkit/const/mh/cga_sec.py +57 -0
- pcapkit/const/mh/cga_type.py +68 -0
- pcapkit/const/mh/dhcp_support_mode.py +53 -0
- pcapkit/const/mh/dns_status_code.py +65 -0
- pcapkit/const/mh/dsmip6_tls_packet.py +62 -0
- pcapkit/const/mh/dsmipv6_home_address.py +74 -0
- pcapkit/const/mh/enumerating_algorithm.py +56 -0
- pcapkit/const/mh/fb_ack_status.py +62 -0
- pcapkit/const/mh/fb_action.py +71 -0
- pcapkit/const/mh/fb_indication_trigger.py +65 -0
- pcapkit/const/mh/fb_type.py +59 -0
- pcapkit/const/mh/flow_id_status.py +77 -0
- pcapkit/const/mh/flow_id_suboption.py +71 -0
- pcapkit/const/mh/handoff_type.py +71 -0
- pcapkit/const/mh/handover_ack_flag.py +54 -0
- pcapkit/const/mh/handover_ack_status.py +92 -0
- pcapkit/const/mh/handover_initiate_flag.py +57 -0
- pcapkit/const/mh/handover_initiate_status.py +62 -0
- pcapkit/const/mh/home_address_reply.py +71 -0
- pcapkit/const/mh/lla_code.py +63 -0
- pcapkit/const/mh/lma_mag_suboption.py +59 -0
- pcapkit/const/mh/mn_group_id.py +59 -0
- pcapkit/const/mh/mn_id_subtype.py +77 -0
- pcapkit/const/mh/operator_id.py +63 -0
- pcapkit/const/mh/option.py +260 -0
- pcapkit/const/mh/packet.py +119 -0
- pcapkit/const/mh/qos_attribute.py +89 -0
- pcapkit/const/mh/revocation_status_code.py +83 -0
- pcapkit/const/mh/revocation_trigger.py +86 -0
- pcapkit/const/mh/status_code.py +232 -0
- pcapkit/const/mh/traffic_selector.py +62 -0
- pcapkit/const/mh/upa_status.py +71 -0
- pcapkit/const/mh/upn_reason.py +80 -0
- pcapkit/const/ospf/__init__.py +27 -0
- pcapkit/const/ospf/authentication.py +65 -0
- pcapkit/const/ospf/packet.py +71 -0
- pcapkit/const/pcapng/__init__.py +51 -0
- pcapkit/const/pcapng/block_type.py +152 -0
- pcapkit/const/pcapng/filter_type.py +48 -0
- pcapkit/const/pcapng/hash_algorithm.py +59 -0
- pcapkit/const/pcapng/option_type.py +233 -0
- pcapkit/const/pcapng/record_type.py +57 -0
- pcapkit/const/pcapng/secrets_type.py +56 -0
- pcapkit/const/pcapng/verdict_type.py +53 -0
- pcapkit/const/reg/__init__.py +34 -0
- pcapkit/const/reg/apptype.py +32702 -0
- pcapkit/const/reg/ethertype.py +714 -0
- pcapkit/const/reg/linktype.py +902 -0
- pcapkit/const/reg/transtype.py +523 -0
- pcapkit/const/tcp/__init__.py +35 -0
- pcapkit/const/tcp/checksum.py +55 -0
- pcapkit/const/tcp/flags.py +73 -0
- pcapkit/const/tcp/mp_tcp_option.py +80 -0
- pcapkit/const/tcp/option.py +198 -0
- pcapkit/const/vlan/__init__.py +23 -0
- pcapkit/const/vlan/priority_level.py +71 -0
- pcapkit/corekit/__init__.py +59 -0
- pcapkit/corekit/fields/__init__.py +45 -0
- pcapkit/corekit/fields/collections.py +282 -0
- pcapkit/corekit/fields/field.py +269 -0
- pcapkit/corekit/fields/ipaddress.py +274 -0
- pcapkit/corekit/fields/misc.py +722 -0
- pcapkit/corekit/fields/numbers.py +375 -0
- pcapkit/corekit/fields/strings.py +245 -0
- pcapkit/corekit/infoclass.py +394 -0
- pcapkit/corekit/io.py +506 -0
- pcapkit/corekit/module.py +39 -0
- pcapkit/corekit/multidict.py +626 -0
- pcapkit/corekit/protochain.py +263 -0
- pcapkit/corekit/version.py +33 -0
- pcapkit/dumpkit/__init__.py +15 -0
- pcapkit/dumpkit/common.py +199 -0
- pcapkit/dumpkit/null.py +77 -0
- pcapkit/dumpkit/pcap.py +144 -0
- pcapkit/foundation/__init__.py +45 -0
- pcapkit/foundation/engines/__init__.py +36 -0
- pcapkit/foundation/engines/dpkt.py +230 -0
- pcapkit/foundation/engines/engine.py +194 -0
- pcapkit/foundation/engines/pcap.py +188 -0
- pcapkit/foundation/engines/pcapng.py +310 -0
- pcapkit/foundation/engines/pyshark.py +166 -0
- pcapkit/foundation/engines/scapy.py +161 -0
- pcapkit/foundation/extraction.py +915 -0
- pcapkit/foundation/reassembly/__init__.py +49 -0
- pcapkit/foundation/reassembly/data/__init__.py +48 -0
- pcapkit/foundation/reassembly/data/ip.py +117 -0
- pcapkit/foundation/reassembly/data/tcp.py +145 -0
- pcapkit/foundation/reassembly/ip.py +192 -0
- pcapkit/foundation/reassembly/ipv4.py +50 -0
- pcapkit/foundation/reassembly/ipv6.py +50 -0
- pcapkit/foundation/reassembly/reassembly.py +389 -0
- pcapkit/foundation/reassembly/tcp.py +249 -0
- pcapkit/foundation/registry/__init__.py +41 -0
- pcapkit/foundation/registry/foundation.py +327 -0
- pcapkit/foundation/registry/protocols.py +885 -0
- pcapkit/foundation/traceflow/__init__.py +44 -0
- pcapkit/foundation/traceflow/data/__init__.py +30 -0
- pcapkit/foundation/traceflow/data/tcp.py +105 -0
- pcapkit/foundation/traceflow/tcp.py +159 -0
- pcapkit/foundation/traceflow/traceflow.py +390 -0
- pcapkit/interface/__init__.py +22 -0
- pcapkit/interface/core.py +185 -0
- pcapkit/interface/misc.py +120 -0
- pcapkit/protocols/__init__.py +85 -0
- pcapkit/protocols/application/NotImplemented/bgp.py +0 -0
- pcapkit/protocols/application/NotImplemented/dhcp.py +0 -0
- pcapkit/protocols/application/NotImplemented/dhcpv6.py +0 -0
- pcapkit/protocols/application/NotImplemented/dns.py +0 -0
- pcapkit/protocols/application/NotImplemented/imap.py +0 -0
- pcapkit/protocols/application/NotImplemented/ldap.py +0 -0
- pcapkit/protocols/application/NotImplemented/mqtt.py +0 -0
- pcapkit/protocols/application/NotImplemented/nntp.py +0 -0
- pcapkit/protocols/application/NotImplemented/ntp.py +0 -0
- pcapkit/protocols/application/NotImplemented/onc_rpc.py +0 -0
- pcapkit/protocols/application/NotImplemented/pop.py +0 -0
- pcapkit/protocols/application/NotImplemented/rip.py +0 -0
- pcapkit/protocols/application/NotImplemented/rtp.py +0 -0
- pcapkit/protocols/application/NotImplemented/sip.py +0 -0
- pcapkit/protocols/application/NotImplemented/smtp.py +0 -0
- pcapkit/protocols/application/NotImplemented/snmp.py +0 -0
- pcapkit/protocols/application/NotImplemented/ssh.py +0 -0
- pcapkit/protocols/application/NotImplemented/telnet.py +0 -0
- pcapkit/protocols/application/NotImplemented/tls.py +0 -0
- pcapkit/protocols/application/NotImplemented/xmpp.py +0 -0
- pcapkit/protocols/application/__init__.py +34 -0
- pcapkit/protocols/application/application.py +114 -0
- pcapkit/protocols/application/ftp.py +206 -0
- pcapkit/protocols/application/http.py +176 -0
- pcapkit/protocols/application/httpv1.py +320 -0
- pcapkit/protocols/application/httpv2.py +1255 -0
- pcapkit/protocols/data/__init__.py +192 -0
- pcapkit/protocols/data/application/__init__.py +57 -0
- pcapkit/protocols/data/application/ftp.py +59 -0
- pcapkit/protocols/data/application/httpv1.py +79 -0
- pcapkit/protocols/data/application/httpv2.py +293 -0
- pcapkit/protocols/data/data.py +25 -0
- pcapkit/protocols/data/internet/__init__.py +298 -0
- pcapkit/protocols/data/internet/ah.py +31 -0
- pcapkit/protocols/data/internet/hip.py +804 -0
- pcapkit/protocols/data/internet/hopopt.py +351 -0
- pcapkit/protocols/data/internet/ipv4.py +369 -0
- pcapkit/protocols/data/internet/ipv6.py +67 -0
- pcapkit/protocols/data/internet/ipv6_frag.py +29 -0
- pcapkit/protocols/data/internet/ipv6_opts.py +368 -0
- pcapkit/protocols/data/internet/ipv6_route.py +86 -0
- pcapkit/protocols/data/internet/ipx.py +56 -0
- pcapkit/protocols/data/internet/mh.py +509 -0
- pcapkit/protocols/data/link/__init__.py +33 -0
- pcapkit/protocols/data/link/arp.py +74 -0
- pcapkit/protocols/data/link/ethernet.py +28 -0
- pcapkit/protocols/data/link/l2tp.py +63 -0
- pcapkit/protocols/data/link/ospf.py +58 -0
- pcapkit/protocols/data/link/vlan.py +42 -0
- pcapkit/protocols/data/misc/__init__.py +109 -0
- pcapkit/protocols/data/misc/null.py +18 -0
- pcapkit/protocols/data/misc/pcap/__init__.py +18 -0
- pcapkit/protocols/data/misc/pcap/frame.py +56 -0
- pcapkit/protocols/data/misc/pcap/header.py +53 -0
- pcapkit/protocols/data/misc/pcapng.py +925 -0
- pcapkit/protocols/data/misc/raw.py +25 -0
- pcapkit/protocols/data/protocol.py +32 -0
- pcapkit/protocols/data/transport/__init__.py +71 -0
- pcapkit/protocols/data/transport/tcp.py +555 -0
- pcapkit/protocols/data/transport/udp.py +29 -0
- pcapkit/protocols/internet/NotImplemented/ecn.py +0 -0
- pcapkit/protocols/internet/NotImplemented/esp.py +97 -0
- pcapkit/protocols/internet/NotImplemented/icmp.py +0 -0
- pcapkit/protocols/internet/NotImplemented/icmpv6.py +0 -0
- pcapkit/protocols/internet/NotImplemented/igmp.py +0 -0
- pcapkit/protocols/internet/NotImplemented/shim6.py +0 -0
- pcapkit/protocols/internet/__init__.py +43 -0
- pcapkit/protocols/internet/ah.py +275 -0
- pcapkit/protocols/internet/hip.py +4727 -0
- pcapkit/protocols/internet/hopopt.py +1879 -0
- pcapkit/protocols/internet/internet.py +240 -0
- pcapkit/protocols/internet/ip.py +51 -0
- pcapkit/protocols/internet/ipsec.py +50 -0
- pcapkit/protocols/internet/ipv4.py +1782 -0
- pcapkit/protocols/internet/ipv6.py +361 -0
- pcapkit/protocols/internet/ipv6_frag.py +258 -0
- pcapkit/protocols/internet/ipv6_opts.py +1890 -0
- pcapkit/protocols/internet/ipv6_route.py +710 -0
- pcapkit/protocols/internet/ipx.py +230 -0
- pcapkit/protocols/internet/mh.py +2764 -0
- pcapkit/protocols/link/NotImplemented/dsl.py +0 -0
- pcapkit/protocols/link/NotImplemented/eapol.py +1 -0
- pcapkit/protocols/link/NotImplemented/fddi.py +0 -0
- pcapkit/protocols/link/NotImplemented/isdn.py +0 -0
- pcapkit/protocols/link/NotImplemented/ndp.py +0 -0
- pcapkit/protocols/link/NotImplemented/ppp.py +0 -0
- pcapkit/protocols/link/__init__.py +35 -0
- pcapkit/protocols/link/arp.py +421 -0
- pcapkit/protocols/link/ethernet.py +248 -0
- pcapkit/protocols/link/l2tp.py +267 -0
- pcapkit/protocols/link/link.py +140 -0
- pcapkit/protocols/link/ospf.py +342 -0
- pcapkit/protocols/link/rarp.py +82 -0
- pcapkit/protocols/link/vlan.py +225 -0
- pcapkit/protocols/misc/__init__.py +37 -0
- pcapkit/protocols/misc/null.py +129 -0
- pcapkit/protocols/misc/pcap/__init__.py +17 -0
- pcapkit/protocols/misc/pcap/frame.py +478 -0
- pcapkit/protocols/misc/pcap/header.py +358 -0
- pcapkit/protocols/misc/pcapng.py +5520 -0
- pcapkit/protocols/misc/raw.py +180 -0
- pcapkit/protocols/protocol.py +1216 -0
- pcapkit/protocols/schema/__init__.py +140 -0
- pcapkit/protocols/schema/application/__init__.py +40 -0
- pcapkit/protocols/schema/application/ftp.py +21 -0
- pcapkit/protocols/schema/application/httpv1.py +21 -0
- pcapkit/protocols/schema/application/httpv2.py +384 -0
- pcapkit/protocols/schema/internet/__init__.py +294 -0
- pcapkit/protocols/schema/internet/ah.py +40 -0
- pcapkit/protocols/schema/internet/hip.py +1184 -0
- pcapkit/protocols/schema/internet/hopopt.py +679 -0
- pcapkit/protocols/schema/internet/ipv4.py +576 -0
- pcapkit/protocols/schema/internet/ipv6.py +63 -0
- pcapkit/protocols/schema/internet/ipv6_frag.py +48 -0
- pcapkit/protocols/schema/internet/ipv6_opts.py +680 -0
- pcapkit/protocols/schema/internet/ipv6_route.py +198 -0
- pcapkit/protocols/schema/internet/ipx.py +40 -0
- pcapkit/protocols/schema/internet/mh.py +718 -0
- pcapkit/protocols/schema/link/__init__.py +19 -0
- pcapkit/protocols/schema/link/arp.py +39 -0
- pcapkit/protocols/schema/link/ethernet.py +51 -0
- pcapkit/protocols/schema/link/l2tp.py +88 -0
- pcapkit/protocols/schema/link/ospf.py +90 -0
- pcapkit/protocols/schema/link/vlan.py +69 -0
- pcapkit/protocols/schema/misc/__init__.py +108 -0
- pcapkit/protocols/schema/misc/null.py +18 -0
- pcapkit/protocols/schema/misc/pcap/__init__.py +10 -0
- pcapkit/protocols/schema/misc/pcap/frame.py +51 -0
- pcapkit/protocols/schema/misc/pcap/header.py +63 -0
- pcapkit/protocols/schema/misc/pcapng.py +1689 -0
- pcapkit/protocols/schema/misc/raw.py +24 -0
- pcapkit/protocols/schema/schema.py +809 -0
- pcapkit/protocols/schema/transport/__init__.py +69 -0
- pcapkit/protocols/schema/transport/tcp.py +928 -0
- pcapkit/protocols/schema/transport/udp.py +90 -0
- pcapkit/protocols/transport/NotImplemented/dccp.py +0 -0
- pcapkit/protocols/transport/NotImplemented/rsvp.py +0 -0
- pcapkit/protocols/transport/NotImplemented/sctp.py +0 -0
- pcapkit/protocols/transport/__init__.py +27 -0
- pcapkit/protocols/transport/tcp.py +3025 -0
- pcapkit/protocols/transport/transport.py +158 -0
- pcapkit/protocols/transport/udp.py +214 -0
- pcapkit/py.typed +0 -0
- pcapkit/toolkit/__init__.py +57 -0
- pcapkit/toolkit/dpkt.py +306 -0
- pcapkit/toolkit/pcap.py +212 -0
- pcapkit/toolkit/pcapng.py +251 -0
- pcapkit/toolkit/pyshark.py +99 -0
- pcapkit/toolkit/scapy.py +297 -0
- pcapkit/utilities/__init__.py +20 -0
- pcapkit/utilities/compat.py +196 -0
- pcapkit/utilities/decorators.py +192 -0
- pcapkit/utilities/exceptions.py +365 -0
- pcapkit/utilities/logging.py +55 -0
- pcapkit/utilities/warnings.py +185 -0
- pcapkit/vendor/__init__.py +105 -0
- pcapkit/vendor/__main__.py +92 -0
- pcapkit/vendor/arp/__init__.py +27 -0
- pcapkit/vendor/arp/hardware.py +29 -0
- pcapkit/vendor/arp/operation.py +29 -0
- pcapkit/vendor/default.py +474 -0
- pcapkit/vendor/ftp/__init__.py +27 -0
- pcapkit/vendor/ftp/command.py +244 -0
- pcapkit/vendor/ftp/return_code.py +256 -0
- pcapkit/vendor/hip/__init__.py +94 -0
- pcapkit/vendor/hip/certificate.py +29 -0
- pcapkit/vendor/hip/cipher.py +29 -0
- pcapkit/vendor/hip/di.py +29 -0
- pcapkit/vendor/hip/ecdsa_curve.py +29 -0
- pcapkit/vendor/hip/ecdsa_low_curve.py +29 -0
- pcapkit/vendor/hip/eddsa_curve.py +85 -0
- pcapkit/vendor/hip/esp_transform_suite.py +29 -0
- pcapkit/vendor/hip/group.py +87 -0
- pcapkit/vendor/hip/hi_algorithm.py +29 -0
- pcapkit/vendor/hip/hit_suite.py +29 -0
- pcapkit/vendor/hip/nat_traversal.py +29 -0
- pcapkit/vendor/hip/notify_message.py +29 -0
- pcapkit/vendor/hip/packet.py +88 -0
- pcapkit/vendor/hip/parameter.py +88 -0
- pcapkit/vendor/hip/registration.py +29 -0
- pcapkit/vendor/hip/registration_failure.py +29 -0
- pcapkit/vendor/hip/suite.py +29 -0
- pcapkit/vendor/hip/transport.py +29 -0
- pcapkit/vendor/http/__init__.py +39 -0
- pcapkit/vendor/http/error_code.py +95 -0
- pcapkit/vendor/http/frame.py +91 -0
- pcapkit/vendor/http/method.py +167 -0
- pcapkit/vendor/http/setting.py +93 -0
- pcapkit/vendor/http/status_code.py +185 -0
- pcapkit/vendor/ipv4/__init__.py +57 -0
- pcapkit/vendor/ipv4/classification_level.py +91 -0
- pcapkit/vendor/ipv4/option_class.py +80 -0
- pcapkit/vendor/ipv4/option_number.py +105 -0
- pcapkit/vendor/ipv4/protection_authority.py +84 -0
- pcapkit/vendor/ipv4/qs_function.py +78 -0
- pcapkit/vendor/ipv4/router_alert.py +93 -0
- pcapkit/vendor/ipv4/tos_del.py +78 -0
- pcapkit/vendor/ipv4/tos_ecn.py +95 -0
- pcapkit/vendor/ipv4/tos_pre.py +84 -0
- pcapkit/vendor/ipv4/tos_rel.py +78 -0
- pcapkit/vendor/ipv4/tos_thr.py +77 -0
- pcapkit/vendor/ipv4/ts_flag.py +79 -0
- pcapkit/vendor/ipv6/__init__.py +53 -0
- pcapkit/vendor/ipv6/extension_header.py +171 -0
- pcapkit/vendor/ipv6/option.py +104 -0
- pcapkit/vendor/ipv6/option_action.py +90 -0
- pcapkit/vendor/ipv6/qs_function.py +78 -0
- pcapkit/vendor/ipv6/router_alert.py +93 -0
- pcapkit/vendor/ipv6/routing.py +87 -0
- pcapkit/vendor/ipv6/seed_id.py +81 -0
- pcapkit/vendor/ipv6/smf_dpd_mode.py +78 -0
- pcapkit/vendor/ipv6/tagger_id.py +81 -0
- pcapkit/vendor/ipx/__init__.py +37 -0
- pcapkit/vendor/ipx/packet.py +123 -0
- pcapkit/vendor/ipx/socket.py +125 -0
- pcapkit/vendor/l2tp/__init__.py +21 -0
- pcapkit/vendor/l2tp/type.py +78 -0
- pcapkit/vendor/mh/__init__.py +204 -0
- pcapkit/vendor/mh/access_type.py +87 -0
- pcapkit/vendor/mh/ack_status_code.py +88 -0
- pcapkit/vendor/mh/ani_suboption.py +88 -0
- pcapkit/vendor/mh/auth_subtype.py +83 -0
- pcapkit/vendor/mh/binding_ack_flag.py +148 -0
- pcapkit/vendor/mh/binding_error.py +78 -0
- pcapkit/vendor/mh/binding_revocation.py +87 -0
- pcapkit/vendor/mh/binding_update_flag.py +147 -0
- pcapkit/vendor/mh/cga_extension.py +91 -0
- pcapkit/vendor/mh/cga_sec.py +91 -0
- pcapkit/vendor/mh/cga_type.py +74 -0
- pcapkit/vendor/mh/dhcp_support_mode.py +77 -0
- pcapkit/vendor/mh/dns_status_code.py +87 -0
- pcapkit/vendor/mh/dsmip6_tls_packet.py +87 -0
- pcapkit/vendor/mh/dsmipv6_home_address.py +87 -0
- pcapkit/vendor/mh/enumerating_algorithm.py +82 -0
- pcapkit/vendor/mh/fb_ack_status.py +87 -0
- pcapkit/vendor/mh/fb_action.py +88 -0
- pcapkit/vendor/mh/fb_indication_trigger.py +87 -0
- pcapkit/vendor/mh/fb_type.py +88 -0
- pcapkit/vendor/mh/flow_id_status.py +87 -0
- pcapkit/vendor/mh/flow_id_suboption.py +87 -0
- pcapkit/vendor/mh/handoff_type.py +87 -0
- pcapkit/vendor/mh/handover_ack_flag.py +143 -0
- pcapkit/vendor/mh/handover_ack_status.py +87 -0
- pcapkit/vendor/mh/handover_initiate_flag.py +143 -0
- pcapkit/vendor/mh/handover_initiate_status.py +87 -0
- pcapkit/vendor/mh/home_address_reply.py +87 -0
- pcapkit/vendor/mh/lla_code.py +97 -0
- pcapkit/vendor/mh/lma_mag_suboption.py +88 -0
- pcapkit/vendor/mh/mn_group_id.py +87 -0
- pcapkit/vendor/mh/mn_id_subtype.py +87 -0
- pcapkit/vendor/mh/operator_id.py +87 -0
- pcapkit/vendor/mh/option.py +83 -0
- pcapkit/vendor/mh/packet.py +82 -0
- pcapkit/vendor/mh/qos_attribute.py +87 -0
- pcapkit/vendor/mh/revocation_status_code.py +87 -0
- pcapkit/vendor/mh/revocation_trigger.py +87 -0
- pcapkit/vendor/mh/status_code.py +91 -0
- pcapkit/vendor/mh/traffic_selector.py +87 -0
- pcapkit/vendor/mh/upa_status.py +87 -0
- pcapkit/vendor/mh/upn_reason.py +87 -0
- pcapkit/vendor/ospf/__init__.py +27 -0
- pcapkit/vendor/ospf/authentication.py +29 -0
- pcapkit/vendor/ospf/packet.py +29 -0
- pcapkit/vendor/pcapng/__init__.py +51 -0
- pcapkit/vendor/pcapng/block_type.py +94 -0
- pcapkit/vendor/pcapng/filter_type.py +77 -0
- pcapkit/vendor/pcapng/hash_algorithm.py +82 -0
- pcapkit/vendor/pcapng/option_type.py +287 -0
- pcapkit/vendor/pcapng/record_type.py +81 -0
- pcapkit/vendor/pcapng/secrets_type.py +81 -0
- pcapkit/vendor/pcapng/verdict_type.py +79 -0
- pcapkit/vendor/reg/__init__.py +34 -0
- pcapkit/vendor/reg/apptype.py +338 -0
- pcapkit/vendor/reg/ethertype.py +121 -0
- pcapkit/vendor/reg/linktype.py +110 -0
- pcapkit/vendor/reg/transtype.py +111 -0
- pcapkit/vendor/tcp/__init__.py +35 -0
- pcapkit/vendor/tcp/checksum.py +80 -0
- pcapkit/vendor/tcp/flags.py +149 -0
- pcapkit/vendor/tcp/mp_tcp_option.py +90 -0
- pcapkit/vendor/tcp/option.py +103 -0
- pcapkit/vendor/vlan/__init__.py +23 -0
- pcapkit/vendor/vlan/priority_level.py +97 -0
- pypcapkit-1.3.3.post1.dist-info/LICENSE +29 -0
- pypcapkit-1.3.3.post1.dist-info/METADATA +236 -0
- pypcapkit-1.3.3.post1.dist-info/RECORD +466 -0
- pypcapkit-1.3.3.post1.dist-info/WHEEL +5 -0
- pypcapkit-1.3.3.post1.dist-info/entry_points.txt +3 -0
- pypcapkit-1.3.3.post1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,369 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""data model for IPv4 protocol"""
|
3
|
+
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
from pcapkit.const.ipv4.option_class import OptionClass
|
7
|
+
from pcapkit.const.ipv4.tos_del import ToSDelay
|
8
|
+
from pcapkit.corekit.infoclass import info_final
|
9
|
+
from pcapkit.protocols.data.data import Data
|
10
|
+
from pcapkit.protocols.data.protocol import Protocol
|
11
|
+
|
12
|
+
if TYPE_CHECKING:
|
13
|
+
from datetime import timedelta
|
14
|
+
from ipaddress import IPv4Address
|
15
|
+
from typing import Any, Optional
|
16
|
+
|
17
|
+
from typing_extensions import Literal
|
18
|
+
|
19
|
+
from pcapkit.const.ipv4.classification_level import ClassificationLevel
|
20
|
+
from pcapkit.const.ipv4.option_number import OptionNumber
|
21
|
+
from pcapkit.const.ipv4.protection_authority import ProtectionAuthority
|
22
|
+
from pcapkit.const.ipv4.qs_function import QSFunction
|
23
|
+
from pcapkit.const.ipv4.router_alert import RouterAlert
|
24
|
+
from pcapkit.const.ipv4.tos_ecn import ToSECN
|
25
|
+
from pcapkit.const.ipv4.tos_pre import ToSPrecedence
|
26
|
+
from pcapkit.const.ipv4.tos_rel import ToSReliability
|
27
|
+
from pcapkit.const.ipv4.tos_thr import ToSThroughput
|
28
|
+
from pcapkit.const.ipv4.ts_flag import TSFlag
|
29
|
+
from pcapkit.const.reg.transtype import TransType
|
30
|
+
from pcapkit.corekit.multidict import OrderedMultiDict
|
31
|
+
|
32
|
+
__all__ = [
|
33
|
+
'IPv4',
|
34
|
+
|
35
|
+
'ToSField', 'Flags',
|
36
|
+
'OptionType',
|
37
|
+
|
38
|
+
'UnassignedOption', 'EOOLOption', 'NOPOption',
|
39
|
+
'SECOption', 'LSROption', 'TSOption',
|
40
|
+
'ESECOption', 'RROption', 'SIDOption',
|
41
|
+
'SSROption', 'MTUPOption', 'MTUROption',
|
42
|
+
'TROption', 'RTRALTOption', 'QSOption',
|
43
|
+
'QuickStartRequestOption', 'QuickStartReportOption',
|
44
|
+
]
|
45
|
+
|
46
|
+
|
47
|
+
@info_final
|
48
|
+
class ToSField(Data):
|
49
|
+
"""Data model for IPv4 ToS fields.
|
50
|
+
|
51
|
+
Important:
|
52
|
+
Due to the preserved keyword conflict, please use :meth:`from_dict`
|
53
|
+
to create an instance of this data model.
|
54
|
+
|
55
|
+
"""
|
56
|
+
|
57
|
+
#: Precedence.
|
58
|
+
pre: 'ToSPrecedence'
|
59
|
+
#: Delay.
|
60
|
+
#del: 'ToSDelay'
|
61
|
+
#: Throughput.
|
62
|
+
thr: 'ToSThroughput'
|
63
|
+
#: Reliability.
|
64
|
+
rel: 'ToSReliability'
|
65
|
+
#: Explicit congestion notification (ECN).
|
66
|
+
ecn: 'ToSECN'
|
67
|
+
|
68
|
+
def __new__(cls, *args: 'Any', **kwargs: 'Any') -> 'ToSField':
|
69
|
+
self = super().__new__(cls, *args, **kwargs)
|
70
|
+
|
71
|
+
# NOTE: We cannot define ``del`` due to preserved keyword conflict.
|
72
|
+
# Thus, we directly inject the information into the annotations.
|
73
|
+
self.__annotations__['del'] = ToSDelay # pylint: disable=no-member
|
74
|
+
|
75
|
+
return self
|
76
|
+
|
77
|
+
|
78
|
+
@info_final
|
79
|
+
class Flags(Data):
|
80
|
+
"""Data model for IPv4 Flags."""
|
81
|
+
|
82
|
+
#: Don't fragment.
|
83
|
+
df: 'bool'
|
84
|
+
#: More fragments.
|
85
|
+
mf: 'bool'
|
86
|
+
|
87
|
+
if TYPE_CHECKING:
|
88
|
+
def __init__(self, df: 'bool', mf: 'bool') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
89
|
+
|
90
|
+
|
91
|
+
@info_final
|
92
|
+
class IPv4(Protocol):
|
93
|
+
"""Data model for IPv4 packet."""
|
94
|
+
|
95
|
+
#: Version.
|
96
|
+
version: 'Literal[4]'
|
97
|
+
#: Internet header length.
|
98
|
+
hdr_len: 'int'
|
99
|
+
#: Type of services.
|
100
|
+
tos: 'ToSField'
|
101
|
+
#: Total length.
|
102
|
+
len: 'int'
|
103
|
+
#: Identification.
|
104
|
+
id: 'int'
|
105
|
+
#: Flags.
|
106
|
+
flags: 'Flags'
|
107
|
+
#: Fragment offset.
|
108
|
+
offset: 'int'
|
109
|
+
#: Time to live.
|
110
|
+
ttl: 'timedelta'
|
111
|
+
#: Protocol.
|
112
|
+
protocol: 'TransType'
|
113
|
+
#: Header checksum.
|
114
|
+
checksum: 'bytes'
|
115
|
+
#: Source address.
|
116
|
+
src: 'IPv4Address'
|
117
|
+
#: Destination address.
|
118
|
+
dst: 'IPv4Address'
|
119
|
+
|
120
|
+
if TYPE_CHECKING:
|
121
|
+
options: 'OrderedMultiDict[OptionNumber, Option]'
|
122
|
+
|
123
|
+
def __init__(self, version: 'Literal[4]', hdr_len: 'int', tos: 'ToSField', len: 'int', id: 'int', flags: 'Flags', offset: 'int', ttl: 'timedelta', protocol: 'TransType', checksum: 'bytes', src: 'IPv4Address', dst: 'IPv4Address') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
124
|
+
|
125
|
+
|
126
|
+
@info_final
|
127
|
+
class OptionType(Data):
|
128
|
+
"""Data model for IPv4 option type data."""
|
129
|
+
|
130
|
+
#: Change flag.
|
131
|
+
change: 'bool'
|
132
|
+
#: Option class.
|
133
|
+
#class: 'int'
|
134
|
+
#: Number.
|
135
|
+
number: 'int'
|
136
|
+
|
137
|
+
def __new__(cls, *args: 'Any', **kwargs: 'Any') -> 'OptionType':
|
138
|
+
self = super().__new__(cls, *args, **kwargs)
|
139
|
+
|
140
|
+
# NOTE: We cannot define ``class`` due to preserved keyword conflict.
|
141
|
+
# Thus, we directly inject the information into the annotations.
|
142
|
+
self.__annotations__['class'] = OptionClass # pylint: disable=no-member
|
143
|
+
|
144
|
+
return self
|
145
|
+
|
146
|
+
|
147
|
+
class Option(Data):
|
148
|
+
"""Data model for IPv4 options."""
|
149
|
+
|
150
|
+
#: Option code.
|
151
|
+
code: 'OptionNumber'
|
152
|
+
#: Option length.
|
153
|
+
length: 'int'
|
154
|
+
#: Option type.
|
155
|
+
type: 'OptionType'
|
156
|
+
|
157
|
+
|
158
|
+
@info_final
|
159
|
+
class UnassignedOption(Option):
|
160
|
+
"""Data model for IPv4 unassigned option."""
|
161
|
+
|
162
|
+
#: Option data.
|
163
|
+
data: 'bytes'
|
164
|
+
|
165
|
+
if TYPE_CHECKING:
|
166
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', data: 'bytes') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
167
|
+
|
168
|
+
|
169
|
+
@info_final
|
170
|
+
class EOOLOption(Option):
|
171
|
+
"""Data model for IPv4 End of Option List (``EOOL``) option."""
|
172
|
+
|
173
|
+
if TYPE_CHECKING:
|
174
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
175
|
+
|
176
|
+
|
177
|
+
@info_final
|
178
|
+
class NOPOption(Option):
|
179
|
+
"""Data model for IPv4 No Operation (``NOP``) option."""
|
180
|
+
|
181
|
+
if TYPE_CHECKING:
|
182
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
183
|
+
|
184
|
+
|
185
|
+
@info_final
|
186
|
+
class SECOption(Option):
|
187
|
+
"""Data model for IPv4 Security (``SEC``) option."""
|
188
|
+
|
189
|
+
#: Classification level.
|
190
|
+
level: 'ClassificationLevel'
|
191
|
+
#: Protection authority flags.
|
192
|
+
flags: 'tuple[ProtectionAuthority, ...]'
|
193
|
+
|
194
|
+
if TYPE_CHECKING:
|
195
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', level: 'ClassificationLevel', flags: 'tuple[ProtectionAuthority, ...]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
196
|
+
|
197
|
+
|
198
|
+
@info_final
|
199
|
+
class LSROption(Option):
|
200
|
+
"""Data model for IPv4 Loose Source Route (``LSR``) option."""
|
201
|
+
|
202
|
+
#: Pointer.
|
203
|
+
pointer: 'int'
|
204
|
+
#: Route.
|
205
|
+
route: 'tuple[IPv4Address, ...]'
|
206
|
+
|
207
|
+
if TYPE_CHECKING:
|
208
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', pointer: 'int', route: 'tuple[IPv4Address, ...]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
209
|
+
|
210
|
+
|
211
|
+
@info_final
|
212
|
+
class TSOption(Option):
|
213
|
+
"""Data model for IPv4 Time Stamp (``TS``) option."""
|
214
|
+
|
215
|
+
#: Pointer.
|
216
|
+
pointer: 'int'
|
217
|
+
#: Overflow.
|
218
|
+
overflow: 'int'
|
219
|
+
#: Flag.
|
220
|
+
flag: 'TSFlag'
|
221
|
+
#: Timestamp data.
|
222
|
+
timestamp: 'tuple[timedelta | int, ...] | OrderedMultiDict[IPv4Address, timedelta | int]'
|
223
|
+
|
224
|
+
if TYPE_CHECKING:
|
225
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', pointer: 'int', overflow: 'int', flag: 'TSFlag', timestamp: 'tuple[timedelta | int, ...] | OrderedMultiDict[IPv4Address, timedelta | int]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
226
|
+
|
227
|
+
|
228
|
+
@info_final
|
229
|
+
class ESECOption(Option):
|
230
|
+
"""Data model for IPv4 Extended Security (``ESEC``) option."""
|
231
|
+
|
232
|
+
#: Additional security information format code.
|
233
|
+
format: 'int'
|
234
|
+
#: Additional security information.
|
235
|
+
info: 'bytes'
|
236
|
+
|
237
|
+
if TYPE_CHECKING:
|
238
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', format: 'int', info: 'bytes') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
239
|
+
|
240
|
+
|
241
|
+
@info_final
|
242
|
+
class RROption(Option):
|
243
|
+
"""Data model for IPv4 Record Route (``RR``) option."""
|
244
|
+
|
245
|
+
#: Pointer.
|
246
|
+
pointer: 'int'
|
247
|
+
#: Route.
|
248
|
+
route: 'Optional[tuple[IPv4Address, ...]]'
|
249
|
+
|
250
|
+
if TYPE_CHECKING:
|
251
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', pointer: 'int', route: 'Optional[tuple[IPv4Address, ...]]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
252
|
+
|
253
|
+
|
254
|
+
@info_final
|
255
|
+
class SIDOption(Option):
|
256
|
+
"""Data model for IPv4 Stream ID (``SID``) option."""
|
257
|
+
|
258
|
+
#: Stream ID.
|
259
|
+
sid: 'int'
|
260
|
+
|
261
|
+
if TYPE_CHECKING:
|
262
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', sid: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
263
|
+
|
264
|
+
|
265
|
+
@info_final
|
266
|
+
class SSROption(Option):
|
267
|
+
"""Data model for IPv4 Strict Source Route (``SSR``) option."""
|
268
|
+
|
269
|
+
#: Pointer.
|
270
|
+
pointer: 'int'
|
271
|
+
#: Route.
|
272
|
+
route: 'Optional[tuple[IPv4Address, ...]]'
|
273
|
+
|
274
|
+
if TYPE_CHECKING:
|
275
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', pointer: 'int', route: 'Optional[tuple[IPv4Address, ...]]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
276
|
+
|
277
|
+
|
278
|
+
@info_final
|
279
|
+
class MTUPOption(Option):
|
280
|
+
"""Data model for IPv4 MTU Probe (``MTUP``) option."""
|
281
|
+
|
282
|
+
#: MTU.
|
283
|
+
mtu: 'int'
|
284
|
+
|
285
|
+
if TYPE_CHECKING:
|
286
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', mtu: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
287
|
+
|
288
|
+
|
289
|
+
@info_final
|
290
|
+
class MTUROption(Option):
|
291
|
+
"""Data model for IPv4 MTU Reply (``MTUR``) option."""
|
292
|
+
|
293
|
+
#: MTU.
|
294
|
+
mtu: 'int'
|
295
|
+
|
296
|
+
if TYPE_CHECKING:
|
297
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', mtu: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
298
|
+
|
299
|
+
|
300
|
+
@info_final
|
301
|
+
class TROption(Option):
|
302
|
+
"""Data model for IPv4 Traceroute (``TR``) option.
|
303
|
+
|
304
|
+
Important:
|
305
|
+
Due to the preserved keyword conflict, please use :meth:`from_dict`
|
306
|
+
to create an instance of this data model.
|
307
|
+
|
308
|
+
"""
|
309
|
+
|
310
|
+
#: ID number.
|
311
|
+
id: 'int'
|
312
|
+
#: Outbound hop count.
|
313
|
+
outbound: 'int'
|
314
|
+
#: Return hop count.
|
315
|
+
#return: 'int'
|
316
|
+
originator: 'IPv4Address'
|
317
|
+
|
318
|
+
def __new__(cls, *args: 'Any', **kwargs: 'Any') -> 'TROption':
|
319
|
+
self = super().__new__(cls, *args, **kwargs)
|
320
|
+
|
321
|
+
# NOTE: We cannot define ``return`` due to preserved keyword conflict.
|
322
|
+
# Thus, we directly inject the information into the annotations.
|
323
|
+
self.__annotations__['return'] = int # pylint: disable=no-member
|
324
|
+
|
325
|
+
return self
|
326
|
+
|
327
|
+
|
328
|
+
@info_final
|
329
|
+
class RTRALTOption(Option):
|
330
|
+
"""Data model for IPv4 Router Alert (``RTRALT``) option."""
|
331
|
+
|
332
|
+
#: Router alert.
|
333
|
+
alert: 'RouterAlert'
|
334
|
+
|
335
|
+
if TYPE_CHECKING:
|
336
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', alert: 'RouterAlert') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
337
|
+
|
338
|
+
|
339
|
+
class QSOption(Option):
|
340
|
+
"""Data model for IPv4 Quick Start (``QS``) option."""
|
341
|
+
|
342
|
+
#: QS function.
|
343
|
+
func: 'QSFunction'
|
344
|
+
#: Rate request/report.
|
345
|
+
rate: 'int'
|
346
|
+
|
347
|
+
|
348
|
+
@info_final
|
349
|
+
class QuickStartRequestOption(QSOption):
|
350
|
+
"""Data model for IPv4 Quick Start request option."""
|
351
|
+
|
352
|
+
#: TTL.
|
353
|
+
ttl: 'timedelta'
|
354
|
+
#: Nonce.
|
355
|
+
nonce: 'int'
|
356
|
+
|
357
|
+
if TYPE_CHECKING:
|
358
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', func: 'QSFunction', rate: 'int', ttl: 'timedelta', nonce: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
359
|
+
|
360
|
+
|
361
|
+
@info_final
|
362
|
+
class QuickStartReportOption(QSOption):
|
363
|
+
"""Data model for IPv4 Quick Start report of approved rate option."""
|
364
|
+
|
365
|
+
#: Nonce.
|
366
|
+
nonce: 'int'
|
367
|
+
|
368
|
+
if TYPE_CHECKING:
|
369
|
+
def __init__(self, code: 'OptionNumber', length: 'int', type: 'OptionType', func: 'QSFunction', rate: 'int', nonce: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""data model for Internet Protocol version 6"""
|
3
|
+
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
from pcapkit.corekit.infoclass import info_final
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
|
+
|
9
|
+
if TYPE_CHECKING:
|
10
|
+
from ipaddress import IPv6Address
|
11
|
+
from typing import Any
|
12
|
+
|
13
|
+
from typing_extensions import Literal
|
14
|
+
|
15
|
+
from pcapkit.const.reg.transtype import TransType
|
16
|
+
from pcapkit.protocols.data.protocol import Packet
|
17
|
+
|
18
|
+
__all__ = [
|
19
|
+
'IPv6',
|
20
|
+
]
|
21
|
+
|
22
|
+
|
23
|
+
@info_final
|
24
|
+
class IPv6(Protocol):
|
25
|
+
"""Data model for Internet Protocol version 6.
|
26
|
+
|
27
|
+
Important:
|
28
|
+
Due to the preserved keyword conflict, please use :meth:`from_dict`
|
29
|
+
to create an instance of this data model.
|
30
|
+
|
31
|
+
"""
|
32
|
+
|
33
|
+
#: Version.
|
34
|
+
version: 'Literal[6]'
|
35
|
+
#: Traffic class.
|
36
|
+
#class: 'int'
|
37
|
+
#: Flow label.
|
38
|
+
label: 'int'
|
39
|
+
#: Payload length.
|
40
|
+
payload: 'int'
|
41
|
+
#: Next header.
|
42
|
+
next: 'TransType'
|
43
|
+
#: Hop limit.
|
44
|
+
limit: 'int'
|
45
|
+
#: Source address.
|
46
|
+
src: 'IPv6Address'
|
47
|
+
#: Destination address.
|
48
|
+
dst: 'IPv6Address'
|
49
|
+
|
50
|
+
if TYPE_CHECKING:
|
51
|
+
#: Fragmented packet header & payload (from IPv6-Frag header).
|
52
|
+
fragment: 'Packet'
|
53
|
+
#: Highest header protocol type (extension header excluded).
|
54
|
+
protocol: 'TransType'
|
55
|
+
#: Header length (including extension headers).
|
56
|
+
hdr_len: 'int'
|
57
|
+
#: Raw payload length (excluding extension headers).
|
58
|
+
raw_len: 'int'
|
59
|
+
|
60
|
+
def __new__(cls, *args: 'Any', **kwargs: 'Any') -> 'IPv6':
|
61
|
+
self = super().__new__(cls, *args, **kwargs)
|
62
|
+
|
63
|
+
# NOTE: We cannot define ``class`` due to preserved keyword conflict.
|
64
|
+
# Thus, we directly inject the information into the annotations.
|
65
|
+
self.__annotations__['class'] = int # pylint: disable=no-member
|
66
|
+
|
67
|
+
return self
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""data models for IPv6 Fragment Header"""
|
3
|
+
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
from pcapkit.corekit.infoclass import info_final
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
|
+
|
9
|
+
if TYPE_CHECKING:
|
10
|
+
from pcapkit.const.reg.transtype import TransType
|
11
|
+
|
12
|
+
__all__ = ['IPv6_Frag']
|
13
|
+
|
14
|
+
|
15
|
+
@info_final
|
16
|
+
class IPv6_Frag(Protocol):
|
17
|
+
"""Data model for IPv6 fragment header."""
|
18
|
+
|
19
|
+
#: Next header.
|
20
|
+
next: 'TransType'
|
21
|
+
#: Fragment offset.
|
22
|
+
offset: 'int'
|
23
|
+
#: More flag.
|
24
|
+
mf: 'bool'
|
25
|
+
#: Identification.
|
26
|
+
id: 'int'
|
27
|
+
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
def __init__(self, next: 'TransType', offset: 'int', mf: 'bool', id: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,redefined-builtin,multiple-statements
|