From ba06bfed4fc84b699689932eeb3af9b9be0f5cd7 Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Tue, 19 May 2020 21:27:43 +0200
Subject: dhcpv6-pd: T421: support ethernet based interfaces

Add support for prefix delegation when receiving the prefix via ethernet,
bridge, bond, wireless.
---
 src/conf_mode/interfaces-bonding.py         | 3 +++
 src/conf_mode/interfaces-bridge.py          | 3 +++
 src/conf_mode/interfaces-ethernet.py        | 3 +++
 src/conf_mode/interfaces-pseudo-ethernet.py | 3 +++
 src/conf_mode/interfaces-wireless.py        | 3 +++
 5 files changed, 15 insertions(+)

(limited to 'src')

diff --git a/src/conf_mode/interfaces-bonding.py b/src/conf_mode/interfaces-bonding.py
index 40fadad27..bdca9d170 100755
--- a/src/conf_mode/interfaces-bonding.py
+++ b/src/conf_mode/interfaces-bonding.py
@@ -299,6 +299,9 @@ def apply(bond):
         if bond['dhcpv6_temporary']:
             b.dhcp.v6.options['dhcpv6_temporary'] = True
 
+        if bond['dhcpv6_pd']:
+            b.dhcp.v6.options['dhcpv6_pd'] = bond['dhcpv6_pd']
+
         # ignore link state changes
         b.set_link_detect(bond['disable_link_detect'])
         # Bonding transmit hash policy
diff --git a/src/conf_mode/interfaces-bridge.py b/src/conf_mode/interfaces-bridge.py
index d55639019..3ff339f0f 100755
--- a/src/conf_mode/interfaces-bridge.py
+++ b/src/conf_mode/interfaces-bridge.py
@@ -321,6 +321,9 @@ def apply(bridge):
         if bridge['dhcpv6_temporary']:
             br.dhcp.v6.options['dhcpv6_temporary'] = True
 
+        if bridge['dhcpv6_pd']:
+            br.dhcp.v6.options['dhcpv6_pd'] = br['dhcpv6_pd']
+
         # assign/remove VRF
         br.set_vrf(bridge['vrf'])
 
diff --git a/src/conf_mode/interfaces-ethernet.py b/src/conf_mode/interfaces-ethernet.py
index 97a631158..f45a77a3e 100755
--- a/src/conf_mode/interfaces-ethernet.py
+++ b/src/conf_mode/interfaces-ethernet.py
@@ -201,6 +201,9 @@ def apply(eth):
         if eth['dhcpv6_temporary']:
             e.dhcp.v6.options['dhcpv6_temporary'] = True
 
+        if eth['dhcpv6_pd']:
+            e.dhcp.v6.options['dhcpv6_pd'] = e['dhcpv6_pd']
+
         # ignore link state changes
         e.set_link_detect(eth['disable_link_detect'])
         # disable ethernet flow control (pause frames)
diff --git a/src/conf_mode/interfaces-pseudo-ethernet.py b/src/conf_mode/interfaces-pseudo-ethernet.py
index b2f78bcc4..3e036a753 100755
--- a/src/conf_mode/interfaces-pseudo-ethernet.py
+++ b/src/conf_mode/interfaces-pseudo-ethernet.py
@@ -171,6 +171,9 @@ def apply(peth):
     if peth['dhcpv6_temporary']:
         p.dhcp.v6.options['dhcpv6_temporary'] = True
 
+    if peth['dhcpv6_pd']:
+        p.dhcp.v6.options['dhcpv6_pd'] = peth['dhcpv6_pd']
+
     # ignore link state changes
     p.set_link_detect(peth['disable_link_detect'])
     # configure ARP cache timeout in milliseconds
diff --git a/src/conf_mode/interfaces-wireless.py b/src/conf_mode/interfaces-wireless.py
index c802fdcea..f13408fa2 100755
--- a/src/conf_mode/interfaces-wireless.py
+++ b/src/conf_mode/interfaces-wireless.py
@@ -600,6 +600,9 @@ def apply(wifi):
         if wifi['dhcpv6_temporary']:
             w.dhcp.v6.options['dhcpv6_temporary'] = True
 
+        if wifi['dhcpv6_pd']:
+            w.dhcp.v6.options['dhcpv6_pd'] = wifi['dhcpv6_pd']
+
         # ignore link state changes
         w.set_link_detect(wifi['disable_link_detect'])
 
-- 
cgit v1.2.3