Mike Pattrick via dev <[email protected]> writes:
> Currently ipf will inject completed fragments into the first available
> batch. In almost all cases, this is the batch which contained the last
> fragment of the packet. However, in cases where the batch is full the
> packets are added to whatever random subsequent batch arrives to
> conntrack. This could result in packets being processed incorrectly, for
> example some completed frags may be inserted into a batch from the
> interface that they should have been destined for.
>
> This patch verifies the zone matches, and that the batch contains a
> packet of the same in_port as the completed fragments.
>
> Reported-at: https://issues.redhat.com/browse/FDP-1052
> Fixes: 4ea96698f667 ("Userspace datapath: Add fragmentation handling.")
> Signed-off-by: Mike Pattrick <[email protected]>
> ---
Thanks Mike - I've applied this and backported down to 3.2.
> lib/conntrack.c | 18 ++++-
> lib/ipf.c | 21 ++++-
> lib/ipf.h | 3 +-
> tests/ofproto-dpif.at | 178 ++++++++++++++++++++++++++++++++++++++++--
> 4 files changed, 206 insertions(+), 14 deletions(-)
>
> diff --git a/lib/conntrack.c b/lib/conntrack.c
> index f4b150bee..e769348f6 100644
> --- a/lib/conntrack.c
> +++ b/lib/conntrack.c
> @@ -22,7 +22,6 @@
> #include <netinet/icmp6.h>
> #include <string.h>
>
> -#include "bitmap.h"
> #include "conntrack.h"
> #include "conntrack-private.h"
> #include "conntrack-tp.h"
> @@ -34,7 +33,9 @@
> #include "flow.h"
> #include "netdev.h"
> #include "odp-netlink.h"
> +#include "odp-util.h"
> #include "openvswitch/hmap.h"
> +#include "openvswitch/types.h"
> #include "openvswitch/vlog.h"
> #include "ovs-rcu.h"
> #include "ovs-thread.h"
> @@ -1481,11 +1482,20 @@ conntrack_execute(struct conntrack *ct, struct
> dp_packet_batch *pkt_batch,
> const struct nat_action_info_t *nat_action_info,
> long long now, uint32_t tp_id)
> {
> + odp_port_t in_port = ODPP_LOCAL;
> + struct conn_lookup_ctx ctx;
> + struct dp_packet *packet;
> +
> + DP_PACKET_BATCH_FOR_EACH (i, packet, pkt_batch) {
> + /* The ipf preprocess function may consume all packets from this
> batch,
> + * save an in_port. */
> + in_port = packet->md.in_port.odp_port;
> + break;
> + }
> +
> ipf_preprocess_conntrack(ct->ipf, pkt_batch, now, dl_type, zone,
> ct->hash_basis);
>
> - struct dp_packet *packet;
> - struct conn_lookup_ctx ctx;
>
> DP_PACKET_BATCH_FOR_EACH (i, packet, pkt_batch) {
> struct conn *conn = packet->md.conn;
> @@ -1511,7 +1521,7 @@ conntrack_execute(struct conntrack *ct, struct
> dp_packet_batch *pkt_batch,
> }
> }
>
> - ipf_postprocess_conntrack(ct->ipf, pkt_batch, now, dl_type);
> + ipf_postprocess_conntrack(ct->ipf, pkt_batch, now, dl_type, zone,
> in_port);
>
> return 0;
> }
> diff --git a/lib/ipf.c b/lib/ipf.c
> index 53dfe6664..33f1defcd 100644
> --- a/lib/ipf.c
> +++ b/lib/ipf.c
> @@ -29,6 +29,7 @@
> #include "latch.h"
> #include "openvswitch/hmap.h"
> #include "openvswitch/poll-loop.h"
> +#include "openvswitch/types.h"
> #include "openvswitch/vlog.h"
> #include "ovs-atomic.h"
> #include "packets.h"
> @@ -1062,7 +1063,8 @@ ipf_send_frags_in_list(struct ipf *ipf, struct ipf_list
> *ipf_list,
> * cleans up the list context when it is empty.*/
> static void
> ipf_send_completed_frags(struct ipf *ipf, struct dp_packet_batch *pb,
> - long long now, bool v6)
> + long long now, bool v6, uint16_t zone,
> + odp_port_t in_port)
> {
> if (ovs_list_is_empty(&ipf->frag_complete_list)) {
> return;
> @@ -1072,9 +1074,21 @@ ipf_send_completed_frags(struct ipf *ipf, struct
> dp_packet_batch *pb,
> struct ipf_list *ipf_list;
>
> LIST_FOR_EACH_SAFE (ipf_list, list_node, &ipf->frag_complete_list) {
> +
> if ((ipf_list->key.dl_type == htons(ETH_TYPE_IPV6)) != v6) {
> continue;
> }
> + if (ipf_list->key.zone != zone) {
> + continue;
> + }
> +
> + /* Check that the batch's in_port matches. */
> + struct dp_packet *pkt
> + = ipf_list->frag_list[ipf_list->last_sent_idx + 1].pkt;
> + if (in_port != pkt->md.in_port.odp_port) {
> + continue;
> + }
> +
> if (ipf_send_frags_in_list(ipf, ipf_list, pb, v6, now)) {
> ipf_completed_list_clean(&ipf->frag_lists, ipf_list);
> } else {
> @@ -1262,12 +1276,13 @@ ipf_preprocess_conntrack(struct ipf *ipf, struct
> dp_packet_batch *pb,
> * with low priority. Reassembled packets are freed. */
> void
> ipf_postprocess_conntrack(struct ipf *ipf, struct dp_packet_batch *pb,
> - long long now, ovs_be16 dl_type)
> + long long now, ovs_be16 dl_type, uint16_t zone,
> + odp_port_t in_port)
> {
> if (ipf_get_enabled(ipf) || atomic_count_get(&ipf->nfrag)) {
> bool v6 = dl_type == htons(ETH_TYPE_IPV6);
> ipf_post_execute_reass_pkts(ipf, pb, v6);
> - ipf_send_completed_frags(ipf, pb, now, v6);
> + ipf_send_completed_frags(ipf, pb, now, v6, zone, in_port);
> ipf_delete_expired_frags(ipf, now);
> }
> }
> diff --git a/lib/ipf.h b/lib/ipf.h
> index 6ac91b270..7324a1704 100644
> --- a/lib/ipf.h
> +++ b/lib/ipf.h
> @@ -47,7 +47,8 @@ void ipf_preprocess_conntrack(struct ipf *ipf, struct
> dp_packet_batch *pb,
> uint32_t hash_basis);
>
> void ipf_postprocess_conntrack(struct ipf *ipf, struct dp_packet_batch *pb,
> - long long now, ovs_be16 dl_type);
> + long long now, ovs_be16 dl_type, uint16_t
> zone,
> + odp_port_t in_port);
>
> int ipf_set_enabled(struct ipf *ipf, bool v6, bool enable);
> int ipf_set_min_frag(struct ipf *ipf, bool v6, uint32_t value);
> diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
> index a35b80077..57e92d6c2 100644
> --- a/tests/ofproto-dpif.at
> +++ b/tests/ofproto-dpif.at
> @@ -5314,11 +5314,18 @@ AT_CLEANUP
>
> AT_SETUP([ofproto-dpif - fragment handling - reassembly])
> OVS_VSWITCHD_START
> -add_of_ports br0 1 2 90
> +add_of_ports br0 1 2 3 90
>
> AT_DATA([flows.txt], [dnl
> -table=0 tcp actions=ct(commit, table=1)
> +dnl Expand flow mask.
> +table=0 in_port=90,dl_src=55:55:55:55:55:55, actions=drop
> +table=0 in_port=90,ip,nw_src=10.0.0.1, actions=drop
> +table=0 in_port=1,dl_src=55:55:55:55:55:55, actions=drop
> +table=0 in_port=1,ip,nw_src=10.0.0.2, actions=drop
> +table=0 in_port=90,ip,tcp actions=ct(commit, table=1, zone=10)
> +table=0 in_port=1,ip,tcp actions=ct(commit, table=2, zone=20)
> table=1 tcp actions=2
> +table=2 tcp actions=3
> ])
> AT_CHECK([ovs-ofctl -O OpenFlow11 replace-flows br0 flows.txt])
>
> @@ -5330,7 +5337,7 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "0021853763af 0026b98cb0f9 0800 45
> dnl Test that no packets flow.
> AT_CHECK([ovs-appctl dpctl/dump-flows filter=in_port\(90\) | sed
> s'/recirc(.*)/recirc(X)/'], [0], [dnl
> flow-dump from the main thread:
> -recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:ct(commit),recirc(X)
> +recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth(src=00:26:b9:8c:b0:f9),eth_type(0x0800),ipv4(src=172.17.55.13/128.0.0.0,proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:ct(commit,zone=10),recirc(X)
> ])
>
> dnl Expire second frag.
> @@ -5344,7 +5351,7 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "0021853763af 0026b98cb0f9 0800 45
> dnl Test that no packets flow.
> AT_CHECK([ovs-appctl dpctl/dump-flows filter=in_port\(90\) | sed
> s'/recirc(.*)/recirc(X)/'], [0], [dnl
> flow-dump from the main thread:
> -recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:ct(commit),recirc(X)
> +recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth(src=00:26:b9:8c:b0:f9),eth_type(0x0800),ipv4(src=172.17.55.13/128.0.0.0,proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:ct(commit,zone=10),recirc(X)
> ])
>
> dnl Purge second frag
> @@ -5364,10 +5371,169 @@ $zero1208"])
>
> AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/recirc[[^)]]*)/recirc()/g' |
> strip_used | sort], [0], [dnl
> flow-dump from the main thread:
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth(src=00:26:b9:8c:b0:f9),eth_type(0x0800),ipv4(src=172.17.55.13/128.0.0.0,proto=6,frag=first),
> packets:0, bytes:0, used:never, actions:ct(commit,zone=10),recirc()
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth(src=00:26:b9:8c:b0:f9),eth_type(0x0800),ipv4(src=172.17.55.13/128.0.0.0,proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:ct(commit,zone=10),recirc()
>
> recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=first),
> packets:0, bytes:0, used:never, actions:2
> -recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=first),
> packets:0, bytes:0, used:never, actions:ct(commit),recirc()
>
> recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:2
> -recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=later),
> packets:0, bytes:0, used:never, actions:ct(commit),recirc()
> +])
> +
> +dnl Clear ipf state.
> +ovs-appctl time/warp 33000
> +
> +dnl Send a lot of small frags to overload the dp packet batch max.
> +AT_CHECK([ovs-appctl dpctl/ipf-set-min-frag v4 420], [], [dnl
> +setting minimum fragment size successful
> +])
> +
> +zero107=$(printf '0%.0s' $(seq 214))
> +dnl First zone.
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e120004006423e0202020201010101000200010000000000000000500220001c7a0000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e120384006420602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12070400641ce02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e120a84006419602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e120e04006415e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e121184006412602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12150400640ee02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12188400640b602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e121c04006407e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e121f84006404602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e122304006400e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1226840063fd602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e122a040063f9e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e122d840063f6602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1231040063f2e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1234840063ef602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1238040063ebe02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e123b840063e8602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e123f040063e4e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1242840063e1602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1246040063dde02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1249840063da602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e124d040063d6e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1250840063d3602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1254040063cfe02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1257840063cc602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e125b040063c8e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e125e840063c5602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1262040063c1e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1265840063be602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1269040063bae02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e126c840063b7602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1270040063b3e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1273840063b0602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1277040063ace02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e127a840063a9602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e127e040063a5e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e1281840063a2602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12850400639ee02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12888400639b602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e128c04006397e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e128f84006394602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e129304006390e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12968400638d602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e129a04006389e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e129d84006386602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12a104006382e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12a48400637f602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12a80400637be02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12ab84006378602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12af04006374e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12b284006371602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12b60400636de02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12b98400636a602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12bd04006366e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12c084006363602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12c40400635fe02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12c78400635c602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12cb04006358e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12ce84006355602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12d204006351e02020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "1111111111112222222222220800450001d410e12d58400634e602020202010101010000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90
> "11111111111122222222222208004500010810e10d904006557a0202020201010101000000000000000000000000000000000000000000000000000000000000${zero107}${zero107}"])
> +
> +dnl Second zone.
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2200040064e4d0101010102020202000100020000000000000000500220001c7a0000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2203840064e1501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2207040064ddd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d220a840064da501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d220e040064d6d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2211840064d3501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2215040064cfd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2218840064cc501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d221c040064c8d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d221f840064c5501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2223040064c1d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2226840064be501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d222a040064bad01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d222d840064b7501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2231040064b3d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2234840064b0501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2238040064acd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d223b840064a9501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d223f040064a5d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d2242840064a2501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22460400649ed01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22498400649b501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d224d04006497d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225084006494501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225404006490d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22578400648d501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225b04006489d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d225e84006486501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d226204006482d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22658400647f501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22690400647bd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d226c84006478501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227004006474d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227384006471501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22770400646dd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227a8400646a501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d227e04006466d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d228184006463501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22850400645fd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22888400645c501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d228c04006458d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d228f84006455501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d229304006451d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22968400644e501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d229a0400644ad01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d229d84006447501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22a104006443d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22a484006440501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22a80400643cd01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22ab84006439501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22af04006435d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22b284006432501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22b60400642ed01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22b98400642b501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22bd04006427d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22c084006424501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22c404006420d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22c78400641d501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22cb04006419d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22ce84006416501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22d204006412d01010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "2222222222221111111111110800450001d404d22d58400640f501010101020202020000000000000000000000000000000000000000${zero107}${zero107}${zero107}${zero107}"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
> "22222222222211111111111108004500010804d20d90400661890101010102020202000000000000000000000000000000000000000000000000000000000000${zero107}${zero107}"])
> +
> +dnl Bump the remaining queued packets
> +AT_CHECK([ovs-appctl netdev-dummy/receive p90 "0021853763af 0026b98cb0f9
> 0800 4500 04c4 0002 0096 40 06 af61 ac11370d ac11370b dnl
> +$zero1208"])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1 "0021853763af 0026b98cb0f9 0800
> 4500 04c4 0002 0096 40 06 af61 ac11370d ac11370b dnl
> +$zero1208"])
> +
> +AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/recirc[[^)]]*)/recirc()/g' |
> sed 's/used.*, / /' | sort], [0], [dnl
> +flow-dump from the main thread:
> +recirc(),in_port(1),packet_type(ns=0,id=0),eth(src=00:26:b9:8c:b0:f9),eth_type(0x0800),ipv4(src=172.17.55.13/128.0.0.0,proto=6,frag=later),
> packets:0, bytes:0, actions:ct(commit,zone=20),recirc()
> +recirc(),in_port(1),packet_type(ns=0,id=0),eth(src=11:11:11:11:11:11),eth_type(0x0800),ipv4(src=1.1.1.1/248.0.0.0,proto=6,frag=first),
> packets:0, bytes:0, actions:ct(commit,zone=20),recirc()
> +recirc(),in_port(1),packet_type(ns=0,id=0),eth(src=11:11:11:11:11:11),eth_type(0x0800),ipv4(src=1.1.1.1/248.0.0.0,proto=6,frag=later),
> packets:61, bytes:29198, actions:ct(commit,zone=20),recirc()
> +recirc(),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=first),
> packets:0, bytes:0, actions:3
> +recirc(),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=later),
> packets:61, bytes:29198, actions:3
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth(src=00:26:b9:8c:b0:f9),eth_type(0x0800),ipv4(src=172.17.55.13/128.0.0.0,proto=6,frag=later),
> packets:0, bytes:0, actions:ct(commit,zone=10),recirc()
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth(src=22:22:22:22:22:22),eth_type(0x0800),ipv4(src=2.2.2.2/248.0.0.0,proto=6,frag=first),
> packets:0, bytes:0, actions:ct(commit,zone=10),recirc()
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth(src=22:22:22:22:22:22),eth_type(0x0800),ipv4(src=2.2.2.2/248.0.0.0,proto=6,frag=later),
> packets:61, bytes:29198, actions:ct(commit,zone=10),recirc()
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=first),
> packets:0, bytes:0, actions:2
> +recirc(),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,frag=later),
> packets:61, bytes:29198, actions:2
> ])
>
> OVS_VSWITCHD_STOP
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev