Hi Ales The patch looks good to me, Thanks! Acked-by: Xavier Simonart <[email protected]>
Thanks Xavier On Thu, Jan 18, 2024 at 3:54 PM Ales Musil <[email protected]> wrote: > We are intentionally skipping ND NA with LLA as source. > However, this doesn't work when the ND NA has LLA source, > but the target address is global one. In that case we > would skip update of already existing entry when > always_learn_from_arp_request is set to false. > > Use ND target address in the check instead of source. > > Fixes: 5e0cb03605ea ("northd: Add logical flow to skip GARP with LLA") > Reported-at: https://issues.redhat.com/browse/FDP-283 > Signed-off-by: Ales Musil <[email protected]> > --- > northd/northd.c | 4 ++-- > tests/ovn.at | 25 ++++++++++++++++++++++--- > 2 files changed, 24 insertions(+), 5 deletions(-) > > diff --git a/northd/northd.c b/northd/northd.c > index 952f8200d..de15ca101 100644 > --- a/northd/northd.c > +++ b/northd/northd.c > @@ -13171,9 +13171,9 @@ build_neigh_learning_flows_for_lrouter( > * address, the all-nodes multicast address. */ > ds_clear(actions); > ds_put_format(actions, REGBIT_LOOKUP_NEIGHBOR_RESULT > - " = lookup_nd(inport, ip6.src, nd.tll); " > + " = lookup_nd(inport, nd.target, nd.tll); " > REGBIT_LOOKUP_NEIGHBOR_IP_RESULT > - " = lookup_nd_ip(inport, ip6.src); next;"); > + " = lookup_nd_ip(inport, nd.target); > next;"); > ovn_lflow_add(lflows, od, S_ROUTER_IN_LOOKUP_NEIGHBOR, 110, > "nd_na && ip6.src == fe80::/10 && ip6.dst == > ff00::/8", > ds_cstr(actions)); > diff --git a/tests/ovn.at b/tests/ovn.at > index 2dd46fd79..26c516ef9 100644 > --- a/tests/ovn.at > +++ b/tests/ovn.at > @@ -5385,10 +5385,11 @@ test_arp() { > } > > test_na() { > - local inport=$1 sha=$2 spa=$3 > + local inport=$1 sha=$2 spa=$3 src=${4-$3} > local request=$(fmt_pkt "Ether(dst='ff:ff:ff:ff:ff:ff', > src='${sha}')/ \ > - IPv6(dst='ff01::1', src='${spa}')/ \ > - ICMPv6ND_NA(tgt='${spa}')") > + IPv6(dst='ff01::1', src='${src}')/ \ > + ICMPv6ND_NA(tgt='${spa}')/ \ > + ICMPv6NDOptDstLLAddr(lladdr='${sha}')") > > hv=hv`vif_to_hv $inport` > as $hv ovs-appctl netdev-dummy/receive vif$inport $request > @@ -5464,6 +5465,24 @@ for i in 1 2; do > done > done > > +# Make sure that we can update existing entry with > +# "always_learn_from_arp_request=false" even when the source of NA src is > LLA. > +ovn-sbctl --all destroy mac_binding > +ovn-nbctl --wait=hv set logical_router lr0 > options:always_learn_from_arp_request=false > + > +sha="f0:00:00:00:00:11" > +spa6="fd00::abcd:1" > + > +test_na 11 $sha $spa6 > +wait_row_count MAC_Binding 1 ip=\"$spa6\" mac=\"$sha\" > + > +sha="f0:00:00:00:00:12" > +lla6="fe80::abcd:1" > + > +test_na 11 $sha $spa6 $lla6 > +wait_row_count MAC_Binding 1 ip=\"$spa6\" mac=\"$sha\" > +check_row_count MAC_Binding 0 ip=\"$lla6\" > + > # Gracefully terminate daemons > OVN_CLEANUP([hv1], [hv2]) > > -- > 2.43.0 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
