Skip to content

Commit

Permalink
pinctrl: Honor always_learn_from_arp_request for self created MAC_Bin…
Browse files Browse the repository at this point in the history
…dings.

Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2020-November/377876.html
Reported-by: Renat Nurgaliyev <impleman@gmail.com>
Suggested-by: Han Zhou <hzhou@ovn.org>
Fixes: a2b88dc ("pinctrl: Directly update MAC_Bindings created by self originated GARPs.")
Signed-off-by: Dumitru Ceara <dceara@redhat.com>
Signed-off-by: Numan Siddique <numans@ovn.org>
  • Loading branch information
dceara authored and numansiddique committed Dec 1, 2020
1 parent 5d63e03 commit fdf295d
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
7 changes: 7 additions & 0 deletions controller/pinctrl.c
Original file line number Diff line number Diff line change
Expand Up @@ -3907,6 +3907,13 @@ send_garp_locally(struct ovsdb_idl_txn *ovnsb_idl_txn,
continue;
}

/* Skip datapaths that don't automatically learn ARPs from requests. */
if (!smap_get_bool(&remote->datapath->external_ids,
"always_learn_from_arp_request",
true)) {
continue;
}

struct ds ip_s = DS_EMPTY_INITIALIZER;

ip_format_masked(ip, OVS_BE32_MAX, &ip_s);
Expand Down
7 changes: 7 additions & 0 deletions northd/ovn-northd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1189,6 +1189,13 @@ ovn_datapath_update_external_ids(struct ovn_datapath *od)
if (nat_default_ct >= 0) {
smap_add_format(&ids, "snat-ct-zone", "%d", nat_default_ct);
}

bool learn_from_arp_request =
smap_get_bool(&od->nbr->options, "always_learn_from_arp_request",
true);
if (!learn_from_arp_request) {
smap_add(&ids, "always_learn_from_arp_request", "false");
}
}

sbrec_datapath_binding_set_external_ids(od->sb, &ids);
Expand Down
19 changes: 19 additions & 0 deletions tests/ovn.at
Original file line number Diff line number Diff line change
Expand Up @@ -15962,6 +15962,25 @@ fffffffffffff0000000010108060001080006040001f00000000101ac1804c8000000000000ac18
fffffffffffff0000000010108060001080006040001f00000000101ac1804dd000000000000ac1804dd
])

# Now make sure that always_learn_from_arp_request=false is also honored
# for locally injected mac bindings.
check ovn-nbctl set logical_router lr0 options:always_learn_from_arp_request=false
check ovn-nbctl set logical_router lr1 options:always_learn_from_arp_request=false
check ovn-nbctl --wait=hv sync

# Recreate two floating IPs, one for each VIF.
check ovn-nbctl lr-nat-del lr0 dnat_and_snat 172.24.4.100
check ovn-nbctl lr-nat-del lr1 dnat_and_snat 172.24.4.200

check ovn-sbctl --all destroy mac_binding

check ovn-nbctl lr-nat-add lr0 dnat_and_snat 172.24.4.100 10.0.0.10
check ovn-nbctl lr-nat-add lr1 dnat_and_snat 172.24.4.200 20.0.0.10
check ovn-nbctl --wait=hv sync

check_row_count MAC_Binding 0 logical_port=lr0-pub ip=172.24.4.200
check_row_count MAC_Binding 0 logical_port=lr1-pub ip=172.24.4.100

OVN_CLEANUP([hv1])
AT_CLEANUP

Expand Down

0 comments on commit fdf295d

Please sign in to comment.