@@ -57,7 +57,10 @@ def get_cls(name, fallback_cls):
57
57
10 : "DHCP6_Reconf" ,
58
58
11 : "DHCP6_InfoRequest" ,
59
59
12 : "DHCP6_RelayForward" ,
60
- 13 : "DHCP6_RelayReply" }
60
+ 13 : "DHCP6_RelayReply" ,
61
+ 36 : "DHCP6_AddrRegInform" ,
62
+ 37 : "DHCP6_AddrRegReply" ,
63
+ }
61
64
62
65
63
66
def _dhcp6_dispatcher (x , * args , ** kargs ):
@@ -128,6 +131,7 @@ def _dhcp6_dispatcher(x, *args, **kargs):
128
131
79 : "OPTION_CLIENT_LINKLAYER_ADDR" , # RFC6939
129
132
103 : "OPTION_CAPTIVE_PORTAL" , # RFC8910
130
133
112 : "OPTION_MUD_URL" , # RFC8520
134
+ 148 : "OPTION_ADDR_REG_ENABLE" , # RFC9686
131
135
}
132
136
133
137
dhcp6opts_by_code = {1 : "DHCP6OptClientId" ,
@@ -187,10 +191,12 @@ def _dhcp6_dispatcher(x, *args, **kargs):
187
191
79 : "DHCP6OptClientLinkLayerAddr" , # RFC6939
188
192
103 : "DHCP6OptCaptivePortal" , # RFC8910
189
193
112 : "DHCP6OptMudUrl" , # RFC8520
194
+ 148 : "DHCP6OptAddrRegEnable" , # RFC9686
190
195
}
191
196
192
197
193
198
# sect 7.3 RFC 8415 : DHCP6 Messages types
199
+ # also RFC 9686
194
200
dhcp6types = {1 : "SOLICIT" ,
195
201
2 : "ADVERTISE" ,
196
202
3 : "REQUEST" ,
@@ -203,7 +209,10 @@ def _dhcp6_dispatcher(x, *args, **kargs):
203
209
10 : "RECONFIGURE" ,
204
210
11 : "INFORMATION-REQUEST" ,
205
211
12 : "RELAY-FORW" ,
206
- 13 : "RELAY-REPL" }
212
+ 13 : "RELAY-REPL" ,
213
+ 36 : "ADDR-REG-INFORM" ,
214
+ 37 : "ADDR-REG-REPLY" ,
215
+ }
207
216
208
217
209
218
#####################################################################
@@ -1103,6 +1112,12 @@ class DHCP6OptMudUrl(_DHCP6OptGuessPayload): # RFC8520
1103
1112
)]
1104
1113
1105
1114
1115
+ class DHCP6OptAddrRegEnable (_DHCP6OptGuessPayload ): # RFC 9686 sect 4.1
1116
+ name = "DHCP6 Address Registration Option"
1117
+ fields_desc = [ShortEnumField ("optcode" , 148 , dhcp6opts ),
1118
+ ShortField ("optlen" , 0 )]
1119
+
1120
+
1106
1121
#####################################################################
1107
1122
# DHCPv6 messages #
1108
1123
#####################################################################
@@ -1437,6 +1452,24 @@ def answers(self, other):
1437
1452
self .peeraddr == other .peeraddr )
1438
1453
1439
1454
1455
+ #####################################################################
1456
+ # Address Registration-Inform Message (RFC 9686)
1457
+ # - sent by clients who generated their own address and need it registered
1458
+
1459
+ class DHCP6_AddrRegInform (DHCP6 ):
1460
+ name = "DHCPv6 Information Request Message"
1461
+ msgtype = 36
1462
+
1463
+ #####################################################################
1464
+ # Address Registration-Reply Message (RFC 9686)
1465
+ # - sent by servers who respond to the address registration-inform message
1466
+
1467
+
1468
+ class DHCP6_AddrRegReply (DHCP6 ):
1469
+ name = "DHCPv6 Information Reply Message"
1470
+ msgtype = 37
1471
+
1472
+
1440
1473
bind_bottom_up (UDP , _dhcp6_dispatcher , {"dport" : 547 })
1441
1474
bind_bottom_up (UDP , _dhcp6_dispatcher , {"dport" : 546 })
1442
1475
0 commit comments