You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
actions: Add chk_evpn_arp action and EVPN side table.
Add the chk_evpn_arp(ip) action that performs an EVPN ARP/ND
lookup in a dedicated side table (OFTABLE_EVPN_ARP_LOOKUP,
table 113). The action takes one IP field argument (32-bit
for IPv4 or 128-bit for IPv6) and sets a 1-bit destination
regbit to indicate whether a match was found.
On a hit, the side table loads the resolved MAC address into
eth.dst and sets the MLF_EVPN_LOOKUP_BIT (bit 25 of
MFF_LOG_FLAGS). The caller reads the MAC from eth.dst
directly in response flows.
For IPv4, the IP argument is stored in MFF_REG0. For IPv6
it is stored in MFF_XXREG0.
This commit adds the infrastructure only: OVNACT definition,
parse/format/encode/free functions, OFTABLE definition, and
ovn-trace stub. No flows use the action yet.
Assisted-by: Claude Opus 4.6, Claude Code
Signed-off-by: Ales Musil <amusil@redhat.com>
encodes as set_field:0/0x4000->reg10,resubmit(,OFTABLE_CHK_LB_AFFINITY),move:NXM_NX_REG10[[14]]->OXM_OF_PKT_REG4[[6]]
2219
2219
2220
+
# chk_evpn_arp
2221
+
reg0[[0]] = chk_evpn_arp(arp.tpa);
2222
+
encodes as push:NXM_NX_REG0[[]],push:NXM_OF_ARP_TPA[[]],pop:NXM_NX_REG0[[]],set_field:0/0x2000000->reg10,resubmit(,OFTABLE_EVPN_ARP_LOOKUP),move:NXM_NX_REG10[[25]]->NXM_NX_XXREG0[[96]],pop:NXM_NX_REG0[[]]
2223
+
has prereqs eth.type == 0x806
2224
+
2225
+
reg2[[2]] = chk_evpn_arp(arp.tpa);
2226
+
encodes as push:NXM_NX_REG0[[]],push:NXM_OF_ARP_TPA[[]],pop:NXM_NX_REG0[[]],set_field:0/0x2000000->reg10,resubmit(,OFTABLE_EVPN_ARP_LOOKUP),move:NXM_NX_REG10[[25]]->NXM_NX_XXREG0[[34]],pop:NXM_NX_REG0[[]]
2227
+
has prereqs eth.type == 0x806
2228
+
2229
+
reg0[[0]] = chk_evpn_arp(ip6.dst);
2230
+
encodes as push:NXM_NX_XXREG0[[]],push:NXM_NX_IPV6_DST[[]],pop:NXM_NX_XXREG0[[]],set_field:0/0x2000000->reg10,resubmit(,OFTABLE_EVPN_ARP_LOOKUP),move:NXM_NX_REG10[[25]]->NXM_NX_XXREG0[[96]],pop:NXM_NX_XXREG0[[]]
2231
+
has prereqs eth.type == 0x86dd
2232
+
2233
+
reg0[[0]] = chk_evpn_arp(nd.target);
2234
+
encodes as push:NXM_NX_XXREG0[[]],push:NXM_NX_ND_TARGET[[]],pop:NXM_NX_XXREG0[[]],set_field:0/0x2000000->reg10,resubmit(,OFTABLE_EVPN_ARP_LOOKUP),move:NXM_NX_REG10[[25]]->NXM_NX_XXREG0[[96]],pop:NXM_NX_XXREG0[[]]
0 commit comments