fca0c242e4
Change-Id: I6aaf9c602cd515ed9d4416d286f9191d048c1a87 Signed-off-by: Neale Ranns <nranns@cisco.com>
59 lines
3.2 KiB
Diff
59 lines
3.2 KiB
Diff
diff --git a/scapy/layers/dhcp6.py b/scapy/layers/dhcp6.py
|
|
index 4cb9291..a1adcfc 100644
|
|
--- a/scapy/layers/dhcp6.py
|
|
+++ b/scapy/layers/dhcp6.py
|
|
@@ -74,7 +74,9 @@ dhcp6opts = { 1: "CLIENTID",
|
|
36: "OPTION_GEOCONF_CIVIC", #RFC-ietf-geopriv-dhcp-civil-09.txt
|
|
37: "OPTION_REMOTE_ID", #RFC4649
|
|
38: "OPTION_SUBSCRIBER_ID", #RFC4580
|
|
- 39: "OPTION_CLIENT_FQDN" } #RFC4704
|
|
+ 39: "OPTION_CLIENT_FQDN", #RFC4704
|
|
+ 68: "OPTION_VSS", #RFC6607
|
|
+ 79: "OPTION_CLIENT_LINKLAYER_ADDR" } #RFC6939
|
|
|
|
dhcp6opts_by_code = { 1: "DHCP6OptClientId",
|
|
2: "DHCP6OptServerId",
|
|
@@ -116,12 +118,14 @@ dhcp6opts_by_code = { 1: "DHCP6OptClientId",
|
|
#40: "DHCP6OptPANAAgent", #RFC-ietf-dhc-paa-option-05.txt
|
|
#41: "DHCP6OptNewPOSIXTimeZone, #RFC4833
|
|
#42: "DHCP6OptNewTZDBTimeZone, #RFC4833
|
|
- 43: "DHCP6OptRelayAgentERO" #RFC4994
|
|
+ 43: "DHCP6OptRelayAgentERO", #RFC4994
|
|
#44: "DHCP6OptLQQuery", #RFC5007
|
|
#45: "DHCP6OptLQClientData", #RFC5007
|
|
#46: "DHCP6OptLQClientTime", #RFC5007
|
|
#47: "DHCP6OptLQRelayData", #RFC5007
|
|
#48: "DHCP6OptLQClientLink", #RFC5007
|
|
+ 68: "DHCP6OptVSS", #RFC6607
|
|
+ 79: "DHCP6OptClientLinkLayerAddr", #RFC6939
|
|
}
|
|
|
|
|
|
@@ -838,6 +842,26 @@ class DHCP6OptRelayAgentERO(_DHCP6OptGuessPayload): # RFC4994
|
|
_OptReqListField("reqopts", [23, 24],
|
|
length_from = lambda pkt: pkt.optlen) ]
|
|
|
|
+# "Client link-layer address type. The link-layer type MUST be a valid hardware
|
|
+# type assigned by the IANA, as described in [RFC0826]
|
|
+class DHCP6OptClientLinkLayerAddr(_DHCP6OptGuessPayload): #RFC6939
|
|
+ name = "DHCP6 Option - Client Link Layer address"
|
|
+ fields_desc = [ ShortEnumField("optcode", 79, dhcp6opts),
|
|
+ FieldLenField("optlen", None, length_of="clladdr",
|
|
+ adjust = lambda pkt,x: x+1),
|
|
+ ShortField("lltype", 1), # ethernet
|
|
+ _LLAddrField("clladdr", ETHER_ANY) ]
|
|
+
|
|
+# Virtual Subnet selection
|
|
+class DHCP6OptVSS(_DHCP6OptGuessPayload): #RFC6607
|
|
+ name = "DHCP6 Option - Virtual Subnet Selection"
|
|
+ fields_desc = [ ShortEnumField("optcode", 68, dhcp6opts),
|
|
+ FieldLenField("optlen", None, length_of="data",
|
|
+ adjust = lambda pkt,x: x+1),
|
|
+ ByteField("type", 255), # Default Global/default table
|
|
+ StrLenField("data", "",
|
|
+ length_from = lambda pkt: pkt.optlen) ]
|
|
+
|
|
#####################################################################
|
|
### DHCPv6 messages ###
|
|
#####################################################################
|