This patch implements the following messages on FRRouting:
 - FRR_ZEBRA_INTERFACE_ENABLE_RADV
 - FRR_ZEBRA_INTERFACE_DISABLE_RADV

Signed-off-by: IWASE Yusuke <iwase.yusu...@gmail.com>
---
 ryu/lib/packet/zebra.py | 46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/ryu/lib/packet/zebra.py b/ryu/lib/packet/zebra.py
index 8b84a15..d19f203 100644
--- a/ryu/lib/packet/zebra.py
+++ b/ryu/lib/packet/zebra.py
@@ -3122,10 +3122,52 @@ class ZebraBfdClientRegister(_ZebraBfdClient):
     """
 
 
+class _ZebraInterfaceRadv(_ZebraMessageBody):
+    """
+    Base class for FRR_ZEBRA_INTERFACE_*_RADV message body.
+    """
+    # Zebra interface Router Advertisement message body:
+    #  0                   1                   2                   3
+    #  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+    # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+    # | Interface Index                                               |
+    # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+    # | RA Interval                                                   |
+    # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+    _HEADER_FMT = '!II'  # ifindex, interval
+    HEADER_SIZE = struct.calcsize(_HEADER_FMT)
+
+    def __init__(self, ifindex, interval):
+        super(_ZebraInterfaceRadv, self).__init__()
+        self.ifindex = ifindex
+        self.interval = interval
+
+    @classmethod
+    def parse(cls, buf, version=_DEFAULT_FRR_VERSION):
+        (ifindex, interval,) = struct.unpack_from(cls._HEADER_FMT, buf)
+
+        return cls(ifindex, interval)
+
+    def serialize(self, version=_DEFAULT_FRR_VERSION):
+        return struct.pack(self._HEADER_FMT, self.ifindex, self.interval)
+
+
+@_FrrZebraMessageBody.register_type(FRR_ZEBRA_INTERFACE_ENABLE_RADV)
+class ZebraInterfaceEnableRadv(_ZebraInterfaceRadv):
+    """
+    Message body class for FRR_ZEBRA_INTERFACE_ENABLE_RADV.
+    """
+
+
+@_FrrZebraMessageBody.register_type(FRR_ZEBRA_INTERFACE_DISABLE_RADV)
+class ZebraInterfaceDisableRadv(_ZebraInterfaceRadv):
+    """
+    Message body class for FRR_ZEBRA_INTERFACE_DISABLE_RADV.
+    """
+
+
 # TODO:
 # Implement the following messages:
-#  - FRR_ZEBRA_INTERFACE_ENABLE_RADV
-#  - FRR_ZEBRA_INTERFACE_DISABLE_RADV
 #  - FRR_ZEBRA_MPLS_LABELS_ADD
 #  - FRR_ZEBRA_MPLS_LABELS_DELETE
 
-- 
2.7.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to