diff --git a/SOURCES/openvswitch-2.16.0.patch b/SOURCES/openvswitch-2.16.0.patch index 1558cc9..a4e81cc 100644 --- a/SOURCES/openvswitch-2.16.0.patch +++ b/SOURCES/openvswitch-2.16.0.patch @@ -4913,7 +4913,7 @@ index 114aff8ea3..0fc6d2ea60 100644 enum xc_type type; union { diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c -index a426fcfeb6..7cd59ef885 100644 +index a426fcfeb6..3a09500560 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -460,7 +460,7 @@ static void xlate_commit_actions(struct xlate_ctx *ctx); @@ -5008,7 +5008,17 @@ index a426fcfeb6..7cd59ef885 100644 return; } -@@ -3598,7 +3619,7 @@ propagate_tunnel_data_to_flow(struct xlate_ctx *ctx, struct eth_addr dmac, +@@ -3521,6 +3542,9 @@ propagate_tunnel_data_to_flow__(struct flow *dst_flow, + dst_flow->dl_dst = dmac; + dst_flow->dl_src = smac; + ++ /* Clear VLAN entries which do not apply for tunnel flows. */ ++ memset(dst_flow->vlans, 0, sizeof dst_flow->vlans); ++ + dst_flow->packet_type = htonl(PT_ETH); + dst_flow->nw_dst = src_flow->tunnel.ip_dst; + dst_flow->nw_src = src_flow->tunnel.ip_src; +@@ -3598,7 +3622,7 @@ propagate_tunnel_data_to_flow(struct xlate_ctx *ctx, struct eth_addr dmac, static int native_tunnel_output(struct xlate_ctx *ctx, const struct xport *xport, const struct flow *flow, odp_port_t tunnel_odp_port, @@ -5017,7 +5027,7 @@ index a426fcfeb6..7cd59ef885 100644 { struct netdev_tnl_build_header_params tnl_params; struct ovs_action_push_tnl tnl_push_data; -@@ -3728,7 +3749,7 @@ native_tunnel_output(struct xlate_ctx *ctx, const struct xport *xport, +@@ -3728,7 +3752,7 @@ native_tunnel_output(struct xlate_ctx *ctx, const struct xport *xport, entry->tunnel_hdr.hdr_size = tnl_push_data.header_len; entry->tunnel_hdr.operation = ADD; @@ -5026,7 +5036,7 @@ index a426fcfeb6..7cd59ef885 100644 /* Similar to the stats update in revalidation, the x_cache entries * are populated by the previous translation are used to update the -@@ -3822,7 +3843,7 @@ xlate_flow_is_protected(const struct xlate_ctx *ctx, const struct flow *flow, co +@@ -3822,7 +3846,7 @@ xlate_flow_is_protected(const struct xlate_ctx *ctx, const struct flow *flow, co */ static void patch_port_output(struct xlate_ctx *ctx, const struct xport *in_dev, @@ -5035,7 +5045,7 @@ index a426fcfeb6..7cd59ef885 100644 { struct flow *flow = &ctx->xin->flow; struct flow old_flow = ctx->xin->flow; -@@ -3864,8 +3885,9 @@ patch_port_output(struct xlate_ctx *ctx, const struct xport *in_dev, +@@ -3864,8 +3888,9 @@ patch_port_output(struct xlate_ctx *ctx, const struct xport *in_dev, if (!process_special(ctx, out_dev) && may_receive(out_dev, ctx)) { if (xport_stp_forward_state(out_dev) && xport_rstp_forward_state(out_dev)) { @@ -5046,7 +5056,7 @@ index a426fcfeb6..7cd59ef885 100644 if (!ctx->freezing) { xlate_action_set(ctx); } -@@ -3880,7 +3902,7 @@ patch_port_output(struct xlate_ctx *ctx, const struct xport *in_dev, +@@ -3880,7 +3905,7 @@ patch_port_output(struct xlate_ctx *ctx, const struct xport *in_dev, mirror_mask_t old_mirrors2 = ctx->mirrors; xlate_table_action(ctx, flow->in_port.ofp_port, 0, true, true, @@ -5055,7 +5065,7 @@ index a426fcfeb6..7cd59ef885 100644 ctx->mirrors = old_mirrors2; ctx->base_flow = old_base_flow; ctx->odp_actions->size = old_size; -@@ -4097,7 +4119,21 @@ terminate_native_tunnel(struct xlate_ctx *ctx, struct flow *flow, +@@ -4097,7 +4122,21 @@ terminate_native_tunnel(struct xlate_ctx *ctx, struct flow *flow, (flow->dl_type == htons(ETH_TYPE_ARP) || flow->nw_proto == IPPROTO_ICMPV6) && is_neighbor_reply_correct(ctx, flow)) { @@ -5078,7 +5088,7 @@ index a426fcfeb6..7cd59ef885 100644 } } -@@ -4107,7 +4143,7 @@ terminate_native_tunnel(struct xlate_ctx *ctx, struct flow *flow, +@@ -4107,7 +4146,7 @@ terminate_native_tunnel(struct xlate_ctx *ctx, struct flow *flow, static void compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, const struct xlate_bond_recirc *xr, bool check_stp, @@ -5087,7 +5097,7 @@ index a426fcfeb6..7cd59ef885 100644 { const struct xport *xport = get_ofp_port(ctx->xbridge, ofp_port); struct flow_wildcards *wc = ctx->wc; -@@ -4137,6 +4173,10 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, +@@ -4137,6 +4176,10 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, if (xport->pt_mode == NETDEV_PT_LEGACY_L3) { flow->packet_type = PACKET_TYPE_BE(OFPHTN_ETHERTYPE, ntohs(flow->dl_type)); @@ -5098,7 +5108,7 @@ index a426fcfeb6..7cd59ef885 100644 } } -@@ -4144,7 +4184,7 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, +@@ -4144,7 +4187,7 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, if (truncate) { xlate_report_error(ctx, "Cannot truncate output to patch port"); } @@ -5107,7 +5117,7 @@ index a426fcfeb6..7cd59ef885 100644 return; } -@@ -4239,7 +4279,8 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, +@@ -4239,7 +4282,8 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, xr->recirc_id); } else if (is_native_tunnel) { /* Output to native tunnel port. */ @@ -5117,7 +5127,7 @@ index a426fcfeb6..7cd59ef885 100644 flow->tunnel = flow_tnl; /* Restore tunnel metadata */ } else if (terminate_native_tunnel(ctx, flow, wc, -@@ -6177,11 +6218,32 @@ static void +@@ -6177,11 +6221,32 @@ static void compose_conntrack_action(struct xlate_ctx *ctx, struct ofpact_conntrack *ofc, bool is_last_action) { @@ -5153,7 +5163,7 @@ index a426fcfeb6..7cd59ef885 100644 /* Ensure that any prior actions are applied before composing the new * conntrack action. */ xlate_commit_actions(ctx); -@@ -6193,11 +6255,6 @@ compose_conntrack_action(struct xlate_ctx *ctx, struct ofpact_conntrack *ofc, +@@ -6193,11 +6258,6 @@ compose_conntrack_action(struct xlate_ctx *ctx, struct ofpact_conntrack *ofc, do_xlate_actions(ofc->actions, ofpact_ct_get_action_len(ofc), ctx, is_last_action, false); @@ -5165,7 +5175,7 @@ index a426fcfeb6..7cd59ef885 100644 ct_offset = nl_msg_start_nested(ctx->odp_actions, OVS_ACTION_ATTR_CT); if (ofc->flags & NX_CT_F_COMMIT) { -@@ -6333,6 +6390,7 @@ xlate_check_pkt_larger(struct xlate_ctx *ctx, +@@ -6333,6 +6393,7 @@ xlate_check_pkt_larger(struct xlate_ctx *ctx, * then ctx->exit would be true. Reset to false so that we can * do flow translation for 'IF_LESS_EQUAL' case. finish_freezing() * would have taken care of Undoing the changes done for freeze. */ @@ -5173,7 +5183,7 @@ index a426fcfeb6..7cd59ef885 100644 ctx->exit = false; offset_attr = nl_msg_start_nested( -@@ -6357,7 +6415,7 @@ xlate_check_pkt_larger(struct xlate_ctx *ctx, +@@ -6357,7 +6418,7 @@ xlate_check_pkt_larger(struct xlate_ctx *ctx, ctx->was_mpls = old_was_mpls; ctx->conntracked = old_conntracked; ctx->xin->flow = old_flow; @@ -5182,7 +5192,7 @@ index a426fcfeb6..7cd59ef885 100644 } static void -@@ -6738,13 +6796,14 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, +@@ -6738,13 +6799,14 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, return; } @@ -5198,7 +5208,7 @@ index a426fcfeb6..7cd59ef885 100644 if (ctx->error) { break; -@@ -6752,7 +6811,7 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, +@@ -6752,7 +6814,7 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, recirc_for_mpls(a, ctx); @@ -5207,7 +5217,7 @@ index a426fcfeb6..7cd59ef885 100644 /* Check if need to store the remaining actions for later * execution. */ if (ctx->freezing) { -@@ -7149,17 +7208,18 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, +@@ -7149,17 +7211,18 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, break; case OFPACT_CHECK_PKT_LARGER: { @@ -9276,7 +9286,7 @@ index 1714273e35..270956d13f 100644 dnl Delete ip address. AT_CHECK([ip addr del 10.0.0.17/24 dev p1-route], [0], [stdout]) diff --git a/tests/system-traffic.at b/tests/system-traffic.at -index f400cfabc9..638501fcdc 100644 +index f400cfabc9..ea3078e3e4 100644 --- a/tests/system-traffic.at +++ b/tests/system-traffic.at @@ -218,6 +218,7 @@ OVS_TRAFFIC_VSWITCHD_STOP @@ -9287,15 +9297,63 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_VXLAN() OVS_TRAFFIC_VSWITCHD_START() -@@ -259,6 +260,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -258,7 +259,55 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI + OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP ++AT_SETUP([datapath - ping vlan over vxlan tunnel]) ++OVS_CHECK_TUNNEL_TSO() ++OVS_CHECK_VXLAN() ++ ++OVS_TRAFFIC_VSWITCHD_START() ++ADD_BR([br-underlay]) ++ ++AT_CHECK([ovs-ofctl add-flow br0 "actions=normal"]) ++AT_CHECK([ovs-ofctl add-flow br-underlay "actions=normal"]) ++ ++ADD_NAMESPACES(at_ns0) ++ ++dnl Set up underlay link from host into the namespace using veth pair. ++ADD_VETH(p0, at_ns0, br-underlay, "172.31.2.1/24") ++AT_CHECK([ip addr add dev br-underlay "172.31.1.100/24"]) ++AT_CHECK([ip link set dev br-underlay up]) ++ ++dnl Set up tunnel endpoints on OVS outside the namespace and with a native ++dnl linux device inside the namespace. ++ADD_OVS_TUNNEL([vxlan], [br0], [at_vxlan0], [172.31.1.1], [10.1.1.100/24]) ++ADD_NATIVE_TUNNEL([vxlan], [at_vxlan1], [at_ns0], [172.31.1.100], [10.2.1.1/24], ++ [id 0 dstport 4789]) ++ ++AT_CHECK([ovs-vsctl set port br0 tag=100]) ++AT_CHECK([ovs-vsctl set port br-underlay tag=42]) ++ ++ADD_VLAN(at_vxlan1, at_ns0, 100, "10.1.1.1/24") ++ADD_VLAN(p0, at_ns0, 42, "172.31.1.1/24") ++ ++dnl First, check the underlay ++NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl ++3 packets transmitted, 3 received, 0% packet loss, time 0ms ++]) ++dnl Okay, now check the overlay with different packet sizes ++NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl ++3 packets transmitted, 3 received, 0% packet loss, time 0ms ++]) ++NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl ++3 packets transmitted, 3 received, 0% packet loss, time 0ms ++]) ++NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl ++3 packets transmitted, 3 received, 0% packet loss, time 0ms ++]) ++ ++OVS_TRAFFIC_VSWITCHD_STOP ++AT_CLEANUP ++ AT_SETUP([datapath - ping over vxlan6 tunnel]) +OVS_CHECK_TUNNEL_TSO() OVS_CHECK_VXLAN_UDP6ZEROCSUM() OVS_TRAFFIC_VSWITCHD_START() -@@ -302,6 +304,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -302,6 +351,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over gre tunnel]) @@ -9303,7 +9361,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() -@@ -343,6 +346,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -343,6 +393,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6gre L2 tunnel]) @@ -9311,7 +9369,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -383,6 +387,7 @@ AT_CLEANUP +@@ -383,6 +434,7 @@ AT_CLEANUP AT_SETUP([datapath - ping over erspan v1 tunnel]) @@ -9319,7 +9377,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -419,6 +424,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -419,6 +471,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v2 tunnel]) @@ -9327,7 +9385,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -455,6 +461,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -455,6 +508,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v1 tunnel]) @@ -9335,7 +9393,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -494,6 +501,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -494,6 +548,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v2 tunnel]) @@ -9343,7 +9401,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -534,6 +542,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -534,6 +589,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over geneve tunnel]) @@ -9351,7 +9409,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_GENEVE() OVS_TRAFFIC_VSWITCHD_START() -@@ -575,6 +584,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -575,6 +631,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over geneve tunnel, delete flow regression]) @@ -9359,7 +9417,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_GENEVE() OVS_TRAFFIC_VSWITCHD_START() -@@ -629,6 +639,7 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/|ERR|/d +@@ -629,6 +686,7 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/|ERR|/d AT_CLEANUP AT_SETUP([datapath - flow resume with geneve tun_metadata]) @@ -9367,7 +9425,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_GENEVE() OVS_TRAFFIC_VSWITCHD_START() -@@ -680,6 +691,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -680,6 +738,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over geneve6 tunnel]) @@ -9375,7 +9433,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_GENEVE_UDP6ZEROCSUM() OVS_TRAFFIC_VSWITCHD_START() -@@ -723,6 +735,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -723,6 +782,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over gre tunnel by simulated packets]) @@ -9383,7 +9441,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -769,6 +782,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -769,6 +829,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v1 tunnel by simulated packets]) @@ -9391,7 +9449,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -817,6 +831,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -817,6 +878,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v2 tunnel by simulated packets]) @@ -9399,7 +9457,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -870,6 +885,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -870,6 +932,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v1 tunnel by simulated packets]) @@ -9407,7 +9465,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -925,6 +941,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -925,6 +988,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v2 tunnel by simulated packets]) @@ -9415,7 +9473,7 @@ index f400cfabc9..638501fcdc 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -1981,6 +1998,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= +@@ -1981,6 +2045,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -9527,7 +9585,7 @@ index f400cfabc9..638501fcdc 100644 AT_SETUP([conntrack - multiple bridges]) CHECK_CONNTRACK() OVS_TRAFFIC_VSWITCHD_START( -@@ -3305,6 +3427,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING +@@ -3305,6 +3474,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -9574,7 +9632,7 @@ index f400cfabc9..638501fcdc 100644 AT_SETUP([conntrack - resubmit to ct multiple times]) CHECK_CONNTRACK() -@@ -3464,15 +3626,15 @@ action=normal +@@ -3464,15 +3673,15 @@ action=normal AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -9593,7 +9651,7 @@ index f400cfabc9..638501fcdc 100644 "1616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161610a, actions=ct(table=1)"]) AT_CHECK([ovs-appctl dpctl/dump-flows | head -2 | tail -1 | grep -q -e ["]udp[(]src=5001["]]) -@@ -5817,7 +5979,7 @@ on_exit 'ovs-appctl revalidator/purge' +@@ -5817,7 +6026,7 @@ on_exit 'ovs-appctl revalidator/purge' on_exit 'ovs-appctl dpif/dump-flows br0' dnl Should work with the virtual IP address through NAT @@ -10376,7 +10434,7 @@ index 59723e63b8..c7665a1aeb 100644 AT_CHECK([ovs-vsctl del-port int-br t3 \ diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at -index 48c5de9d19..61d30d05bc 100644 +index 48c5de9d19..a441de3ef2 100644 --- a/tests/tunnel-push-pop.at +++ b/tests/tunnel-push-pop.at @@ -499,6 +499,28 @@ AT_CHECK([ovs-ofctl dump-ports int-br | grep 'port [[37]]' | sort], [0], [dnl @@ -10519,6 +10577,61 @@ index 48c5de9d19..61d30d05bc 100644 AT_SETUP([tunnel_push_pop - underlay bridge match]) OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1 other-config:hwaddr=aa:55:aa:55:00:00]) +@@ -645,3 +760,54 @@ NXST_FLOW reply: + + OVS_VSWITCHD_STOP + AT_CLEANUP ++ ++AT_SETUP([tunnel_push_pop - VXLAN access port]) ++ ++dnl Create bridge that has a MAC address. ++OVS_VSWITCHD_START([set bridge br0 datapath_type=dummy dnl ++ -- set Interface br0 other-config:hwaddr=aa:55:aa:55:00:00]) ++AT_CHECK([ovs-vsctl add-port br0 p8 dnl ++ -- set Interface p8 type=dummy ofport_request=8]) ++ ++dnl Create another bridge. ++AT_CHECK([ovs-vsctl add-br ovs-tun0 -- set bridge ovs-tun0 datapath_type=dummy]) ++ ++dnl Add VXLAN port to this bridge. ++AT_CHECK([ovs-vsctl add-port ovs-tun0 tun0 dnl ++ -- set int tun0 type=vxlan options:remote_ip=10.0.0.11 dnl ++ -- add-port ovs-tun0 p7 dnl ++ -- set interface p7 type=dummy ofport_request=7]) ++ ++dnl Set VLAN tags, so that br0 and its port p8 have the same tag, ++dnl but ovs-tun0's port p7 has a different tag. ++AT_CHECK([ovs-vsctl set port p8 tag=42 dnl ++ -- set port br0 tag=42 dnl ++ -- set port p7 tag=200]) ++ ++dnl Set IP address and route for br0. ++AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 10.0.0.2/24], [0], [OK ++]) ++AT_CHECK([ovs-appctl ovs/route/add 10.0.0.11/24 br0], [0], [OK ++]) ++ ++dnl Send an ARP reply to port b8 on br0, so that packets will be forwarded ++dnl to learned port. ++AT_CHECK([ovs-ofctl add-flow br0 action=normal]) ++ ++AT_CHECK([ovs-appctl netdev-dummy/receive p8 'in_port(8),dnl ++ eth(src=aa:55:aa:66:00:00,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),dnl ++ arp(sip=10.0.0.11,tip=10.0.0.2,op=2,sha=aa:55:aa:66:00:00,tha=00:00:00:00:00:00)']) ++ ++AT_CHECK([ovs-appctl ofproto/trace ovs-tun0 in_port=p7], [0], [stdout]) ++AT_CHECK([tail -2 stdout], [0], [dnl ++Megaflow: recirc_id=0,eth,in_port=7,dl_src=00:00:00:00:00:00,dnl ++dl_dst=00:00:00:00:00:00,dl_type=0x0000 ++Datapath actions: push_vlan(vid=200,pcp=0),1,clone(tnl_push(tnl_port(4789),dnl ++header(size=50,type=4,eth(dst=aa:55:aa:66:00:00,src=aa:55:aa:55:00:00,dnl ++dl_type=0x0800),ipv4(src=10.0.0.2,dst=10.0.0.11,proto=17,tos=0,ttl=64,dnl ++frag=0x4000),udp(src=0,dst=4789,csum=0x0),vxlan(flags=0x8000000,vni=0x0)),dnl ++out_port(100)),8) ++]) ++ ++OVS_VSWITCHD_STOP ++AT_CLEANUP diff --git a/tests/tunnel.at b/tests/tunnel.at index b8ae7caa9b..fd482aa872 100644 --- a/tests/tunnel.at diff --git a/SPECS/openvswitch2.16.spec b/SPECS/openvswitch2.16.spec index cefca28..bc763ac 100644 --- a/SPECS/openvswitch2.16.spec +++ b/SPECS/openvswitch2.16.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.16.0 -Release: 71%{?dist} +Release: 72%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -699,6 +699,13 @@ exit 0 %endif %changelog +* Wed Apr 27 2022 Open vSwitch CI - 2.16.0-72 +- Merging upstream branch-2.16 [RH git: 1c2e3ff275] + Commit list: + a51dd4685d ofproto-dpif-xlate: Clear out vlan flow fields while processing native tunnel. (#393566 + 2060552) + + * Tue Apr 26 2022 Open vSwitch CI - 2.16.0-71 - Merging upstream branch-2.16 [RH git: a0490a292c] Commit list: