diff --git a/pcapkit/protocols/data/__init__.py b/pcapkit/protocols/data/__init__.py index 19f19dd31..353b1f50f 100644 --- a/pcapkit/protocols/data/__init__.py +++ b/pcapkit/protocols/data/__init__.py @@ -47,13 +47,14 @@ 'PCAPNG_NS_DNSNameOption', 'PCAPNG_NS_DNSIP4AddrOption', 'PCAPNG_NS_DNSIP6AddrOption', 'PCAPNG_ISB_StartTimeOption', 'PCAPNG_ISB_EndTimeOption', 'PCAPNG_ISB_IFRecvOption', 'PCAPNG_ISB_IFDropOption', 'PCAPNG_ISB_FilterAcceptOption', 'PCAPNG_ISB_OSDropOption', 'PCAPNG_ISB_UsrDelivOption', + 'PCAPNG_PACK_FlagsOption', 'PCAPNG_PACK_HashOption', 'PCAPNG_NameResolutionRecord', 'PCAPNG_UnknownRecord', 'PCAPNG_EndRecord', 'PCAPNG_IPv4Record', 'PCAPNG_IPv6Record', 'PCAPNG_DSBSecrets', 'PCAPNG_UnknownSecrets', 'PCAPNG_TLSKeyLog', 'PCAPNG_WireGuardKeyLog', 'PCAPNG_ZigBeeNWKKey', 'PCAPNG_ZigBeeAPSKey', 'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock', 'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock', 'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock', - 'PCAPNG_CustomBlock', + 'PCAPNG_CustomBlock', 'PCAPNG_PacketBlock', # Address Resolution Protocol 'ARP', 'ARP_Address', 'ARP_Type', @@ -99,6 +100,7 @@ # Hop-by-Hop Options 'HOPOPT', 'HOPOPT_RPLFlags', 'HOPOPT_MPLFlags', 'HOPOPT_DFFFlags', + 'HOPOPT_SMFDPDOption', 'HOPOPT_QuickStartOption', 'HOPOPT_UnassignedOption', 'HOPOPT_PadOption', 'HOPOPT_TunnelEncapsulationLimitOption', 'HOPOPT_RouterAlertOption', 'HOPOPT_CALIPSOOption', 'HOPOPT_SMFIdentificationBasedDPDOption', 'HOPOPT_SMFHashBasedDPDOption', 'HOPOPT_PDMOption', 'HOPOPT_QuickStartRequestOption', @@ -126,6 +128,7 @@ # IPv6 Destination Options Header 'IPv6_Opts', 'IPv6_Opts_RPLFlags', 'IPv6_Opts_MPLFlags', 'IPv6_Opts_DFFFlags', + 'IPv6_Opts_SMFDPDOption', 'IPv6_Opts_QuickStartOption', 'IPv6_Opts_UnassignedOption', 'IPv6_Opts_PadOption', 'IPv6_Opts_TunnelEncapsulationLimitOption', 'IPv6_Opts_RouterAlertOption', 'IPv6_Opts_CALIPSOOption', 'IPv6_Opts_SMFIdentificationBasedDPDOption', 'IPv6_Opts_SMFHashBasedDPDOption', 'IPv6_Opts_PDMOption', 'IPv6_Opts_QuickStartRequestOption', @@ -148,16 +151,50 @@ 'MH', 'MH_UnknownMessage', 'MH_BindingRefreshRequestMessage', 'MH_HomeTestInitMessage', 'MH_CareofTestInitMessage', 'MH_HomeTestMessage', 'MH_CareofTestMessage', 'MH_BindingUpdateMessage', 'MH_BindingAcknowledgementMessage', - 'MH_BindingErrorMessage', + 'MH_BindingErrorMessage', 'MH_FastBindingUpdateMessage', 'MH_FastBindingAcknowledgmentMessage', + 'MH_FastNeighborAdvertisementMessage', 'MH_ExperimentalMessage', 'MH_HandoverInitiateMessage', + 'MH_HandoverAcknowledgeMessage', 'MH_HeartbeatMessage', 'MH_HomeAgentSwitchMessage', 'MH_BindingRevocationMessage', + 'MH_LocalizedRoutingInitiationMessage', 'MH_LocalizedRoutingAcknowledgmentMessage', 'MH_UpdateNotificationMessage', + 'MH_UpdateNotificationAcknowledgementMessage', 'MH_FlowBindingMessage', 'MH_SubscriptionQueryMessage', + 'MH_SubscriptionResponseMessage', 'MH_Option', 'MH_UnassignedOption', 'MH_PadOption', 'MH_BindingRefreshAdviceOption', 'MH_AlternateCareofAddressOption', - 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', - 'MH_LinkLayerAddressOption', 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', - 'MH_CGAParametersOption', 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', - 'MH_CareofTestOption', + 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', 'MH_LinkLayerAddressOption', + 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', 'MH_CGAParametersOption', + 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', 'MH_CareofTestOption', + 'MH_ExperimentalMobilityOption', 'MH_BADFOption', 'MH_IPv6AddressPrefixOption', 'MH_HomeNetworkPrefixOption', + 'MH_HandoffIndicatorOption', 'MH_AccessTechnologyTypeOption', 'MH_MNLLIdentifierOption', + 'MH_LinkLocalAddressOption', 'MH_TimestampOption', 'MH_RestartCounterOption', 'MH_DNSUpdateOption', + 'MH_VendorSpecificOption', 'MH_ServiceSelectionOption', 'MH_IPv4HomeAddressOption', + 'MH_IPv4AddressAcknowledgementOption', 'MH_NATDetectionOption', 'MH_IPv4CareofAddressOption', 'MH_GREKeyOption', + 'MH_BindingIdentifierOption', 'MH_IPv4HomeAddressRequestOption', 'MH_IPv4HomeAddressReplyOption', + 'MH_IPv4DefaultRouterAddressOption', 'MH_IPv4DHCPSupportModeOption', 'MH_ContextRequestOption', + 'MH_LMAAddressOption', 'MH_MNLLAIIDOption', 'MH_TransientBindingOption', 'MH_FlowSummaryOption', + 'MH_FlowIdentificationOption', 'MH_RedirectCapabilityOption', 'MH_RedirectOption', 'MH_LoadInformationOption', + 'MH_AlternateIPv4CareofAddressOption', 'MH_MNGroupIdentifierOption', 'MH_MAGIPv6AddressOption', + 'MH_AccessNetworkIdentifierOption', 'MH_IPv4TrafficOffloadSelectorOption', 'MH_DynamicIPMulticastSelectorOption', + 'MH_DelegatedMNPOption', 'MH_ActiveMulticastSubscriptionIPv4Option', 'MH_ActiveMulticastSubscriptionIPv6Option', + 'MH_QualityOfServiceOption', 'MH_LMAUserPlaneAddressOption', 'MH_MulticastMobilityOption', + 'MH_MulticastAcknowledgementOption', 'MH_LMAControlledMAGParametersOption', 'MH_MAGMultipathBindingOption', + 'MH_MAGIdentifierOption', 'MH_AnchoredPrefixOption', 'MH_LocalPrefixOption', 'MH_PreviousMAAROption', + 'MH_ServingMAAROption', 'MH_DLIFLinkLocalAddressOption', 'MH_DLIFLinkLayerAddressOption', + 'MH_ContextRequest', + 'MH_FlowIdentificationSuboption', + 'MH_UnassignedFlowIdentificationSuboption', 'MH_PadFlowIdentificationSuboption', 'MH_BIDReferenceSuboption', + 'MH_TrafficSelectorSuboption', 'MH_FlowBindingActionSuboption', 'MH_TargetCareofAddressSuboption', + 'MH_ANISuboption', + 'MH_UnassignedANISuboption', 'MH_ANINetworkIdentifierSuboption', 'MH_ANIGeoLocationSuboption', + 'MH_ANIOperatorIdentifierSuboption', 'MH_ANICivicLocationSuboption', 'MH_ANIMAGGroupIdentifierSuboption', + 'MH_ANIUpdateTimerSuboption', + 'MH_QoSAttribute', + 'MH_UnassignedQoSAttribute', 'MH_BitRateAttribute', 'MH_PerSessionBitRateAttribute', + 'MH_AllocationRetentionPriorityAttribute', 'MH_QoSTrafficSelectorAttribute', 'MH_QoSVendorSpecificAttribute', + 'MH_LMAControlledMAGSuboption', + 'MH_UnassignedLMAControlledMAGSuboption', 'MH_BindingReregistrationControlSuboption', + 'MH_HeartbeatControlSuboption', 'MH_CGAParameter', 'MH_CGAExtension', - 'MH_UnknownExtension', 'MH_MultiPrefixExtension', + 'MH_UnknownExtension', 'MH_MultiPrefixExtension', 'MH_ExperimentalExtension', # Transmission Control Protocol 'TCP', @@ -218,7 +255,7 @@ # Hypertext Transfer Protocol (HTTP/2) 'HTTPv2', - 'HTTPv2_Flags', + 'HTTPv2_Flags', 'HTTPv2_Settings', 'HTTPv2_DataFrameFlags', 'HTTPv2_HeadersFrameFlags', 'HTTPv2_SettingsFrameFlags', 'HTTPv2_PushPromiseFrameFlags', 'HTTPv2_PingFrameFlags', 'HTTPv2_ContinuationFrameFlags', 'HTTPv2_UnassignedFrame', 'HTTPv2_DataFrame', 'HTTPv2_HeadersFrame', 'HTTPv2_PriorityFrame', diff --git a/pcapkit/protocols/data/application/__init__.py b/pcapkit/protocols/data/application/__init__.py index 5f8087a98..88d41724c 100644 --- a/pcapkit/protocols/data/application/__init__.py +++ b/pcapkit/protocols/data/application/__init__.py @@ -30,6 +30,7 @@ from pcapkit.protocols.data.application.httpv2 import \ PushPromiseFrameFlags as HTTPv2_PushPromiseFrameFlags from pcapkit.protocols.data.application.httpv2 import RSTStreamFrame as HTTPv2_RSTStreamFrame +from pcapkit.protocols.data.application.httpv2 import Settings as HTTPv2_Settings from pcapkit.protocols.data.application.httpv2 import SettingsFrame as HTTPv2_SettingsFrame from pcapkit.protocols.data.application.httpv2 import \ SettingsFrameFlags as HTTPv2_SettingsFrameFlags @@ -60,7 +61,7 @@ # Hypertext Transfer Protocol (HTTP/2) 'HTTPv2', - 'HTTPv2_Flags', + 'HTTPv2_Flags', 'HTTPv2_Settings', 'HTTPv2_DataFrameFlags', 'HTTPv2_HeadersFrameFlags', 'HTTPv2_SettingsFrameFlags', 'HTTPv2_PushPromiseFrameFlags', 'HTTPv2_PingFrameFlags', 'HTTPv2_ContinuationFrameFlags', 'HTTPv2_UnassignedFrame', 'HTTPv2_DataFrame', 'HTTPv2_HeadersFrame', 'HTTPv2_PriorityFrame', diff --git a/pcapkit/protocols/data/internet/__init__.py b/pcapkit/protocols/data/internet/__init__.py index 5db9559ff..fc740c988 100644 --- a/pcapkit/protocols/data/internet/__init__.py +++ b/pcapkit/protocols/data/internet/__init__.py @@ -85,6 +85,7 @@ from pcapkit.protocols.data.internet.hopopt import MPLOption as HOPOPT_MPLOption from pcapkit.protocols.data.internet.hopopt import PadOption as HOPOPT_PadOption from pcapkit.protocols.data.internet.hopopt import PDMOption as HOPOPT_PDMOption +from pcapkit.protocols.data.internet.hopopt import QuickStartOption as HOPOPT_QuickStartOption from pcapkit.protocols.data.internet.hopopt import \ QuickStartReportOption as HOPOPT_QuickStartReportOption from pcapkit.protocols.data.internet.hopopt import \ @@ -92,6 +93,7 @@ from pcapkit.protocols.data.internet.hopopt import RouterAlertOption as HOPOPT_RouterAlertOption from pcapkit.protocols.data.internet.hopopt import RPLFlags as HOPOPT_RPLFlags from pcapkit.protocols.data.internet.hopopt import RPLOption as HOPOPT_RPLOption +from pcapkit.protocols.data.internet.hopopt import SMFDPDOption as HOPOPT_SMFDPDOption from pcapkit.protocols.data.internet.hopopt import \ SMFHashBasedDPDOption as HOPOPT_SMFHashBasedDPDOption from pcapkit.protocols.data.internet.hopopt import \ @@ -150,6 +152,7 @@ from pcapkit.protocols.data.internet.ipv6_opts import MPLOption as IPv6_Opts_MPLOption from pcapkit.protocols.data.internet.ipv6_opts import PadOption as IPv6_Opts_PadOption from pcapkit.protocols.data.internet.ipv6_opts import PDMOption as IPv6_Opts_PDMOption +from pcapkit.protocols.data.internet.ipv6_opts import QuickStartOption as IPv6_Opts_QuickStartOption from pcapkit.protocols.data.internet.ipv6_opts import \ QuickStartReportOption as IPv6_Opts_QuickStartReportOption from pcapkit.protocols.data.internet.ipv6_opts import \ @@ -158,6 +161,7 @@ RouterAlertOption as IPv6_Opts_RouterAlertOption from pcapkit.protocols.data.internet.ipv6_opts import RPLFlags as IPv6_Opts_RPLFlags from pcapkit.protocols.data.internet.ipv6_opts import RPLOption as IPv6_Opts_RPLOption +from pcapkit.protocols.data.internet.ipv6_opts import SMFDPDOption as IPv6_Opts_SMFDPDOption from pcapkit.protocols.data.internet.ipv6_opts import \ SMFHashBasedDPDOption as IPv6_Opts_SMFHashBasedDPDOption from pcapkit.protocols.data.internet.ipv6_opts import \ @@ -179,18 +183,50 @@ # Mobility Header from pcapkit.protocols.data.internet.mh import MH +from pcapkit.protocols.data.internet.mh import \ + AccessNetworkIdentifierOption as MH_AccessNetworkIdentifierOption +from pcapkit.protocols.data.internet.mh import \ + AccessTechnologyTypeOption as MH_AccessTechnologyTypeOption +from pcapkit.protocols.data.internet.mh import \ + ActiveMulticastSubscriptionIPv4Option as MH_ActiveMulticastSubscriptionIPv4Option +from pcapkit.protocols.data.internet.mh import \ + ActiveMulticastSubscriptionIPv6Option as MH_ActiveMulticastSubscriptionIPv6Option +from pcapkit.protocols.data.internet.mh import \ + AllocationRetentionPriorityAttribute as MH_AllocationRetentionPriorityAttribute from pcapkit.protocols.data.internet.mh import \ AlternateCareofAddressOption as MH_AlternateCareofAddressOption +from pcapkit.protocols.data.internet.mh import \ + AlternateIPv4CareofAddressOption as MH_AlternateIPv4CareofAddressOption +from pcapkit.protocols.data.internet.mh import AnchoredPrefixOption as MH_AnchoredPrefixOption +from pcapkit.protocols.data.internet.mh import \ + ANICivicLocationSuboption as MH_ANICivicLocationSuboption +from pcapkit.protocols.data.internet.mh import ANIGeoLocationSuboption as MH_ANIGeoLocationSuboption +from pcapkit.protocols.data.internet.mh import \ + ANIMAGGroupIdentifierSuboption as MH_ANIMAGGroupIdentifierSuboption +from pcapkit.protocols.data.internet.mh import \ + ANINetworkIdentifierSuboption as MH_ANINetworkIdentifierSuboption +from pcapkit.protocols.data.internet.mh import \ + ANIOperatorIdentifierSuboption as MH_ANIOperatorIdentifierSuboption +from pcapkit.protocols.data.internet.mh import ANISuboption as MH_ANISuboption +from pcapkit.protocols.data.internet.mh import ANIUpdateTimerSuboption as MH_ANIUpdateTimerSuboption from pcapkit.protocols.data.internet.mh import AuthOption as MH_AuthOption +from pcapkit.protocols.data.internet.mh import AuthorizationDataOption as MH_AuthorizationDataOption +from pcapkit.protocols.data.internet.mh import BADFOption as MH_BADFOption +from pcapkit.protocols.data.internet.mh import BIDReferenceSuboption as MH_BIDReferenceSuboption from pcapkit.protocols.data.internet.mh import \ BindingAcknowledgementMessage as MH_BindingAcknowledgementMessage -from pcapkit.protocols.data.internet.mh import \ - AuthorizationDataOption as MH_AuthorizationDataOption from pcapkit.protocols.data.internet.mh import BindingErrorMessage as MH_BindingErrorMessage +from pcapkit.protocols.data.internet.mh import BindingIdentifierOption as MH_BindingIdentifierOption +from pcapkit.protocols.data.internet.mh import \ + BindingRefreshAdviceOption as MH_BindingRefreshAdviceOption from pcapkit.protocols.data.internet.mh import \ BindingRefreshRequestMessage as MH_BindingRefreshRequestMessage +from pcapkit.protocols.data.internet.mh import \ + BindingReregistrationControlSuboption as MH_BindingReregistrationControlSuboption +from pcapkit.protocols.data.internet.mh import \ + BindingRevocationMessage as MH_BindingRevocationMessage from pcapkit.protocols.data.internet.mh import BindingUpdateMessage as MH_BindingUpdateMessage -from pcapkit.protocols.data.internet.mh import BindingRefreshAdviceOption as MH_BindingRefreshAdviceOption +from pcapkit.protocols.data.internet.mh import BitRateAttribute as MH_BitRateAttribute from pcapkit.protocols.data.internet.mh import CareofTestInitMessage as MH_CareofTestInitMessage from pcapkit.protocols.data.internet.mh import CareofTestInitOption as MH_CareofTestInitOption from pcapkit.protocols.data.internet.mh import CareofTestMessage as MH_CareofTestMessage @@ -200,23 +236,139 @@ from pcapkit.protocols.data.internet.mh import CGAParametersOption as MH_CGAParametersOption from pcapkit.protocols.data.internet.mh import \ CGAParametersRequestOption as MH_CGAParametersRequestOption +from pcapkit.protocols.data.internet.mh import ContextRequest as MH_ContextRequest +from pcapkit.protocols.data.internet.mh import ContextRequestOption as MH_ContextRequestOption +from pcapkit.protocols.data.internet.mh import DelegatedMNPOption as MH_DelegatedMNPOption +from pcapkit.protocols.data.internet.mh import \ + DLIFLinkLayerAddressOption as MH_DLIFLinkLayerAddressOption +from pcapkit.protocols.data.internet.mh import \ + DLIFLinkLocalAddressOption as MH_DLIFLinkLocalAddressOption +from pcapkit.protocols.data.internet.mh import DNSUpdateOption as MH_DNSUpdateOption +from pcapkit.protocols.data.internet.mh import \ + DynamicIPMulticastSelectorOption as MH_DynamicIPMulticastSelectorOption +from pcapkit.protocols.data.internet.mh import ExperimentalExtension as MH_ExperimentalExtension +from pcapkit.protocols.data.internet.mh import ExperimentalMessage as MH_ExperimentalMessage +from pcapkit.protocols.data.internet.mh import \ + ExperimentalMobilityOption as MH_ExperimentalMobilityOption +from pcapkit.protocols.data.internet.mh import \ + FastBindingAcknowledgmentMessage as MH_FastBindingAcknowledgmentMessage +from pcapkit.protocols.data.internet.mh import \ + FastBindingUpdateMessage as MH_FastBindingUpdateMessage +from pcapkit.protocols.data.internet.mh import \ + FastNeighborAdvertisementMessage as MH_FastNeighborAdvertisementMessage +from pcapkit.protocols.data.internet.mh import \ + FlowBindingActionSuboption as MH_FlowBindingActionSuboption +from pcapkit.protocols.data.internet.mh import FlowBindingMessage as MH_FlowBindingMessage +from pcapkit.protocols.data.internet.mh import \ + FlowIdentificationOption as MH_FlowIdentificationOption +from pcapkit.protocols.data.internet.mh import \ + FlowIdentificationSuboption as MH_FlowIdentificationSuboption +from pcapkit.protocols.data.internet.mh import FlowSummaryOption as MH_FlowSummaryOption +from pcapkit.protocols.data.internet.mh import GREKeyOption as MH_GREKeyOption +from pcapkit.protocols.data.internet.mh import HandoffIndicatorOption as MH_HandoffIndicatorOption +from pcapkit.protocols.data.internet.mh import \ + HandoverAcknowledgeMessage as MH_HandoverAcknowledgeMessage +from pcapkit.protocols.data.internet.mh import HandoverInitiateMessage as MH_HandoverInitiateMessage +from pcapkit.protocols.data.internet.mh import \ + HeartbeatControlSuboption as MH_HeartbeatControlSuboption +from pcapkit.protocols.data.internet.mh import HeartbeatMessage as MH_HeartbeatMessage +from pcapkit.protocols.data.internet.mh import HomeAgentSwitchMessage as MH_HomeAgentSwitchMessage +from pcapkit.protocols.data.internet.mh import HomeNetworkPrefixOption as MH_HomeNetworkPrefixOption from pcapkit.protocols.data.internet.mh import HomeTestInitMessage as MH_HomeTestInitMessage from pcapkit.protocols.data.internet.mh import HomeTestMessage as MH_HomeTestMessage +from pcapkit.protocols.data.internet.mh import \ + IPv4AddressAcknowledgementOption as MH_IPv4AddressAcknowledgementOption +from pcapkit.protocols.data.internet.mh import IPv4CareofAddressOption as MH_IPv4CareofAddressOption +from pcapkit.protocols.data.internet.mh import \ + IPv4DefaultRouterAddressOption as MH_IPv4DefaultRouterAddressOption +from pcapkit.protocols.data.internet.mh import \ + IPv4DHCPSupportModeOption as MH_IPv4DHCPSupportModeOption +from pcapkit.protocols.data.internet.mh import IPv4HomeAddressOption as MH_IPv4HomeAddressOption +from pcapkit.protocols.data.internet.mh import \ + IPv4HomeAddressReplyOption as MH_IPv4HomeAddressReplyOption +from pcapkit.protocols.data.internet.mh import \ + IPv4HomeAddressRequestOption as MH_IPv4HomeAddressRequestOption +from pcapkit.protocols.data.internet.mh import \ + IPv4TrafficOffloadSelectorOption as MH_IPv4TrafficOffloadSelectorOption +from pcapkit.protocols.data.internet.mh import IPv6AddressPrefixOption as MH_IPv6AddressPrefixOption from pcapkit.protocols.data.internet.mh import LinkLayerAddressOption as MH_LinkLayerAddressOption +from pcapkit.protocols.data.internet.mh import LinkLocalAddressOption as MH_LinkLocalAddressOption +from pcapkit.protocols.data.internet.mh import LMAAddressOption as MH_LMAAddressOption +from pcapkit.protocols.data.internet.mh import \ + LMAControlledMAGParametersOption as MH_LMAControlledMAGParametersOption +from pcapkit.protocols.data.internet.mh import \ + LMAControlledMAGSuboption as MH_LMAControlledMAGSuboption +from pcapkit.protocols.data.internet.mh import \ + LMAUserPlaneAddressOption as MH_LMAUserPlaneAddressOption +from pcapkit.protocols.data.internet.mh import LoadInformationOption as MH_LoadInformationOption +from pcapkit.protocols.data.internet.mh import \ + LocalizedRoutingAcknowledgmentMessage as MH_LocalizedRoutingAcknowledgmentMessage +from pcapkit.protocols.data.internet.mh import \ + LocalizedRoutingInitiationMessage as MH_LocalizedRoutingInitiationMessage +from pcapkit.protocols.data.internet.mh import LocalPrefixOption as MH_LocalPrefixOption +from pcapkit.protocols.data.internet.mh import MAGIdentifierOption as MH_MAGIdentifierOption +from pcapkit.protocols.data.internet.mh import MAGIPv6AddressOption as MH_MAGIPv6AddressOption +from pcapkit.protocols.data.internet.mh import \ + MAGMultipathBindingOption as MH_MAGMultipathBindingOption from pcapkit.protocols.data.internet.mh import MesgIDOption as MH_MesgIDOption +from pcapkit.protocols.data.internet.mh import MNGroupIdentifierOption as MH_MNGroupIdentifierOption from pcapkit.protocols.data.internet.mh import MNIDOption as MH_MNIDOption +from pcapkit.protocols.data.internet.mh import MNLLAIIDOption as MH_MNLLAIIDOption +from pcapkit.protocols.data.internet.mh import MNLLIdentifierOption as MH_MNLLIdentifierOption from pcapkit.protocols.data.internet.mh import \ MobileNetworkPrefixOption as MH_MobileNetworkPrefixOption +from pcapkit.protocols.data.internet.mh import \ + MulticastAcknowledgementOption as MH_MulticastAcknowledgementOption +from pcapkit.protocols.data.internet.mh import MulticastMobilityOption as MH_MulticastMobilityOption from pcapkit.protocols.data.internet.mh import MultiPrefixExtension as MH_MultiPrefixExtension +from pcapkit.protocols.data.internet.mh import NATDetectionOption as MH_NATDetectionOption from pcapkit.protocols.data.internet.mh import NonceIndicesOption as MH_NonceIndicesOption from pcapkit.protocols.data.internet.mh import Option as MH_Option +from pcapkit.protocols.data.internet.mh import \ + PadFlowIdentificationSuboption as MH_PadFlowIdentificationSuboption from pcapkit.protocols.data.internet.mh import PadOption as MH_PadOption from pcapkit.protocols.data.internet.mh import \ PermanentHomeKeygenTokenOption as MH_PermanentHomeKeygenTokenOption +from pcapkit.protocols.data.internet.mh import \ + PerSessionBitRateAttribute as MH_PerSessionBitRateAttribute +from pcapkit.protocols.data.internet.mh import PreviousMAAROption as MH_PreviousMAAROption +from pcapkit.protocols.data.internet.mh import QoSAttribute as MH_QoSAttribute +from pcapkit.protocols.data.internet.mh import \ + QoSTrafficSelectorAttribute as MH_QoSTrafficSelectorAttribute +from pcapkit.protocols.data.internet.mh import \ + QoSVendorSpecificAttribute as MH_QoSVendorSpecificAttribute +from pcapkit.protocols.data.internet.mh import QualityOfServiceOption as MH_QualityOfServiceOption +from pcapkit.protocols.data.internet.mh import \ + RedirectCapabilityOption as MH_RedirectCapabilityOption +from pcapkit.protocols.data.internet.mh import RedirectOption as MH_RedirectOption +from pcapkit.protocols.data.internet.mh import RestartCounterOption as MH_RestartCounterOption +from pcapkit.protocols.data.internet.mh import ServiceSelectionOption as MH_ServiceSelectionOption +from pcapkit.protocols.data.internet.mh import ServingMAAROption as MH_ServingMAAROption from pcapkit.protocols.data.internet.mh import SignatureOption as MH_SignatureOption +from pcapkit.protocols.data.internet.mh import \ + SubscriptionQueryMessage as MH_SubscriptionQueryMessage +from pcapkit.protocols.data.internet.mh import \ + SubscriptionResponseMessage as MH_SubscriptionResponseMessage +from pcapkit.protocols.data.internet.mh import \ + TargetCareofAddressSuboption as MH_TargetCareofAddressSuboption +from pcapkit.protocols.data.internet.mh import TimestampOption as MH_TimestampOption +from pcapkit.protocols.data.internet.mh import \ + TrafficSelectorSuboption as MH_TrafficSelectorSuboption +from pcapkit.protocols.data.internet.mh import TransientBindingOption as MH_TransientBindingOption +from pcapkit.protocols.data.internet.mh import UnassignedANISuboption as MH_UnassignedANISuboption +from pcapkit.protocols.data.internet.mh import \ + UnassignedFlowIdentificationSuboption as MH_UnassignedFlowIdentificationSuboption +from pcapkit.protocols.data.internet.mh import \ + UnassignedLMAControlledMAGSuboption as MH_UnassignedLMAControlledMAGSuboption from pcapkit.protocols.data.internet.mh import UnassignedOption as MH_UnassignedOption +from pcapkit.protocols.data.internet.mh import UnassignedQoSAttribute as MH_UnassignedQoSAttribute from pcapkit.protocols.data.internet.mh import UnknownExtension as MH_UnknownExtension from pcapkit.protocols.data.internet.mh import UnknownMessage as MH_UnknownMessage +from pcapkit.protocols.data.internet.mh import \ + UpdateNotificationAcknowledgementMessage as MH_UpdateNotificationAcknowledgementMessage +from pcapkit.protocols.data.internet.mh import \ + UpdateNotificationMessage as MH_UpdateNotificationMessage +from pcapkit.protocols.data.internet.mh import VendorSpecificOption as MH_VendorSpecificOption __all__ = [ # Authentication Header @@ -248,6 +400,7 @@ # Hop-by-Hop Options 'HOPOPT', 'HOPOPT_RPLFlags', 'HOPOPT_MPLFlags', 'HOPOPT_DFFFlags', + 'HOPOPT_SMFDPDOption', 'HOPOPT_QuickStartOption', 'HOPOPT_UnassignedOption', 'HOPOPT_PadOption', 'HOPOPT_TunnelEncapsulationLimitOption', 'HOPOPT_RouterAlertOption', 'HOPOPT_CALIPSOOption', 'HOPOPT_SMFIdentificationBasedDPDOption', 'HOPOPT_SMFHashBasedDPDOption', 'HOPOPT_PDMOption', 'HOPOPT_QuickStartRequestOption', @@ -275,6 +428,7 @@ # IPv6 Destination Options Header 'IPv6_Opts', 'IPv6_Opts_RPLFlags', 'IPv6_Opts_MPLFlags', 'IPv6_Opts_DFFFlags', + 'IPv6_Opts_SMFDPDOption', 'IPv6_Opts_QuickStartOption', 'IPv6_Opts_UnassignedOption', 'IPv6_Opts_PadOption', 'IPv6_Opts_TunnelEncapsulationLimitOption', 'IPv6_Opts_RouterAlertOption', 'IPv6_Opts_CALIPSOOption', 'IPv6_Opts_SMFIdentificationBasedDPDOption', 'IPv6_Opts_SMFHashBasedDPDOption', 'IPv6_Opts_PDMOption', 'IPv6_Opts_QuickStartRequestOption', @@ -297,14 +451,48 @@ 'MH', 'MH_UnknownMessage', 'MH_BindingRefreshRequestMessage', 'MH_HomeTestInitMessage', 'MH_CareofTestInitMessage', 'MH_HomeTestMessage', 'MH_CareofTestMessage', 'MH_BindingUpdateMessage', 'MH_BindingAcknowledgementMessage', - 'MH_BindingErrorMessage', + 'MH_BindingErrorMessage', 'MH_FastBindingUpdateMessage', 'MH_FastBindingAcknowledgmentMessage', + 'MH_FastNeighborAdvertisementMessage', 'MH_ExperimentalMessage', 'MH_HandoverInitiateMessage', + 'MH_HandoverAcknowledgeMessage', 'MH_HeartbeatMessage', 'MH_HomeAgentSwitchMessage', 'MH_BindingRevocationMessage', + 'MH_LocalizedRoutingInitiationMessage', 'MH_LocalizedRoutingAcknowledgmentMessage', 'MH_UpdateNotificationMessage', + 'MH_UpdateNotificationAcknowledgementMessage', 'MH_FlowBindingMessage', 'MH_SubscriptionQueryMessage', + 'MH_SubscriptionResponseMessage', 'MH_Option', 'MH_UnassignedOption', 'MH_PadOption', 'MH_BindingRefreshAdviceOption', 'MH_AlternateCareofAddressOption', - 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', - 'MH_LinkLayerAddressOption', 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', - 'MH_CGAParametersOption', 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', - 'MH_CareofTestOption', + 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', 'MH_LinkLayerAddressOption', + 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', 'MH_CGAParametersOption', + 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', 'MH_CareofTestOption', + 'MH_ExperimentalMobilityOption', 'MH_BADFOption', 'MH_IPv6AddressPrefixOption', 'MH_HomeNetworkPrefixOption', + 'MH_HandoffIndicatorOption', 'MH_AccessTechnologyTypeOption', 'MH_MNLLIdentifierOption', + 'MH_LinkLocalAddressOption', 'MH_TimestampOption', 'MH_RestartCounterOption', 'MH_DNSUpdateOption', + 'MH_VendorSpecificOption', 'MH_ServiceSelectionOption', 'MH_IPv4HomeAddressOption', + 'MH_IPv4AddressAcknowledgementOption', 'MH_NATDetectionOption', 'MH_IPv4CareofAddressOption', 'MH_GREKeyOption', + 'MH_BindingIdentifierOption', 'MH_IPv4HomeAddressRequestOption', 'MH_IPv4HomeAddressReplyOption', + 'MH_IPv4DefaultRouterAddressOption', 'MH_IPv4DHCPSupportModeOption', 'MH_ContextRequestOption', + 'MH_LMAAddressOption', 'MH_MNLLAIIDOption', 'MH_TransientBindingOption', 'MH_FlowSummaryOption', + 'MH_FlowIdentificationOption', 'MH_RedirectCapabilityOption', 'MH_RedirectOption', 'MH_LoadInformationOption', + 'MH_AlternateIPv4CareofAddressOption', 'MH_MNGroupIdentifierOption', 'MH_MAGIPv6AddressOption', + 'MH_AccessNetworkIdentifierOption', 'MH_IPv4TrafficOffloadSelectorOption', 'MH_DynamicIPMulticastSelectorOption', + 'MH_DelegatedMNPOption', 'MH_ActiveMulticastSubscriptionIPv4Option', 'MH_ActiveMulticastSubscriptionIPv6Option', + 'MH_QualityOfServiceOption', 'MH_LMAUserPlaneAddressOption', 'MH_MulticastMobilityOption', + 'MH_MulticastAcknowledgementOption', 'MH_LMAControlledMAGParametersOption', 'MH_MAGMultipathBindingOption', + 'MH_MAGIdentifierOption', 'MH_AnchoredPrefixOption', 'MH_LocalPrefixOption', 'MH_PreviousMAAROption', + 'MH_ServingMAAROption', 'MH_DLIFLinkLocalAddressOption', 'MH_DLIFLinkLayerAddressOption', + 'MH_ContextRequest', + 'MH_FlowIdentificationSuboption', + 'MH_UnassignedFlowIdentificationSuboption', 'MH_PadFlowIdentificationSuboption', 'MH_BIDReferenceSuboption', + 'MH_TrafficSelectorSuboption', 'MH_FlowBindingActionSuboption', 'MH_TargetCareofAddressSuboption', + 'MH_ANISuboption', + 'MH_UnassignedANISuboption', 'MH_ANINetworkIdentifierSuboption', 'MH_ANIGeoLocationSuboption', + 'MH_ANIOperatorIdentifierSuboption', 'MH_ANICivicLocationSuboption', 'MH_ANIMAGGroupIdentifierSuboption', + 'MH_ANIUpdateTimerSuboption', + 'MH_QoSAttribute', + 'MH_UnassignedQoSAttribute', 'MH_BitRateAttribute', 'MH_PerSessionBitRateAttribute', + 'MH_AllocationRetentionPriorityAttribute', 'MH_QoSTrafficSelectorAttribute', 'MH_QoSVendorSpecificAttribute', + 'MH_LMAControlledMAGSuboption', + 'MH_UnassignedLMAControlledMAGSuboption', 'MH_BindingReregistrationControlSuboption', + 'MH_HeartbeatControlSuboption', 'MH_CGAParameter', 'MH_CGAExtension', - 'MH_UnknownExtension', 'MH_MultiPrefixExtension', + 'MH_UnknownExtension', 'MH_MultiPrefixExtension', 'MH_ExperimentalExtension', ] diff --git a/pcapkit/protocols/data/misc/__init__.py b/pcapkit/protocols/data/misc/__init__.py index 02b4cfe76..d85291df3 100644 --- a/pcapkit/protocols/data/misc/__init__.py +++ b/pcapkit/protocols/data/misc/__init__.py @@ -5,7 +5,6 @@ from pcapkit.protocols.data.misc.pcap import * # PCAP-NG file format -from pcapkit.protocols.data.misc.pcapng import UnknownSecrets as PCAPNG_UnknownSecrets from pcapkit.protocols.data.misc.pcapng import PCAPNG from pcapkit.protocols.data.misc.pcapng import CommentOption as PCAPNG_CommentOption from pcapkit.protocols.data.misc.pcapng import CustomBlock as PCAPNG_CustomBlock @@ -58,6 +57,9 @@ from pcapkit.protocols.data.misc.pcapng import NS_DNSIP6AddrOption as PCAPNG_NS_DNSIP6AddrOption from pcapkit.protocols.data.misc.pcapng import NS_DNSNameOption as PCAPNG_NS_DNSNameOption from pcapkit.protocols.data.misc.pcapng import Option as PCAPNG_Option +from pcapkit.protocols.data.misc.pcapng import PACK_FlagsOption as PCAPNG_PACK_FlagsOption +from pcapkit.protocols.data.misc.pcapng import PACK_HashOption as PCAPNG_PACK_HashOption +from pcapkit.protocols.data.misc.pcapng import PacketBlock as PCAPNG_PacketBlock from pcapkit.protocols.data.misc.pcapng import SectionHeaderBlock as PCAPNG_SectionHeaderBlock from pcapkit.protocols.data.misc.pcapng import SimplePacketBlock as PCAPNG_SimplePacketBlock from pcapkit.protocols.data.misc.pcapng import \ @@ -93,13 +95,14 @@ 'PCAPNG_NS_DNSNameOption', 'PCAPNG_NS_DNSIP4AddrOption', 'PCAPNG_NS_DNSIP6AddrOption', 'PCAPNG_ISB_StartTimeOption', 'PCAPNG_ISB_EndTimeOption', 'PCAPNG_ISB_IFRecvOption', 'PCAPNG_ISB_IFDropOption', 'PCAPNG_ISB_FilterAcceptOption', 'PCAPNG_ISB_OSDropOption', 'PCAPNG_ISB_UsrDelivOption', + 'PCAPNG_PACK_FlagsOption', 'PCAPNG_PACK_HashOption', 'PCAPNG_NameResolutionRecord', 'PCAPNG_UnknownRecord', 'PCAPNG_EndRecord', 'PCAPNG_IPv4Record', 'PCAPNG_IPv6Record', 'PCAPNG_DSBSecrets', 'PCAPNG_UnknownSecrets', 'PCAPNG_TLSKeyLog', 'PCAPNG_WireGuardKeyLog', 'PCAPNG_ZigBeeNWKKey', 'PCAPNG_ZigBeeAPSKey', 'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock', 'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock', 'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock', - 'PCAPNG_CustomBlock', + 'PCAPNG_CustomBlock', 'PCAPNG_PacketBlock', # No Payload 'NoPayload', diff --git a/pcapkit/protocols/schema/__init__.py b/pcapkit/protocols/schema/__init__.py index 3bb94232b..a2e85a6dc 100644 --- a/pcapkit/protocols/schema/__init__.py +++ b/pcapkit/protocols/schema/__init__.py @@ -54,6 +54,7 @@ 'HIP_RelayToParameter', 'HIP_RouteViaParameter', 'HIP_FromParameter', 'HIP_RVSHMACParameter', 'HIP_RelayHMACParameter', 'HOPOPT', + 'HOPOPT_SMFDPDOption', 'HOPOPT_QuickStartOption', 'HOPOPT_UnassignedOption', 'HOPOPT_PadOption', 'HOPOPT_TunnelEncapsulationLimitOption', 'HOPOPT_RouterAlertOption', 'HOPOPT_CALIPSOOption', 'HOPOPT_SMFIdentificationBasedDPDOption', 'HOPOPT_SMFHashBasedDPDOption', 'HOPOPT_PDMOption', 'HOPOPT_QuickStartRequestOption', @@ -61,6 +62,7 @@ 'HOPOPT_LineIdentificationOption', 'HOPOPT_JumboPayloadOption', 'HOPOPT_HomeAddressOption', 'HOPOPT_IPDFFOption', 'IPv4', + 'IPv4_Option', 'IPv4_UnassignedOption', 'IPv4_EOOLOption', 'IPv4_NOPOption', 'IPv4_SECOption', 'IPv4_LSROption', 'IPv4_TSOption', 'IPv4_ESECOption', 'IPv4_RROption', 'IPv4_SIDOption', @@ -70,6 +72,7 @@ 'IPv6_Frag', 'IPv6_Ext', 'IPv6_Opts', + 'IPv6_Opts_SMFDPDOption', 'IPv6_Opts_QuickStartOption', 'IPv6_Opts_UnassignedOption', 'IPv6_Opts_PadOption', 'IPv6_Opts_TunnelEncapsulationLimitOption', 'IPv6_Opts_RouterAlertOption', 'IPv6_Opts_CALIPSOOption', 'IPv6_Opts_SMFIdentificationBasedDPDOption', 'IPv6_Opts_SMFHashBasedDPDOption', 'IPv6_Opts_PDMOption', 'IPv6_Opts_QuickStartRequestOption', @@ -77,6 +80,7 @@ 'IPv6_Opts_LineIdentificationOption', 'IPv6_Opts_JumboPayloadOption', 'IPv6_Opts_HomeAddressOption', 'IPv6_Opts_IPDFFOption', 'IPv6_Route', + 'IPv6_Route_RoutingType', 'IPv6_Route_UnknownType', 'IPv6_Route_SourceRoute', 'IPv6_Route_Type2', 'IPv6_Route_RPL', 'IPv6', 'IPX', @@ -84,16 +88,49 @@ 'MH_Packet', 'MH_UnknownMessage', 'MH_BindingRefreshRequestMessage', 'MH_HomeTestInitMessage', 'MH_CareofTestInitMessage', 'MH_HomeTestMessage', 'MH_CareofTestMessage', 'MH_BindingUpdateMessage', 'MH_BindingAcknowledgementMessage', - 'MH_BindingErrorMessage', + 'MH_BindingErrorMessage', 'MH_FastBindingUpdateMessage', 'MH_FastBindingAcknowledgmentMessage', + 'MH_FastNeighborAdvertisementMessage', 'MH_ExperimentalMessage', 'MH_HandoverInitiateMessage', + 'MH_HandoverAcknowledgeMessage', 'MH_HeartbeatMessage', 'MH_HomeAgentSwitchMessage', 'MH_BindingRevocationMessage', + 'MH_LocalizedRoutingInitiationMessage', 'MH_LocalizedRoutingAcknowledgmentMessage', 'MH_UpdateNotificationMessage', + 'MH_UpdateNotificationAcknowledgementMessage', 'MH_FlowBindingMessage', 'MH_SubscriptionQueryMessage', + 'MH_SubscriptionResponseMessage', 'MH_Option', 'MH_UnassignedOption', 'MH_PadOption', 'MH_BindingRefreshAdviceOption', 'MH_AlternateCareofAddressOption', - 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', - 'MH_LinkLayerAddressOption', 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', - 'MH_CGAParametersOption', 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', - 'MH_CareofTestOption', + 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', 'MH_LinkLayerAddressOption', + 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', 'MH_CGAParametersOption', + 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', 'MH_CareofTestOption', + 'MH_ExperimentalMobilityOption', 'MH_BADFOption', 'MH_IPv6AddressPrefixOption', 'MH_HomeNetworkPrefixOption', + 'MH_HandoffIndicatorOption', 'MH_AccessTechnologyTypeOption', 'MH_MNLLIdentifierOption', + 'MH_LinkLocalAddressOption', 'MH_TimestampOption', 'MH_RestartCounterOption', 'MH_DNSUpdateOption', + 'MH_VendorSpecificOption', 'MH_ServiceSelectionOption', 'MH_IPv4HomeAddressOption', + 'MH_IPv4AddressAcknowledgementOption', 'MH_NATDetectionOption', 'MH_IPv4CareofAddressOption', 'MH_GREKeyOption', + 'MH_BindingIdentifierOption', 'MH_IPv4HomeAddressRequestOption', 'MH_IPv4HomeAddressReplyOption', + 'MH_IPv4DefaultRouterAddressOption', 'MH_IPv4DHCPSupportModeOption', 'MH_ContextRequestOption', + 'MH_LMAAddressOption', 'MH_MNLLAIIDOption', 'MH_TransientBindingOption', 'MH_FlowSummaryOption', + 'MH_FlowIdentificationOption', 'MH_RedirectCapabilityOption', 'MH_RedirectOption', 'MH_LoadInformationOption', + 'MH_AlternateIPv4CareofAddressOption', 'MH_MNGroupIdentifierOption', 'MH_MAGIPv6AddressOption', + 'MH_AccessNetworkIdentifierOption', 'MH_IPv4TrafficOffloadSelectorOption', 'MH_DynamicIPMulticastSelectorOption', + 'MH_DelegatedMNPOption', 'MH_ActiveMulticastSubscriptionIPv4Option', 'MH_ActiveMulticastSubscriptionIPv6Option', + 'MH_QualityOfServiceOption', 'MH_LMAUserPlaneAddressOption', 'MH_MulticastMobilityOption', + 'MH_MulticastAcknowledgementOption', 'MH_LMAControlledMAGParametersOption', 'MH_MAGMultipathBindingOption', + 'MH_MAGIdentifierOption', 'MH_AnchoredPrefixOption', 'MH_LocalPrefixOption', 'MH_PreviousMAAROption', + 'MH_ServingMAAROption', 'MH_DLIFLinkLocalAddressOption', 'MH_DLIFLinkLayerAddressOption', + 'MH_FlowIdentificationSuboption', + 'MH_UnassignedFlowIdentificationSuboption', 'MH_PadFlowIdentificationSuboption', 'MH_BIDReferenceSuboption', + 'MH_TrafficSelectorSuboption', 'MH_FlowBindingActionSuboption', 'MH_TargetCareofAddressSuboption', + 'MH_ANISuboption', + 'MH_UnassignedANISuboption', 'MH_ANINetworkIdentifierSuboption', 'MH_ANIGeoLocationSuboption', + 'MH_ANIOperatorIdentifierSuboption', 'MH_ANICivicLocationSuboption', 'MH_ANIMAGGroupIdentifierSuboption', + 'MH_ANIUpdateTimerSuboption', + 'MH_QoSAttribute', + 'MH_UnassignedQoSAttribute', 'MH_BitRateAttribute', 'MH_PerSessionBitRateAttribute', + 'MH_AllocationRetentionPriorityAttribute', 'MH_QoSTrafficSelectorAttribute', 'MH_QoSVendorSpecificAttribute', + 'MH_LMAControlledMAGSuboption', + 'MH_UnassignedLMAControlledMAGSuboption', 'MH_BindingReregistrationControlSuboption', + 'MH_HeartbeatControlSuboption', 'MH_CGAParameter', 'MH_CGAExtension', - 'MH_UnknownExtension', 'MH_MultiPrefixExtension', + 'MH_UnknownExtension', 'MH_MultiPrefixExtension', 'MH_ExperimentalExtension', # Transport Layer Protocols 'TCP', @@ -161,6 +198,7 @@ 'PCAPNG_NS_DNSNameOption', 'PCAPNG_NS_DNSIP4AddrOption', 'PCAPNG_NS_DNSIP6AddrOption', 'PCAPNG_ISB_StartTimeOption', 'PCAPNG_ISB_EndTimeOption', 'PCAPNG_ISB_IFRecvOption', 'PCAPNG_ISB_IFDropOption', 'PCAPNG_ISB_FilterAcceptOption', 'PCAPNG_ISB_OSDropOption', 'PCAPNG_ISB_UsrDelivOption', + 'PCAPNG_PACK_FlagsOption', 'PCAPNG_PACK_HashOption', 'PCAPNG_NameResolutionRecord', 'PCAPNG_UnknownRecord', 'PCAPNG_EndRecord', 'PCAPNG_IPv4Record', 'PCAPNG_IPv6Record', 'PCAPNG_DSBSecrets', 'PCAPNG_UnknownSecrets', 'PCAPNG_TLSKeyLog', 'PCAPNG_WireGuardKeyLog', 'PCAPNG_ZigBeeNWKKey', 'PCAPNG_ZigBeeAPSKey', @@ -168,7 +206,7 @@ 'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock', 'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock', 'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock', - 'PCAPNG_CustomBlock', + 'PCAPNG_CustomBlock', 'PCAPNG_PacketBlock', # misc protocols 'NoPayload', diff --git a/pcapkit/protocols/schema/internet/__init__.py b/pcapkit/protocols/schema/internet/__init__.py index 3eef94dde..78f51eba1 100644 --- a/pcapkit/protocols/schema/internet/__init__.py +++ b/pcapkit/protocols/schema/internet/__init__.py @@ -89,12 +89,14 @@ from pcapkit.protocols.schema.internet.hopopt import MPLOption as HOPOPT_MPLOption from pcapkit.protocols.schema.internet.hopopt import PadOption as HOPOPT_PadOption from pcapkit.protocols.schema.internet.hopopt import PDMOption as HOPOPT_PDMOption +from pcapkit.protocols.schema.internet.hopopt import QuickStartOption as HOPOPT_QuickStartOption from pcapkit.protocols.schema.internet.hopopt import \ QuickStartReportOption as HOPOPT_QuickStartReportOption from pcapkit.protocols.schema.internet.hopopt import \ QuickStartRequestOption as HOPOPT_QuickStartRequestOption from pcapkit.protocols.schema.internet.hopopt import RouterAlertOption as HOPOPT_RouterAlertOption from pcapkit.protocols.schema.internet.hopopt import RPLOption as HOPOPT_RPLOption +from pcapkit.protocols.schema.internet.hopopt import SMFDPDOption as HOPOPT_SMFDPDOption from pcapkit.protocols.schema.internet.hopopt import \ SMFHashBasedDPDOption as HOPOPT_SMFHashBasedDPDOption from pcapkit.protocols.schema.internet.hopopt import \ @@ -111,6 +113,7 @@ from pcapkit.protocols.schema.internet.ipv4 import MTUPOption as IPv4_MTUPOption from pcapkit.protocols.schema.internet.ipv4 import MTUROption as IPv4_MTUROption from pcapkit.protocols.schema.internet.ipv4 import NOPOption as IPv4_NOPOption +from pcapkit.protocols.schema.internet.ipv4 import Option as IPv4_Option from pcapkit.protocols.schema.internet.ipv4 import QSOption as IPv4_QSOption from pcapkit.protocols.schema.internet.ipv4 import \ QuickStartReportOption as IPv4_QuickStartReportOption @@ -148,6 +151,8 @@ from pcapkit.protocols.schema.internet.ipv6_opts import MPLOption as IPv6_Opts_MPLOption from pcapkit.protocols.schema.internet.ipv6_opts import PadOption as IPv6_Opts_PadOption from pcapkit.protocols.schema.internet.ipv6_opts import PDMOption as IPv6_Opts_PDMOption +from pcapkit.protocols.schema.internet.ipv6_opts import \ + QuickStartOption as IPv6_Opts_QuickStartOption from pcapkit.protocols.schema.internet.ipv6_opts import \ QuickStartReportOption as IPv6_Opts_QuickStartReportOption from pcapkit.protocols.schema.internet.ipv6_opts import \ @@ -155,6 +160,7 @@ from pcapkit.protocols.schema.internet.ipv6_opts import \ RouterAlertOption as IPv6_Opts_RouterAlertOption from pcapkit.protocols.schema.internet.ipv6_opts import RPLOption as IPv6_Opts_RPLOption +from pcapkit.protocols.schema.internet.ipv6_opts import SMFDPDOption as IPv6_Opts_SMFDPDOption from pcapkit.protocols.schema.internet.ipv6_opts import \ SMFHashBasedDPDOption as IPv6_Opts_SMFHashBasedDPDOption from pcapkit.protocols.schema.internet.ipv6_opts import \ @@ -167,6 +173,7 @@ # IPv6 Routing Header from pcapkit.protocols.schema.internet.ipv6_route import RPL as IPv6_Route_RPL from pcapkit.protocols.schema.internet.ipv6_route import IPv6_Route +from pcapkit.protocols.schema.internet.ipv6_route import RoutingType as IPv6_Route_RoutingType from pcapkit.protocols.schema.internet.ipv6_route import SourceRoute as IPv6_Route_SourceRoute from pcapkit.protocols.schema.internet.ipv6_route import Type2 as IPv6_Route_Type2 from pcapkit.protocols.schema.internet.ipv6_route import UnknownType as IPv6_Route_UnknownType @@ -176,19 +183,54 @@ # Mobility Header from pcapkit.protocols.schema.internet.mh import MH +from pcapkit.protocols.schema.internet.mh import \ + AccessNetworkIdentifierOption as MH_AccessNetworkIdentifierOption +from pcapkit.protocols.schema.internet.mh import \ + AccessTechnologyTypeOption as MH_AccessTechnologyTypeOption +from pcapkit.protocols.schema.internet.mh import \ + ActiveMulticastSubscriptionIPv4Option as MH_ActiveMulticastSubscriptionIPv4Option +from pcapkit.protocols.schema.internet.mh import \ + ActiveMulticastSubscriptionIPv6Option as MH_ActiveMulticastSubscriptionIPv6Option +from pcapkit.protocols.schema.internet.mh import \ + AllocationRetentionPriorityAttribute as MH_AllocationRetentionPriorityAttribute from pcapkit.protocols.schema.internet.mh import \ AlternateCareofAddressOption as MH_AlternateCareofAddressOption -from pcapkit.protocols.schema.internet.mh import AuthOption as MH_AuthOption from pcapkit.protocols.schema.internet.mh import \ - BindingAcknowledgementMessage as MH_BindingAcknowledgementMessage + AlternateIPv4CareofAddressOption as MH_AlternateIPv4CareofAddressOption +from pcapkit.protocols.schema.internet.mh import AnchoredPrefixOption as MH_AnchoredPrefixOption +from pcapkit.protocols.schema.internet.mh import \ + ANICivicLocationSuboption as MH_ANICivicLocationSuboption +from pcapkit.protocols.schema.internet.mh import \ + ANIGeoLocationSuboption as MH_ANIGeoLocationSuboption +from pcapkit.protocols.schema.internet.mh import \ + ANIMAGGroupIdentifierSuboption as MH_ANIMAGGroupIdentifierSuboption +from pcapkit.protocols.schema.internet.mh import \ + ANINetworkIdentifierSuboption as MH_ANINetworkIdentifierSuboption +from pcapkit.protocols.schema.internet.mh import \ + ANIOperatorIdentifierSuboption as MH_ANIOperatorIdentifierSuboption +from pcapkit.protocols.schema.internet.mh import ANISuboption as MH_ANISuboption +from pcapkit.protocols.schema.internet.mh import \ + ANIUpdateTimerSuboption as MH_ANIUpdateTimerSuboption +from pcapkit.protocols.schema.internet.mh import AuthOption as MH_AuthOption from pcapkit.protocols.schema.internet.mh import \ AuthorizationDataOption as MH_AuthorizationDataOption +from pcapkit.protocols.schema.internet.mh import BADFOption as MH_BADFOption +from pcapkit.protocols.schema.internet.mh import BIDReferenceSuboption as MH_BIDReferenceSuboption +from pcapkit.protocols.schema.internet.mh import \ + BindingAcknowledgementMessage as MH_BindingAcknowledgementMessage from pcapkit.protocols.schema.internet.mh import BindingErrorMessage as MH_BindingErrorMessage from pcapkit.protocols.schema.internet.mh import \ - BindingRefreshRequestMessage as MH_BindingRefreshRequestMessage -from pcapkit.protocols.schema.internet.mh import BindingUpdateMessage as MH_BindingUpdateMessage + BindingIdentifierOption as MH_BindingIdentifierOption from pcapkit.protocols.schema.internet.mh import \ BindingRefreshAdviceOption as MH_BindingRefreshAdviceOption +from pcapkit.protocols.schema.internet.mh import \ + BindingRefreshRequestMessage as MH_BindingRefreshRequestMessage +from pcapkit.protocols.schema.internet.mh import \ + BindingReregistrationControlSuboption as MH_BindingReregistrationControlSuboption +from pcapkit.protocols.schema.internet.mh import \ + BindingRevocationMessage as MH_BindingRevocationMessage +from pcapkit.protocols.schema.internet.mh import BindingUpdateMessage as MH_BindingUpdateMessage +from pcapkit.protocols.schema.internet.mh import BitRateAttribute as MH_BitRateAttribute from pcapkit.protocols.schema.internet.mh import CareofTestInitMessage as MH_CareofTestInitMessage from pcapkit.protocols.schema.internet.mh import CareofTestInitOption as MH_CareofTestInitOption from pcapkit.protocols.schema.internet.mh import CareofTestMessage as MH_CareofTestMessage @@ -198,24 +240,145 @@ from pcapkit.protocols.schema.internet.mh import CGAParametersOption as MH_CGAParametersOption from pcapkit.protocols.schema.internet.mh import \ CGAParametersRequestOption as MH_CGAParametersRequestOption +from pcapkit.protocols.schema.internet.mh import ContextRequestOption as MH_ContextRequestOption +from pcapkit.protocols.schema.internet.mh import DelegatedMNPOption as MH_DelegatedMNPOption +from pcapkit.protocols.schema.internet.mh import \ + DLIFLinkLayerAddressOption as MH_DLIFLinkLayerAddressOption +from pcapkit.protocols.schema.internet.mh import \ + DLIFLinkLocalAddressOption as MH_DLIFLinkLocalAddressOption +from pcapkit.protocols.schema.internet.mh import DNSUpdateOption as MH_DNSUpdateOption +from pcapkit.protocols.schema.internet.mh import \ + DynamicIPMulticastSelectorOption as MH_DynamicIPMulticastSelectorOption +from pcapkit.protocols.schema.internet.mh import ExperimentalExtension as MH_ExperimentalExtension +from pcapkit.protocols.schema.internet.mh import ExperimentalMessage as MH_ExperimentalMessage +from pcapkit.protocols.schema.internet.mh import \ + ExperimentalMobilityOption as MH_ExperimentalMobilityOption +from pcapkit.protocols.schema.internet.mh import \ + FastBindingAcknowledgmentMessage as MH_FastBindingAcknowledgmentMessage +from pcapkit.protocols.schema.internet.mh import \ + FastBindingUpdateMessage as MH_FastBindingUpdateMessage +from pcapkit.protocols.schema.internet.mh import \ + FastNeighborAdvertisementMessage as MH_FastNeighborAdvertisementMessage +from pcapkit.protocols.schema.internet.mh import \ + FlowBindingActionSuboption as MH_FlowBindingActionSuboption +from pcapkit.protocols.schema.internet.mh import FlowBindingMessage as MH_FlowBindingMessage +from pcapkit.protocols.schema.internet.mh import \ + FlowIdentificationOption as MH_FlowIdentificationOption +from pcapkit.protocols.schema.internet.mh import \ + FlowIdentificationSuboption as MH_FlowIdentificationSuboption +from pcapkit.protocols.schema.internet.mh import FlowSummaryOption as MH_FlowSummaryOption +from pcapkit.protocols.schema.internet.mh import GREKeyOption as MH_GREKeyOption +from pcapkit.protocols.schema.internet.mh import HandoffIndicatorOption as MH_HandoffIndicatorOption +from pcapkit.protocols.schema.internet.mh import \ + HandoverAcknowledgeMessage as MH_HandoverAcknowledgeMessage +from pcapkit.protocols.schema.internet.mh import \ + HandoverInitiateMessage as MH_HandoverInitiateMessage +from pcapkit.protocols.schema.internet.mh import \ + HeartbeatControlSuboption as MH_HeartbeatControlSuboption +from pcapkit.protocols.schema.internet.mh import HeartbeatMessage as MH_HeartbeatMessage +from pcapkit.protocols.schema.internet.mh import HomeAgentSwitchMessage as MH_HomeAgentSwitchMessage +from pcapkit.protocols.schema.internet.mh import \ + HomeNetworkPrefixOption as MH_HomeNetworkPrefixOption from pcapkit.protocols.schema.internet.mh import HomeTestInitMessage as MH_HomeTestInitMessage from pcapkit.protocols.schema.internet.mh import HomeTestMessage as MH_HomeTestMessage +from pcapkit.protocols.schema.internet.mh import \ + IPv4AddressAcknowledgementOption as MH_IPv4AddressAcknowledgementOption +from pcapkit.protocols.schema.internet.mh import \ + IPv4CareofAddressOption as MH_IPv4CareofAddressOption +from pcapkit.protocols.schema.internet.mh import \ + IPv4DefaultRouterAddressOption as MH_IPv4DefaultRouterAddressOption +from pcapkit.protocols.schema.internet.mh import \ + IPv4DHCPSupportModeOption as MH_IPv4DHCPSupportModeOption +from pcapkit.protocols.schema.internet.mh import IPv4HomeAddressOption as MH_IPv4HomeAddressOption +from pcapkit.protocols.schema.internet.mh import \ + IPv4HomeAddressReplyOption as MH_IPv4HomeAddressReplyOption +from pcapkit.protocols.schema.internet.mh import \ + IPv4HomeAddressRequestOption as MH_IPv4HomeAddressRequestOption +from pcapkit.protocols.schema.internet.mh import \ + IPv4TrafficOffloadSelectorOption as MH_IPv4TrafficOffloadSelectorOption +from pcapkit.protocols.schema.internet.mh import \ + IPv6AddressPrefixOption as MH_IPv6AddressPrefixOption from pcapkit.protocols.schema.internet.mh import LinkLayerAddressOption as MH_LinkLayerAddressOption +from pcapkit.protocols.schema.internet.mh import LinkLocalAddressOption as MH_LinkLocalAddressOption +from pcapkit.protocols.schema.internet.mh import LMAAddressOption as MH_LMAAddressOption +from pcapkit.protocols.schema.internet.mh import \ + LMAControlledMAGParametersOption as MH_LMAControlledMAGParametersOption +from pcapkit.protocols.schema.internet.mh import \ + LMAControlledMAGSuboption as MH_LMAControlledMAGSuboption +from pcapkit.protocols.schema.internet.mh import \ + LMAUserPlaneAddressOption as MH_LMAUserPlaneAddressOption +from pcapkit.protocols.schema.internet.mh import LoadInformationOption as MH_LoadInformationOption +from pcapkit.protocols.schema.internet.mh import \ + LocalizedRoutingAcknowledgmentMessage as MH_LocalizedRoutingAcknowledgmentMessage +from pcapkit.protocols.schema.internet.mh import \ + LocalizedRoutingInitiationMessage as MH_LocalizedRoutingInitiationMessage +from pcapkit.protocols.schema.internet.mh import LocalPrefixOption as MH_LocalPrefixOption +from pcapkit.protocols.schema.internet.mh import MAGIdentifierOption as MH_MAGIdentifierOption +from pcapkit.protocols.schema.internet.mh import MAGIPv6AddressOption as MH_MAGIPv6AddressOption +from pcapkit.protocols.schema.internet.mh import \ + MAGMultipathBindingOption as MH_MAGMultipathBindingOption from pcapkit.protocols.schema.internet.mh import MesgIDOption as MH_MesgIDOption +from pcapkit.protocols.schema.internet.mh import \ + MNGroupIdentifierOption as MH_MNGroupIdentifierOption from pcapkit.protocols.schema.internet.mh import MNIDOption as MH_MNIDOption +from pcapkit.protocols.schema.internet.mh import MNLLAIIDOption as MH_MNLLAIIDOption +from pcapkit.protocols.schema.internet.mh import MNLLIdentifierOption as MH_MNLLIdentifierOption from pcapkit.protocols.schema.internet.mh import \ MobileNetworkPrefixOption as MH_MobileNetworkPrefixOption +from pcapkit.protocols.schema.internet.mh import \ + MulticastAcknowledgementOption as MH_MulticastAcknowledgementOption +from pcapkit.protocols.schema.internet.mh import \ + MulticastMobilityOption as MH_MulticastMobilityOption from pcapkit.protocols.schema.internet.mh import MultiPrefixExtension as MH_MultiPrefixExtension +from pcapkit.protocols.schema.internet.mh import NATDetectionOption as MH_NATDetectionOption from pcapkit.protocols.schema.internet.mh import NonceIndicesOption as MH_NonceIndicesOption from pcapkit.protocols.schema.internet.mh import Option as MH_Option from pcapkit.protocols.schema.internet.mh import Packet as MH_Packet +from pcapkit.protocols.schema.internet.mh import \ + PadFlowIdentificationSuboption as MH_PadFlowIdentificationSuboption from pcapkit.protocols.schema.internet.mh import PadOption as MH_PadOption from pcapkit.protocols.schema.internet.mh import \ PermanentHomeKeygenTokenOption as MH_PermanentHomeKeygenTokenOption +from pcapkit.protocols.schema.internet.mh import \ + PerSessionBitRateAttribute as MH_PerSessionBitRateAttribute +from pcapkit.protocols.schema.internet.mh import PreviousMAAROption as MH_PreviousMAAROption +from pcapkit.protocols.schema.internet.mh import QoSAttribute as MH_QoSAttribute +from pcapkit.protocols.schema.internet.mh import \ + QoSTrafficSelectorAttribute as MH_QoSTrafficSelectorAttribute +from pcapkit.protocols.schema.internet.mh import \ + QoSVendorSpecificAttribute as MH_QoSVendorSpecificAttribute +from pcapkit.protocols.schema.internet.mh import QualityOfServiceOption as MH_QualityOfServiceOption +from pcapkit.protocols.schema.internet.mh import \ + RedirectCapabilityOption as MH_RedirectCapabilityOption +from pcapkit.protocols.schema.internet.mh import RedirectOption as MH_RedirectOption +from pcapkit.protocols.schema.internet.mh import RestartCounterOption as MH_RestartCounterOption +from pcapkit.protocols.schema.internet.mh import ServiceSelectionOption as MH_ServiceSelectionOption +from pcapkit.protocols.schema.internet.mh import ServingMAAROption as MH_ServingMAAROption from pcapkit.protocols.schema.internet.mh import SignatureOption as MH_SignatureOption +from pcapkit.protocols.schema.internet.mh import \ + SubscriptionQueryMessage as MH_SubscriptionQueryMessage +from pcapkit.protocols.schema.internet.mh import \ + SubscriptionResponseMessage as MH_SubscriptionResponseMessage +from pcapkit.protocols.schema.internet.mh import \ + TargetCareofAddressSuboption as MH_TargetCareofAddressSuboption +from pcapkit.protocols.schema.internet.mh import TimestampOption as MH_TimestampOption +from pcapkit.protocols.schema.internet.mh import \ + TrafficSelectorSuboption as MH_TrafficSelectorSuboption +from pcapkit.protocols.schema.internet.mh import TransientBindingOption as MH_TransientBindingOption +from pcapkit.protocols.schema.internet.mh import UnassignedANISuboption as MH_UnassignedANISuboption +from pcapkit.protocols.schema.internet.mh import \ + UnassignedFlowIdentificationSuboption as MH_UnassignedFlowIdentificationSuboption +from pcapkit.protocols.schema.internet.mh import \ + UnassignedLMAControlledMAGSuboption as MH_UnassignedLMAControlledMAGSuboption from pcapkit.protocols.schema.internet.mh import UnassignedOption as MH_UnassignedOption +from pcapkit.protocols.schema.internet.mh import UnassignedQoSAttribute as MH_UnassignedQoSAttribute from pcapkit.protocols.schema.internet.mh import UnknownExtension as MH_UnknownExtension from pcapkit.protocols.schema.internet.mh import UnknownMessage as MH_UnknownMessage +from pcapkit.protocols.schema.internet.mh import \ + UpdateNotificationAcknowledgementMessage as MH_UpdateNotificationAcknowledgementMessage +from pcapkit.protocols.schema.internet.mh import \ + UpdateNotificationMessage as MH_UpdateNotificationMessage +from pcapkit.protocols.schema.internet.mh import VendorSpecificOption as MH_VendorSpecificOption __all__ = [ # Authentication Header @@ -247,6 +410,7 @@ # Hop-by-Hop Options 'HOPOPT', + 'HOPOPT_SMFDPDOption', 'HOPOPT_QuickStartOption', 'HOPOPT_UnassignedOption', 'HOPOPT_PadOption', 'HOPOPT_TunnelEncapsulationLimitOption', 'HOPOPT_RouterAlertOption', 'HOPOPT_CALIPSOOption', 'HOPOPT_SMFIdentificationBasedDPDOption', 'HOPOPT_SMFHashBasedDPDOption', 'HOPOPT_PDMOption', 'HOPOPT_QuickStartRequestOption', @@ -256,6 +420,7 @@ # Internet Protocol version 4 'IPv4', + 'IPv4_Option', 'IPv4_UnassignedOption', 'IPv4_EOOLOption', 'IPv4_NOPOption', 'IPv4_SECOption', 'IPv4_LSROption', 'IPv4_TSOption', 'IPv4_ESECOption', 'IPv4_RROption', 'IPv4_SIDOption', @@ -271,6 +436,7 @@ # IPv6 Destination Options 'IPv6_Opts', + 'IPv6_Opts_SMFDPDOption', 'IPv6_Opts_QuickStartOption', 'IPv6_Opts_UnassignedOption', 'IPv6_Opts_PadOption', 'IPv6_Opts_TunnelEncapsulationLimitOption', 'IPv6_Opts_RouterAlertOption', 'IPv6_Opts_CALIPSOOption', 'IPv6_Opts_SMFIdentificationBasedDPDOption', 'IPv6_Opts_SMFHashBasedDPDOption', 'IPv6_Opts_PDMOption', 'IPv6_Opts_QuickStartRequestOption', @@ -280,6 +446,7 @@ # IPv6 Routing Header 'IPv6_Route', + 'IPv6_Route_RoutingType', 'IPv6_Route_UnknownType', 'IPv6_Route_SourceRoute', 'IPv6_Route_Type2', 'IPv6_Route_RPL', # IPv6 @@ -293,14 +460,47 @@ 'MH_Packet', 'MH_UnknownMessage', 'MH_BindingRefreshRequestMessage', 'MH_HomeTestInitMessage', 'MH_CareofTestInitMessage', 'MH_HomeTestMessage', 'MH_CareofTestMessage', 'MH_BindingUpdateMessage', 'MH_BindingAcknowledgementMessage', - 'MH_BindingErrorMessage', + 'MH_BindingErrorMessage', 'MH_FastBindingUpdateMessage', 'MH_FastBindingAcknowledgmentMessage', + 'MH_FastNeighborAdvertisementMessage', 'MH_ExperimentalMessage', 'MH_HandoverInitiateMessage', + 'MH_HandoverAcknowledgeMessage', 'MH_HeartbeatMessage', 'MH_HomeAgentSwitchMessage', 'MH_BindingRevocationMessage', + 'MH_LocalizedRoutingInitiationMessage', 'MH_LocalizedRoutingAcknowledgmentMessage', 'MH_UpdateNotificationMessage', + 'MH_UpdateNotificationAcknowledgementMessage', 'MH_FlowBindingMessage', 'MH_SubscriptionQueryMessage', + 'MH_SubscriptionResponseMessage', 'MH_Option', 'MH_UnassignedOption', 'MH_PadOption', 'MH_BindingRefreshAdviceOption', 'MH_AlternateCareofAddressOption', - 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', - 'MH_LinkLayerAddressOption', 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', - 'MH_CGAParametersOption', 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', - 'MH_CareofTestOption', + 'MH_NonceIndicesOption', 'MH_AuthorizationDataOption', 'MH_MobileNetworkPrefixOption', 'MH_LinkLayerAddressOption', + 'MH_MNIDOption', 'MH_AuthOption', 'MH_MesgIDOption', 'MH_CGAParametersRequestOption', 'MH_CGAParametersOption', + 'MH_SignatureOption', 'MH_PermanentHomeKeygenTokenOption', 'MH_CareofTestInitOption', 'MH_CareofTestOption', + 'MH_ExperimentalMobilityOption', 'MH_BADFOption', 'MH_IPv6AddressPrefixOption', 'MH_HomeNetworkPrefixOption', + 'MH_HandoffIndicatorOption', 'MH_AccessTechnologyTypeOption', 'MH_MNLLIdentifierOption', + 'MH_LinkLocalAddressOption', 'MH_TimestampOption', 'MH_RestartCounterOption', 'MH_DNSUpdateOption', + 'MH_VendorSpecificOption', 'MH_ServiceSelectionOption', 'MH_IPv4HomeAddressOption', + 'MH_IPv4AddressAcknowledgementOption', 'MH_NATDetectionOption', 'MH_IPv4CareofAddressOption', 'MH_GREKeyOption', + 'MH_BindingIdentifierOption', 'MH_IPv4HomeAddressRequestOption', 'MH_IPv4HomeAddressReplyOption', + 'MH_IPv4DefaultRouterAddressOption', 'MH_IPv4DHCPSupportModeOption', 'MH_ContextRequestOption', + 'MH_LMAAddressOption', 'MH_MNLLAIIDOption', 'MH_TransientBindingOption', 'MH_FlowSummaryOption', + 'MH_FlowIdentificationOption', 'MH_RedirectCapabilityOption', 'MH_RedirectOption', 'MH_LoadInformationOption', + 'MH_AlternateIPv4CareofAddressOption', 'MH_MNGroupIdentifierOption', 'MH_MAGIPv6AddressOption', + 'MH_AccessNetworkIdentifierOption', 'MH_IPv4TrafficOffloadSelectorOption', 'MH_DynamicIPMulticastSelectorOption', + 'MH_DelegatedMNPOption', 'MH_ActiveMulticastSubscriptionIPv4Option', 'MH_ActiveMulticastSubscriptionIPv6Option', + 'MH_QualityOfServiceOption', 'MH_LMAUserPlaneAddressOption', 'MH_MulticastMobilityOption', + 'MH_MulticastAcknowledgementOption', 'MH_LMAControlledMAGParametersOption', 'MH_MAGMultipathBindingOption', + 'MH_MAGIdentifierOption', 'MH_AnchoredPrefixOption', 'MH_LocalPrefixOption', 'MH_PreviousMAAROption', + 'MH_ServingMAAROption', 'MH_DLIFLinkLocalAddressOption', 'MH_DLIFLinkLayerAddressOption', + 'MH_FlowIdentificationSuboption', + 'MH_UnassignedFlowIdentificationSuboption', 'MH_PadFlowIdentificationSuboption', 'MH_BIDReferenceSuboption', + 'MH_TrafficSelectorSuboption', 'MH_FlowBindingActionSuboption', 'MH_TargetCareofAddressSuboption', + 'MH_ANISuboption', + 'MH_UnassignedANISuboption', 'MH_ANINetworkIdentifierSuboption', 'MH_ANIGeoLocationSuboption', + 'MH_ANIOperatorIdentifierSuboption', 'MH_ANICivicLocationSuboption', 'MH_ANIMAGGroupIdentifierSuboption', + 'MH_ANIUpdateTimerSuboption', + 'MH_QoSAttribute', + 'MH_UnassignedQoSAttribute', 'MH_BitRateAttribute', 'MH_PerSessionBitRateAttribute', + 'MH_AllocationRetentionPriorityAttribute', 'MH_QoSTrafficSelectorAttribute', 'MH_QoSVendorSpecificAttribute', + 'MH_LMAControlledMAGSuboption', + 'MH_UnassignedLMAControlledMAGSuboption', 'MH_BindingReregistrationControlSuboption', + 'MH_HeartbeatControlSuboption', 'MH_CGAParameter', 'MH_CGAExtension', - 'MH_UnknownExtension', 'MH_MultiPrefixExtension', + 'MH_UnknownExtension', 'MH_MultiPrefixExtension', 'MH_ExperimentalExtension', ] diff --git a/pcapkit/protocols/schema/misc/__init__.py b/pcapkit/protocols/schema/misc/__init__.py index 68d3e024d..37f3542b8 100644 --- a/pcapkit/protocols/schema/misc/__init__.py +++ b/pcapkit/protocols/schema/misc/__init__.py @@ -5,9 +5,8 @@ from pcapkit.protocols.schema.misc.pcap import * # PCAP-NG file format -from pcapkit.protocols.schema.misc.pcapng import UnknownSecrets as PCAPNG_UnknownSecrets -from pcapkit.protocols.schema.misc.pcapng import BlockType as PCAPNG_BlockType from pcapkit.protocols.schema.misc.pcapng import PCAPNG +from pcapkit.protocols.schema.misc.pcapng import BlockType as PCAPNG_BlockType from pcapkit.protocols.schema.misc.pcapng import CommentOption as PCAPNG_CommentOption from pcapkit.protocols.schema.misc.pcapng import CustomBlock as PCAPNG_CustomBlock from pcapkit.protocols.schema.misc.pcapng import CustomOption as PCAPNG_CustomOption @@ -59,6 +58,9 @@ from pcapkit.protocols.schema.misc.pcapng import NS_DNSIP6AddrOption as PCAPNG_NS_DNSIP6AddrOption from pcapkit.protocols.schema.misc.pcapng import NS_DNSNameOption as PCAPNG_NS_DNSNameOption from pcapkit.protocols.schema.misc.pcapng import Option as PCAPNG_Option +from pcapkit.protocols.schema.misc.pcapng import PACK_FlagsOption as PCAPNG_PACK_FlagsOption +from pcapkit.protocols.schema.misc.pcapng import PACK_HashOption as PCAPNG_PACK_HashOption +from pcapkit.protocols.schema.misc.pcapng import PacketBlock as PCAPNG_PacketBlock from pcapkit.protocols.schema.misc.pcapng import SectionHeaderBlock as PCAPNG_SectionHeaderBlock from pcapkit.protocols.schema.misc.pcapng import SimplePacketBlock as PCAPNG_SimplePacketBlock from pcapkit.protocols.schema.misc.pcapng import \ @@ -67,6 +69,7 @@ from pcapkit.protocols.schema.misc.pcapng import UnknownBlock as PCAPNG_UnknownBlock from pcapkit.protocols.schema.misc.pcapng import UnknownOption as PCAPNG_UnknownOption from pcapkit.protocols.schema.misc.pcapng import UnknownRecord as PCAPNG_UnknownRecord +from pcapkit.protocols.schema.misc.pcapng import UnknownSecrets as PCAPNG_UnknownSecrets from pcapkit.protocols.schema.misc.pcapng import WireGuardKeyLog as PCAPNG_WireGuardKeyLog from pcapkit.protocols.schema.misc.pcapng import ZigBeeAPSKey as PCAPNG_ZigBeeAPSKey from pcapkit.protocols.schema.misc.pcapng import ZigBeeNWKKey as PCAPNG_ZigBeeNWKKey @@ -93,6 +96,7 @@ 'PCAPNG_NS_DNSNameOption', 'PCAPNG_NS_DNSIP4AddrOption', 'PCAPNG_NS_DNSIP6AddrOption', 'PCAPNG_ISB_StartTimeOption', 'PCAPNG_ISB_EndTimeOption', 'PCAPNG_ISB_IFRecvOption', 'PCAPNG_ISB_IFDropOption', 'PCAPNG_ISB_FilterAcceptOption', 'PCAPNG_ISB_OSDropOption', 'PCAPNG_ISB_UsrDelivOption', + 'PCAPNG_PACK_FlagsOption', 'PCAPNG_PACK_HashOption', 'PCAPNG_NameResolutionRecord', 'PCAPNG_UnknownRecord', 'PCAPNG_EndRecord', 'PCAPNG_IPv4Record', 'PCAPNG_IPv6Record', 'PCAPNG_DSBSecrets', 'PCAPNG_UnknownSecrets', 'PCAPNG_TLSKeyLog', 'PCAPNG_WireGuardKeyLog', 'PCAPNG_ZigBeeNWKKey', 'PCAPNG_ZigBeeAPSKey', @@ -100,7 +104,7 @@ 'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock', 'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock', 'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock', - 'PCAPNG_CustomBlock', + 'PCAPNG_CustomBlock', 'PCAPNG_PacketBlock', # misc protocols 'NoPayload', diff --git a/tests/protocols/test_package_reexports_1807_unit.py b/tests/protocols/test_package_reexports_1807_unit.py new file mode 100644 index 000000000..e97cdc848 --- /dev/null +++ b/tests/protocols/test_package_reexports_1807_unit.py @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- +"""Every data and schema package re-exports what its submodules export (#1807). + +#1797 found :mod:`pcapkit.protocols.data.link` without the L2TP data model, and +the test #1806 added checks that one package. The same gap was open in others: +the Mobility Header messages, options, suboptions and attributes on both sides, +the HOPOPT and IPv6-Opts ``SMFDPDOption`` and ``QuickStartOption`` bases, the +PCAP-NG ``PacketBlock`` and its ``PACK_*`` options, the HTTP/2 ``Settings`` data +model, and the schemas ``ipv4.Option`` and ``ipv6_route.RoutingType``. + +:mod:`tests.project.test_public_api` cannot see such a gap: its converse reads +the attributes a package *holds*, and a name the package never imported is not +one of them. So this module walks every package under +:mod:`pcapkit.protocols.data` and :mod:`pcapkit.protocols.schema` and checks it +against the :attr:`__all__` of each of its children. The check is by identity, +because a package re-exports a nested name under its protocol's prefix +(``MH_Option``, ``PCAPNG_EPB_FlagsOption``), so the child's name need not be the +package's. + +It also checks that a star-import inside a package is never shadowed, which is +what keeps ``from pcapkit.protocols.data import *`` (and ``schema``) from binding +one name to two objects. + +Nothing here reads a capture, so this belongs to the unit tier. + +""" +from __future__ import annotations + +import ast +import importlib +import pkgutil +import types +import unittest + +#: The two trees this module covers; each root is itself a package. +ROOTS = ('pcapkit.protocols.data', 'pcapkit.protocols.schema') + +#: Names a submodule lists in :attr:`__all__` that its package deliberately does +#: not re-export, keyed by the submodule. An entry is an API decision to be argued +#: for in review, not the way to quiet a failure. +#: +#: :mod:`pcapkit.protocols.schema.internet.ipv6_option` holds field callbacks +#: shared by the HOPOPT and IPv6-Opts option schemas, and its own documentation +#: page is where they are published. No schema package re-exports a field +#: callback: the sibling modules (``hopopt``, ``mh``, ``hip``, ``ipv4``) keep +#: theirs out of :attr:`__all__` altogether. A bare package-level name would +#: also be ambiguous, since ``hopopt`` and ``ipv6_opts`` each define wrappers of +#: the same names bound to their own header, and ``mh`` and ``ipv4`` define +#: unrelated ``pad_opt_data_len`` and ``quick_start_data_selector`` callbacks. +MODULE_ONLY = { + 'pcapkit.protocols.schema.internet.ipv6_option': ( + 'rpl_opt_sub_tlv_len', 'mpl_opt_seed_id_len', 'smf_i_dpd_id_len', + 'smf_dpd_data_selector', 'smf_i_dpd_tid_selector', 'quick_start_data_selector', + 'pad_opt_data_len', 'calipso_pad_len', 'mpl_opt_pad_len', + ), +} # type: dict[str, tuple[str, ...]] + + +def _is_public(name: 'str') -> 'bool': + return not name.rsplit('.', 1)[-1].startswith('_') + + +def packages() -> 'list[str]': + """Every public package under :data:`ROOTS`, the roots included.""" + found = [] # type: list[str] + + def walk(name: 'str') -> None: + found.append(name) + package = importlib.import_module(name) + for info in pkgutil.iter_modules(package.__path__, name + '.'): + if info.ispkg and _is_public(info.name): + walk(info.name) + + for root in ROOTS: + walk(root) + return found + + +def children(package: 'types.ModuleType') -> 'list[types.ModuleType]': + """The public modules and packages directly below ``package``.""" + return [importlib.import_module(info.name) + for info in pkgutil.iter_modules(package.__path__, package.__name__ + '.') + if _is_public(info.name)] + + +def exported_objects(package: 'types.ModuleType') -> 'set[int]': + """Identities of the objects ``from package import *`` binds.""" + return {id(getattr(package, name)) for name in package.__all__} + + +def star_imported(package: 'types.ModuleType') -> 'list[str]': + """The modules ``package``'s :file:`__init__.py` imports with ``import *``.""" + with open(package.__file__, encoding='utf-8') as file: + tree = ast.parse(file.read()) + return [node.module for node in tree.body + if isinstance(node, ast.ImportFrom) and node.module is not None + and any(alias.name == '*' for alias in node.names)] + + +class PackageReexportTests(unittest.TestCase): + def test_the_walk_finds_the_layer_packages(self) -> None: + # A broken walk would make every check below pass over nothing. + found = packages() + for root in ROOTS: + for layer in ('link', 'internet', 'transport', 'application', 'misc', 'misc.pcap'): + self.assertIn(f'{root}.{layer}', found) + + def test_every_child_declares_all(self) -> None: + # The rule below reads each child's __all__; a child without one would + # pass it vacuously. + undeclared = [child.__name__ for name in packages() + for child in children(importlib.import_module(name)) + if not hasattr(child, '__all__')] + self.assertEqual(undeclared, []) + + def test_every_package_reexports_every_child_export(self) -> None: + missing = {} # type: dict[str, list[str]] + for name in packages(): + package = importlib.import_module(name) + exported = exported_objects(package) + for child in children(package): + allowed = MODULE_ONLY.get(child.__name__, ()) + unexported = [symbol for symbol in getattr(child, '__all__', ()) + if symbol not in allowed + and id(getattr(child, symbol)) not in exported] + if unexported: + missing[f'{name} <- {child.__name__}'] = unexported + + self.assertEqual(missing, {}, + 'these packages do not re-export names their submodules list in ' + '__all__; re-export each under the _ alias its ' + 'siblings use, or record it in MODULE_ONLY with the reason') + + def test_the_module_only_allowlist_is_tight(self) -> None: + # An entry that no longer names a real, still-unexported child name would + # silently excuse the next omission of that name. + walked = {child.__name__: (name, child) for name in packages() + for child in children(importlib.import_module(name))} + self.assertEqual(sorted(set(MODULE_ONLY) - set(walked)), [], + 'MODULE_ONLY names modules outside the walk') + + stale = {} # type: dict[str, list[str]] + for module, allowed in MODULE_ONLY.items(): + if module not in walked: + continue + name, child = walked[module] + exported = exported_objects(importlib.import_module(name)) + dead = [symbol for symbol in allowed + if symbol not in getattr(child, '__all__', ()) + or id(getattr(child, symbol)) in exported] + if dead: + stale[module] = dead + self.assertEqual(stale, {}, + 'MODULE_ONLY entries the module no longer lists in __all__, or ' + 'that its package now exports anyway') + + def test_star_imports_are_never_shadowed(self) -> None: + # A package that star-imports its children ends up with one object per + # name. If two children export the same name, or a later import rebinds + # it, one of them is silently lost -- so every name a star-imported child + # exports has to reach the package as that same object. + shadowed = {} # type: dict[str, list[str]] + for name in packages(): + package = importlib.import_module(name) + for source in star_imported(package): + child = importlib.import_module(source) + lost = [symbol for symbol in child.__all__ + if getattr(package, symbol, None) is not getattr(child, symbol)] + if lost: + shadowed[f'{name} <- {source}'] = lost + + self.assertEqual(shadowed, {}, + 'these names are bound to a different object in the package than ' + 'in the child that star-exports them') + + def test_aggregator_star_imports_bind_the_reported_names(self) -> None: + # The statement from the issue, on one name from each gap it reported. + from pcapkit.protocols.data.application import httpv2 as data_httpv2 + from pcapkit.protocols.data.internet import hopopt as data_hopopt + from pcapkit.protocols.data.internet import ipv6_opts as data_ipv6_opts + from pcapkit.protocols.data.internet import mh as data_mh + from pcapkit.protocols.data.misc import pcapng as data_pcapng + from pcapkit.protocols.schema.internet import ipv4 as schema_ipv4 + from pcapkit.protocols.schema.internet import ipv6_route as schema_ipv6_route + from pcapkit.protocols.schema.internet import mh as schema_mh + from pcapkit.protocols.schema.misc import pcapng as schema_pcapng + + expected = { + 'pcapkit.protocols.data': { + 'HTTPv2_Settings': data_httpv2.Settings, + 'HOPOPT_QuickStartOption': data_hopopt.QuickStartOption, + 'IPv6_Opts_SMFDPDOption': data_ipv6_opts.SMFDPDOption, + 'MH_FastBindingUpdateMessage': data_mh.FastBindingUpdateMessage, + 'MH_QoSAttribute': data_mh.QoSAttribute, + 'PCAPNG_PacketBlock': data_pcapng.PacketBlock, + 'PCAPNG_PACK_FlagsOption': data_pcapng.PACK_FlagsOption, + }, + 'pcapkit.protocols.schema': { + 'IPv4_Option': schema_ipv4.Option, + 'IPv6_Route_RoutingType': schema_ipv6_route.RoutingType, + 'MH_ExperimentalExtension': schema_mh.ExperimentalExtension, + 'PCAPNG_PACK_HashOption': schema_pcapng.PACK_HashOption, + }, + } # type: dict[str, dict[str, object]] + for module, names in expected.items(): + namespace = {} # type: dict[str, object] + exec(f'from {module} import *', namespace) # pylint: disable=exec-used + with self.subTest(module=module): + self.assertEqual({name: namespace.get(name) for name in names}, names) + + +if __name__ == '__main__': + unittest.main()