Ignore external ports when building Ucast_Macs_Remote table as such ports are not hosted on bound chassis, they usually bound to gateway nodes to provide DHCP/Metadata services. Actual location will be learned from Ucast_Macs_Local database.
Signed-Off-By: Vasyl Saienko <vsaie...@mirantis.com> --- controller-vtep/vtep.c | 8 ++++++++ tests/ovn-controller-vtep.at | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/controller-vtep/vtep.c b/controller-vtep/vtep.c index bc260b83b..5fe9fb174 100644 --- a/controller-vtep/vtep.c +++ b/controller-vtep/vtep.c @@ -352,6 +352,14 @@ vtep_macs_run(struct ovsdb_idl_txn *vtep_idl_txn, struct shash *ucast_macs_rmts, continue; } tnl_key = peer_pb->datapath->tunnel_key; + } else if (!strcmp(port_binding_rec->type, "external")){ + /* External ports not bound on specific chassis, they + * may sit on some of VTEP endpoints, but port itself + * is bound to one of gateway nodes to provide DHCP/Metadata. + * Skip port_binding information for such ports, as its does + * not specify real node location. + */ + continue; } else { tnl_key = port_binding_rec->datapath->tunnel_key; } diff --git a/tests/ovn-controller-vtep.at b/tests/ovn-controller-vtep.at index 25c47d6d8..d3a8d4568 100644 --- a/tests/ovn-controller-vtep.at +++ b/tests/ovn-controller-vtep.at @@ -371,12 +371,25 @@ AT_CHECK([ovn-nbctl --wait=sb sync]) AT_CHECK([ovn-sbctl chassis-add ch1 vxlan 1.2.3.6]) AT_CHECK([ovn-sbctl lsp-bind vif1 ch1]) +# adds external port to chassis +AT_CHECK([ovn-nbctl ha-chassis-group-add ext-group1]) +AT_CHECK([ovn-nbctl ha-chassis-group-add-chassis ext-group1 ch1 7268]) +AT_CHECK([ovn-sbctl set chassis ch0 other_config:ovn-cms-options=enable-chassis-as-gw]) +AT_CHECK([ovn-nbctl lsp-add br-test ext1]) +AT_CHECK([ovn-nbctl lsp-set-type ext1 external]) +AT_CHECK([ovn-nbctl lsp-set-addresses ext1 aa:bb:cc:dd:01:02]) +AT_CHECK([ovn-nbctl --wait=sb sync]) +AT_CHECK([ovn-sbctl lsp-bind ext1 ch1]) + # checks Ucast_Macs_Remote creation. OVS_WAIT_UNTIL([test -n "`vtep-ctl list Ucast_Macs_Remote | grep _uuid`"]) AT_CHECK([vtep-ctl --columns=MAC list Ucast_Macs_Remote | cut -d ':' -f2- | tr -d ' '], [0], [dnl "f0:ab:cd:ef:01:02" ]) +# check that `external` ports i not in Ucast_Macs_Remote +AT_CHECK([test -z "`vtep-ctl list Ucast_Macs_Remote |grep aa:bb:cc:dd:01:02`"]) + # checks physical locator creation. OVS_WAIT_UNTIL([test -n "`vtep-ctl list Physical_Locator | grep _uuid`"]) AT_CHECK([vtep-ctl --columns=dst_ip list Physical_Locator | cut -d ':' -f2 | tr -d ' ' | grep -v 1.2.3.4 | sed '/^$/d'], [0], [dnl -- 2.43.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev