pypcapkit 1.0.3.post3__pp39-none-any.whl → 1.1.0.post1__pp39-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. pcapkit/__init__.py +1 -1
  2. pcapkit/const/pcapng/option_type.py +25 -1
  3. pcapkit/const/reg/apptype.py +25 -1
  4. pcapkit/corekit/fields/collections.py +4 -5
  5. pcapkit/corekit/fields/field.py +33 -8
  6. pcapkit/corekit/fields/ipaddress.py +0 -1
  7. pcapkit/corekit/fields/misc.py +14 -19
  8. pcapkit/corekit/fields/numbers.py +2 -3
  9. pcapkit/corekit/fields/strings.py +2 -3
  10. pcapkit/corekit/infoclass.py +59 -6
  11. pcapkit/corekit/protochain.py +8 -1
  12. pcapkit/foundation/registry/protocols.py +30 -51
  13. pcapkit/protocols/data/__init__.py +4 -4
  14. pcapkit/protocols/data/internet/__init__.py +4 -4
  15. pcapkit/protocols/data/internet/mh.py +4 -4
  16. pcapkit/protocols/data/transport/__init__.py +4 -4
  17. pcapkit/protocols/data/transport/tcp.py +4 -4
  18. pcapkit/protocols/internet/mh.py +20 -20
  19. pcapkit/protocols/protocol.py +3 -2
  20. pcapkit/protocols/schema/__init__.py +4 -4
  21. pcapkit/protocols/schema/application/httpv2.py +16 -29
  22. pcapkit/protocols/schema/internet/__init__.py +4 -4
  23. pcapkit/protocols/schema/internet/hip.py +62 -111
  24. pcapkit/protocols/schema/internet/hopopt.py +46 -48
  25. pcapkit/protocols/schema/internet/ipv4.py +36 -41
  26. pcapkit/protocols/schema/internet/ipv6_opts.py +48 -52
  27. pcapkit/protocols/schema/internet/ipv6_route.py +9 -20
  28. pcapkit/protocols/schema/internet/mh.py +49 -84
  29. pcapkit/protocols/schema/misc/pcapng.py +178 -195
  30. pcapkit/protocols/schema/schema.py +252 -53
  31. pcapkit/protocols/schema/transport/__init__.py +4 -4
  32. pcapkit/protocols/schema/transport/tcp.py +52 -83
  33. pcapkit/protocols/transport/tcp.py +14 -14
  34. pcapkit/vendor/pcapng/option_type.py +25 -1
  35. pcapkit/vendor/reg/apptype.py +25 -1
  36. {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/METADATA +1 -1
  37. {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/RECORD +41 -41
  38. {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/LICENSE +0 -0
  39. {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/WHEEL +0 -0
  40. {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/entry_points.txt +0 -0
  41. {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/top_level.txt +0 -0
@@ -2,7 +2,6 @@
2
2
  # mypy: disable-error-code=assignment
3
3
  """header schema for Host Identity Protocol"""
4
4
 
5
- import collections
6
5
  from typing import TYPE_CHECKING, cast
7
6
 
8
7
  from pcapkit.const.hip.certificate import Certificate as Enum_Certificate
@@ -29,7 +28,7 @@ from pcapkit.corekit.fields.misc import ConditionalField, PayloadField, SchemaFi
29
28
  from pcapkit.corekit.fields.numbers import (EnumField, NumberField, UInt8Field, UInt16Field,
30
29
  UInt32Field)
31
30
  from pcapkit.corekit.fields.strings import BitField, BytesField, PaddingField
32
- from pcapkit.protocols.schema.schema import Schema, schema_final
31
+ from pcapkit.protocols.schema.schema import EnumSchema, Schema, schema_final
33
32
  from pcapkit.utilities.exceptions import FieldValueError
34
33
  from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING
35
34
  from pcapkit.utilities.warnings import ProtocolWarning, warn
@@ -157,18 +156,18 @@ def host_id_hi_selector(pkt: 'dict[str, Any]') -> 'Field':
157
156
  :class:`~pcapkit.protocols.schema.internet.hip.EdDSACurveHostIdentity` instance.
158
157
 
159
158
  """
160
- if pkt['algorithm'] == Enum_HIAlgorithm.ECDSA:
161
- return SchemaField(length=pkt['hi_len'], schema=ECDSACurveHostIdentity)
162
- if pkt['algorithm'] == Enum_HIAlgorithm.ECDSA_LOW:
163
- return SchemaField(length=pkt['hi_len'], schema=ECDSALowCurveHostIdentity)
164
- if pkt['algorithm'] == Enum_HIAlgorithm.EdDSA:
165
- return SchemaField(length=pkt['hi_len'], schema=EdDSACurveHostIdentity)
166
- return BytesField(length=pkt['hi_len'])
159
+ algo = pkt['algorithm']
160
+ schema = HostIdentity.registry[algo]
161
+ if schema is None:
162
+ return BytesField(length=pkt['hi_len'])
163
+ return SchemaField(length=pkt['hi_len'], schema=schema)
167
164
 
168
165
 
169
- class Parameter(Schema):
166
+ class Parameter(EnumSchema[Enum_Parameter]):
170
167
  """Base schema for HIP parameters."""
171
168
 
169
+ __default__ = lambda: UnassignedParameter
170
+
172
171
  #: Parameter type.
173
172
  type: 'Enum_Parameter' = EnumField(length=2, namespace=Enum_Parameter)
174
173
  #: Parameter length.
@@ -189,7 +188,7 @@ class UnassignedParameter(Parameter):
189
188
 
190
189
 
191
190
  @schema_final
192
- class ESPInfoParameter(Parameter):
191
+ class ESPInfoParameter(Parameter, code=Enum_Parameter.ESP_INFO):
193
192
  """Header schema for HIP ``ESP_INFO`` parameters."""
194
193
 
195
194
  #: Reserved.
@@ -209,7 +208,7 @@ class ESPInfoParameter(Parameter):
209
208
 
210
209
 
211
210
  @schema_final
212
- class R1CounterParameter(Parameter):
211
+ class R1CounterParameter(Parameter, code=Enum_Parameter.R1_COUNTER):
213
212
  """Header schema for HIP ``R1_COUNTER`` parameters."""
214
213
 
215
214
  #: Reserved.
@@ -252,7 +251,7 @@ class Locator(Schema):
252
251
 
253
252
 
254
253
  @schema_final
255
- class LocatorSetParameter(Parameter):
254
+ class LocatorSetParameter(Parameter, code=Enum_Parameter.LOCATOR_SET):
256
255
  """Header schema for HIP ``LOCATOR_SET`` parameters."""
257
256
 
258
257
  #: List of locators.
@@ -281,7 +280,7 @@ class LocatorData(Schema):
281
280
 
282
281
 
283
282
  @schema_final
284
- class PuzzleParameter(Parameter):
283
+ class PuzzleParameter(Parameter, code=Enum_Parameter.PUZZLE):
285
284
  """Header schema for HIP ``PUZZLE`` parameters."""
286
285
 
287
286
  #: Numeric index.
@@ -301,7 +300,7 @@ class PuzzleParameter(Parameter):
301
300
 
302
301
 
303
302
  @schema_final
304
- class SolutionParameter(Parameter):
303
+ class SolutionParameter(Parameter, code=Enum_Parameter.SOLUTION):
305
304
  """Header schema for HIP ``SOLUTION`` parameters."""
306
305
 
307
306
  #: Numeric index.
@@ -323,7 +322,7 @@ class SolutionParameter(Parameter):
323
322
 
324
323
 
325
324
  @schema_final
326
- class SEQParameter(Parameter):
325
+ class SEQParameter(Parameter, code=Enum_Parameter.SEQ):
327
326
  """Header schema for HIP ``SEQ`` parameters."""
328
327
 
329
328
  #: Update ID.
@@ -336,7 +335,7 @@ class SEQParameter(Parameter):
336
335
 
337
336
 
338
337
  @schema_final
339
- class ACKParameter(Parameter):
338
+ class ACKParameter(Parameter, code=Enum_Parameter.ACK):
340
339
  """Header schema for HIP ``ACK`` parameters."""
341
340
 
342
341
  #: Update ID.
@@ -352,7 +351,7 @@ class ACKParameter(Parameter):
352
351
 
353
352
 
354
353
  @schema_final
355
- class DHGroupListParameter(Parameter):
354
+ class DHGroupListParameter(Parameter, code=Enum_Parameter.DH_GROUP_LIST):
356
355
  """Header schema for HIP ``DH_GROUP_LIST`` parameters."""
357
356
 
358
357
  #: List of DH groups.
@@ -368,7 +367,7 @@ class DHGroupListParameter(Parameter):
368
367
 
369
368
 
370
369
  @schema_final
371
- class DiffieHellmanParameter(Parameter):
370
+ class DiffieHellmanParameter(Parameter, code=Enum_Parameter.DIFFIE_HELLMAN):
372
371
  """Header schema for HIP ``DIFFIE_HELLMAN`` parameters."""
373
372
 
374
373
  #: Diffie-Hellman group.
@@ -386,7 +385,7 @@ class DiffieHellmanParameter(Parameter):
386
385
 
387
386
 
388
387
  @schema_final
389
- class HIPTransformParameter(Parameter):
388
+ class HIPTransformParameter(Parameter, code=Enum_Parameter.HIP_TRANSFORM):
390
389
  """Header schema for HIP ``TRANSFORM`` parameters."""
391
390
 
392
391
  #: Suite IDs.
@@ -402,7 +401,7 @@ class HIPTransformParameter(Parameter):
402
401
 
403
402
 
404
403
  @schema_final
405
- class HIPCipherParameter(Parameter):
404
+ class HIPCipherParameter(Parameter, code=Enum_Parameter.HIP_CIPHER):
406
405
  """Header schema for HIP ``CIPHER`` parameters."""
407
406
 
408
407
  #: Cipher IDs.
@@ -418,7 +417,7 @@ class HIPCipherParameter(Parameter):
418
417
 
419
418
 
420
419
  @schema_final
421
- class NATTraversalModeParameter(Parameter):
420
+ class NATTraversalModeParameter(Parameter, code=Enum_Parameter.NAT_TRAVERSAL_MODE):
422
421
  """Header schema for HIP ``NAT_TRAVERSAL_MODE`` parameters."""
423
422
 
424
423
  #: Reserved.
@@ -436,7 +435,7 @@ class NATTraversalModeParameter(Parameter):
436
435
 
437
436
 
438
437
  @schema_final
439
- class TransactionPacingParameter(Parameter):
438
+ class TransactionPacingParameter(Parameter, code=Enum_Parameter.TRANSACTION_PACING):
440
439
  """Header schema for HIP ``TRANSACTION_PACING`` parameters."""
441
440
 
442
441
  #: Transaction pacing.
@@ -449,7 +448,7 @@ class TransactionPacingParameter(Parameter):
449
448
 
450
449
 
451
450
  @schema_final
452
- class EncryptedParameter(Parameter):
451
+ class EncryptedParameter(Parameter, code=Enum_Parameter.ENCRYPTED):
453
452
  """Header schema for HIP ``ENCRYPTED`` parameters."""
454
453
 
455
454
  #: Reserved.
@@ -529,7 +528,7 @@ class EncryptedParameter(Parameter):
529
528
 
530
529
 
531
530
  @schema_final
532
- class HostIDParameter(Parameter):
531
+ class HostIDParameter(Parameter, code=Enum_Parameter.HOST_ID):
533
532
  """Header schema for HIP ``HOST_ID`` parameters."""
534
533
 
535
534
  #: Host ID length.
@@ -557,12 +556,12 @@ class HostIDParameter(Parameter):
557
556
  di: 'bytes') -> 'None': ...
558
557
 
559
558
 
560
- class HostIdentity(Schema):
559
+ class HostIdentity(EnumSchema[Enum_HIAlgorithm]):
561
560
  """Host identity schema."""
562
561
 
563
562
 
564
563
  @schema_final
565
- class ECDSACurveHostIdentity(HostIdentity):
564
+ class ECDSACurveHostIdentity(HostIdentity, code=Enum_HIAlgorithm.ECDSA):
566
565
  """Host identity schema with ECDSA curve."""
567
566
 
568
567
  #: Algorithm curve type.
@@ -575,7 +574,7 @@ class ECDSACurveHostIdentity(HostIdentity):
575
574
 
576
575
 
577
576
  @schema_final
578
- class ECDSALowCurveHostIdentity(HostIdentity):
577
+ class ECDSALowCurveHostIdentity(HostIdentity, code=Enum_HIAlgorithm.ECDSA_LOW):
579
578
  """Host identity schema with ECDSA_LOW curve."""
580
579
 
581
580
  #: Algorithm curve type.
@@ -588,7 +587,7 @@ class ECDSALowCurveHostIdentity(HostIdentity):
588
587
 
589
588
 
590
589
  @schema_final
591
- class EdDSACurveHostIdentity(HostIdentity):
590
+ class EdDSACurveHostIdentity(HostIdentity, code=Enum_HIAlgorithm.EdDSA):
592
591
  """Host identity schema with EdDSA curve."""
593
592
 
594
593
  #: Algorithm curve type.
@@ -601,7 +600,7 @@ class EdDSACurveHostIdentity(HostIdentity):
601
600
 
602
601
 
603
602
  @schema_final
604
- class HITSuiteListParameter(Parameter):
603
+ class HITSuiteListParameter(Parameter, code=Enum_Parameter.HIT_SUITE_LIST):
605
604
  """Header schema for HIP ``HIT_SUITE_LIST`` parameters."""
606
605
 
607
606
  #: HIT suite IDs.
@@ -617,7 +616,7 @@ class HITSuiteListParameter(Parameter):
617
616
 
618
617
 
619
618
  @schema_final
620
- class CertParameter(Parameter):
619
+ class CertParameter(Parameter, code=Enum_Parameter.CERT):
621
620
  """Header schema for HIP ``CERT`` parameters."""
622
621
 
623
622
  #: Certificate group.
@@ -639,7 +638,7 @@ class CertParameter(Parameter):
639
638
 
640
639
 
641
640
  @schema_final
642
- class NotificationParameter(Parameter):
641
+ class NotificationParameter(Parameter, code=Enum_Parameter.NOTIFICATION):
643
642
  """Header schema for HIP ``NOTIFICATION`` parameters."""
644
643
 
645
644
  #: Reserved.
@@ -656,7 +655,7 @@ class NotificationParameter(Parameter):
656
655
 
657
656
 
658
657
  @schema_final
659
- class EchoRequestSignedParameter(Parameter):
658
+ class EchoRequestSignedParameter(Parameter, code=Enum_Parameter.ECHO_REQUEST_SIGNED):
660
659
  """Header schema for HIP ``ECHO_REQUEST_SIGNED`` parameters."""
661
660
 
662
661
  #: Opaque data.
@@ -669,7 +668,7 @@ class EchoRequestSignedParameter(Parameter):
669
668
 
670
669
 
671
670
  @schema_final
672
- class RegInfoParameter(Parameter):
671
+ class RegInfoParameter(Parameter, code=Enum_Parameter.REG_INFO):
673
672
  """Header schema for HIP ``REG_INFO`` parameters."""
674
673
 
675
674
  #: Minimum lifetime.
@@ -690,7 +689,7 @@ class RegInfoParameter(Parameter):
690
689
 
691
690
 
692
691
  @schema_final
693
- class RegRequestParameter(Parameter):
692
+ class RegRequestParameter(Parameter, code=Enum_Parameter.REG_REQUEST):
694
693
  """Header schema for HIP ``REG_REQUEST`` parameters."""
695
694
 
696
695
  #: Lifetime.
@@ -708,7 +707,7 @@ class RegRequestParameter(Parameter):
708
707
 
709
708
 
710
709
  @schema_final
711
- class RegResponseParameter(Parameter):
710
+ class RegResponseParameter(Parameter, code=Enum_Parameter.REG_RESPONSE):
712
711
  """Header schema for HIP ``REG_RESPONSE`` parameters."""
713
712
 
714
713
  #: Lifetime.
@@ -726,7 +725,7 @@ class RegResponseParameter(Parameter):
726
725
 
727
726
 
728
727
  @schema_final
729
- class RegFailedParameter(Parameter):
728
+ class RegFailedParameter(Parameter, code=Enum_Parameter.REG_FAILED):
730
729
  """Header schema for HIP ``REG_FAILED`` parameters."""
731
730
 
732
731
  #: Lifetime.
@@ -744,7 +743,7 @@ class RegFailedParameter(Parameter):
744
743
 
745
744
 
746
745
  @schema_final
747
- class RegFromParameter(Parameter):
746
+ class RegFromParameter(Parameter, code=Enum_Parameter.REG_FROM):
748
747
  """Header schema for HIP ``REG_FROM`` parameters."""
749
748
 
750
749
  #: Port.
@@ -761,7 +760,7 @@ class RegFromParameter(Parameter):
761
760
 
762
761
 
763
762
  @schema_final
764
- class EchoResponseSignedParameter(Parameter):
763
+ class EchoResponseSignedParameter(Parameter, code=Enum_Parameter.ECHO_RESPONSE_SIGNED):
765
764
  """Header schema for HIP ``ECHO_RESPONSE_SIGNED`` parameters."""
766
765
 
767
766
  #: Opaque data.
@@ -774,7 +773,7 @@ class EchoResponseSignedParameter(Parameter):
774
773
 
775
774
 
776
775
  @schema_final
777
- class TransportFormatListParameter(Parameter):
776
+ class TransportFormatListParameter(Parameter, code=Enum_Parameter.TRANSPORT_FORMAT_LIST):
778
777
  """Header schema for HIP ``TRANSPORT_FORMAT_LIST`` parameters."""
779
778
 
780
779
  #: Transport formats.
@@ -790,7 +789,7 @@ class TransportFormatListParameter(Parameter):
790
789
 
791
790
 
792
791
  @schema_final
793
- class ESPTransformParameter(Parameter):
792
+ class ESPTransformParameter(Parameter, code=Enum_Parameter.ESP_TRANSFORM):
794
793
  """Header schema for HIP ``ESP_TRANSFORM`` parameters."""
795
794
 
796
795
  #: Reserved.
@@ -808,7 +807,7 @@ class ESPTransformParameter(Parameter):
808
807
 
809
808
 
810
809
  @schema_final
811
- class SeqDataParameter(Parameter):
810
+ class SeqDataParameter(Parameter, code=Enum_Parameter.SEQ_DATA):
812
811
  """Header schema for HIP ``SEQ_DATA`` parameters."""
813
812
 
814
813
  #: Sequence number.
@@ -821,7 +820,7 @@ class SeqDataParameter(Parameter):
821
820
 
822
821
 
823
822
  @schema_final
824
- class AckDataParameter(Parameter):
823
+ class AckDataParameter(Parameter, code=Enum_Parameter.ACK_DATA):
825
824
  """Header schema for HIP ``ACK_DATA`` parameters."""
826
825
 
827
826
  #: Acked sequence number.
@@ -837,7 +836,7 @@ class AckDataParameter(Parameter):
837
836
 
838
837
 
839
838
  @schema_final
840
- class PayloadMICParameter(Parameter):
839
+ class PayloadMICParameter(Parameter, code=Enum_Parameter.PAYLOAD_MIC):
841
840
  """Header schema for HIP ``PAYLOAD_MIC`` parameters."""
842
841
 
843
842
  #: Next header.
@@ -856,7 +855,7 @@ class PayloadMICParameter(Parameter):
856
855
 
857
856
 
858
857
  @schema_final
859
- class TransactionIDParameter(Parameter):
858
+ class TransactionIDParameter(Parameter, code=Enum_Parameter.TRANSACTION_ID):
860
859
  """Header schema for HIP ``TRANSACTION_ID`` parameters."""
861
860
 
862
861
  #: Transaction ID.
@@ -869,7 +868,7 @@ class TransactionIDParameter(Parameter):
869
868
 
870
869
 
871
870
  @schema_final
872
- class OverlayIDParameter(Parameter):
871
+ class OverlayIDParameter(Parameter, code=Enum_Parameter.OVERLAY_ID):
873
872
  """Header schema for HIP ``OVERLAY_ID`` parameters."""
874
873
 
875
874
  #: Overlay ID.
@@ -882,7 +881,7 @@ class OverlayIDParameter(Parameter):
882
881
 
883
882
 
884
883
  @schema_final
885
- class RouteDstParameter(Parameter):
884
+ class RouteDstParameter(Parameter, code=Enum_Parameter.ROUTE_DST):
886
885
  """Header schema for HIP ``ROUTE_DST`` parameters."""
887
886
 
888
887
  #: Flags.
@@ -905,7 +904,7 @@ class RouteDstParameter(Parameter):
905
904
 
906
905
 
907
906
  @schema_final
908
- class HIPTransportModeParameter(Parameter):
907
+ class HIPTransportModeParameter(Parameter, code=Enum_Parameter.HIP_TRANSPORT_MODE):
909
908
  """Header schema for HIP ``HIP_TRANSPORT_MODE`` parameters."""
910
909
 
911
910
  #: Port.
@@ -923,7 +922,7 @@ class HIPTransportModeParameter(Parameter):
923
922
 
924
923
 
925
924
  @schema_final
926
- class HIPMACParameter(Parameter):
925
+ class HIPMACParameter(Parameter, code=Enum_Parameter.HIP_MAC):
927
926
  """Header schema for HIP ``HIP_MAC`` parameters."""
928
927
 
929
928
  #: HMAC value.
@@ -936,7 +935,7 @@ class HIPMACParameter(Parameter):
936
935
 
937
936
 
938
937
  @schema_final
939
- class HIPMAC2Parameter(Parameter):
938
+ class HIPMAC2Parameter(Parameter, code=Enum_Parameter.HIP_MAC_2):
940
939
  """Header schema for HIP ``HIP_MAC_2`` parameters."""
941
940
 
942
941
  #: HMAC value.
@@ -949,7 +948,7 @@ class HIPMAC2Parameter(Parameter):
949
948
 
950
949
 
951
950
  @schema_final
952
- class HIPSignature2Parameter(Parameter):
951
+ class HIPSignature2Parameter(Parameter, code=Enum_Parameter.HIP_SIGNATURE_2):
953
952
  """Header schema for HIP ``HIP_SIGNATURE_2`` parameters."""
954
953
 
955
954
  #: Signature algorithm.
@@ -964,7 +963,7 @@ class HIPSignature2Parameter(Parameter):
964
963
 
965
964
 
966
965
  @schema_final
967
- class HIPSignatureParameter(Parameter):
966
+ class HIPSignatureParameter(Parameter, code=Enum_Parameter.HIP_SIGNATURE):
968
967
  """Header schema for HIP ``HIP_SIGNATURE`` parameters."""
969
968
 
970
969
  #: Signature algorithm.
@@ -979,7 +978,7 @@ class HIPSignatureParameter(Parameter):
979
978
 
980
979
 
981
980
  @schema_final
982
- class EchoRequestUnsignedParameter(Parameter):
981
+ class EchoRequestUnsignedParameter(Parameter, code=Enum_Parameter.ECHO_REQUEST_UNSIGNED):
983
982
  """Header schema for HIP ``ECHO_REQUEST_UNSIGNED`` parameters."""
984
983
 
985
984
  #: Opaque data.
@@ -992,7 +991,7 @@ class EchoRequestUnsignedParameter(Parameter):
992
991
 
993
992
 
994
993
  @schema_final
995
- class EchoResponseUnsignedParameter(Parameter):
994
+ class EchoResponseUnsignedParameter(Parameter, code=Enum_Parameter.ECHO_RESPONSE_UNSIGNED):
996
995
  """Header schema for HIP ``ECHO_RESPONSE_UNSIGNED`` parameters."""
997
996
 
998
997
  #: Opaque data.
@@ -1005,7 +1004,7 @@ class EchoResponseUnsignedParameter(Parameter):
1005
1004
 
1006
1005
 
1007
1006
  @schema_final
1008
- class RelayFromParameter(Parameter):
1007
+ class RelayFromParameter(Parameter, code=Enum_Parameter.RELAY_FROM):
1009
1008
  """Header schema for HIP ``RELAY_FROM`` parameters."""
1010
1009
 
1011
1010
  #: Port.
@@ -1022,7 +1021,7 @@ class RelayFromParameter(Parameter):
1022
1021
 
1023
1022
 
1024
1023
  @schema_final
1025
- class RelayToParameter(Parameter):
1024
+ class RelayToParameter(Parameter, code=Enum_Parameter.RELAY_TO):
1026
1025
  """Header schema for HIP ``RELAY_TO`` parameters."""
1027
1026
 
1028
1027
  #: Port.
@@ -1039,7 +1038,7 @@ class RelayToParameter(Parameter):
1039
1038
 
1040
1039
 
1041
1040
  @schema_final
1042
- class OverlayTTLParameter(Parameter):
1041
+ class OverlayTTLParameter(Parameter, code=Enum_Parameter.OVERLAY_TTL):
1043
1042
  """Header schema for HIP ``OVERLAY_TTL`` parameters."""
1044
1043
 
1045
1044
  #: TTL value.
@@ -1054,7 +1053,7 @@ class OverlayTTLParameter(Parameter):
1054
1053
 
1055
1054
 
1056
1055
  @schema_final
1057
- class RouteViaParameter(Parameter):
1056
+ class RouteViaParameter(Parameter, code=Enum_Parameter.ROUTE_VIA):
1058
1057
  """Header schema for HIP ``ROUTE_VIA`` parameters."""
1059
1058
 
1060
1059
  #: Flags.
@@ -1077,7 +1076,7 @@ class RouteViaParameter(Parameter):
1077
1076
 
1078
1077
 
1079
1078
  @schema_final
1080
- class FromParameter(Parameter):
1079
+ class FromParameter(Parameter, code=Enum_Parameter.FROM):
1081
1080
  """Header schema for HIP ``FROM`` parameters."""
1082
1081
 
1083
1082
  #: Address.
@@ -1090,7 +1089,7 @@ class FromParameter(Parameter):
1090
1089
 
1091
1090
 
1092
1091
  @schema_final
1093
- class RVSHMACParameter(Parameter):
1092
+ class RVSHMACParameter(Parameter, code=Enum_Parameter.RVS_HMAC):
1094
1093
  """Header schema for HIP ``RVS_HMAC`` parameters."""
1095
1094
 
1096
1095
  #: HMAC value.
@@ -1103,7 +1102,7 @@ class RVSHMACParameter(Parameter):
1103
1102
 
1104
1103
 
1105
1104
  @schema_final
1106
- class ViaRVSParameter(Parameter):
1105
+ class ViaRVSParameter(Parameter, code=Enum_Parameter.VIA_RVS):
1107
1106
  """Header schema for HIP ``VIA_RVS`` parameters."""
1108
1107
 
1109
1108
  #: Address.
@@ -1119,7 +1118,7 @@ class ViaRVSParameter(Parameter):
1119
1118
 
1120
1119
 
1121
1120
  @schema_final
1122
- class RelayHMACParameter(Parameter):
1121
+ class RelayHMACParameter(Parameter, code=Enum_Parameter.RELAY_HMAC):
1123
1122
  """Header schema for HIP ``RELAY_HMAC`` parameters."""
1124
1123
 
1125
1124
  #: HMAC value.
@@ -1173,55 +1172,7 @@ class HIP(Schema):
1173
1172
  length=lambda pkt: (pkt['len'] - 4) * 8,
1174
1173
  base_schema=Parameter,
1175
1174
  type_name='type',
1176
- registry=collections.defaultdict(lambda: UnassignedParameter, {
1177
- Enum_Parameter.ESP_INFO: ESPInfoParameter,
1178
- Enum_Parameter.R1_COUNTER: R1CounterParameter,
1179
- Enum_Parameter.LOCATOR_SET: LocatorSetParameter,
1180
- Enum_Parameter.PUZZLE: PuzzleParameter,
1181
- Enum_Parameter.SOLUTION: SolutionParameter,
1182
- Enum_Parameter.SEQ: SEQParameter,
1183
- Enum_Parameter.ACK: ACKParameter,
1184
- Enum_Parameter.DH_GROUP_LIST: DHGroupListParameter,
1185
- Enum_Parameter.DIFFIE_HELLMAN: DiffieHellmanParameter,
1186
- Enum_Parameter.HIP_TRANSFORM: HIPTransformParameter,
1187
- Enum_Parameter.HIP_CIPHER: HIPCipherParameter,
1188
- Enum_Parameter.NAT_TRAVERSAL_MODE: NATTraversalModeParameter,
1189
- Enum_Parameter.TRANSACTION_PACING: TransactionPacingParameter,
1190
- Enum_Parameter.ENCRYPTED: EncryptedParameter,
1191
- Enum_Parameter.HOST_ID: HostIDParameter,
1192
- Enum_Parameter.HIT_SUITE_LIST: HITSuiteListParameter,
1193
- Enum_Parameter.CERT: CertParameter,
1194
- Enum_Parameter.NOTIFICATION: NotificationParameter,
1195
- Enum_Parameter.ECHO_REQUEST_SIGNED: EchoRequestSignedParameter,
1196
- Enum_Parameter.REG_INFO: RegInfoParameter,
1197
- Enum_Parameter.REG_REQUEST: RegRequestParameter,
1198
- Enum_Parameter.REG_FAILED: RegFailedParameter,
1199
- Enum_Parameter.REG_FROM: RegFromParameter,
1200
- Enum_Parameter.ECHO_RESPONSE_SIGNED: EchoResponseSignedParameter,
1201
- Enum_Parameter.TRANSPORT_FORMAT_LIST: TransportFormatListParameter,
1202
- Enum_Parameter.ESP_TRANSFORM: ESPTransformParameter,
1203
- Enum_Parameter.SEQ_DATA: SeqDataParameter,
1204
- Enum_Parameter.ACK_DATA: AckDataParameter,
1205
- Enum_Parameter.PAYLOAD_MIC: PayloadMICParameter,
1206
- Enum_Parameter.TRANSACTION_ID: TransactionIDParameter,
1207
- Enum_Parameter.OVERLAY_ID: OverlayIDParameter,
1208
- Enum_Parameter.ROUTE_DST: RouteDstParameter,
1209
- Enum_Parameter.HIP_TRANSPORT_MODE: HIPTransportModeParameter,
1210
- Enum_Parameter.HIP_MAC: HIPMACParameter,
1211
- Enum_Parameter.HIP_MAC_2: HIPMAC2Parameter,
1212
- Enum_Parameter.HIP_SIGNATURE_2: HIPSignature2Parameter,
1213
- Enum_Parameter.HIP_SIGNATURE: HIPSignatureParameter,
1214
- Enum_Parameter.ECHO_REQUEST_UNSIGNED: EchoRequestUnsignedParameter,
1215
- Enum_Parameter.ECHO_RESPONSE_UNSIGNED: EchoResponseUnsignedParameter,
1216
- Enum_Parameter.RELAY_FROM: RelayFromParameter,
1217
- Enum_Parameter.RELAY_TO: RelayToParameter,
1218
- Enum_Parameter.OVERLAY_TTL: OverlayTTLParameter,
1219
- Enum_Parameter.ROUTE_VIA: RouteViaParameter,
1220
- Enum_Parameter.FROM: FromParameter,
1221
- Enum_Parameter.RVS_HMAC: RVSHMACParameter,
1222
- Enum_Parameter.VIA_RVS: ViaRVSParameter,
1223
- Enum_Parameter.RELAY_HMAC: RelayHMACParameter,
1224
- }),
1175
+ registry=Parameter.registry,
1225
1176
  )
1226
1177
  #: Payload.
1227
1178
  payload: 'bytes' = PayloadField()