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

Reply via email to