diff --git a/SOURCES/openvswitch-3.2.0.patch b/SOURCES/openvswitch-3.2.0.patch index 0a5042f..73a775d 100644 --- a/SOURCES/openvswitch-3.2.0.patch +++ b/SOURCES/openvswitch-3.2.0.patch @@ -4778,7 +4778,7 @@ index 9224ee2e6d..2e1fcb3a6f 100644 static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); VLOG_WARN_RL(&rl, "xcache LEARN action execution failed."); diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c -index 47ea0f47e7..94da7c09d5 100644 +index 47ea0f47e7..79d62a831a 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -1615,7 +1615,8 @@ xlate_lookup_ofproto_(const struct dpif_backer *backer, @@ -4951,6 +4951,15 @@ index 47ea0f47e7..94da7c09d5 100644 } else if (learn->limit) { if (!ofm->temp_rule || ofm->temp_rule->state != RULE_INSERTED) { +@@ -7079,7 +7101,7 @@ reset_mirror_ctx(struct xlate_ctx *ctx, const struct flow *flow, + + set_field = ofpact_get_SET_FIELD(a); + mf = set_field->field; +- if (mf_are_prereqs_ok(mf, flow, NULL)) { ++ if (mf_are_prereqs_ok(mf, flow, NULL) && !mf_is_tun_metadata(mf)) { + ctx->mirrors = 0; + } + return; diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index e22ca757ac..1840c0dcf3 100644 --- a/ofproto/ofproto-dpif.c @@ -11748,7 +11757,7 @@ index b1440f5904..97405636f9 100644 +OVS_VSWITCHD_STOP +AT_CLEANUP diff --git a/tests/tunnel.at b/tests/tunnel.at -index ddeb66bc9f..75072904cc 100644 +index ddeb66bc9f..40a1924dd7 100644 --- a/tests/tunnel.at +++ b/tests/tunnel.at @@ -333,6 +333,50 @@ set(tunnel(tun_id=0x5,dst=4.4.4.4,ttl=64,flags(df|key))),1 @@ -11857,6 +11866,39 @@ index ddeb66bc9f..75072904cc 100644 ]) AT_DATA([flows.txt], [dnl +@@ -1279,3 +1333,32 @@ AT_CHECK([tail -1 stdout], [0], + + OVS_VSWITCHD_STOP + AT_CLEANUP ++ ++AT_SETUP([tunnel - Geneve metadata mirror]) ++OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=geneve \ ++ options:remote_ip=1.1.1.1 ofport_request=1 \ ++ -- add-port br0 p2 -- set Interface p2 type=dummy \ ++ ofport_request=2 ofport_request=2]) ++OVS_VSWITCHD_DISABLE_TUNNEL_PUSH_POP ++add_of_ports br0 90 ++AT_CHECK([ovs-vsctl \ ++ set Bridge br0 mirrors=@m --\ ++ --id=@p90 get Port p90 --\ ++ --id=@m create Mirror name=mymirror select_all=true output_port=@p90], [0], [stdout]) ++ ++AT_CHECK([ovs-ofctl add-tlv-map br0 "{class=0xffff,type=0,len=4}->tun_metadata0,{class=0xffff,type=1,len=8}->tun_metadata1"]) ++ ++AT_DATA([flows.txt], [dnl ++in_port=2,actions=set_field:0xa->tun_metadata0,set_field:0x1234567890abcdef->tun_metadata1,1 ++tun_metadata0=0xb/0xf,actions=2 ++]) ++AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) ++ ++flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" ++AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) ++AT_CHECK_UNQUOTED([tail -1 stdout], [0], ++ [Datapath actions: 90,set(tunnel(dst=1.1.1.1,ttl=64,tp_dst=6081,geneve({class=0xffff,type=0,len=4,0xa}{class=0xffff,type=0x1,len=8,0x1234567890abcdef}),flags(df))),6081 ++]) ++ ++OVS_VSWITCHD_STOP ++AT_CLEANUP diff --git a/tests/vlog.at b/tests/vlog.at index 785014956e..2768c07400 100644 --- a/tests/vlog.at diff --git a/SPECS/openvswitch3.2.spec b/SPECS/openvswitch3.2.spec index 0642452..db84a68 100644 --- a/SPECS/openvswitch3.2.spec +++ b/SPECS/openvswitch3.2.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.2.0 -Release: 90%{?dist} +Release: 91%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -761,6 +761,13 @@ exit 0 %endif %changelog +* Wed Jul 17 2024 Open vSwitch CI - 3.2.0-91 +- Merging upstream branch-3.2 [RH git: 331c590dbc] + Commit list: + d5d77951d9 tests/tunnel.at: Add geneve options mirror test. + a4f3079eff ofproto-dpif-upcall: Fix redundant mirror on geneve tunnel options. + + * Wed Jul 03 2024 Open vSwitch CI - 3.2.0-90 - Merging upstream branch-3.2 [RH git: 71031dfbe2] Commit list: