[ovs-dev] [PATCH ovn] Disable IPv6 prefix reporting if IPv6 PD is disabled
Lorenzo Bianconi
lorenzo.bianconi at redhat.com
Wed Apr 22 14:13:03 UTC 2020
Disable IPv6 prefix delegation reporting in Logical_Router_Port table if
IPv6 prefix delegation state machine has been disabled for the related
logical router port
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
---
northd/ovn-northd.c | 28 ++++++++++++++++------------
tests/system-ovn.at | 7 +++++++
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index f02dc5d5e..074beeb50 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -2701,6 +2701,10 @@ ovn_update_ipv6_prefix(struct hmap *ports)
continue;
}
+ if (!smap_get_bool(&op->nbrp->options, "prefix", false)) {
+ continue;
+ }
+
char prefix[IPV6_SCAN_LEN + 6];
unsigned aid;
const char *ipv6_pd_list = smap_get(&op->sb->options,
@@ -9346,22 +9350,22 @@ build_lrouter_flows(struct hmap *datapaths, struct hmap *ports,
}
struct smap options;
+ smap_clone(&options, &op->sb->options);
+
/* enable IPv6 prefix delegation */
bool prefix_delegation = smap_get_bool(&op->nbrp->options,
"prefix_delegation", false);
- if (prefix_delegation) {
- smap_clone(&options, &op->sb->options);
- smap_add(&options, "ipv6_prefix_delegation", "true");
- sbrec_port_binding_set_options(op->sb, &options);
- smap_destroy(&options);
- }
+ smap_add(&options, "ipv6_prefix_delegation",
+ prefix_delegation ? "true" : "false");
+ sbrec_port_binding_set_options(op->sb, &options);
- if (smap_get_bool(&op->nbrp->options, "prefix", false)) {
- smap_clone(&options, &op->sb->options);
- smap_add(&options, "ipv6_prefix", "true");
- sbrec_port_binding_set_options(op->sb, &options);
- smap_destroy(&options);
- }
+ bool ipv6_prefix = smap_get_bool(&op->nbrp->options,
+ "prefix", false);
+ smap_add(&options, "ipv6_prefix",
+ ipv6_prefix ? "true" : "false");
+ sbrec_port_binding_set_options(op->sb, &options);
+
+ smap_destroy(&options);
const char *address_mode = smap_get(
&op->nbrp->ipv6_ra_configs, "address_mode");
diff --git a/tests/system-ovn.at b/tests/system-ovn.at
index bdb9768d2..485ad087d 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -3920,6 +3920,13 @@ OVS_WAIT_UNTIL([
test "${total_pkts}" = "1"
])
+ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
+ovn-nbctl clear logical_router_port rp-sw0 ipv6_prefix
+OVS_WAIT_WHILE([test "$(ovn-nbctl get logical_router_port rp-sw0 ipv6_prefix | cut -c3-16)" = "[2001:1db8:3333]"])
+AT_CHECK([ovn-nbctl get logical_router_port rp-sw0 ipv6_prefix | cut -c3-16], [0], [dnl
+[]
+])
+
kill $(pidof tcpdump)
kill $(pidof ovn-controller)
--
2.25.3
More information about the dev
mailing list