|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
From 7a4814d4a50a78a9434df7f55ca0491f4736c658 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
From: Numan Siddique <numans@ovn.org>
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
Date: Wed, 22 Jan 2020 19:02:18 +0530
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
Subject: [PATCH 4/4] ovn-controller: Remove ports from struct local_datapaths.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
struct local_datapaths stores the array of port bindings for each datapath.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
These ports are used only in the pinctrl module to check if a mac binding
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
has been learnt for the buffered packets.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
MAC bindings are always learnt in the router pipeline and so
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
logical_port column of MAC_Binding table will always refer to a
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
logical router port. run_buffered_binding() of pinctrl module can use
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
the peer ports stored in the struct local_datapaths instead.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
This would save many calls to mac_binding_lookup().
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
This patch doesn't store the array of port bindings for each local
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
datapath as it is not required at all.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
Earlier, the peer ports were stored only for patch port bindings. But we can have
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
peer ports even for l3gateway port bindings. This patch now considers l3gateway
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ports also for storing the peer ports in struct local_datapaths.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
Acked-by: Han Zhou <hzhou@ovn.org>
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
Signed-off-by: Numan Siddique <numans@ovn.org>
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
(cherry-picked from upstream master commit 6c7d9f1ff6a50f695bfd13be3912f4e82c5045f5)
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
Change-Id: I30e984df51c1d8f81b74b863aaf37778fffc6b96
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
---
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ovn/controller/binding.c | 26 +++++++++++++-------------
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ovn/controller/ovn-controller.c | 2 --
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ovn/controller/ovn-controller.h | 4 ----
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ovn/controller/pinctrl.c | 11 +++++++++--
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
4 files changed, 22 insertions(+), 21 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
diff --git a/ovn/controller/binding.c b/ovn/controller/binding.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
index 1380a3e6e..d94e43893 100644
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
--- a/ovn/controller/binding.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+++ b/ovn/controller/binding.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -146,7 +146,7 @@ add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
const struct sbrec_port_binding *pb;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
SBREC_PORT_BINDING_FOR_EACH_EQUAL (pb, target,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
sbrec_port_binding_by_datapath) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- if (!strcmp(pb->type, "patch")) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ if (!strcmp(pb->type, "patch") || !strcmp(pb->type, "l3gateway")) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
const char *peer_name = smap_get(&pb->options, "peer");
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
if (peer_name) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
const struct sbrec_port_binding *peer;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -155,11 +155,18 @@ add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
peer_name);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
if (peer && peer->datapath) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- add_local_datapath__(sbrec_datapath_binding_by_key,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- sbrec_port_binding_by_datapath,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- sbrec_port_binding_by_name,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- peer->datapath, false,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- depth + 1, local_datapaths);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ if (!strcmp(pb->type, "patch")) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ /* Add the datapath to local datapath only for patch
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * ports. For l3gateway ports, since gateway router
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * resides on one chassis, we don't need to add.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * Otherwise, all other chassis might create patch
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * ports between br-int and the provider bridge. */
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ add_local_datapath__(sbrec_datapath_binding_by_key,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ sbrec_port_binding_by_datapath,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ sbrec_port_binding_by_name,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ peer->datapath, false,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ depth + 1, local_datapaths);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ld->n_peer_ports++;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
if (ld->n_peer_ports > ld->n_allocated_peer_ports) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
ld->peer_ports =
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -172,13 +179,6 @@ add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
-
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- ld->n_ports++;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- if (ld->n_ports > ld->n_allocated_ports) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- ld->ports = x2nrealloc(ld->ports, &ld->n_allocated_ports,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- sizeof *ld->ports);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- }
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- ld->ports[ld->n_ports - 1] = pb;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
sbrec_port_binding_index_destroy_row(target);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
index 8d7ea89c4..b80d6c0dc 100644
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
--- a/ovn/controller/ovn-controller.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+++ b/ovn/controller/ovn-controller.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -929,7 +929,6 @@ en_runtime_data_cleanup(void *data)
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
HMAP_FOR_EACH_SAFE (cur_node, next_node, hmap_node,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
&rt_data->local_datapaths) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
free(cur_node->peer_ports);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- free(cur_node->ports);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
hmap_remove(&rt_data->local_datapaths, &cur_node->hmap_node);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
free(cur_node);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -953,7 +952,6 @@ en_runtime_data_run(struct engine_node *node, void *data)
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
struct local_datapath *cur_node, *next_node;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
HMAP_FOR_EACH_SAFE (cur_node, next_node, hmap_node, local_datapaths) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
free(cur_node->peer_ports);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- free(cur_node->ports);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
hmap_remove(local_datapaths, &cur_node->hmap_node);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
free(cur_node);
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
}
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
diff --git a/ovn/controller/ovn-controller.h b/ovn/controller/ovn-controller.h
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
index 09ef4b632..8bff57c56 100644
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
--- a/ovn/controller/ovn-controller.h
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+++ b/ovn/controller/ovn-controller.h
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -60,10 +60,6 @@ struct local_datapath {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
* hypervisor. */
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
bool has_local_l3gateway;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- const struct sbrec_port_binding **ports;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- size_t n_ports;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- size_t n_allocated_ports;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
-
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
struct {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
const struct sbrec_port_binding *local;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
const struct sbrec_port_binding *remote;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
index 5636fc1e0..800bde7e7 100644
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
--- a/ovn/controller/pinctrl.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+++ b/ovn/controller/pinctrl.c
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
@@ -2973,10 +2973,17 @@ run_buffered_binding(struct ovsdb_idl_index *sbrec_mac_binding_by_lport_ip,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
bool notify = false;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
HMAP_FOR_EACH (ld, hmap_node, local_datapaths) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ /* MAC_Binding.logical_port will always belong to a
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * a router datapath. Hence we can skip logical switch
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * datapaths.
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ * */
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ if (datapath_is_switch(ld->datapath)) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ continue;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- for (size_t i = 0; i < ld->n_ports; i++) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ for (size_t i = 0; i < ld->n_peer_ports; i++) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
- const struct sbrec_port_binding *pb = ld->ports[i];
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
+ const struct sbrec_port_binding *pb = ld->peer_ports[i].local;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
struct buffered_packets *cur_qp, *next_qp;
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
HMAP_FOR_EACH_SAFE (cur_qp, next_qp, hmap_node,
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
&buffered_packets_map) {
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
--
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
2.26.2
|
|
![](https://seccdn.libravatar.org/avatar/679c4857c0e45278b16e700873c39a57c201b7d6565eb3306f15ffa8bcb7b889?s=16&d=retro) |
bbaaef |
|