diff --git a/SOURCES/openvswitch-2.17.0.patch b/SOURCES/openvswitch-2.17.0.patch index f25a6df..8b7b58e 100644 --- a/SOURCES/openvswitch-2.17.0.patch +++ b/SOURCES/openvswitch-2.17.0.patch @@ -83,7 +83,7 @@ index a7ae793bc4..c3f27e253c 100644 memory: 4G diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml -index eac3504e48..12bc2d3bff 100644 +index eac3504e48..03eca64059 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -2,11 +2,14 @@ name: Build and Test @@ -186,22 +186,7 @@ index eac3504e48..12bc2d3bff 100644 env: matrix_key: ${{ matrix.dpdk }}${{ matrix.dpdk_shared }} ci_key: ${{ hashFiles('dpdk-ci-signature') }} -@@ -155,6 +164,14 @@ jobs: - if: matrix.m32 == '' - run: sudo apt install -y libunbound-dev libunwind-dev - -+ - name: Reduce ASLR entropy -+ if: matrix.asan != '' -+ # Asan in llvm 14 provided in ubuntu-22.04 is incompatible with -+ # high-entropy ASLR configured in much newer kernels that GitHub -+ # runners are using leading to random crashes: -+ # https://github.com/actions/runner-images/issues/9491 -+ run: sudo sysctl -w vm.mmap_rnd_bits=28 -+ - - name: prepare - run: ./.ci/linux-prepare.sh - -@@ -163,7 +180,7 @@ jobs: +@@ -163,7 +172,7 @@ jobs: - name: upload deb packages if: matrix.deb_package != '' @@ -210,7 +195,7 @@ index eac3504e48..12bc2d3bff 100644 with: name: deb-packages path: '/home/runner/work/ovs/*.deb' -@@ -171,9 +188,9 @@ jobs: +@@ -171,9 +180,9 @@ jobs: - name: copy logs on failure if: failure() || cancelled() run: | @@ -222,7 +207,7 @@ index eac3504e48..12bc2d3bff 100644 # So, we're just archiving everything here to avoid any issues. mkdir logs cp config.log ./logs/ -@@ -182,7 +199,7 @@ jobs: +@@ -182,7 +191,7 @@ jobs: - name: upload logs on failure if: failure() || cancelled() @@ -231,7 +216,7 @@ index eac3504e48..12bc2d3bff 100644 with: name: logs-linux-${{ join(matrix.*, '-') }} path: logs.tgz -@@ -201,15 +218,15 @@ jobs: +@@ -201,15 +210,15 @@ jobs: steps: - name: checkout @@ -250,7 +235,7 @@ index eac3504e48..12bc2d3bff 100644 - name: install dependencies run: brew install automake libtool - name: prepare -@@ -218,7 +235,7 @@ jobs: +@@ -218,7 +227,7 @@ jobs: run: ./.ci/osx-build.sh - name: upload logs on failure if: failure() @@ -111094,10 +111079,20 @@ index 6730301b67..98ec67281b 100644 ovs_rwlock_unlock(&ms->rwlock); } diff --git a/lib/meta-flow.c b/lib/meta-flow.c -index e03cd8d0c5..474344194f 100644 +index e03cd8d0c5..4bc3fe4c17 100644 --- a/lib/meta-flow.c +++ b/lib/meta-flow.c -@@ -3442,7 +3442,9 @@ mf_get_vl_mff(const struct mf_field *mff, +@@ -2543,7 +2543,8 @@ mf_set(const struct mf_field *mf, + break; + + case MFF_IP_FRAG: +- match_set_nw_frag_masked(match, value->u8, mask->u8); ++ match_set_nw_frag_masked(match, value->u8, ++ mask->u8 & FLOW_NW_FRAG_MASK); + break; + + case MFF_ARP_SPA: +@@ -3442,7 +3443,9 @@ mf_get_vl_mff(const struct mf_field *mff, const struct vl_mff_map *vl_mff_map) { if (mff && mff->variable_len && vl_mff_map) { @@ -111108,7 +111103,7 @@ index e03cd8d0c5..474344194f 100644 } return NULL; -@@ -3674,3 +3676,28 @@ mf_bitmap_not(struct mf_bitmap x) +@@ -3674,3 +3677,28 @@ mf_bitmap_not(struct mf_bitmap x) bitmap_not(x.bm, MFF_N_IDS); return x; } @@ -118079,10 +118074,10 @@ index 4c3bace6ef..09134feca0 100644 AC_DEFINE([HAVE_LD_AVX512_GOOD], [1], [Define to 1 if binutils correctly supports AVX512.]) diff --git a/ofproto/bond.c b/ofproto/bond.c -index cdfdf0b9d8..6b77fb3f07 100644 +index cdfdf0b9d8..042474fb05 100644 --- a/ofproto/bond.c +++ b/ofproto/bond.c -@@ -184,11 +184,15 @@ static struct bond_member *choose_output_member(const struct bond *, +@@ -184,10 +184,15 @@ static struct bond_member *choose_output_member(const struct bond *, struct flow_wildcards *, uint16_t vlan) OVS_REQ_RDLOCK(rwlock); @@ -118094,12 +118089,12 @@ index cdfdf0b9d8..6b77fb3f07 100644 static bool bond_is_falling_back_to_ab(const struct bond *); static void bond_add_lb_output_buckets(const struct bond *); static void bond_del_lb_output_buckets(const struct bond *); - ++static bool bond_is_balanced(const struct bond *bond) OVS_REQ_RDLOCK(rwlock); + + /* Attempts to parse 's' as the name of a bond balancing mode. If successful, * stores the mode in '*balance' and returns true. Otherwise returns false - * without modifying '*balance'. */ -@@ -240,7 +244,7 @@ bond_create(const struct bond_settings *s, struct ofproto_dpif *ofproto) +@@ -240,7 +245,7 @@ bond_create(const struct bond_settings *s, struct ofproto_dpif *ofproto) ovs_refcount_init(&bond->ref_cnt); hmap_init(&bond->pr_rule_ops); @@ -118108,7 +118103,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 bond->active_member_changed = false; bond->primary = NULL; -@@ -293,7 +297,10 @@ bond_unref(struct bond *bond) +@@ -293,7 +298,10 @@ bond_unref(struct bond *bond) } free(bond->hash); bond->hash = NULL; @@ -118120,7 +118115,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 hmap_destroy(&bond->pr_rule_ops); free(bond->primary); -@@ -325,20 +332,11 @@ add_pr_rule(struct bond *bond, const struct match *match, +@@ -325,20 +333,11 @@ add_pr_rule(struct bond *bond, const struct match *match, hmap_insert(&bond->pr_rule_ops, &pr_op->hmap_node, hash); } @@ -118143,7 +118138,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 uint64_t ofpacts_stub[128 / 8]; struct ofpbuf ofpacts; int i; -@@ -372,7 +370,7 @@ update_recirc_rules__(struct bond *bond) +@@ -372,7 +371,7 @@ update_recirc_rules__(struct bond *bond) ofpbuf_use_stub(&ofpacts, ofpacts_stub, sizeof ofpacts_stub); @@ -118152,7 +118147,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 int error; switch (pr_op->op) { case ADD: -@@ -401,6 +399,15 @@ update_recirc_rules__(struct bond *bond) +@@ -401,6 +400,15 @@ update_recirc_rules__(struct bond *bond) VLOG_ERR("failed to remove post recirculation flow %s", err_s); free(err_s); @@ -118168,7 +118163,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 } hmap_remove(&bond->pr_rule_ops, &pr_op->hmap_node); -@@ -415,12 +422,6 @@ update_recirc_rules__(struct bond *bond) +@@ -415,12 +423,6 @@ update_recirc_rules__(struct bond *bond) ofpbuf_uninit(&ofpacts); } @@ -118181,7 +118176,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 /* Updates 'bond''s overall configuration to 's'. * -@@ -510,6 +511,12 @@ bond_reconfigure(struct bond *bond, const struct bond_settings *s) +@@ -510,6 +512,12 @@ bond_reconfigure(struct bond *bond, const struct bond_settings *s) bond_entry_reset(bond); } @@ -118194,7 +118189,25 @@ index cdfdf0b9d8..6b77fb3f07 100644 ovs_rwlock_unlock(&rwlock); return revalidate; } -@@ -723,6 +730,12 @@ bond_run(struct bond *bond, enum lacp_status lacp_status) +@@ -537,6 +545,7 @@ bond_find_member_by_mac(const struct bond *bond, const struct eth_addr mac) + + static void + bond_active_member_changed(struct bond *bond) ++ OVS_REQ_WRLOCK(rwlock) + { + if (bond->active_member) { + struct eth_addr mac; +@@ -546,6 +555,9 @@ bond_active_member_changed(struct bond *bond) + bond->active_member_mac = eth_addr_zero; + } + bond->active_member_changed = true; ++ if (!bond_is_balanced(bond)) { ++ bond->bond_revalidate = true; ++ } + seq_change(connectivity_seq_get()); + } + +@@ -723,6 +735,12 @@ bond_run(struct bond *bond, enum lacp_status lacp_status) bond_choose_active_member(bond); } @@ -118207,7 +118220,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 revalidate = bond->bond_revalidate; bond->bond_revalidate = false; ovs_rwlock_unlock(&rwlock); -@@ -876,7 +889,7 @@ bond_check_admissibility(struct bond *bond, const void *member_, +@@ -876,7 +894,7 @@ bond_check_admissibility(struct bond *bond, const void *member_, if (!member->enabled && member->may_enable) { VLOG_DBG_RL(&rl, "bond %s: member %s: " "main thread has not yet enabled member", @@ -118216,7 +118229,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 } goto out; case LACP_CONFIGURED: -@@ -1038,7 +1051,7 @@ bond_may_recirc(const struct bond *bond) +@@ -1038,7 +1056,7 @@ bond_may_recirc(const struct bond *bond) } static void @@ -118225,7 +118238,7 @@ index cdfdf0b9d8..6b77fb3f07 100644 OVS_REQ_WRLOCK(rwlock) { struct bond_entry *e; -@@ -1086,6 +1099,19 @@ bond_update_post_recirc_rules(struct bond *bond, uint32_t *recirc_id, +@@ -1086,11 +1104,24 @@ bond_update_post_recirc_rules(struct bond *bond, uint32_t *recirc_id, } } @@ -118245,7 +118258,13 @@ index cdfdf0b9d8..6b77fb3f07 100644 /* Rebalancing. */ -@@ -1258,7 +1284,7 @@ insert_bal(struct ovs_list *bals, struct bond_member *member) + static bool +-bond_is_balanced(const struct bond *bond) OVS_REQ_RDLOCK(rwlock) ++bond_is_balanced(const struct bond *bond) + { + return bond->rebalance_interval + && (bond->balance == BM_SLB || bond->balance == BM_TCP) +@@ -1258,7 +1289,7 @@ insert_bal(struct ovs_list *bals, struct bond_member *member) break; } } @@ -118254,6 +118273,14 @@ index cdfdf0b9d8..6b77fb3f07 100644 } /* Removes 'member' from its current list and then inserts it into 'bals' so +@@ -1689,7 +1720,6 @@ bond_unixctl_set_active_member(struct unixctl_conn *conn, + } + + if (bond->active_member != member) { +- bond->bond_revalidate = true; + bond->active_member = member; + VLOG_INFO("bond %s: active member is now %s", + bond->name, member->name); diff --git a/ofproto/bond.h b/ofproto/bond.h index 1683ec8781..e7f7ea7a95 100644 --- a/ofproto/bond.h @@ -126877,7 +126904,7 @@ index 2c7e163bd6..7be6628c34 100644 AT_CLEANUP diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at -index 7c2edeb9d4..54f144468f 100644 +index 7c2edeb9d4..37a2344cc9 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -29,6 +29,58 @@ AT_CHECK([ovs-appctl revalidator/wait]) @@ -127075,7 +127102,57 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -336,9 +388,9 @@ ovs-appctl time/warp 100 +@@ -299,6 +351,49 @@ recirc_id(0),in_port(4),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:0b,dst=ff: + OVS_VSWITCHD_STOP + AT_CLEANUP + ++AT_SETUP([ofproto-dpif - active-backup bonding set primary]) ++ ++OVS_VSWITCHD_START( ++ [add-bond br0 bond0 p1 p2 bond_mode=active-backup \ ++ other_config:bond-primary=p1 -- \ ++ set bridge br0 other-config:hwaddr=aa:66:aa:66:aa:00 -- \ ++ set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1 -- \ ++ set interface p2 type=dummy options:pstream=punix:$OVS_RUNDIR/p2.sock ofport_request=2 -- \ ++ add-port br0 p7 -- set interface p7 ofport_request=7 type=dummy -- \ ++ add-br br1 -- \ ++ set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \ ++ set bridge br1 datapath-type=dummy -- \ ++ add-bond br1 bond1 p3 p4 bond_mode=active-backup \ ++ other_config:bond-primary=p3 -- \ ++ set interface p3 type=dummy options:stream=unix:$OVS_RUNDIR/p1.sock ofport_request=3 -- \ ++ set interface p4 type=dummy options:stream=unix:$OVS_RUNDIR/p2.sock ofport_request=4 -- \ ++ add-port br1 p8 -- set interface p8 ofport_request=8 type=dummy]) ++ ++WAIT_FOR_DUMMY_PORTS([p3], [p4]) ++ ++AT_CHECK([ovs-ofctl add-flow br0 action=normal]) ++AT_CHECK([ovs-ofctl add-flow br1 action=normal]) ++ ++dnl Create datapath flow with bidirectional traffic. ++AT_CHECK([ovs-appctl netdev-dummy/receive p8 'in_port(8),eth(src=50:54:00:00:00:0a,dst=50:54:00:00:00:09),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)']) ++AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(7),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)']) ++AT_CHECK([ovs-appctl netdev-dummy/receive p8 'in_port(8),eth(src=50:54:00:00:00:0a,dst=50:54:00:00:00:09),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)']) ++AT_CHECK([ovs-appctl netdev-dummy/receive p7 'in_port(7),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.0.0.2,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)']) ++ ++dnl Set p2 and p4 as primary. ++AT_CHECK([ovs-vsctl set port bond0 other_config:bond-primary=p2 -- \ ++ set port bond1 other_config:bond-primary=p4]) ++ ++OVS_WAIT_UNTIL([ovs-appctl bond/show | grep -q 'active-backup primary: p4']) ++ ++AT_CHECK([ovs-appctl revalidator/wait]) ++ ++AT_CHECK([ovs-appctl dpctl/dump-flows --names | grep -q "actions:p[[13]]"], [1]) ++AT_CHECK([ovs-appctl dpctl/dump-flows --names | grep -q "actions:p[[24]]"], [0]) ++ ++OVS_VSWITCHD_STOP ++AT_CLEANUP ++ + AT_SETUP([ofproto-dpif - balance-slb bonding]) + # Create br0 with members bond0(p1, p2, p3) and p7, + # and br1 with members p4, p5, p6 and p8. +@@ -336,9 +431,9 @@ ovs-appctl time/warp 100 AT_CHECK([ovs-appctl dpif/dump-flows br1 > br1_flows.txt]) # Make sure there is resonable distribution to all three ports. # We don't want to make this check precise, in case hash function changes. @@ -127088,7 +127165,7 @@ index 7c2edeb9d4..54f144468f 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -495,9 +547,92 @@ ovs-appctl time/warp 1000 100 +@@ -495,9 +590,92 @@ ovs-appctl time/warp 1000 100 ovs-appctl bond/show > bond3.txt AT_CHECK([sed -n '/member p2/,/^$/p' bond3.txt | grep 'hash'], [0], [ignore]) @@ -127181,7 +127258,7 @@ index 7c2edeb9d4..54f144468f 100644 # Makes sure recirculation does not change the way packet is handled. AT_SETUP([ofproto-dpif - balance-tcp bonding, different recirc flow ]) -@@ -558,6 +693,73 @@ NXST_FLOW reply: +@@ -558,6 +736,73 @@ NXST_FLOW reply: OVS_VSWITCHD_STOP() AT_CLEANUP @@ -127255,7 +127332,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_SETUP([ofproto-dpif - resubmit]) OVS_VSWITCHD_START add_of_ports br0 1 10 11 12 13 14 15 16 17 18 19 20 21 -@@ -570,7 +772,7 @@ table=1 in_port=2 priority=1500 icmp actions=output(17),resubmit(,2) +@@ -570,7 +815,7 @@ table=1 in_port=2 priority=1500 icmp actions=output(17),resubmit(,2) table=1 in_port=3 priority=1500 icmp actions=output(14),resubmit(,2) ]) AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) @@ -127264,7 +127341,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 10,11,12,13,14,15,16,17,18,19,20,21 ]) -@@ -584,7 +786,7 @@ echo "table=0 in_port=1 actions=output(10),goto_table(1)" > flows.txt +@@ -584,7 +829,7 @@ echo "table=0 in_port=1 actions=output(10),goto_table(1)" > flows.txt for i in `seq 1 63`; do echo "table=$i actions=goto_table($(($i+1)))"; done >> flows.txt echo "table=64 actions=output(11)" >> flows.txt AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt]) @@ -127273,7 +127350,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 10,11 ]) -@@ -600,9 +802,9 @@ table=1 ip actions=write_actions(output(13)),goto_table(2) +@@ -600,9 +845,9 @@ table=1 ip actions=write_actions(output(13)),goto_table(2) table=2 ip actions=set_field:192.168.3.91->ip_src,output(11) ]) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt]) @@ -127285,7 +127362,7 @@ index 7c2edeb9d4..54f144468f 100644 Datapath actions: 10,set(ipv4(src=192.168.3.91)),11,set(ipv4(src=192.168.3.90)),13 ]) OVS_VSWITCHD_STOP -@@ -617,7 +819,7 @@ table=1 icmp6 actions=write_actions(output(13)),goto_table(2) +@@ -617,7 +862,7 @@ table=1 icmp6 actions=write_actions(output(13)),goto_table(2) table=2 in_port=1,icmp6,icmpv6_type=135 actions=set_field:fe80::4->nd_target,set_field:cc:cc:cc:cc:cc:cc->nd_sll,output(11) ]) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt]) @@ -127294,7 +127371,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -4 stdout], [0], [Megaflow: recirc_id=0,eth,icmp6,in_port=1,nw_frag=no,icmp_type=0x87/0xff,icmp_code=0x0/0xff,nd_target=fe80::2020,nd_sll=66:55:44:33:22:11 Datapath actions: 10,set(nd(target=fe80::4,sll=cc:cc:cc:cc:cc:cc)),11,set(nd(target=fe80::3,sll=aa:aa:aa:aa:aa:aa)),13 -@@ -635,7 +837,7 @@ table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip +@@ -635,7 +880,7 @@ table=0 in_port=1,ip actions=output(10),write_actions(set_field:192.168.3.90->ip table=1 tcp actions=set_field:91->tp_src,output(11),clear_actions ]) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flows br0 flows.txt]) @@ -127303,7 +127380,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -2 stdout], [0], [Megaflow: recirc_id=0,eth,tcp,in_port=1,nw_frag=no,tp_src=8 Datapath actions: 10,set(tcp(src=91)),11 -@@ -649,7 +851,7 @@ add_of_ports br0 1 10 11 +@@ -649,7 +894,7 @@ add_of_ports br0 1 10 11 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=set_field:192.168.3.90->ip_src,group:123,bucket=output:11']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=123,type=all,bucket=output:10']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234']) @@ -127312,7 +127389,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -1 stdout], [0], [Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11 ]) -@@ -661,11 +863,11 @@ OVS_VSWITCHD_START +@@ -661,11 +906,11 @@ OVS_VSWITCHD_START add_of_ports br0 1 10 11 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,set_field:192.168.3.90->ip_src,bucket=output:11']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234']) @@ -127326,7 +127403,7 @@ index 7c2edeb9d4..54f144468f 100644 Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11 ]) OVS_VSWITCHD_STOP -@@ -676,13 +878,35 @@ OVS_VSWITCHD_START +@@ -676,13 +921,35 @@ OVS_VSWITCHD_START add_of_ports br0 1 10 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10]) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=group:1234']) @@ -127363,7 +127440,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_SETUP([ofproto-dpif - group actions have no effect afterwards]) OVS_VSWITCHD_START add_of_ports br0 1 10 -@@ -697,7 +921,7 @@ done +@@ -697,7 +964,7 @@ done AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/dp_hash(.*\/0xf)/dp_hash(0xXXXX\/0xf)/' | sed 's/packets.*actions:/actions:/' | strip_ufid | strip_used | sort], [0], [dnl flow-dump from the main thread: recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), actions:hash(sym_l4(0)),recirc(0x1) @@ -127372,7 +127449,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -708,11 +932,11 @@ OVS_VSWITCHD_START +@@ -708,11 +975,11 @@ OVS_VSWITCHD_START add_of_ports br0 1 10 11 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,set_field:192.168.3.90->ip_src,bucket=output:11']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)']) @@ -127386,7 +127463,7 @@ index 7c2edeb9d4..54f144468f 100644 Datapath actions: set(ipv4(src=192.168.3.90)),10,set(ipv4(src=192.168.0.1)),11 ]) OVS_VSWITCHD_STOP -@@ -723,7 +947,7 @@ OVS_VSWITCHD_START +@@ -723,7 +990,7 @@ OVS_VSWITCHD_START add_of_ports br0 1 10 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 group_id=1234,type=indirect,bucket=output:10]) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)']) @@ -127395,7 +127472,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 10 ]) -@@ -743,11 +967,11 @@ add_of_ports br0 1 +@@ -743,11 +1010,11 @@ add_of_ports br0 1 add_of_ports br1 2 AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br1 'ip actions=write_actions(pop_vlan,output:2)']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=output:10']) @@ -127409,7 +127486,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -1 stdout], [0], [Datapath actions: pop_vlan,2 ]) -@@ -1011,7 +1235,7 @@ OVS_VSWITCHD_START +@@ -1011,7 +1278,7 @@ OVS_VSWITCHD_START add_of_ports br0 1 10 11 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=ff,bucket=watch_port:10,output:10,bucket=watch_port:11,output:11']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)']) @@ -127418,7 +127495,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -1 stdout], [0], [Datapath actions: 10 ]) -@@ -1142,7 +1366,7 @@ OVS_VSWITCHD_START +@@ -1142,7 +1409,7 @@ OVS_VSWITCHD_START add_of_ports br0 1 10 11 AT_CHECK([ovs-ofctl -O OpenFlow12 add-group br0 'group_id=1234,type=all,bucket=output:10,move:NXM_NX_REG1[[]]->NXM_OF_IP_SRC[[]],bucket=output:11']) AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(load:0xffffffff->NXM_NX_REG1[[]],move:NXM_NX_REG1[[]]->NXM_NX_REG2[[]],group:1234)']) @@ -127427,7 +127504,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([tail -2 stdout], [0], [Megaflow: recirc_id=0,eth,ip,in_port=1,nw_src=192.168.0.1,nw_frag=no Datapath actions: set(ipv4(src=255.255.255.255)),10,set(ipv4(src=192.168.0.1)),11 -@@ -1288,18 +1512,18 @@ table=1 in_port=1 action=dec_ttl,output:3 +@@ -1288,18 +1555,18 @@ table=1 in_port=1 action=dec_ttl,output:3 AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),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=111,tos=0,ttl=2,frag=no)' -generate], [0], [stdout]) AT_CHECK([tail -4 stdout], [0], [ @@ -127450,7 +127527,7 @@ index 7c2edeb9d4..54f144468f 100644 Datapath actions: set(ipv6(hlimit=127)),2,set(ipv6(hlimit=126)),3,4 ]) -@@ -1311,7 +1535,7 @@ ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:05,dst=50: +@@ -1311,7 +1578,7 @@ ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:05,dst=50: OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=34 in_port=1 (via invalid_ttl) data_len=34 (unbuffered) @@ -127459,7 +127536,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP AT_CLEANUP -@@ -1409,7 +1633,7 @@ AT_CHECK([ovs-vsctl -- \ +@@ -1409,7 +1676,7 @@ AT_CHECK([ovs-vsctl -- \ --id=@q2 create Queue dscp=2], [0], [ignore]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(9),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=1.1.1.1,dst=2.2.2.2,proto=1,tos=0xff,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout]) AT_CHECK([tail -2 stdout], [0], @@ -127468,7 +127545,7 @@ index 7c2edeb9d4..54f144468f 100644 Datapath actions: dnl 100,dnl set(ipv4(tos=0x4/0xfc)),set(skb_priority(0x1)),1,dnl -@@ -1497,13 +1721,13 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +@@ -1497,13 +1764,13 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=54 in_port=1 (via no_match) data_len=54 (unbuffered) @@ -127485,7 +127562,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -1560,13 +1784,13 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +@@ -1560,13 +1827,13 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via no_match) data_len=54 (unbuffered) @@ -127502,7 +127579,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -1627,13 +1851,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -1627,13 +1894,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=118 in_port=1 (via action) data_len=118 (unbuffered) @@ -127519,7 +127596,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Hit table 0, Miss all other tables, sent to controller -@@ -1647,13 +1871,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -1647,13 +1914,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1 (via no_match) data_len=118 (unbuffered) @@ -127536,7 +127613,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -1690,13 +1914,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -1690,13 +1957,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=118 in_port=1 (via action) data_len=118 (unbuffered) @@ -127553,7 +127630,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Hit table 1, Miss all other tables, sent to controller -@@ -1710,13 +1934,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -1710,13 +1977,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1 (via no_match) data_len=118 (unbuffered) @@ -127570,7 +127647,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -1900,13 +2124,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -1900,13 +2167,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via no_match) data_len=118 (unbuffered) @@ -127587,7 +127664,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Singleton controller action. -@@ -1920,11 +2144,11 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -1920,11 +2187,11 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via action) data_len=54 (unbuffered) @@ -127602,7 +127679,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Modified controller action. -@@ -1938,13 +2162,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -1938,13 +2205,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127619,7 +127696,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Modified VLAN controller action. -@@ -1958,13 +2182,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -1958,13 +2225,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=38 in_port=1 (via action) data_len=38 (unbuffered) @@ -127636,7 +127713,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Checksum TCP. -@@ -1978,31 +2202,31 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -1978,31 +2245,31 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=54 in_port=1 (via action) data_len=54 (unbuffered) @@ -127677,7 +127754,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Checksum UDP. -@@ -2016,31 +2240,31 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -2016,31 +2283,31 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action) data_len=60 (unbuffered) @@ -127718,7 +127795,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Modified ARP controller action. -@@ -2087,31 +2311,31 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18]) +@@ -2087,31 +2354,31 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 18]) OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=98 in_port=1 (via action) data_len=98 (unbuffered) @@ -127759,7 +127836,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl -@@ -2151,13 +2375,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2151,13 +2418,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via action) data_len=118 (unbuffered) @@ -127776,7 +127853,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -2325,13 +2549,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2325,13 +2592,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=34 in_port=1 (via action) data_len=34 (unbuffered) @@ -127793,7 +127870,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl Modified MPLS controller action. -@@ -2539,13 +2763,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2539,13 +2806,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127810,7 +127887,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2565,13 +2789,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2565,13 +2832,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127827,7 +127904,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2591,13 +2815,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2591,13 +2858,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127844,7 +127921,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2617,13 +2841,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2617,13 +2884,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127861,7 +127938,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2643,13 +2867,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2643,13 +2910,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127878,7 +127955,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2669,13 +2893,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2669,13 +2936,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127895,7 +127972,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2695,13 +2919,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2695,13 +2962,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127912,7 +127989,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2721,13 +2945,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2721,13 +2988,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127929,7 +128006,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2771,13 +2995,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2771,13 +3038,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127946,7 +128023,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2797,13 +3021,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2797,13 +3064,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127963,7 +128040,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2823,13 +3047,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2823,13 +3090,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127980,7 +128057,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2931,13 +3155,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2931,13 +3198,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -127997,7 +128074,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2959,13 +3183,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2959,13 +3226,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -128014,7 +128091,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -2986,13 +3210,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -2986,13 +3253,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0xe total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -128031,7 +128108,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -3314,13 +3538,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -3314,13 +3581,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -128048,7 +128125,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -3363,13 +3587,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -3363,13 +3630,13 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([strip_metadata < ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=58 in_port=1 (via action) data_len=58 (unbuffered) @@ -128065,7 +128142,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -3402,13 +3626,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -3402,13 +3669,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via action) data_len=54 (unbuffered) @@ -128082,7 +128159,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -3444,13 +3668,13 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) +@@ -3444,13 +3711,13 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=54 in_port=1 (via no_match) data_len=54 (unbuffered) @@ -128099,7 +128176,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -3516,13 +3740,13 @@ send: OFPT_SET_ASYNC (OF1.3) (xid=0x2): +@@ -3516,13 +3783,13 @@ send: OFPT_SET_ASYNC (OF1.3) (xid=0x2): REQUESTFORWARD: (off) dnl OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=54 in_port=1 (via no_match) data_len=54 (unbuffered) @@ -128116,7 +128193,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -3558,13 +3782,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -3558,13 +3825,13 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=54 in_port=1 (via no_match) data_len=54 (unbuffered) @@ -128133,7 +128210,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -3607,34 +3831,34 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) +@@ -3607,34 +3874,34 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=1 cookie=0x0 total_len=54 in_port=1 (via action) data_len=54 (unbuffered) @@ -128178,7 +128255,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -3679,34 +3903,34 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) +@@ -3679,34 +3946,34 @@ AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.4) (xid=0x0): table_id=1 cookie=0x0 total_len=54 in_port=1 (via action) data_len=54 (unbuffered) @@ -128223,7 +128300,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -@@ -3751,10 +3975,10 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) +@@ -3751,10 +4018,10 @@ OVS_APP_EXIT_AND_WAIT(ovs-ofctl) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.3) (xid=0x0): table_id=43 cookie=0x0 total_len=98 metadata=0x67871d4d000000,in_port=1 (via action) data_len=98 (unbuffered) @@ -128236,7 +128313,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -5007,7 +5231,7 @@ ovs-vsctl \ +@@ -5007,7 +5274,7 @@ ovs-vsctl \ AT_CHECK([ovs-ofctl add-flow br0 action=output:1]) # "in_port" defaults to OFPP_NONE if it's not specified. @@ -128245,7 +128322,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout]) AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 1,2 -@@ -5102,7 +5326,7 @@ AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) +@@ -5102,7 +5369,7 @@ AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) flow="in_port(1),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], @@ -128254,7 +128331,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) 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)" -@@ -5141,7 +5365,7 @@ flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x080 +@@ -5141,7 +5408,7 @@ flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x080 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) actual=`tail -1 stdout | sed 's/Datapath actions: //'` @@ -128263,7 +128340,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([ovs-dpctl normalize-actions "$flow" "$expected"], [0], [stdout]) mv stdout expout AT_CHECK([ovs-dpctl normalize-actions "$flow" "$actual"], [0], [expout]) -@@ -5317,7 +5541,7 @@ ovs-vsctl \ +@@ -5317,7 +5584,7 @@ ovs-vsctl \ AT_CHECK([ovs-ofctl add-flow br0 action=output:1]) # "in_port" defaults to OFPP_NONE if it's not specified. @@ -128272,7 +128349,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout]) AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 1,trunc(100),2 -@@ -5409,7 +5633,7 @@ AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) +@@ -5409,7 +5676,7 @@ AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) flow="in_port(1),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], @@ -128281,7 +128358,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) 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)" -@@ -5464,7 +5688,7 @@ ovs-vsctl \ +@@ -5464,7 +5731,7 @@ ovs-vsctl \ flow="in_port=1" AT_CHECK([ovs-appctl ofproto/trace br0 "$flow"], [0], [stdout]) @@ -128290,7 +128367,7 @@ index 7c2edeb9d4..54f144468f 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -5512,11 +5736,11 @@ AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) +@@ -5512,11 +5779,11 @@ AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) flow="in_port(1),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" -generate], [0], [stdout]) @@ -128304,7 +128381,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -5573,7 +5797,70 @@ check_flows () { +@@ -5573,7 +5840,70 @@ check_flows () { echo "n_packets=$n" test "$n" = 1 } @@ -128376,7 +128453,7 @@ index 7c2edeb9d4..54f144468f 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -5868,6 +6155,57 @@ AT_CHECK([test 1 = `$PYTHON3 "$top_srcdir/utilities/ovs-pcap.in" p2-tx.pcap | wc +@@ -5868,6 +6198,57 @@ AT_CHECK([test 1 = `$PYTHON3 "$top_srcdir/utilities/ovs-pcap.in" p2-tx.pcap | wc OVS_VSWITCHD_STOP AT_CLEANUP @@ -128434,7 +128511,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_SETUP([ofproto-dpif - continuation with patch port]) AT_KEYWORDS([continuations pause resume]) OVS_VSWITCHD_START( -@@ -6202,6 +6540,20 @@ AT_CHECK([tail -2 stderr], [0], [dnl +@@ -6202,6 +6583,20 @@ AT_CHECK([tail -2 stderr], [0], [dnl ovs-appctl: ovs-vswitchd: server returned an error ]) @@ -128455,7 +128532,7 @@ index 7c2edeb9d4..54f144468f 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -7004,6 +7356,29 @@ AT_CHECK([ovs-appctl coverage/read-counter mac_learning_static_none_move], [0], +@@ -7004,6 +7399,29 @@ AT_CHECK([ovs-appctl coverage/read-counter mac_learning_static_none_move], [0], OVS_VSWITCHD_STOP AT_CLEANUP @@ -128485,7 +128562,7 @@ index 7c2edeb9d4..54f144468f 100644 AT_SETUP([ofproto-dpif - basic truncate action]) OVS_VSWITCHD_START add_of_ports br0 1 2 3 4 5 -@@ -7031,7 +7406,7 @@ dnl An 170 byte packet +@@ -7031,7 +7449,7 @@ dnl An 170 byte packet AT_CHECK([ovs-appctl netdev-dummy/receive p1 '000c29c8a0a4005056c0000808004500009cb4a6000040019003c0a8da01c0a8da640800cb5fa762000556f431ad0009388e08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f']) AT_CHECK([ovs-ofctl parse-pcap p1.pcap], [0], [dnl @@ -128494,7 +128571,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-appctl revalidator/purge], [0]) -@@ -7294,12 +7669,14 @@ dummy@ovs-dummy: hit:0 missed:0 +@@ -7294,12 +7712,14 @@ dummy@ovs-dummy: hit:0 missed:0 vm1 5/3: (dummy: ifindex=2011) ]) @@ -128512,7 +128589,7 @@ index 7c2edeb9d4..54f144468f 100644 dnl Prime ARP Cache for 1.1.2.92 AT_CHECK([ovs-appctl netdev-dummy/receive p0 'recirc_id(0),in_port(1),eth(src=f8:bc:12:44:34:b6,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=1.1.2.92,tip=1.1.2.88,op=2,sha=f8:bc:12:44:34:b6,tha=00:00:00:00:00:00)']) -@@ -7310,10 +7687,13 @@ ovs-vsctl \ +@@ -7310,10 +7730,13 @@ ovs-vsctl \ --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" agent=127.0.0.1 \ header=128 sampling=1 polling=0 @@ -128528,7 +128605,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl add rule for int-br to force packet onto tunnel. There is no ifindex -@@ -7600,13 +7980,28 @@ dnl configure bridge IPFIX and ensure that sample action generation works at the +@@ -7600,13 +8023,28 @@ dnl configure bridge IPFIX and ensure that sample action generation works at the dnl datapath level. AT_SETUP([ofproto-dpif - Bridge IPFIX sanity check]) OVS_VSWITCHD_START @@ -128558,7 +128635,7 @@ index 7c2edeb9d4..54f144468f 100644 dnl Send some packets that should be sampled. for i in `seq 1 3`; do AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800)']) -@@ -8666,7 +9061,7 @@ recirc_id(0),in_port(100),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(src=192.1 +@@ -8666,7 +9104,7 @@ recirc_id(0),in_port(100),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(src=192.1 ]) AT_CHECK([grep -e '|ofproto_dpif_xlate|WARN|' ovs-vswitchd.log | sed "s/^.*|WARN|//"], [0], [dnl @@ -128567,7 +128644,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP(["/stack underflow/d"]) -@@ -8717,6 +9112,40 @@ AT_CHECK([tail -1 stdout], [0], +@@ -8717,6 +9155,40 @@ AT_CHECK([tail -1 stdout], [0], OVS_VSWITCHD_STOP AT_CLEANUP @@ -128608,7 +128685,7 @@ index 7c2edeb9d4..54f144468f 100644 dnl ---------------------------------------------------------------------- AT_BANNER([ofproto-dpif -- megaflows]) -@@ -9855,7 +10284,7 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -9855,7 +10327,7 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via no_match) data_len=86 (unbuffered) @@ -128617,7 +128694,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -9906,7 +10335,7 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) +@@ -9906,7 +10378,7 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 in_port=1 (via action) data_len=86 (unbuffered) @@ -128626,7 +128703,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10166,10 +10595,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10166,10 +10638,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We only see the latter two packets, not the first. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x0 total_len=106 reg0=0x1,reg1=0x4d2,reg2=0x1,reg3=0x1,reg4=0x1,in_port=1 (via action) data_len=106 (unbuffered) @@ -128639,7 +128716,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log]) -@@ -10187,10 +10616,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10187,10 +10659,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We should see both packets AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x0 total_len=106 reg0=0x1,reg1=0x4d2,reg2=0x1,reg3=0x1,reg4=0x1,in_port=1 (via action) data_len=106 (unbuffered) @@ -128652,7 +128729,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10239,10 +10668,10 @@ dnl Note that the first packet doesn't have the ct_state bits set. This +@@ -10239,10 +10711,10 @@ dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) @@ -128665,7 +128742,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log]) -@@ -10261,10 +10690,10 @@ dnl Note that the first packet doesn't have the ct_state bits set. This +@@ -10261,10 +10733,10 @@ dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) @@ -128678,7 +128755,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl -@@ -10320,9 +10749,9 @@ dnl Note that the first packet doesn't have the ct_state bits set. This +@@ -10320,9 +10792,9 @@ dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=126 in_port=1 (via action) data_len=126 (unbuffered) @@ -128690,7 +128767,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10433,7 +10862,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10433,7 +10905,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. Only one reply must be there AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) @@ -128699,7 +128776,7 @@ index 7c2edeb9d4..54f144468f 100644 dnl OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload ]) -@@ -10467,7 +10896,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10467,7 +10939,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=86 ct_state=inv|trk,ipv6,in_port=2 (via action) data_len=86 (unbuffered) @@ -128708,7 +128785,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10523,16 +10952,16 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10523,16 +10995,16 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We only see the latter two packets (for each zone), not the first. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) @@ -128729,7 +128806,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10579,10 +11008,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10579,10 +11051,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We only see the latter two packets, not the first. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) @@ -128742,7 +128819,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10629,10 +11058,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10629,10 +11101,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We only see the first and the last packet AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=47 ct_state=new|trk,ct_nw_src=172.16.0.1,ct_nw_dst=172.16.0.2,ct_nw_proto=17,ct_tp_src=41614,ct_tp_dst=5555,ip,in_port=1 (via action) data_len=47 (unbuffered) @@ -128755,7 +128832,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10681,19 +11110,19 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10681,19 +11153,19 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) @@ -128780,7 +128857,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -10738,10 +11167,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -10738,10 +11210,10 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_label=0x1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) @@ -128793,7 +128870,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -11152,16 +11581,16 @@ dnl Note that the first packet doesn't have the ct_state bits set. This +@@ -11152,16 +11624,16 @@ dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) @@ -128814,7 +128891,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) dnl The next test verifies that ct_clear at the datapath only gets executed -@@ -11235,13 +11664,13 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) +@@ -11235,13 +11707,13 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. AT_CHECK([cat ofctl_monitor.log], [0], [dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_nw_src=10.1.2.100,ct_nw_dst=10.1.2.200,ct_nw_proto=17,ct_tp_src=6,ct_tp_dst=6,ip,in_port=2 (via action) data_len=106 (unbuffered) @@ -128831,7 +128908,7 @@ index 7c2edeb9d4..54f144468f 100644 ]) OVS_VSWITCHD_STOP -@@ -11504,7 +11933,7 @@ ovs-ofctl dump-flows br0 +@@ -11504,7 +11976,7 @@ ovs-ofctl dump-flows br0 AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800),ipv4(src=10.10.10.2,dst=10.10.10.1,proto=1,tos=1,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout]) AT_CHECK([tail -3 stdout], [0], [dnl @@ -128840,7 +128917,7 @@ index 7c2edeb9d4..54f144468f 100644 Datapath actions: drop Translation failed (Recursion too deep), packet is dropped. ]) -@@ -11605,3 +12034,48 @@ AT_CHECK([test 1 = `ovs-ofctl parse-pcap p2-tx.pcap | wc -l`]) +@@ -11605,3 +12077,48 @@ AT_CHECK([test 1 = `ovs-ofctl parse-pcap p2-tx.pcap | wc -l`]) OVS_VSWITCHD_STOP AT_CLEANUP @@ -129278,10 +129355,62 @@ index 66545da572..c03258088a 100644 dnl dnl Add the shell COMMAND to a collection executed when the current test diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at -index 267711bfa4..c9c67f2b1e 100644 +index 267711bfa4..ddc5ec690f 100644 --- a/tests/ovs-ofctl.at +++ b/tests/ovs-ofctl.at -@@ -3243,9 +3243,9 @@ AT_CHECK([ovs-testcontroller -vsyslog:off --detach --no-chdir --pidfile punix:te +@@ -3086,6 +3086,51 @@ AT_CHECK([ovs-ofctl -O OpenFlow14 dump-flows br0 | ofctl_strip | sed '/OFPST_FLO + OVS_VSWITCHD_STOP + AT_CLEANUP + ++AT_SETUP([ovs-ofctl replace-flows with fragments]) ++OVS_VSWITCHD_START ++ ++AT_DATA([frag_flows.txt], [dnl ++ ip,nw_frag=first actions=drop ++ ip,nw_frag=later actions=drop ++ ip,nw_frag=no actions=NORMAL ++ ip,nw_frag=not_later actions=NORMAL ++ ip,nw_frag=yes actions=LOCAL ++]) ++AT_DATA([replace_flows.txt], [dnl ++ ip,nw_frag=first actions=NORMAL ++ ip,nw_frag=later actions=LOCAL ++ ip,nw_frag=no actions=drop ++ ip,nw_frag=not_later actions=drop ++ ip,nw_frag=yes actions=drop ++]) ++ ++AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 frag_flows.txt]) ++on_exit 'ovs-ofctl -O OpenFlow13 dump-flows br0' ++ ++dnl Check that flow replacement works. ++AT_CHECK([ovs-ofctl -vvconn:console:dbg -O OpenFlow13 \ ++ replace-flows br0 replace_flows.txt 2>&1 | grep FLOW_MOD \ ++ | sed 's/.*\(OFPT_FLOW_MOD.*\)/\1/' | strip_xids | sort], [0], [dnl ++OFPT_FLOW_MOD (OF1.3): ADD ip,nw_frag=first actions=NORMAL ++OFPT_FLOW_MOD (OF1.3): ADD ip,nw_frag=later actions=LOCAL ++OFPT_FLOW_MOD (OF1.3): ADD ip,nw_frag=no actions=drop ++OFPT_FLOW_MOD (OF1.3): ADD ip,nw_frag=not_later actions=drop ++OFPT_FLOW_MOD (OF1.3): ADD ip,nw_frag=yes actions=drop ++]) ++ ++dnl Check that replacement to the same set doesn't cause flow modifications. ++AT_CHECK([ovs-ofctl -vvconn:console:dbg -O OpenFlow13 \ ++ replace-flows br0 replace_flows.txt 2>&1 | grep FLOW_MOD \ ++ | sed 's/.*\(OFPT_FLOW_MOD.*\)/\1/' | strip_xids | sort], [0], []) ++ ++dnl Compare the flow dump against the expected set. ++cat replace_flows.txt > expout ++AT_CHECK([ovs-ofctl -O OpenFlow13 dump-flows br0 \ ++ | ofctl_strip | sed '/OFPST_FLOW/d' | sort], [0], [expout]) ++ ++OVS_VSWITCHD_STOP ++AT_CLEANUP ++ + AT_SETUP([ovs-ofctl replace-flows with --bundle]) + OVS_VSWITCHD_START + +@@ -3243,9 +3288,9 @@ AT_CHECK([ovs-testcontroller -vsyslog:off --detach --no-chdir --pidfile punix:te OVS_WAIT_UNTIL([test -e testcontroller]) dnl check for some of the initial handshake messages diff --git a/SPECS/openvswitch2.17.spec b/SPECS/openvswitch2.17.spec index ed33f43..b28017e 100644 --- a/SPECS/openvswitch2.17.spec +++ b/SPECS/openvswitch2.17.spec @@ -63,7 +63,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.17.0 -Release: 191%{?dist} +Release: 192%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -749,6 +749,14 @@ exit 0 %endif %changelog +* Wed Oct 30 2024 Open vSwitch CI - 2.17.0-192 +- Merging upstream branch-2.17 [RH git: 661f1ae580] + Commit list: + ffd3e3b8ff meta-flow: Fix nw_frag mask while parsing from string. + c5bd6ef65c github: Remove ASLR entropy workaround. + da548a502d bond: Always revalidate unbalanced bonds when active member changes. (FDP-845) + + * Thu Oct 24 2024 Open vSwitch CI - 2.17.0-191 - Merging dpdk subtree [RH git: e08be57038] Commit list: