@@ -866,8 +866,9 @@ icmp4 {
<code>ip4.dst</code>, the packet's final destination, unchanged) and
advances to the next table for ARP resolution. It also sets
<code>reg1</code> to the IP address owned by the selected router port
- (which is used later in table 6 as the IP source address for an ARP
- request, if needed).
+ (Table 6 will generate ARP request, if needed, with <code>reg0</code> as
+ the target protocol address and <code>reg1</code> as the target source
+ address)
</p>
<p>
@@ -1011,6 +1012,7 @@ icmp4 {
arp {
eth.dst = ff:ff:ff:ff:ff:ff;
arp.spa = reg1;
+ arp.tpa = reg0;
arp.op = 1; /* ARP request. */
output;
};
@@ -1018,7 +1020,8 @@ arp {
<p>
(Ingress table 4 initialized <code>reg1</code> with the IP address
- owned by <code>outport</code>.)
+ owned by <code>outport</code> and <code>reg0</code> with the next-hop
+ IP address)
</p>
<p>
@@ -2693,6 +2693,7 @@ build_lrouter_flows(struct hmap *datapaths, struct hmap *ports,
"arp { "
"eth.dst = ff:ff:ff:ff:ff:ff; "
"arp.spa = reg1; "
+ "arp.tpa = reg0; "
"arp.op = 1; " /* ARP request */
"output; "
"};");
TPA in arp requests generated for unknown MAC-to-IP bindings is currently set to DST_IP of the original packet. These arps will not be resolved when the DST_IP is rechable via the default gateway. This patch fixes the issue by setting the TPA to reg0. In routing stage reg0 is set to IP of the default gateway when the packet has to go through the default gateway, otherwise reg0 is set to the DST_IP of the original packet. Signed-off-by: Chandra Sekhar Vejendla <csvejend@us.ibm.com> --- ovn/northd/ovn-northd.8.xml | 9 ++++++--- ovn/northd/ovn-northd.c | 1 + 2 files changed, 7 insertions(+), 3 deletions(-)