From f256891447469cb81d80c0560de3e3f4f219b048 Mon Sep 17 00:00:00 2001
From: Walinton Cambronero <walinton.cambronero@hpe.com>
Date: Mon, 21 Mar 2016 17:50:20 -0700
Subject: [PATCH] Update IANA Router Alert Options

Signed-off-by: Walinton Cambronero <walinton.cambronero@hpe.com>
---
 scapy/layers/inet6.py | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py
index 84b1786d..763b9167 100644
--- a/scapy/layers/inet6.py
+++ b/scapy/layers/inet6.py
@@ -705,13 +705,18 @@ class PadN(Packet): # IPv6 Hop-By-Hop Option
 class RouterAlert(Packet): # RFC 2711 - IPv6 Hop-By-Hop Option
     name = "Router Alert"
     fields_desc = [_OTypeField("otype", 0x05, _hbhopts),
-                   ByteField("optlen", 2), 
-                   ShortEnumField("value", None, 
-                                  { 0: "Datagram contains a MLD message", 
+                   ByteField("optlen", 2),
+                   ShortEnumField("value", None,
+                                  { 0: "Datagram contains a MLD message",
                                     1: "Datagram contains RSVP message",
-                                    2: "Datagram contains an Active Network message" }) ]
+                                    2: "Datagram contains an Active Network message",
+                                   68: "NSIS NATFW NSLP",
+                                   69: "MPLS OAM",
+                                65535: "Reserved" })]
     # TODO : Check IANA has not defined new values for value field of RouterAlertOption
-    # TODO : now that we have that option, we should do something in MLD class that need it
+    # TODO : Now that we have that option, we should do something in MLD class that need it
+    # TODO : IANA has defined ranges of values which can't be easily represented here.
+    #        iana.org/assignments/ipv6-routeralert-values/ipv6-routeralert-values.xhtml
     def alignment_delta(self, curpos): # alignment requirement : 2n+0
         x = 2 ; y = 0
         delta = x*((curpos - y + x - 1)/x) + y - curpos 
@@ -1317,8 +1322,8 @@ class _ICMPv6ML(_ICMPv6):
 class ICMPv6MLQuery(_ICMPv6ML): # RFC 2710
     name = "MLD - Multicast Listener Query"
     type   = 130
-    mrd    = 10000
-    mladdr = "::" # 10s for mrd
+    mrd    = 10000 # 10s for mrd
+    mladdr = "::"
     overload_fields = {IPv6: { "dst": "ff02::1", "hlim": 1, "nh": 58 }} 
     def hashret(self):
         if self.mladdr != "::":
-- 
GitLab