pypcapkit 1.0.3.post3__pp38-none-any.whl → 1.1.0.post1__pp38-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pcapkit/__init__.py +1 -1
- pcapkit/const/pcapng/option_type.py +25 -1
- pcapkit/const/reg/apptype.py +25 -1
- pcapkit/corekit/fields/collections.py +4 -5
- pcapkit/corekit/fields/field.py +33 -8
- pcapkit/corekit/fields/ipaddress.py +0 -1
- pcapkit/corekit/fields/misc.py +14 -19
- pcapkit/corekit/fields/numbers.py +2 -3
- pcapkit/corekit/fields/strings.py +2 -3
- pcapkit/corekit/infoclass.py +59 -6
- pcapkit/corekit/protochain.py +8 -1
- pcapkit/foundation/registry/protocols.py +30 -51
- pcapkit/protocols/data/__init__.py +4 -4
- pcapkit/protocols/data/internet/__init__.py +4 -4
- pcapkit/protocols/data/internet/mh.py +4 -4
- pcapkit/protocols/data/transport/__init__.py +4 -4
- pcapkit/protocols/data/transport/tcp.py +4 -4
- pcapkit/protocols/internet/mh.py +20 -20
- pcapkit/protocols/protocol.py +3 -2
- pcapkit/protocols/schema/__init__.py +4 -4
- pcapkit/protocols/schema/application/httpv2.py +16 -29
- pcapkit/protocols/schema/internet/__init__.py +4 -4
- pcapkit/protocols/schema/internet/hip.py +62 -111
- pcapkit/protocols/schema/internet/hopopt.py +46 -48
- pcapkit/protocols/schema/internet/ipv4.py +36 -41
- pcapkit/protocols/schema/internet/ipv6_opts.py +48 -52
- pcapkit/protocols/schema/internet/ipv6_route.py +9 -20
- pcapkit/protocols/schema/internet/mh.py +49 -84
- pcapkit/protocols/schema/misc/pcapng.py +178 -195
- pcapkit/protocols/schema/schema.py +252 -53
- pcapkit/protocols/schema/transport/__init__.py +4 -4
- pcapkit/protocols/schema/transport/tcp.py +52 -83
- pcapkit/protocols/transport/tcp.py +14 -14
- pcapkit/vendor/pcapng/option_type.py +25 -1
- pcapkit/vendor/reg/apptype.py +25 -1
- {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/METADATA +1 -1
- {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/RECORD +41 -41
- {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/LICENSE +0 -0
- {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/WHEEL +0 -0
- {pypcapkit-1.0.3.post3.dist-info → pypcapkit-1.1.0.post1.dist-info}/entry_points.txt +0 -0
- {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 mobility header"""
|
4
4
|
|
5
|
-
import collections
|
6
5
|
import datetime
|
7
6
|
import math
|
8
7
|
from typing import TYPE_CHECKING
|
@@ -60,7 +59,7 @@ from pcapkit.corekit.fields.misc import (ConditionalField, ForwardMatchField, Pa
|
|
60
59
|
from pcapkit.corekit.fields.numbers import (EnumField, UInt8Field, UInt16Field, UInt32Field,
|
61
60
|
UInt64Field)
|
62
61
|
from pcapkit.corekit.fields.strings import BitField, BytesField, PaddingField, StringField
|
63
|
-
from pcapkit.protocols.schema.schema import Schema, schema_final
|
62
|
+
from pcapkit.protocols.schema.schema import EnumSchema, Schema, schema_final
|
64
63
|
from pcapkit.utilities.logging import SPHINX_TYPE_CHECKING
|
65
64
|
|
66
65
|
__all__ = [
|
@@ -72,8 +71,8 @@ __all__ = [
|
|
72
71
|
'BindingErrorMessage',
|
73
72
|
|
74
73
|
'Option',
|
75
|
-
'UnassignedOption', 'PadOption', '
|
76
|
-
'NonceIndicesOption', '
|
74
|
+
'UnassignedOption', 'PadOption', 'BindingRefreshAdviceOption', 'AlternateCareofAddressOption',
|
75
|
+
'NonceIndicesOption', 'AuthorizationDataOption', 'MobileNetworkPrefixOption',
|
77
76
|
'LinkLayerAddressOption', 'MNIDOption', 'AuthOption', 'MesgIDOption', 'CGAParametersRequestOption',
|
78
77
|
'CGAParametersOption', 'SignatureOption', 'PermanentHomeKeygenTokenOption', 'CareofTestInitOption',
|
79
78
|
'CareofTestOption',
|
@@ -87,7 +86,7 @@ __all__ = [
|
|
87
86
|
if TYPE_CHECKING:
|
88
87
|
from datetime import datetime as dt_type
|
89
88
|
from ipaddress import IPv6Address
|
90
|
-
from typing import Any
|
89
|
+
from typing import Any
|
91
90
|
|
92
91
|
from pcapkit.corekit.fields.field import _Field as Field
|
93
92
|
from pcapkit.protocols.protocol import Protocol
|
@@ -120,29 +119,6 @@ if SPHINX_TYPE_CHECKING:
|
|
120
119
|
K: 'int'
|
121
120
|
|
122
121
|
|
123
|
-
def mh_opt_registry() -> 'DefaultDict[Enum_Option | int, Type[Option]]':
|
124
|
-
"""Registry for MH type-specific message :attr:`~Packet.options`."""
|
125
|
-
return collections.defaultdict(lambda: UnassignedOption, {
|
126
|
-
Enum_Option.Pad1: PadOption,
|
127
|
-
Enum_Option.PadN: PadOption,
|
128
|
-
Enum_Option.Binding_Refresh_Advice: BindingAuthorizationDataOption,
|
129
|
-
Enum_Option.Alternate_Care_of_Address: AlternateCareofAddressOption,
|
130
|
-
Enum_Option.Nonce_Indices: NonceIndicesOption,
|
131
|
-
Enum_Option.Authorization_Data: BindingAuthorizationDataOption,
|
132
|
-
Enum_Option.Mobile_Network_Prefix_Option: MobileNetworkPrefixOption,
|
133
|
-
Enum_Option.Mobility_Header_Link_Layer_Address_option: LinkLayerAddressOption,
|
134
|
-
Enum_Option.MN_ID_OPTION_TYPE: MNIDOption,
|
135
|
-
Enum_Option.AUTH_OPTION_TYPE: AuthOption,
|
136
|
-
Enum_Option.MESG_ID_OPTION_TYPE: MesgIDOption,
|
137
|
-
Enum_Option.CGA_Parameters_Request: CGAParametersRequestOption,
|
138
|
-
Enum_Option.CGA_Parameters: CGAParametersOption,
|
139
|
-
Enum_Option.Signature: SignatureOption,
|
140
|
-
Enum_Option.Permanent_Home_Keygen_Token: PermanentHomeKeygenTokenOption,
|
141
|
-
Enum_Option.Care_of_Test_Init: CareofTestInitOption,
|
142
|
-
Enum_Option.Care_of_Test: CareofTestOption,
|
143
|
-
})
|
144
|
-
|
145
|
-
|
146
122
|
def mh_data_selector(pkt: 'dict[str, Any]') -> 'Field':
|
147
123
|
"""Selector function for :attr:`MH.data` field.
|
148
124
|
|
@@ -154,14 +130,10 @@ def mh_data_selector(pkt: 'dict[str, Any]') -> 'Field':
|
|
154
130
|
wrapped :class:`~pcapkit.protocols.schema.internet.mh.Packet`
|
155
131
|
subclass instance.
|
156
132
|
|
157
|
-
See Also:
|
158
|
-
* :class:`pcapkit.const.mh.packet.Packet`
|
159
|
-
* :data:`ppcapkit.protocols.schema.internet.mh.MAP_MH_DATA`
|
160
|
-
|
161
133
|
"""
|
162
134
|
type = pkt['type'] # type: Enum_Packet
|
163
135
|
length = pkt['length'] * 8 + 2
|
164
|
-
schema =
|
136
|
+
schema = Packet.registry[type]
|
165
137
|
return SchemaField(length=length, schema=schema)
|
166
138
|
|
167
139
|
|
@@ -208,9 +180,11 @@ class MH(Schema):
|
|
208
180
|
chksum: 'bytes', data: 'Packet | bytes', payload: 'bytes | Protocol | Schema') -> 'None': ...
|
209
181
|
|
210
182
|
|
211
|
-
class Option(
|
183
|
+
class Option(EnumSchema[Enum_Option]):
|
212
184
|
"""Header schema for MH options."""
|
213
185
|
|
186
|
+
__default__ = lambda: UnassignedOption
|
187
|
+
|
214
188
|
#: Option type.
|
215
189
|
type: 'Enum_Option' = EnumField(length=1, namespace=Enum_Option)
|
216
190
|
#: Option length (excl. type and length fields), conditional in case of
|
@@ -248,7 +222,8 @@ class UnassignedOption(Option):
|
|
248
222
|
|
249
223
|
|
250
224
|
@schema_final
|
251
|
-
class PadOption(Option
|
225
|
+
class PadOption(Option, code=[Enum_Option.Pad1,
|
226
|
+
Enum_Option.PadN]):
|
252
227
|
"""Header schema for MH padding options."""
|
253
228
|
|
254
229
|
#: Option data.
|
@@ -259,7 +234,7 @@ class PadOption(Option):
|
|
259
234
|
|
260
235
|
|
261
236
|
@schema_final
|
262
|
-
class
|
237
|
+
class BindingRefreshAdviceOption(Option, code=Enum_Option.Binding_Refresh_Advice):
|
263
238
|
"""Header schema for MH binding refresh advice options."""
|
264
239
|
|
265
240
|
#: Refresh interval.
|
@@ -270,7 +245,7 @@ class BindRefreshAdviceOption(Option):
|
|
270
245
|
|
271
246
|
|
272
247
|
@schema_final
|
273
|
-
class AlternateCareofAddressOption(Option):
|
248
|
+
class AlternateCareofAddressOption(Option, code=Enum_Option.Alternate_Care_of_Address):
|
274
249
|
"""Header schema for MH alternate care-of address options."""
|
275
250
|
|
276
251
|
#: Alternate care-of address.
|
@@ -281,7 +256,7 @@ class AlternateCareofAddressOption(Option):
|
|
281
256
|
|
282
257
|
|
283
258
|
@schema_final
|
284
|
-
class NonceIndicesOption(Option):
|
259
|
+
class NonceIndicesOption(Option, code=Enum_Option.Nonce_Indices):
|
285
260
|
"""Header schema for MH nonce indices options."""
|
286
261
|
|
287
262
|
#: Home nonce index.
|
@@ -294,7 +269,7 @@ class NonceIndicesOption(Option):
|
|
294
269
|
|
295
270
|
|
296
271
|
@schema_final
|
297
|
-
class
|
272
|
+
class AuthorizationDataOption(Option, code=Enum_Option.Authorization_Data):
|
298
273
|
"""Header schema for MH binding authorization data options."""
|
299
274
|
|
300
275
|
#: Authenticator.
|
@@ -305,7 +280,7 @@ class BindingAuthorizationDataOption(Option):
|
|
305
280
|
|
306
281
|
|
307
282
|
@schema_final
|
308
|
-
class MobileNetworkPrefixOption(Option):
|
283
|
+
class MobileNetworkPrefixOption(Option, code=Enum_Option.Mobile_Network_Prefix_Option):
|
309
284
|
"""Header schema for MH mobile network prefix options."""
|
310
285
|
|
311
286
|
#: Reserved.
|
@@ -320,7 +295,7 @@ class MobileNetworkPrefixOption(Option):
|
|
320
295
|
|
321
296
|
|
322
297
|
@schema_final
|
323
|
-
class LinkLayerAddressOption(Option):
|
298
|
+
class LinkLayerAddressOption(Option, code=Enum_Option.Mobility_Header_Link_Layer_Address_option):
|
324
299
|
"""Header schema for MH link-layer address (MH-LLA) options."""
|
325
300
|
|
326
301
|
#: Option code.
|
@@ -333,7 +308,7 @@ class LinkLayerAddressOption(Option):
|
|
333
308
|
|
334
309
|
|
335
310
|
@schema_final
|
336
|
-
class MNIDOption(Option):
|
311
|
+
class MNIDOption(Option, code=Enum_Option.MN_ID_OPTION_TYPE):
|
337
312
|
"""Header schema for MH mobile node identifier (MNID) options."""
|
338
313
|
|
339
314
|
#: Subtype.
|
@@ -346,7 +321,7 @@ class MNIDOption(Option):
|
|
346
321
|
|
347
322
|
|
348
323
|
@schema_final
|
349
|
-
class AuthOption(Option):
|
324
|
+
class AuthOption(Option, code=Enum_Option.AUTH_OPTION_TYPE):
|
350
325
|
"""Header schema for Mobility Message Authentication options."""
|
351
326
|
|
352
327
|
#: Subtype.
|
@@ -361,7 +336,7 @@ class AuthOption(Option):
|
|
361
336
|
|
362
337
|
|
363
338
|
@schema_final
|
364
|
-
class MesgIDOption(Option):
|
339
|
+
class MesgIDOption(Option, code=Enum_Option.MESG_ID_OPTION_TYPE):
|
365
340
|
"""Header schema for Mobility Message Replay Protection options."""
|
366
341
|
|
367
342
|
#: Timestamp (seconds since January 1st, 1970, c.f., :rfc:`1305`).
|
@@ -398,16 +373,18 @@ class MesgIDOption(Option):
|
|
398
373
|
|
399
374
|
|
400
375
|
@schema_final
|
401
|
-
class CGAParametersRequestOption(Option):
|
376
|
+
class CGAParametersRequestOption(Option, code=Enum_Option.CGA_Parameters_Request):
|
402
377
|
"""Header schema for CGA Parameters Request options."""
|
403
378
|
|
404
379
|
if TYPE_CHECKING:
|
405
380
|
def __init__(self, type: 'Enum_Option', length: 'int') -> 'None': ...
|
406
381
|
|
407
382
|
|
408
|
-
class CGAExtension(
|
383
|
+
class CGAExtension(EnumSchema[Enum_CGAExtension]):
|
409
384
|
"""Header schema for CGA extensions."""
|
410
385
|
|
386
|
+
__default__ = lambda: UnknownExtension
|
387
|
+
|
411
388
|
#: Extension type.
|
412
389
|
type: 'Enum_CGAExtension' = EnumField(length=2, namespace=Enum_CGAExtension)
|
413
390
|
#: Extension data length.
|
@@ -426,7 +403,7 @@ class UnknownExtension(CGAExtension):
|
|
426
403
|
|
427
404
|
|
428
405
|
@schema_final
|
429
|
-
class MultiPrefixExtension(CGAExtension):
|
406
|
+
class MultiPrefixExtension(CGAExtension, code=Enum_CGAExtension.Multi_Prefix):
|
430
407
|
"""Header schema for Multi-Prefix CGA extensions."""
|
431
408
|
|
432
409
|
#: Flags.
|
@@ -464,9 +441,7 @@ class CGAParameter(Schema):
|
|
464
441
|
length=lambda pkt: pkt['length'] - 25 - len(pkt['public_key']),
|
465
442
|
base_schema=CGAExtension,
|
466
443
|
type_name='type',
|
467
|
-
registry=
|
468
|
-
Enum_CGAExtension.Multi_Prefix: MultiPrefixExtension,
|
469
|
-
}),
|
444
|
+
registry=CGAExtension.registry,
|
470
445
|
eool=None,
|
471
446
|
)
|
472
447
|
|
@@ -476,7 +451,7 @@ class CGAParameter(Schema):
|
|
476
451
|
|
477
452
|
|
478
453
|
@schema_final
|
479
|
-
class CGAParametersOption(Option):
|
454
|
+
class CGAParametersOption(Option, code=Enum_Option.CGA_Parameters):
|
480
455
|
"""Header schema for CGA Parameters options."""
|
481
456
|
|
482
457
|
#: CGA parameters, c.f., :rfc:`3972`.
|
@@ -490,7 +465,7 @@ class CGAParametersOption(Option):
|
|
490
465
|
|
491
466
|
|
492
467
|
@schema_final
|
493
|
-
class SignatureOption(Option):
|
468
|
+
class SignatureOption(Option, code=Enum_Option.Signature):
|
494
469
|
"""Header schema for MH Signature options."""
|
495
470
|
|
496
471
|
#: Signature.
|
@@ -501,7 +476,7 @@ class SignatureOption(Option):
|
|
501
476
|
|
502
477
|
|
503
478
|
@schema_final
|
504
|
-
class PermanentHomeKeygenTokenOption(Option):
|
479
|
+
class PermanentHomeKeygenTokenOption(Option, code=Enum_Option.Permanent_Home_Keygen_Token):
|
505
480
|
"""Header schema for Permanent Home Keygen Token options."""
|
506
481
|
|
507
482
|
#: Permanent home keygen token.
|
@@ -512,7 +487,7 @@ class PermanentHomeKeygenTokenOption(Option):
|
|
512
487
|
|
513
488
|
|
514
489
|
@schema_final
|
515
|
-
class CareofTestInitOption(Option):
|
490
|
+
class CareofTestInitOption(Option, code=Enum_Option.Care_of_Test_Init):
|
516
491
|
"""Header schema for MH Care-of Test Init options."""
|
517
492
|
|
518
493
|
if TYPE_CHECKING:
|
@@ -520,7 +495,7 @@ class CareofTestInitOption(Option):
|
|
520
495
|
|
521
496
|
|
522
497
|
@schema_final
|
523
|
-
class CareofTestOption(Option):
|
498
|
+
class CareofTestOption(Option, code=Enum_Option.Care_of_Test):
|
524
499
|
"""Header schema for MH Care-of Test options."""
|
525
500
|
|
526
501
|
#: Care-of keygen token.
|
@@ -533,9 +508,11 @@ class CareofTestOption(Option):
|
|
533
508
|
# TODO: Implement other options.
|
534
509
|
|
535
510
|
|
536
|
-
class Packet(
|
511
|
+
class Packet(EnumSchema[Enum_Packet]):
|
537
512
|
"""Header schema for MH packet data."""
|
538
513
|
|
514
|
+
__default__ = lambda: UnknownMessage
|
515
|
+
|
539
516
|
|
540
517
|
@schema_final
|
541
518
|
class UnknownMessage(Packet):
|
@@ -549,7 +526,7 @@ class UnknownMessage(Packet):
|
|
549
526
|
|
550
527
|
|
551
528
|
@schema_final
|
552
|
-
class BindingRefreshRequestMessage(Packet):
|
529
|
+
class BindingRefreshRequestMessage(Packet, code=Enum_Packet.Binding_Refresh_Request):
|
553
530
|
"""Header schema for MH Binding Refresh Request (BRR) message."""
|
554
531
|
|
555
532
|
#: Reserved.
|
@@ -559,7 +536,7 @@ class BindingRefreshRequestMessage(Packet):
|
|
559
536
|
length=lambda pkt: pkt['__length__'],
|
560
537
|
base_schema=Option,
|
561
538
|
type_name='type',
|
562
|
-
registry=
|
539
|
+
registry=Option.registry,
|
563
540
|
eool=None,
|
564
541
|
)
|
565
542
|
|
@@ -568,7 +545,7 @@ class BindingRefreshRequestMessage(Packet):
|
|
568
545
|
|
569
546
|
|
570
547
|
@schema_final
|
571
|
-
class HomeTestInitMessage(Packet):
|
548
|
+
class HomeTestInitMessage(Packet, code=Enum_Packet.Home_Test_Init):
|
572
549
|
"""Header schema for MH Home Test Init (HoTI) message."""
|
573
550
|
|
574
551
|
#: Reserved.
|
@@ -580,7 +557,7 @@ class HomeTestInitMessage(Packet):
|
|
580
557
|
length=lambda pkt: pkt['__length__'],
|
581
558
|
base_schema=Option,
|
582
559
|
type_name='type',
|
583
|
-
registry=
|
560
|
+
registry=Option.registry,
|
584
561
|
eool=None,
|
585
562
|
)
|
586
563
|
|
@@ -589,7 +566,7 @@ class HomeTestInitMessage(Packet):
|
|
589
566
|
|
590
567
|
|
591
568
|
@schema_final
|
592
|
-
class CareofTestInitMessage(Packet):
|
569
|
+
class CareofTestInitMessage(Packet, code=Enum_Packet.Care_of_Test_Init):
|
593
570
|
"""Header schema for MH Care-of Test Init (CoTI) messages."""
|
594
571
|
|
595
572
|
#: Reserved.
|
@@ -601,7 +578,7 @@ class CareofTestInitMessage(Packet):
|
|
601
578
|
length=lambda pkt: pkt['__length__'],
|
602
579
|
base_schema=Option,
|
603
580
|
type_name='type',
|
604
|
-
registry=
|
581
|
+
registry=Option.registry,
|
605
582
|
eool=None,
|
606
583
|
)
|
607
584
|
|
@@ -610,7 +587,7 @@ class CareofTestInitMessage(Packet):
|
|
610
587
|
|
611
588
|
|
612
589
|
@schema_final
|
613
|
-
class HomeTestMessage(Packet):
|
590
|
+
class HomeTestMessage(Packet, code=Enum_Packet.Home_Test):
|
614
591
|
"""Header schema for MH Home Test (HoT) message."""
|
615
592
|
|
616
593
|
#: Home nonce index.
|
@@ -624,7 +601,7 @@ class HomeTestMessage(Packet):
|
|
624
601
|
length=lambda pkt: pkt['__length__'],
|
625
602
|
base_schema=Option,
|
626
603
|
type_name='type',
|
627
|
-
registry=
|
604
|
+
registry=Option.registry,
|
628
605
|
eool=None,
|
629
606
|
)
|
630
607
|
|
@@ -634,7 +611,7 @@ class HomeTestMessage(Packet):
|
|
634
611
|
|
635
612
|
|
636
613
|
@schema_final
|
637
|
-
class CareofTestMessage(Packet):
|
614
|
+
class CareofTestMessage(Packet, code=Enum_Packet.Care_of_Test):
|
638
615
|
"""Header schema for MH Care-of Test (CoT) message."""
|
639
616
|
|
640
617
|
#: Care-of nonce index.
|
@@ -648,7 +625,7 @@ class CareofTestMessage(Packet):
|
|
648
625
|
length=lambda pkt: pkt['__length__'],
|
649
626
|
base_schema=Option,
|
650
627
|
type_name='type',
|
651
|
-
registry=
|
628
|
+
registry=Option.registry,
|
652
629
|
eool=None,
|
653
630
|
)
|
654
631
|
|
@@ -658,7 +635,7 @@ class CareofTestMessage(Packet):
|
|
658
635
|
|
659
636
|
|
660
637
|
@schema_final
|
661
|
-
class BindingUpdateMessage(Packet):
|
638
|
+
class BindingUpdateMessage(Packet, code=Enum_Packet.Binding_Update):
|
662
639
|
"""Header schema for MH Binding Update (BU) messages."""
|
663
640
|
|
664
641
|
#: Sequence number.
|
@@ -677,7 +654,7 @@ class BindingUpdateMessage(Packet):
|
|
677
654
|
length=lambda pkt: pkt['__length__'],
|
678
655
|
base_schema=Option,
|
679
656
|
type_name='type',
|
680
|
-
registry=
|
657
|
+
registry=Option.registry,
|
681
658
|
eool=None,
|
682
659
|
)
|
683
660
|
|
@@ -687,7 +664,7 @@ class BindingUpdateMessage(Packet):
|
|
687
664
|
|
688
665
|
|
689
666
|
@schema_final
|
690
|
-
class BindingAcknowledgementMessage(Packet):
|
667
|
+
class BindingAcknowledgementMessage(Packet, code=Enum_Packet.Binding_Acknowledgement):
|
691
668
|
"""Header schema for MH Binding Acknowledgement (BA) messages."""
|
692
669
|
|
693
670
|
#: Status.
|
@@ -705,7 +682,7 @@ class BindingAcknowledgementMessage(Packet):
|
|
705
682
|
length=lambda pkt: pkt['__length__'],
|
706
683
|
base_schema=Option,
|
707
684
|
type_name='type',
|
708
|
-
registry=
|
685
|
+
registry=Option.registry,
|
709
686
|
eool=None,
|
710
687
|
)
|
711
688
|
|
@@ -715,7 +692,7 @@ class BindingAcknowledgementMessage(Packet):
|
|
715
692
|
|
716
693
|
|
717
694
|
@schema_final
|
718
|
-
class BindingErrorMessage(Packet):
|
695
|
+
class BindingErrorMessage(Packet, code=Enum_Packet.Binding_Error):
|
719
696
|
"""Header schema for MH Binding Error (BE) messages."""
|
720
697
|
|
721
698
|
#: Status.
|
@@ -729,7 +706,7 @@ class BindingErrorMessage(Packet):
|
|
729
706
|
length=lambda pkt: pkt['__length__'],
|
730
707
|
base_schema=Option,
|
731
708
|
type_name='type',
|
732
|
-
registry=
|
709
|
+
registry=Option.registry,
|
733
710
|
eool=None,
|
734
711
|
)
|
735
712
|
|
@@ -739,15 +716,3 @@ class BindingErrorMessage(Packet):
|
|
739
716
|
|
740
717
|
|
741
718
|
# TODO: Implement other message types.
|
742
|
-
|
743
|
-
#: DefaultDict[Enum_Packet, Type[Packet]]: Mapping of MH message type numbers to schemas.
|
744
|
-
MAP_MH_DATA = collections.defaultdict(lambda: UnknownMessage, {
|
745
|
-
Enum_Packet.Binding_Refresh_Request: BindingRefreshRequestMessage,
|
746
|
-
Enum_Packet.Home_Test_Init: HomeTestInitMessage,
|
747
|
-
Enum_Packet.Care_of_Test_Init: CareofTestInitMessage,
|
748
|
-
Enum_Packet.Home_Test: HomeTestMessage,
|
749
|
-
Enum_Packet.Care_of_Test: CareofTestMessage,
|
750
|
-
Enum_Packet.Binding_Update: BindingUpdateMessage,
|
751
|
-
Enum_Packet.Binding_Acknowledgement: BindingAcknowledgementMessage,
|
752
|
-
Enum_Packet.Binding_Error: BindingErrorMessage,
|
753
|
-
}) # type: DefaultDict[Enum_Packet | int, Type[Packet]]
|