Hi Ben,

I found an issue in the lines below. It looks like that the 'else if' part
is redundant.

+        if (dp_packet_size(packet) < packet_size) {
+            packet_expand(packet, &flow, packet_size);
+        } else if (dp_packet_size(packet) < packet_size){
+            dp_packet_delete(packet);
+            packet = NULL;
+        }

And do you know which commit this patch is based on? I am having problem
to apply this patch and test it out.

Thanks,
Yifeng


On Thu, Jan 18, 2018 at 2:45 PM, Ben Pfaff <b...@ovn.org> wrote:

> This makes traffic generated by flow_compose() look slightly more
> realistic.  It requires lots of updates to tests, but at least the tests
> themselves should be slightly more realistic too.
>
> At the same time, add --l7 and --l7-len options to ofproto/trace to allow
> users to specify the amount or contents of payloads that they want.
>
> Suggested-by: Brad Cowie <b...@cowie.nz>
> Signed-off-by: Ben Pfaff <b...@ovn.org>
> ---
>  NEWS                         |   3 +-
>  lib/flow.c                   |  88 +++--
>  lib/flow.h                   |   4 +-
>  lib/netdev-dummy.c           |  15 +-
>  ofproto/ofproto-dpif-trace.c |  34 +-
>  ofproto/ofproto-dpif.c       |   2 +-
>  ofproto/ofproto-unixctl.man  |  10 +
>  ovn/controller/ofctrl.c      |   2 +-
>  tests/bfd.at                 |   4 +-
>  tests/learn.at               |  40 +--
>  tests/mcast-snooping.at      |   2 +-
>  tests/ofproto-dpif.at        | 806 ++++++++++++++++++++++++------
> -------------
>  tests/pmd.at                 |  52 +--
>  tests/test-ovn.c             |   2 +-
>  14 files changed, 620 insertions(+), 444 deletions(-)
>
> diff --git a/NEWS b/NEWS
> index c067b9462f2d..5289bc156dc2 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -1,6 +1,7 @@
>  Post-v2.9.0
>  --------------------
> -    - Nothing yet.
> +    - ovs-vswitchd:
> +      * New options --l7 and --l7-len to "ofproto/trace" command.
>
>
>  v2.9.0 - xx xxx xxxx
> diff --git a/lib/flow.c b/lib/flow.c
> index 04a73fd4ed5a..38ff29c8cd14 100644
> --- a/lib/flow.c
> +++ b/lib/flow.c
> @@ -2692,8 +2692,24 @@ flow_set_mpls_lse(struct flow *flow, int idx,
> ovs_be32 lse)
>      flow->mpls_lse[idx] = lse;
>  }
>
> +static void
> +flow_compose_l7(struct dp_packet *p, const void *l7, size_t l7_len)
> +{
> +    if (l7_len) {
> +        if (l7) {
> +            dp_packet_put(p, l7, l7_len);
> +        } else {
> +            uint8_t *payload = dp_packet_put_uninit(p, l7_len);
> +            for (size_t i = 0; i < l7_len; i++) {
> +                payload[i] = i;
> +            }
> +        }
> +    }
> +}
> +
>  static size_t
> -flow_compose_l4(struct dp_packet *p, const struct flow *flow)
> +flow_compose_l4(struct dp_packet *p, const struct flow *flow,
> +                const void *l7, size_t l7_len)
>  {
>      size_t orig_len = dp_packet_size(p);
>
> @@ -2704,19 +2720,31 @@ flow_compose_l4(struct dp_packet *p, const struct
> flow *flow)
>              tcp->tcp_src = flow->tp_src;
>              tcp->tcp_dst = flow->tp_dst;
>              tcp->tcp_ctl = TCP_CTL(ntohs(flow->tcp_flags), 5);
> +            if (!(flow->tcp_flags & htons(TCP_SYN | TCP_FIN | TCP_RST))) {
> +                flow_compose_l7(p, l7, l7_len);
> +            }
>          } else if (flow->nw_proto == IPPROTO_UDP) {
>              struct udp_header *udp = dp_packet_put_zeros(p, sizeof *udp);
>              udp->udp_src = flow->tp_src;
>              udp->udp_dst = flow->tp_dst;
> -            udp->udp_len = htons(sizeof *udp);
> +            udp->udp_len = htons(sizeof *udp + l7_len);
> +            flow_compose_l7(p, l7, l7_len);
>          } else if (flow->nw_proto == IPPROTO_SCTP) {
>              struct sctp_header *sctp = dp_packet_put_zeros(p, sizeof
> *sctp);
>              sctp->sctp_src = flow->tp_src;
>              sctp->sctp_dst = flow->tp_dst;
> +            /* XXX Someone should figure out what L7 data to include. */
>          } else if (flow->nw_proto == IPPROTO_ICMP) {
>              struct icmp_header *icmp = dp_packet_put_zeros(p, sizeof
> *icmp);
>              icmp->icmp_type = ntohs(flow->tp_src);
>              icmp->icmp_code = ntohs(flow->tp_dst);
> +            if ((icmp->icmp_type == ICMP4_ECHO_REQUEST ||
> +                 icmp->icmp_type == ICMP4_ECHO_REPLY)
> +                && icmp->icmp_code == 0) {
> +                flow_compose_l7(p, l7, l7_len);
> +            } else {
> +                /* XXX Add inner IP packet for e.g. destination
> unreachable? */
> +            }
>          } else if (flow->nw_proto == IPPROTO_IGMP) {
>              struct igmp_header *igmp = dp_packet_put_zeros(p, sizeof
> *igmp);
>              igmp->igmp_type = ntohs(flow->tp_src);
> @@ -2748,6 +2776,12 @@ flow_compose_l4(struct dp_packet *p, const struct
> flow *flow)
>                      lla_opt->type = ND_OPT_TARGET_LINKADDR;
>                      lla_opt->mac = flow->arp_tha;
>                  }
> +            } else if (icmp->icmp6_code == 0 &&
> +                       (icmp->icmp6_type == ICMP6_ECHO_REQUEST ||
> +                        icmp->icmp6_type == ICMP6_ECHO_REPLY)) {
> +                flow_compose_l7(p, l7, l7_len);
> +            } else {
> +                /* XXX Add inner IP packet for e.g. destination
> unreachable? */
>              }
>          }
>      }
> @@ -2800,7 +2834,7 @@ flow_compose_l4_csum(struct dp_packet *p, const
> struct flow *flow,
>   * ip/udp lengths and l3/l4 checksums.
>   *
>   * 'size' needs to be larger then the current packet size.  */
> -static void
> +void
>  packet_expand(struct dp_packet *p, const struct flow *flow, size_t size)
>  {
>      size_t extra_size;
> @@ -2850,10 +2884,19 @@ packet_expand(struct dp_packet *p, const struct
> flow *flow, size_t size)
>   * (This is useful only for testing, obviously, and the packet isn't
> really
>   * valid.  Lots of fields are just zeroed.)
>   *
> - * The created packet has minimal packet size, just big enough to hold
> - * the packet header fields.  */
> -static void
> -flow_compose_minimal(struct dp_packet *p, const struct flow *flow)
> + * For packets whose protocols can encapsulate arbitrary L7 payloads,
> 'l7' and
> + * 'l7_len' determine that payload:
> + *
> + *    - If 'l7_len' is zero, no payload is included.
> + *
> + *    - If 'l7_len' is nonzero and 'l7' is null, an arbitrary payload
> 'l7_len'
> + *      bytes long is included.
> + *
> + *    - If 'l7_len' is nonzero and 'l7' is nonnull, the payload is copied
> + *      from 'l7'. */
> +void
> +flow_compose(struct dp_packet *p, const struct flow *flow,
> +             const void *l7, size_t l7_len)
>  {
>      uint32_t pseudo_hdr_csum;
>      size_t l4_len;
> @@ -2893,7 +2936,7 @@ flow_compose_minimal(struct dp_packet *p, const
> struct flow *flow)
>
>          dp_packet_set_l4(p, dp_packet_tail(p));
>
> -        l4_len = flow_compose_l4(p, flow);
> +        l4_len = flow_compose_l4(p, flow, l7, l7_len);
>
>          ip = dp_packet_l3(p);
>          ip->ip_tot_len = htons(p->l4_ofs - p->l3_ofs + l4_len);
> @@ -2916,7 +2959,7 @@ flow_compose_minimal(struct dp_packet *p, const
> struct flow *flow)
>
>          dp_packet_set_l4(p, dp_packet_tail(p));
>
> -        l4_len = flow_compose_l4(p, flow);
> +        l4_len = flow_compose_l4(p, flow, l7, l7_len);
>
>          nh = dp_packet_l3(p);
>          nh->ip6_plen = htons(l4_len);
> @@ -2958,33 +3001,6 @@ flow_compose_minimal(struct dp_packet *p, const
> struct flow *flow)
>          }
>      }
>  }
> -
> -/* Puts into 'p' a Ethernet frame of size 'size' that flow_extract() would
> - * parse as having the given 'flow'.
> - *
> - * When 'size' is zero, 'p' is a minimal size packet that only big enough
> - * to contains all packet headers.
> - *
> - * When 'size' is larger than the minimal packet size, the packet will
> - * be expended to 'size' with the payload set to zero.
> - *
> - * Return 'true' if the packet is successfully created. 'false' otherwise.
> - * Note, when 'size' is set to zero, this function always returns true.
> */
> -bool
> -flow_compose(struct dp_packet *p, const struct flow *flow, size_t size)
> -{
> -    flow_compose_minimal(p, flow);
> -
> -    if (size && size < dp_packet_size(p)) {
> -        return false;
> -    }
> -
> -    if (size > dp_packet_size(p)) {
> -        packet_expand(p, flow, size);
> -    }
> -
> -    return true;
> -}
>
>  /* Compressed flow. */
>
> diff --git a/lib/flow.h b/lib/flow.h
> index eb1e2bfc6942..770a07a62778 100644
> --- a/lib/flow.h
> +++ b/lib/flow.h
> @@ -124,7 +124,9 @@ void flow_set_mpls_tc(struct flow *, int idx, uint8_t
> tc);
>  void flow_set_mpls_bos(struct flow *, int idx, uint8_t stack);
>  void flow_set_mpls_lse(struct flow *, int idx, ovs_be32 lse);
>
> -bool flow_compose(struct dp_packet *, const struct flow *, size_t);
> +void flow_compose(struct dp_packet *, const struct flow *,
> +                  const void *l7, size_t l7_len);
> +void packet_expand(struct dp_packet *, const struct flow *, size_t size);
>
>  bool parse_ipv6_ext_hdrs(const void **datap, size_t *sizep, uint8_t
> *nw_proto,
>                           uint8_t *nw_frag);
> diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
> index 4246af3b9c86..35b748f11396 100644
> --- a/lib/netdev-dummy.c
> +++ b/lib/netdev-dummy.c
> @@ -1520,10 +1520,17 @@ eth_from_flow(const char *s, size_t packet_size)
>      }
>
>      packet = dp_packet_new(0);
> -    if (!flow_compose(packet, &flow, packet_size)) {
> -        dp_packet_delete(packet);
> -        packet = NULL;
> -    };
> +    if (packet_size) {
> +        flow_compose(packet, &flow, NULL, 0);
> +        if (dp_packet_size(packet) < packet_size) {
> +            packet_expand(packet, &flow, packet_size);
> +        } else if (dp_packet_size(packet) < packet_size){
> +            dp_packet_delete(packet);
> +            packet = NULL;
> +        }
> +    } else {
> +        flow_compose(packet, &flow, NULL, 64);
> +    }
>
>      ofpbuf_uninit(&odp_key);
>      return packet;
> diff --git a/ofproto/ofproto-dpif-trace.c b/ofproto/ofproto-dpif-trace.c
> index 75730155080c..1055644b6d5b 100644
> --- a/ofproto/ofproto-dpif-trace.c
> +++ b/ofproto/ofproto-dpif-trace.c
> @@ -203,6 +203,8 @@ parse_flow_and_packet(int argc, const char *argv[],
>      char *m_err = NULL;
>      struct simap port_names = SIMAP_INITIALIZER(&port_names);
>      struct dp_packet *packet = NULL;
> +    uint8_t *l7 = NULL;
> +    size_t l7_len = 64;
>      struct ofpbuf odp_key;
>      struct ofpbuf odp_mask;
>
> @@ -219,6 +221,35 @@ parse_flow_and_packet(int argc, const char *argv[],
>          const char *arg = argv[i];
>          if (!strcmp(arg, "-generate") || !strcmp(arg, "--generate")) {
>              generate_packet = true;
> +        } else if (!strcmp(arg, "--l7")) {
> +            if (i + 1 >= argc) {
> +                m_err = xasprintf("Missing argument for option %s", arg);
> +                goto exit;
> +            }
> +
> +            struct dp_packet payload;
> +            memset(&payload, 0, sizeof payload);
> +            dp_packet_init(&payload, 0);
> +            if (dp_packet_put_hex(&payload, argv[++i], NULL)[0] != '\0') {
> +                dp_packet_uninit(&payload);
> +                error = "Trailing garbage in packet data";
> +                goto exit;
> +            }
> +            free(l7);
> +            l7_len = dp_packet_size(&payload);
> +            l7 = dp_packet_steal_data(&payload);
> +        } else if (!strcmp(arg, "--l7-len")) {
> +            if (i + 1 >= argc) {
> +                m_err = xasprintf("Missing argument for option %s", arg);
> +                goto exit;
> +            }
> +            free(l7);
> +            l7 = NULL;
> +            l7_len = atoi(argv[++i]);
> +            if (l7_len > 64000) {
> +                m_err = xasprintf("%s: too much L7 data", argv[i]);
> +                goto exit;
> +            }
>          } else if (consistent
>                     && (!strcmp(arg, "-consistent") ||
>                         !strcmp(arg, "--consistent"))) {
> @@ -392,7 +423,7 @@ parse_flow_and_packet(int argc, const char *argv[],
>      if (generate_packet) {
>          /* Generate a packet, as requested. */
>          packet = dp_packet_new(0);
> -        flow_compose(packet, flow, 0);
> +        flow_compose(packet, flow, l7, l7_len);
>      } else if (packet) {
>          /* Use the metadata from the flow and the packet argument to
>           * reconstruct the flow. */
> @@ -412,6 +443,7 @@ exit:
>      ofpbuf_uninit(&odp_key);
>      ofpbuf_uninit(&odp_mask);
>      simap_destroy(&port_names);
> +    free(l7);
>      return m_err;
>  }
>
> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> index 6157b70aee60..5ba0492b01d8 100644
> --- a/ofproto/ofproto-dpif.c
> +++ b/ofproto/ofproto-dpif.c
> @@ -1227,7 +1227,7 @@ check_ct_eventmask(struct dpif_backer *backer)
>
>      /* Compose a dummy UDP packet. */
>      dp_packet_init(&packet, 0);
> -    flow_compose(&packet, &flow, 0);
> +    flow_compose(&packet, &flow, NULL, 64);
>
>      /* Execute the actions.  On older datapaths this fails with EINVAL, on
>       * newer datapaths it succeeds. */
> diff --git a/ofproto/ofproto-unixctl.man b/ofproto/ofproto-unixctl.man
> index 8f1d12c654ab..dede5f39da84 100644
> --- a/ofproto/ofproto-unixctl.man
> +++ b/ofproto/ofproto-unixctl.man
> @@ -53,6 +53,11 @@ These commands support the following options:
>  .IP \fB\-\-generate\fR
>  Generate a packet from the flow (see below for more information).
>  .
> +.IP "\fB\-\-l7 \fIpayload\fR"
> +.IQ "\fB\-\-l7\-len \fIlength\fR"
> +Accepted only with \fB\-\-generate\fR (see below for more
> +information).
> +.
>  .IP \fB\-\-consistent\fR
>  Accepted by \fBofproto\-trace\-packet\-out\fR only.  With this option,
>  the command rejects \fIactions\fR that are inconsistent with the
> @@ -147,6 +152,11 @@ it, but \fB\-\-generate\fR is not a good way to fill
> in incomplete
>  information, because it generates packets based on only the flow
>  information, which means that the packets really do not have any more
>  information than the flow.
> +.IP
> +By default, for protocols that allow arbitrary L7 payloads, the
> +generated packet has 64 bytes of payload.  Use \fB\-\-l7\-len\fR to
> +change the payload length, or \fB\-\-l7\fR to specify the exact
> +contents of the payload.
>  .
>  .IP \fIpacket\fR
>  This form supplies an explicit \fIpacket\fR as a sequence of hex
> diff --git a/ovn/controller/ofctrl.c b/ovn/controller/ofctrl.c
> index 2fa980ebdae1..c9c5cc152e4c 100644
> --- a/ovn/controller/ofctrl.c
> +++ b/ovn/controller/ofctrl.c
> @@ -1149,7 +1149,7 @@ ofctrl_inject_pkt(const struct ovsrec_bridge
> *br_int, const char *flow_s,
>      uint64_t packet_stub[128 / 8];
>      struct dp_packet packet;
>      dp_packet_use_stub(&packet, packet_stub, sizeof packet_stub);
> -    flow_compose(&packet, &uflow, 0);
> +    flow_compose(&packet, &uflow, NULL, 64);
>
>      uint64_t ofpacts_stub[1024 / 8];
>      struct ofpbuf ofpacts = OFPBUF_STUB_INITIALIZER(ofpacts_stub);
> diff --git a/tests/bfd.at b/tests/bfd.at
> index 5ba99a4e1d23..ba912b5683b8 100644
> --- a/tests/bfd.at
> +++ b/tests/bfd.at
> @@ -237,7 +237,7 @@ OVS_VSWITCHD_START([add-port br0 p1 -- set Interface
> p1 type=gre \
>                      set bridge br0 fail-mode=standalone])
>
>  # by default check_tnl_key is false. so we should process a bfd packet
> with tun_id=1.
> -AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x1,src=2.2.2.
> 2,dst=2.2.2.1,tos=0x0,ttl=64,tp_src=0,tp_dst=0,flags(key)),
> in_port(1),skb_mark(0/0),eth(src=00:11:22:33:44:55,dst=00:
> 23:20:00:00:01),eth_type(0x0800),ipv4(src=169.254.1.0/
> 0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=255/0,frag=no
> ),udp(src=49152/0,dst=3784/0xffff)' -generate], [0], [stdout])
> +AT_CHECK([ovs-appctl ofproto/trace --l7-len 0 ovs-dummy
> 'tunnel(tun_id=0x1,src=2.2.2.2,dst=2.2.2.1,tos=0x0,ttl=64,
> tp_src=0,tp_dst=0,flags(key)),in_port(1),skb_mark(0/0),eth(
> src=00:11:22:33:44:55,dst=00:23:20:00:00:01),eth_type(0x0800),ipv4(src=
> 169.254.1.0/0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=
> 255/0,frag=no),udp(src=49152/0,dst=3784/0xffff)' -generate], [0],
> [stdout])
>  # check that the packet should be handled as BFD packet.
>  AT_CHECK([tail -2 stdout], [0], [dnl
>  This flow is handled by the userspace slow path because it:
> @@ -254,7 +254,7 @@ Datapath actions: 100
>
>  # set the tunnel key to 0.
>  AT_CHECK([ovs-vsctl set interface p1 options:key=0])
> -AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'tunnel(tun_id=0x0,src=2.2.2.
> 2,dst=2.2.2.1,tos=0x0,ttl=64,tp_src=0,tp_dst=0,flags(key)),
> in_port(1),skb_mark(0/0),eth(src=00:11:22:33:44:55,dst=00:
> 23:20:00:00:01),eth_type(0x0800),ipv4(src=169.254.1.0/
> 0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=255/0,frag=no
> ),udp(src=49152/0,dst=3784/0xffff)' -generate], [0], [stdout])
> +AT_CHECK([ovs-appctl ofproto/trace --l7-len 0 ovs-dummy
> 'tunnel(tun_id=0x0,src=2.2.2.2,dst=2.2.2.1,tos=0x0,ttl=64,
> tp_src=0,tp_dst=0,flags(key)),in_port(1),skb_mark(0/0),eth(
> src=00:11:22:33:44:55,dst=00:23:20:00:00:01),eth_type(0x0800),ipv4(src=
> 169.254.1.0/0.0.0.0,dst=169.254.1.1/0.0.0.0,proto=17/0xff,tos=0/0,ttl=
> 255/0,frag=no),udp(src=49152/0,dst=3784/0xffff)' -generate], [0],
> [stdout])
>  # check that the packet should be handled as BFD packet.
>  AT_CHECK([tail -2 stdout], [0], [dnl
>  This flow is handled by the userspace slow path because it:
> diff --git a/tests/learn.at b/tests/learn.at
> index 72e22c4bf348..07ad043212ed 100644
> --- a/tests/learn.at
> +++ b/tests/learn.at
> @@ -317,8 +317,8 @@ done
>  # Check for the learning entry.
>  ovs-appctl time/warp 1000
>  AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0],
> -[[ n_packets=1, n_bytes=54, actions=load:0x3->NXM_NX_REG0[
> 0..15],learn(table=0,priority=65535,NXM_OF_ETH_SRC[],NXM_OF_
> VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2
> - n_packets=9, n_bytes=486, priority=65535,vlan_tci=
> 0x0000/0x0fff,dl_src=50:54:00:00:00:05 actions=output:3
> +[[ n_packets=1, n_bytes=118, actions=load:0x3->NXM_NX_REG0[
> 0..15],learn(table=0,priority=65535,NXM_OF_ETH_SRC[],NXM_OF_
> VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2
> + n_packets=9, n_bytes=1062, priority=65535,vlan_tci=
> 0x0000/0x0fff,dl_src=50:54:00:00:00:05 actions=output:3
>  NXST_FLOW reply:
>  ]])
>
> @@ -327,10 +327,10 @@ AT_CHECK(
>    [(ovs-ofctl dump-ports br0 2; ovs-ofctl dump-ports br0 3) |
> strip_xids], [0],
>    [OFPST_PORT reply: 1 ports
>    port  2: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=1, bytes=54, drop=?, errs=?, coll=?
> +           tx pkts=1, bytes=118, drop=?, errs=?, coll=?
>  OFPST_PORT reply: 1 ports
>    port  3: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=9, bytes=486, drop=?, errs=?, coll=?
> +           tx pkts=9, bytes=1062, drop=?, errs=?, coll=?
>  ])
>
>  OVS_VSWITCHD_STOP
> @@ -378,17 +378,17 @@ AT_CHECK(
>    [(ovs-ofctl dump-ports br0 2; ovs-ofctl dump-ports br0 3) |
> strip_xids], [0],
>    [OFPST_PORT reply: 1 ports
>    port  2: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=2, bytes=108, drop=?, errs=?, coll=?
> +           tx pkts=2, bytes=236, drop=?, errs=?, coll=?
>  OFPST_PORT reply: 1 ports
>    port  3: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=18, bytes=972, drop=?, errs=?, coll=?
> +           tx pkts=18, bytes=2124, drop=?, errs=?, coll=?
>  ])
>
>  # Check for the learning entry.
>  ovs-appctl time/warp 1000
>  AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0],
> -[[ n_packets=2, n_bytes=108, actions=load:0x3->NXM_NX_REG0[
> 0..15],learn(table=0,idle_timeout=5,priority=65535,NXM_
> OF_ETH_SRC[],NXM_OF_VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2
> - n_packets=9, n_bytes=486, idle_timeout=5, priority=65535,vlan_tci=
> 0x0000/0x0fff,dl_src=50:54:00:00:00:06 actions=output:3
> +[[ n_packets=2, n_bytes=236, actions=load:0x3->NXM_NX_REG0[
> 0..15],learn(table=0,idle_timeout=5,priority=65535,NXM_
> OF_ETH_SRC[],NXM_OF_VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2
> + n_packets=9, n_bytes=1062, idle_timeout=5, priority=65535,vlan_tci=
> 0x0000/0x0fff,dl_src=50:54:00:00:00:06 actions=output:3
>  NXST_FLOW reply:
>  ]])
>  OVS_VSWITCHD_STOP
> @@ -420,10 +420,10 @@ AT_CHECK(
>    [(ovs-ofctl dump-ports br0 2; ovs-ofctl dump-ports br0 3) |
> strip_xids], [0],
>    [OFPST_PORT reply: 1 ports
>    port  2: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=1, bytes=54, drop=?, errs=?, coll=?
> +           tx pkts=1, bytes=118, drop=?, errs=?, coll=?
>  OFPST_PORT reply: 1 ports
>    port  3: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=9, bytes=486, drop=?, errs=?, coll=?
> +           tx pkts=9, bytes=1062, drop=?, errs=?, coll=?
>  ])
>
>  # Trace some packets arriving.  This is is a different flow from the
> previous.
> @@ -476,18 +476,18 @@ AT_CHECK(
>    [(ovs-ofctl dump-ports br0 2; ovs-ofctl dump-ports br0 3) |
> strip_xids], [0],
>    [OFPST_PORT reply: 1 ports
>    port  2: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=3, bytes=162, drop=?, errs=?, coll=?
> +           tx pkts=3, bytes=354, drop=?, errs=?, coll=?
>  OFPST_PORT reply: 1 ports
>    port  3: rx pkts=0, bytes=0, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=17, bytes=918, drop=?, errs=?, coll=?
> +           tx pkts=17, bytes=2006, drop=?, errs=?, coll=?
>  ])
>
>  # Check for the learning entry.
>  ovs-appctl time/warp 1000
>  sleep 1
>  AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0],
> -[[ n_packets=3, n_bytes=162, actions=load:0x3->NXM_NX_REG0[
> 0..15],learn(table=0,hard_timeout=10,priority=65535,NXM_
> OF_ETH_SRC[],NXM_OF_VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2
> - n_packets=3, n_bytes=162, hard_timeout=10, priority=65535,vlan_tci=
> 0x0000/0x0fff,dl_src=50:54:00:00:00:06 actions=output:3
> +[[ n_packets=3, n_bytes=354, actions=load:0x3->NXM_NX_REG0[
> 0..15],learn(table=0,hard_timeout=10,priority=65535,NXM_
> OF_ETH_SRC[],NXM_OF_VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2
> + n_packets=3, n_bytes=354, hard_timeout=10, priority=65535,vlan_tci=
> 0x0000/0x0fff,dl_src=50:54:00:00:00:06 actions=output:3
>  NXST_FLOW reply:
>  ]])
>  OVS_VSWITCHD_STOP
> @@ -728,17 +728,17 @@ done
>
>  dnl Check successful counters:
>  AT_CHECK([ovs-ofctl dump-flows br0 table=1,reg0=1 | ofctl_strip | sort],
> [0], [dnl
> - cookie=0x1, table=1, n_packets=1, n_bytes=42, reg0=0x1,in_port=1
> actions=drop
> - cookie=0x2, table=1, n_packets=10, n_bytes=420, reg0=0x1,in_port=2
> actions=drop
> - cookie=0x3, table=1, n_packets=20, n_bytes=840, reg0=0x1,in_port=3
> actions=drop
> + cookie=0x1, table=1, n_packets=1, n_bytes=106, reg0=0x1,in_port=1
> actions=drop
> + cookie=0x2, table=1, n_packets=10, n_bytes=1060, reg0=0x1,in_port=2
> actions=drop
> + cookie=0x3, table=1, n_packets=20, n_bytes=2120, reg0=0x1,in_port=3
> actions=drop
>  NXST_FLOW reply:
>  ])
>
>  dnl Check failed counters:
>  AT_CHECK([ovs-ofctl dump-flows br0 table=1,reg0=0 | ofctl_strip | sort],
> [0], [dnl
> - cookie=0x1, table=1, n_packets=29, n_bytes=1218, reg0=0,in_port=1
> actions=drop
> - cookie=0x2, table=1, n_packets=20, n_bytes=840, reg0=0,in_port=2
> actions=drop
> - cookie=0x3, table=1, n_packets=10, n_bytes=420, reg0=0,in_port=3
> actions=drop
> + cookie=0x1, table=1, n_packets=29, n_bytes=3074, reg0=0,in_port=1
> actions=drop
> + cookie=0x2, table=1, n_packets=20, n_bytes=2120, reg0=0,in_port=2
> actions=drop
> + cookie=0x3, table=1, n_packets=10, n_bytes=1060, reg0=0,in_port=3
> actions=drop
>  NXST_FLOW reply:
>  ])
>
> diff --git a/tests/mcast-snooping.at b/tests/mcast-snooping.at
> index ad818a3e0be1..f9f65cc468c2 100644
> --- a/tests/mcast-snooping.at
> +++ b/tests/mcast-snooping.at
> @@ -62,7 +62,7 @@ AT_CHECK([
>  # 10.0.0.1.0 > 239.94.1.1.8000: UDP, length 0
>  AT_CHECK([ovs-pcap p2.pcap > p2.pcap.txt 2>&1])
>  AT_CHECK([cat p2.pcap.txt], [0], [dnl
> -01005e5e0101aa55aa550001810006bd08004500001c0000000040118071
> 0a000001ef5e010100001f400008e63d
> +01005e5e0101aa55aa550001810006bd08004500005c0000000040118031
> 0a000001ef5e010100001f40004801ba000102030405060708090a0b0c0d
> 0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b
> 2c2d2e2f303132333435363738393a3b3c3d3e3f
>  ])
>
>  # Clear the mdb, send a IGMP packet with invalid checksum and make sure it
> diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
> index cbe0d91352fa..550a768df2fc 100644
> --- a/tests/ofproto-dpif.at
> +++ b/tests/ofproto-dpif.at
> @@ -477,7 +477,7 @@ done
>
>  AT_CHECK([ovs-appctl dpctl/dump-flows | sed 
> 's/dp_hash(.*\/0x1)/dp_hash(0xXXXX\/0x1)/'
> | sed 's/packets.*actions:1/actions:1/' | strip_ufid | strip_used |
> sort], [0], [dnl
>  flow-dump from non-dpdk interfaces:
> -recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_
> type(0x0800),ipv4(src=192.168.0.1,frag=no), packets:15, bytes:630,
> used:0.0s, actions:hash(hash_l4(0)),recirc(0x1)
> +recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_
> type(0x0800),ipv4(src=192.168.0.1,frag=no), packets:15, bytes:1590,
> used:0.0s, actions:hash(hash_l4(0)),recirc(0x1)
>  recirc_id(0x1),dp_hash(0xXXXX/0x1),in_port(1),packet_type(
> ns=0,id=0),eth_type(0x0800),ipv4(frag=no), actions:10
>  recirc_id(0x1),dp_hash(0xXXXX/0x1),in_port(1),packet_type(
> ns=0,id=0),eth_type(0x0800),ipv4(frag=no), actions:11
>  ])
> @@ -493,8 +493,8 @@ done
>
>  AT_CHECK([ovs-appctl dpctl/dump-flows | sed 
> 's/dp_hash(.*\/0x1)/dp_hash(0xXXXX\/0x1)/'
> | sed 's/\(actions:1\)[[01]]/\1X/' | strip_ufid | strip_used | sort], [0],
> [dnl
>  flow-dump from non-dpdk interfaces:
> -recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_
> type(0x0800),ipv4(src=192.168.0.1,frag=no), packets:15, bytes:630,
> used:0.0s, actions:hash(hash_l4(0)),recirc(0x2)
> -recirc_id(0x2),dp_hash(0xXXXX/0x1),in_port(1),packet_
> type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:15, bytes:630,
> used:0.0s, actions:1X
> +recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_
> type(0x0800),ipv4(src=192.168.0.1,frag=no), packets:15, bytes:1590,
> used:0.0s, actions:hash(hash_l4(0)),recirc(0x2)
> +recirc_id(0x2),dp_hash(0xXXXX/0x1),in_port(1),packet_
> type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:15, bytes:1590,
> used:0.0s, actions:1X
>  ])
>
>  OVS_VSWITCHD_STOP
> @@ -527,7 +527,7 @@ for i in `seq 0 2`;
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0],
> [stdout])
>  AT_CHECK([strip_xids < stdout | sort], [0], [dnl
> - group_id=1234,ref_count=1,packet_count=3,byte_count=126,
> bucket0:packet_count=3,byte_count=126,bucket1:packet_count=0,byte_count=0
> + group_id=1234,ref_count=1,packet_count=3,byte_count=318,
> bucket0:packet_count=3,byte_count=318,bucket1:packet_count=0,byte_count=0
>  OFPST_GROUP reply (OF1.2):
>  ])
>  OVS_VSWITCHD_STOP
> @@ -548,7 +548,7 @@ for i in `seq 0 2`;
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0],
> [stdout])
>  AT_CHECK([strip_xids < stdout | sort], [0], [dnl
> - group_id=1234,ref_count=1,packet_count=3,byte_count=126,
> bucket0:packet_count=3,byte_count=126,bucket1:packet_
> count=3,byte_count=126
> + group_id=1234,ref_count=1,packet_count=3,byte_count=318,
> bucket0:packet_count=3,byte_count=318,bucket1:packet_
> count=3,byte_count=318
>  OFPST_GROUP reply (OF1.2):
>  ])
>  OVS_VSWITCHD_STOP
> @@ -1093,7 +1093,7 @@ AT_CHECK([cat ofctl_monitor.log], [0], [dnl
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort],
> [0], [dnl
> - n_packets=3, n_bytes=162, actions=resubmit(1,1)
> + n_packets=3, n_bytes=354, actions=resubmit(1,1)
>  OFPST_FLOW reply (OF1.2):
>  ])
>
> @@ -1120,14 +1120,14 @@ 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): table_id=1 cookie=0x0 total_len=54 in_port=1
> (via action) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=118 in_port=1
> (via action) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=54 in_port=1
> (via action) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=118 in_port=1
> (via action) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=54 in_port=1
> (via action) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=118 in_port=1
> (via action) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  ])
>
>  dnl Hit table 0, Miss all other tables, sent to controller
> @@ -1140,19 +1140,19 @@ 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): table_id=253 cookie=0x0 total_len=54 in_port=1
> (via no_match) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1
> (via no_match) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=54 in_port=1
> (via no_match) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1
> (via no_match) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=54 in_port=1
> (via no_match) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1
> (via no_match) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  ])
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort],
> [0], [dnl
> - table=1, n_packets=3, n_bytes=162, dl_src=10:11:11:11:11:11
> actions=CONTROLLER:65535
> + table=1, n_packets=3, n_bytes=354, dl_src=10:11:11:11:11:11
> actions=CONTROLLER:65535
>  OFPST_FLOW reply (OF1.2):
>  ])
>
> @@ -1183,14 +1183,14 @@ 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): table_id=2 cookie=0x0 total_len=54 in_port=1
> (via action) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=118 in_port=1
> (via action) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=54 in_port=1
> (via action) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=118 in_port=1
> (via action) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=54 in_port=1
> (via action) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x0 total_len=118 in_port=1
> (via action) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  ])
>
>  dnl Hit table 1, Miss all other tables, sent to controller
> @@ -1203,20 +1203,20 @@ 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): table_id=253 cookie=0x0 total_len=54 in_port=1
> (via no_match) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1
> (via no_match) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=54 in_port=1
> (via no_match) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1
> (via no_match) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=54 in_port=1
> (via no_match) data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=118 in_port=1
> (via no_match) data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  ])
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort],
> [0], [dnl
> - n_packets=6, n_bytes=324, actions=goto_table:1
> - table=2, n_packets=3, n_bytes=162, dl_src=10:11:11:11:11:11
> actions=CONTROLLER:65535
> + n_packets=6, n_bytes=708, actions=goto_table:1
> + table=2, n_packets=3, n_bytes=354, dl_src=10:11:11:11:11:11
> actions=CONTROLLER:65535
>  OFPST_FLOW reply (OF1.2):
>  ])
>
> @@ -1261,7 +1261,7 @@ AT_CHECK([cat ofctl_monitor.log], [0], [dnl
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort],
> [0], [dnl
> - n_packets=6, n_bytes=324, actions=resubmit(1,1)
> + n_packets=6, n_bytes=708, actions=resubmit(1,1)
>   table=2, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535
>  OFPST_FLOW reply (OF1.2):
>  ])
> @@ -1321,7 +1321,7 @@ AT_CHECK([cat ofctl_monitor.log], [0], [dnl
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort],
> [0], [dnl
> - n_packets=3, n_bytes=162, actions=goto_table:1
> + n_packets=3, n_bytes=354, actions=goto_table:1
>  OFPST_FLOW reply (OF1.2):
>  ])
>
> @@ -1352,7 +1352,7 @@ AT_CHECK([cat ofctl_monitor.log], [0], [dnl
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort],
> [0], [dnl
> - n_packets=3, n_bytes=162, actions=resubmit(1,1)
> + n_packets=3, n_bytes=354, actions=resubmit(1,1)
>  OFPST_FLOW reply (OF1.2):
>  ])
>
> @@ -1393,14 +1393,14 @@ 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)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via no_match)
> data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via no_match)
> data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via no_match)
> data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via no_match)
> data_len=54 (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via no_match)
> data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  ])
>
>  dnl Singleton controller action.
> @@ -1415,10 +1415,8 @@ 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)
>  tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:
> 00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,
> nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:2e7d
> -dnl
>  OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via action) data_len=54
> (unbuffered)
>  tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:
> 00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,
> nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:2e7d
> -dnl
>  OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via action) data_len=54
> (unbuffered)
>  tcp,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:
> 00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,
> nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:2e7d
>  ])
> @@ -1646,14 +1644,14 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log`
> -ge 3])
>  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)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via action)
> data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via action) data_len=54
> (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via action)
> data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  dnl
> -OFPT_PACKET_IN (xid=0x0): total_len=54 in_port=1 (via action) data_len=54
> (unbuffered)
> -tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:2e70
> +OFPT_PACKET_IN (xid=0x0): total_len=118 in_port=1 (via action)
> data_len=118 (unbuffered)
> +tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:
> 54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=
> 0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:4a2c
>  ])
>
>  OVS_VSWITCHD_STOP
> @@ -1800,13 +1798,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=0xa total_len=46 in_port=1 (via action)
> data_len=46 (unbuffered)
> +NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=110 in_port=1 (via action)
> data_len=110 (unbuffered)
>  mpls,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:
> 54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
>  dnl
> -NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=46 in_port=1 (via action)
> data_len=46 (unbuffered)
> +NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=110 in_port=1 (via action)
> data_len=110 (unbuffered)
>  mpls,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:
> 54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
>  dnl
> -NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=46 in_port=1 (via action)
> data_len=46 (unbuffered)
> +NXT_PACKET_IN (xid=0x0): cookie=0xa total_len=110 in_port=1 (via action)
> data_len=110 (unbuffered)
>  mpls,vlan_tci=0x0000,dl_src=40:44:44:44:44:42,dl_dst=50:
> 54:00:00:00:07,mpls_label=10,mpls_tc=3,mpls_ttl=64,mpls_bos=1
>  ])
>
> @@ -2744,7 +2742,7 @@ AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip |
> sort], [0], [dnl
>   cookie=0xa, n_packets=3, n_bytes=102, dl_src=40:44:44:44:44:48
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> load:0x3->OXM_OF_MPLS_TC[[]],set_mpls_ttl(10),dec_mpls_ttl,
> CONTROLLER:65535
>   cookie=0xa, n_packets=3, n_bytes=102, dl_src=41:44:44:44:44:42
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> load:0x3->OXM_OF_MPLS_TC[[]],pop_mpls:0x0800,CONTROLLER:65535
>   cookie=0xa, n_packets=3, n_bytes=114, dl_src=40:44:44:44:44:44
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=126, dl_src=40:44:44:44:44:42
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=318, dl_src=40:44:44:44:44:42
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
>   cookie=0xa, n_packets=3, n_bytes=54, dl_src=40:44:44:44:44:43
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535
>   cookie=0xa, n_packets=3, n_bytes=54, mpls,dl_src=40:44:44:44:44:49
> actions=push_mpls:0x8848,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
>   cookie=0xb, n_packets=3, n_bytes=54, mpls,dl_src=50:55:55:55:55:55
> actions=load:0x3e8->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
> @@ -3509,26 +3507,36 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=58 in_port=1 (via action) data_len=58
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=122 in_port=1 (via action) data_len=122
> (unbuffered)
>  mpls,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:
> 54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
> -00000010  01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
> +00000010  01 40 45 00 00 68 00 00-00 00 40 06 f9 3c c0 a8
>  00000020  00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
> -00000030  00 00 50 00 00 00 2e 91-00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=58 in_port=1 (via action) data_len=58
> (unbuffered)
> +00000030  00 00 50 00 00 00 4a 4d-00 00 00 01 02 03 04 05
> +00000040  06 07 08 09 0a 0b 0c 0d-0e 0f 10 11 12 13 14 15
> +00000050  16 17 18 19 1a 1b 1c 1d-1e 1f 20 21 22 23 24 25
> +00000060  26 27 28 29 2a 2b 2c 2d-2e 2f 30 31 32 33 34 35
> +00000070  36 37 38 39 3a 3b 3c 3d-3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=122 in_port=1 (via action) data_len=122
> (unbuffered)
>  mpls,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:
> 54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
> -00000010  01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
> +00000010  01 40 45 00 00 68 00 00-00 00 40 06 f9 3c c0 a8
>  00000020  00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
> -00000030  00 00 50 00 00 00 2e 91-00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=58 in_port=1 (via action) data_len=58
> (unbuffered)
> +00000030  00 00 50 00 00 00 4a 4d-00 00 00 01 02 03 04 05
> +00000040  06 07 08 09 0a 0b 0c 0d-0e 0f 10 11 12 13 14 15
> +00000050  16 17 18 19 1a 1b 1c 1d-1e 1f 20 21 22 23 24 25
> +00000060  26 27 28 29 2a 2b 2c 2d-2e 2f 30 31 32 33 34 35
> +00000070  36 37 38 39 3a 3b 3c 3d-3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=122 in_port=1 (via action) data_len=122
> (unbuffered)
>  mpls,vlan_tci=0x0000,dl_src=40:44:44:44:00:00,dl_dst=50:
> 54:00:00:00:07,mpls_label=0,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 00 00 88 47 00 00
> -00000010  01 40 45 00 00 28 00 00-00 00 40 06 f9 7c c0 a8
> +00000010  01 40 45 00 00 68 00 00-00 00 40 06 f9 3c c0 a8
>  00000020  00 01 c0 a8 00 02 00 00-00 00 00 00 00 00 00 00
> -00000030  00 00 50 00 00 00 2e 91-00 00
> +00000030  00 00 50 00 00 00 4a 4d-00 00 00 01 02 03 04 05
> +00000040  06 07 08 09 0a 0b 0c 0d-0e 0f 10 11 12 13 14 15
> +00000050  16 17 18 19 1a 1b 1c 1d-1e 1f 20 21 22 23 24 25
> +00000060  26 27 28 29 2a 2b 2c 2d-2e 2f 30 31 32 33 34 35
> +00000070  36 37 38 39 3a 3b 3c 3d-3e 3f
>  ])
>
>  dnl In this test, we push an MPLS tag to an MPLS packet. The LSE should be
> @@ -3623,26 +3631,36 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3657,29 +3675,39 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3694,26 +3722,36 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3728,29 +3766,39 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3765,26 +3813,36 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3799,29 +3857,39 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3836,26 +3904,36 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3870,29 +3948,39 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=66 in_port=1 (via action) data_len=66
> (unbuffered)
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=130 in_port=1 (via action) data_len=130
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,dl_vlan1=88,dl_vlan_pcp1=7,dl_
> src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=
> 10,mpls_tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63
> -00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 28 00 00
> -00000020  00 00 40 06 f9 7c c0 a8-00 01 c0 a8 00 02 00 00
> -00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 2e 91
> -00000040  00 00
> +00000010  81 00 e0 58 88 47 00 00-a1 40 45 00 00 68 00 00
> +00000020  00 00 40 06 f9 3c c0 a8-00 01 c0 a8 00 02 00 00
> +00000030  00 00 00 00 00 00 00 00-00 00 50 00 00 00 4a 4d
> +00000040  00 00 00 01 02 03 04 05-06 07 08 09 0a 0b 0c 0d
> +00000050  0e 0f 10 11 12 13 14 15-16 17 18 19 1a 1b 1c 1d
> +00000060  1e 1f 20 21 22 23 24 25-26 27 28 29 2a 2b 2c 2d
> +00000070  2e 2f 30 31 32 33 34 35-36 37 38 39 3a 3b 3c 3d
> +00000080  3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3907,26 +3995,36 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT(ovs-ofctl)
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
>  ])
>
>  dnl Modified MPLS controller action.
> @@ -3941,40 +4039,50 @@ OVS_WAIT_UNTIL([test `grep OFPT_PACKET_IN
> ofctl_monitor.log | wc -l` -ge 3])
>  OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
>
>  AT_CHECK([ofctl_strip < ofctl_monitor.log], [0], [dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> -dnl
> -OFPT_PACKET_IN (OF1.2): total_len=62 in_port=1 (via action) data_len=62
> (unbuffered)
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
> +OFPT_PACKET_IN (OF1.2): total_len=126 in_port=1 (via action) data_len=126
> (unbuffered)
>  mpls,dl_vlan=99,dl_vlan_pcp=1,vlan_tci1=0x0000,dl_src=40:44:
> 44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_
> tc=0,mpls_ttl=64,mpls_bos=1
>  00000000  50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63
> -00000010  88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06
> -00000020  f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> -00000030  00 00 00 00 00 00 50 00-00 00 2e 91 00 00
> +00000010  88 47 00 00 a1 40 45 00-00 68 00 00 00 00 40 06
> +00000020  f9 3c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00
> +00000030  00 00 00 00 00 00 50 00-00 00 4a 4d 00 00 00 01
> +00000040  02 03 04 05 06 07 08 09-0a 0b 0c 0d 0e 0f 10 11
> +00000050  12 13 14 15 16 17 18 19-1a 1b 1c 1d 1e 1f 20 21
> +00000060  22 23 24 25 26 27 28 29-2a 2b 2c 2d 2e 2f 30 31
> +00000070  32 33 34 35 36 37 38 39-3a 3b 3c 3d 3e 3f
>  ])
>
>  AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl --protocols=OpenFlow12 dump-flows br0 | ofctl_strip |
> sort], [0], [dnl
> - cookie=0xa, n_packets=3, n_bytes=162, dl_src=40:44:44:44:54:50
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->
> vlan_pcp,CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=162, dl_src=40:44:44:44:54:52
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:
> 1->vlan_pcp,CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=162, dl_src=40:44:44:44:54:54
> actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=162, dl_src=40:44:44:44:54:56
> actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=174, dl_src=40:44:44:44:54:51
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->
> vlan_pcp,CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=174, dl_src=40:44:44:44:54:53
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:
> 1->vlan_pcp,CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=174, dl_src=40:44:44:44:54:55
> actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=174, dl_src=40:44:44:44:54:57
> actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=174, 
> vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:58
> actions=load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->
> vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
> - cookie=0xa, n_packets=3, n_bytes=174, 
> vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:59
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> set_field:1->vlan_pcp,load:0x63->OXM_OF_VLAN_VID[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=354, dl_src=40:44:44:44:54:50
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->
> vlan_pcp,CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=354, dl_src=40:44:44:44:54:52
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:
> 1->vlan_pcp,CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=354, dl_src=40:44:44:44:54:54
> actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=354, dl_src=40:44:44:44:54:56
> actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=366, dl_src=40:44:44:44:54:51
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->
> vlan_pcp,CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=366, dl_src=40:44:44:44:54:53
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:
> 1->vlan_pcp,CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=366, dl_src=40:44:44:44:54:55
> actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=366, dl_src=40:44:44:44:54:57
> actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_
> field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_
> LABEL[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=366, 
> vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:58
> actions=load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->
> vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535
> + cookie=0xa, n_packets=3, n_bytes=366, 
> vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:59
> actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],
> set_field:1->vlan_pcp,load:0x63->OXM_OF_VLAN_VID[[]],CONTROLLER:65535
>  OFPST_FLOW reply (OF1.2):
>  ])
>
> @@ -5736,10 +5844,10 @@ HEADER
>         out_ifindex=1003
>         out_format=0
>         hdr_prot=1
> -       pkt_len=46
> +       pkt_len=110
>         stripped=4
> -       hdr_len=42
> -       hdr=50-54-00-00-00-07-50-54-00-00-00-05-08-00-45-00-00-1C-
> 00-00-00-00-40-01-F9-8D-C0-A8-00-01-C0-A8-00-02-08-00-F7-FF-00-00-00-00
> +       hdr_len=106
> +       hdr=50-54-00-00-00-07-50-54-00-00-00-05-08-00-45-00-00-5C-
> 00-00-00-00-40-01-F9-4D-C0-A8-00-01-C0-A8-00-02-08-00-13-FC-
> 00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-
> 10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-
> 24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-
> 38-39-3A-3B-3C-3D-3E-3F
>  HEADER
>         dgramSeqNo=1
>         ds=127.0.0.1>2:1000
> @@ -5756,10 +5864,10 @@ HEADER
>         out_ifindex=1004
>         out_format=0
>         hdr_prot=1
> -       pkt_len=46
> +       pkt_len=110
>         stripped=4
> -       hdr_len=42
> -       hdr=50-54-00-00-00-05-50-54-00-00-00-07-08-00-45-00-00-1C-
> 00-00-00-00-40-01-F9-8D-C0-A8-00-02-C0-A8-00-01-00-00-FF-FF-00-00-00-00
> +       hdr_len=106
> +       hdr=50-54-00-00-00-05-50-54-00-00-00-07-08-00-45-00-00-5C-
> 00-00-00-00-40-01-F9-4D-C0-A8-00-02-C0-A8-00-01-00-00-1B-FC-
> 00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-
> 10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-
> 24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-
> 38-39-3A-3B-3C-3D-3E-3F
>  HEADER
>         dgramSeqNo=1
>         ds=127.0.0.1>2:1000
> @@ -5877,14 +5985,14 @@ IFCOUNTERS
>         ifspeed=100000000
>         direction=0
>         status=0
> -       in_octets=138
> +       in_octets=202
>         in_unicasts=3
>         in_multicasts=4294967295
>         in_broadcasts=4294967295
>         in_discards=4294967295
>         in_errors=4294967295
>         in_unknownprotos=4294967295
> -       out_octets=84
> +       out_octets=148
>         out_unicasts=2
>         out_multicasts=4294967295
>         out_broadcasts=4294967295
> @@ -5900,14 +6008,14 @@ IFCOUNTERS
>         ifspeed=100000000
>         direction=0
>         status=0
> -       in_octets=84
> +       in_octets=148
>         in_unicasts=2
>         in_multicasts=4294967295
>         in_broadcasts=4294967295
>         in_discards=4294967295
>         in_errors=4294967295
>         in_unknownprotos=4294967295
> -       out_octets=138
> +       out_octets=202
>         out_unicasts=3
>         out_multicasts=4294967295
>         out_broadcasts=4294967295
> @@ -5969,14 +6077,14 @@ IFCOUNTERS
>         ifspeed=100000000
>         direction=0
>         status=0
> -       in_octets=138
> +       in_octets=202
>         in_unicasts=3
>         in_multicasts=4294967295
>         in_broadcasts=4294967295
>         in_discards=4294967295
>         in_errors=4294967295
>         in_unknownprotos=4294967295
> -       out_octets=84
> +       out_octets=148
>         out_unicasts=2
>         out_multicasts=4294967295
>         out_broadcasts=4294967295
> @@ -5992,14 +6100,14 @@ IFCOUNTERS
>         ifspeed=100000000
>         direction=0
>         status=0
> -       in_octets=84
> +       in_octets=148
>         in_unicasts=2
>         in_multicasts=4294967295
>         in_broadcasts=4294967295
>         in_discards=4294967295
>         in_errors=4294967295
>         in_unknownprotos=4294967295
> -       out_octets=138
> +       out_octets=202
>         out_unicasts=3
>         out_multicasts=4294967295
>         out_broadcasts=4294967295
> @@ -6289,10 +6397,10 @@ HEADER
>         out_ifindex=1
>         out_format=2
>         hdr_prot=1
> -       pkt_len=46
> +       pkt_len=110
>         stripped=4
> -       hdr_len=42
> -       hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-01-00-1C-
> 00-00-00-00-80-01-12-CA-0A-0A-0A-02-0A-0A-0A-01-08-00-F7-FF-00-00-00-00
> +       hdr_len=106
> +       hdr=50-54-00-00-00-0A-50-54-00-00-00-09-08-00-45-01-00-5C-
> 00-00-00-00-80-01-12-8A-0A-0A-0A-02-0A-0A-0A-01-08-00-13-FC-
> 00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-
> 10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-
> 24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-
> 38-39-3A-3B-3C-3D-3E-3F
>  ])
>
>  OVS_VSWITCHD_STOP
> @@ -6391,10 +6499,10 @@ HEADER
>         out_ifindex=1
>         out_format=2
>         hdr_prot=1
> -       pkt_len=46
> +       pkt_len=110
>         stripped=4
> -       hdr_len=42
> -       hdr=50-54-00-00-00-0A-50-54-00-00-00-05-08-00-45-00-00-1C-
> 00-00-00-00-80-01-B6-8D-C0-A8-01-01-C0-A8-02-02-08-00-F7-FF-00-00-00-00
> +       hdr_len=106
> +       hdr=50-54-00-00-00-0A-50-54-00-00-00-05-08-00-45-00-00-5C-
> 00-00-00-00-80-01-B6-4D-C0-A8-01-01-C0-A8-02-02-08-00-13-FC-
> 00-00-00-00-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F-
> 10-11-12-13-14-15-16-17-18-19-1A-1B-1C-1D-1E-1F-20-21-22-23-
> 24-25-26-27-28-29-2A-2B-2C-2D-2E-2F-30-31-32-33-34-35-36-37-
> 38-39-3A-3B-3C-3D-3E-3F
>  ])
>
>  OVS_VSWITCHD_STOP
> @@ -6528,12 +6636,12 @@ m4_define([CHECK_NETFLOW_EXPIRATION],
>    OVS_VSWITCHD_STOP
>    OVS_APP_EXIT_AND_WAIT([test-netflow])
>
> -  AT_CHECK([test `grep "192.168.0.1 > 192.168.0.2, if 1 > 65535, 1 pkts,
> 42 bytes, ICMP 8:0" netflow.log | wc -l` -eq 1])
> +  AT_CHECK([test `grep "192.168.0.1 > 192.168.0.2, if 1 > 65535, 1 pkts,
> 106 bytes, ICMP 8:0" netflow.log | wc -l` -eq 1])
>
> -  AT_CHECK([test `grep "192.168.0.1 > 192.168.0.2, if 1 > 2, 1 pkts, 42
> bytes, ICMP 8:0" netflow.log | wc -l` -eq 1])
> +  AT_CHECK([test `grep "192.168.0.1 > 192.168.0.2, if 1 > 2, 1 pkts, 106
> bytes, ICMP 8:0" netflow.log | wc -l` -eq 1])
>
> -  combined=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 2 pkts, 84 bytes,
> ICMP 0:0" netflow.log | wc -l`
> -  separate=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 1 pkts, 42 bytes,
> ICMP 0:0" netflow.log | wc -l`
> +  combined=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 2 pkts, 212 bytes,
> ICMP 0:0" netflow.log | wc -l`
> +  separate=`grep "192.168.0.2 > 192.168.0.1, if 2 > 1, 1 pkts, 106 bytes,
> ICMP 0:0" netflow.log | wc -l`
>    AT_CHECK([test $separate = 2 || test $combined = 1], [0])])
>
>  AT_SETUP([ofproto-dpif - NetFlow flow expiration - IPv4 collector])
> @@ -6983,7 +7091,7 @@ AT_CHECK([ovs-appctl revalidator/purge], [0])
>  AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
>  AT_CHECK([strip_xids < stdout | sed -n 
> 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p'
> | sort], [0], [dnl
>   cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1,
> icmp actions=NORMAL
> - cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=540,
> idle_age=1, ip actions=NORMAL
> + cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=1180,
> idle_age=1, ip actions=NORMAL
>  ])
>  OVS_VSWITCHD_STOP
>  AT_CLEANUP
> @@ -7032,22 +7140,22 @@ send_packet () {
>
>  # OpenFlow 1.0, implicit reset_counts
>  send_packet
> -warp_and_dump_NXM   1 1 54 1
> +warp_and_dump_NXM   1 1 118 1
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow10 add-flow br0 $flow])
>  # add-flow resets duration and counts,
>  # but idle age is inherited from the old flow
>  warp_and_dump_NXM   1 0 0  2
>
>  send_packet
> -warp_and_dump_NXM   2 1 54 1
> +warp_and_dump_NXM   2 1 118 1
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow10 mod-flows br0 $flow])
>  # mod-flows resets hard_age, but not counts
>  # but duration and idle_age is inherited from the old flow
> -warp_and_dump_NXM   3 1 54  2 1
> +warp_and_dump_NXM   3 1 118  2 1
>
>  # OpenFlow 1.1, implicit reset_counts
>  send_packet
> -warp_and_dump_OF 11 4 2 108
> +warp_and_dump_OF 11 4 2 236
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow11 add-flow br0 $flow])
>  # add-flow resets duration and counts,
>  # but idle age is inherited from the old flow
> @@ -7055,32 +7163,32 @@ warp_and_dump_NXM   1 0 0  2
>  warp_and_dump_OF 11 2 0 0
>
>  send_packet
> -warp_and_dump_OF 11 3 1 54
> +warp_and_dump_OF 11 3 1 118
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow11 mod-flows br0 $flow])
>  # mod-flows resets hard_age, but not counts
>  # but duration and idle_age is inherited from the old flow
> -warp_and_dump_NXM   4 1 54  2 1
> -warp_and_dump_OF 11 5 1 54
> +warp_and_dump_NXM   4 1 118  2 1
> +warp_and_dump_OF 11 5 1 118
>
>  # OpenFlow 1.2, explicit reset_counts
>  send_packet
> -warp_and_dump_OF 12 6 2 108
> +warp_and_dump_OF 12 6 2 236
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 add-flow br0 $flow])
>  # add-flow without flags resets duration, but not counts,
>  # idle age is inherited from the old flow
> -warp_and_dump_NXM   1 2 108  2
> -warp_and_dump_OF 12 2 2 108
> +warp_and_dump_NXM   1 2 236  2
> +warp_and_dump_OF 12 2 2 236
>
>  send_packet
> -warp_and_dump_OF 12 3 3 162
> +warp_and_dump_OF 12 3 3 354
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 mod-flows br0 $flow])
>  # mod-flows without flags does not reset duration nor counts,
>  # idle age is inherited from the old flow
> -warp_and_dump_NXM   4 3 162  2 1
> -warp_and_dump_OF 12 5 3 162
> +warp_and_dump_NXM   4 3 354  2 1
> +warp_and_dump_OF 12 5 3 354
>
>  send_packet
> -warp_and_dump_OF 12 6 4 216
> +warp_and_dump_OF 12 6 4 472
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 add-flow br0
> reset_counts,$flow])
>  # add-flow with reset_counts resets both duration and counts,
>  # idle age is inherited from the old flow
> @@ -7088,7 +7196,7 @@ warp_and_dump_NXM   1 0 0  2
>  warp_and_dump_OF 12 2 0 0
>
>  send_packet
> -warp_and_dump_OF 12 3 1 54
> +warp_and_dump_OF 12 3 1 118
>  AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 mod-flows br0
> reset_counts,$flow])
>  # mod-flows with reset_counts resets counts, but not duration,
>  # idle age is inherited from the old flow
> @@ -7101,23 +7209,23 @@ flow_mods_reset_counts () {
>      AT_CHECK([ovs-ofctl add-flow br0 $flow])
>
>      send_packet
> -    warp_and_dump_OF $1 1 1 54 reset_counts
> +    warp_and_dump_OF $1 1 1 118 reset_counts
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 add-flow br0 $flow])
>      # add-flow without flags resets duration, but not counts,
>      # idle age is inherited from the old flow
> -    warp_and_dump_NXM   1 1 54  2
> -    warp_and_dump_OF $1 2 1 54
> +    warp_and_dump_NXM   1 1 118  2
> +    warp_and_dump_OF $1 2 1 118
>
>      send_packet
> -    warp_and_dump_OF $1 3 2 108
> +    warp_and_dump_OF $1 3 2 236
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 mod-flows br0 $flow])
>      # mod-flows without flags does not reset duration nor counts,
>      # idle age is inherited from the old flow
> -    warp_and_dump_NXM   4 2 108  2 1
> -    warp_and_dump_OF $1 5 2 108
> +    warp_and_dump_NXM   4 2 236  2 1
> +    warp_and_dump_OF $1 5 2 236
>
>      send_packet
> -    warp_and_dump_OF $1 6 3 162
> +    warp_and_dump_OF $1 6 3 354
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 add-flow br0
> reset_counts,$flow])
>      # add-flow with reset_counts resets both duration and counts,
>      # idle age is inherited from the old flow
> @@ -7125,7 +7233,7 @@ flow_mods_reset_counts () {
>      warp_and_dump_OF $1 2 0 0 reset_counts
>
>      send_packet
> -    warp_and_dump_OF $1 3 1 54 reset_counts
> +    warp_and_dump_OF $1 3 1 118 reset_counts
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 mod-flows br0
> reset_counts,$flow])
>      # mod-flows with reset_counts resets counts, but not duration,
>      # idle age is inherited from the old flow
> @@ -7134,21 +7242,21 @@ flow_mods_reset_counts () {
>
>      # Modify flow having reset_counts flag without reset_counts
>      send_packet
> -    warp_and_dump_OF $1 6 1 54 reset_counts
> +    warp_and_dump_OF $1 6 1 118 reset_counts
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 mod-flows br0 $flow])
> -    warp_and_dump_NXM   7 1 54  2 1
> -    warp_and_dump_OF $1 8 1 54 reset_counts
> +    warp_and_dump_NXM   7 1 118  2 1
> +    warp_and_dump_OF $1 8 1 118 reset_counts
>
>      # Add flow having reset_counts flag without reset_counts
>      send_packet
> -    warp_and_dump_OF $1 9 2 108 reset_counts
> +    warp_and_dump_OF $1 9 2 236 reset_counts
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 add-flow br0 $flow])
> -    warp_and_dump_NXM   1 2 108  2
> -    warp_and_dump_OF $1 2 2 108
> +    warp_and_dump_NXM   1 2 236  2
> +    warp_and_dump_OF $1 2 2 236
>
>      # Modify flow w/o reset_counts flag with a flow_mod having
> reset_counts
>      send_packet
> -    warp_and_dump_OF $1 3 3 162
> +    warp_and_dump_OF $1 3 3 354
>      AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 mod-flows br0
> reset_counts,$flow])
>      warp_and_dump_NXM   4 0 0  2 1
>      warp_and_dump_OF $1 5 0 0
> @@ -7180,7 +7288,7 @@ ovs-appctl time/warp 1000
>  AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout])
>  AT_CHECK([strip_xids < stdout | sed -n 
> 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p'
> | sort], [0], [dnl
>   cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1,
> icmp actions=NORMAL
> - cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=540,
> idle_age=1, ip actions=NORMAL
> + cookie=0x0, duration=0.0s, table=0, n_packets=10, n_bytes=1180,
> idle_age=1, ip actions=NORMAL
>  ])
>  OVS_VSWITCHD_STOP
>  AT_CLEANUP
> @@ -7529,22 +7637,22 @@ recirc_id(0),in_port(101),
> packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no),
>  ])
>
>  AT_CHECK([grep -e 'in_port(100).*packets:9' ovs-vswitchd.log | strip_ufid
> | filter_flow_dump], [0], [dnl
> -skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),
> ct_mark(0/0),ct_label(0/0),recirc_id(0),dp_hash(0/0),in_
> port(100),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:05/
> 00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:00:00)
> ,eth_type(0x0800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.
> 0.2/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> packets:9, bytes:378, used:0.0s, actions:101,3,2
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),
> ct_mark(0/0),ct_label(0/0),recirc_id(0),dp_hash(0/0),in_
> port(100),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:05/
> 00:00:00:00:00:00,dst=50:54:00:00:00:07/00:00:00:00:00:00)
> ,eth_type(0x0800),ipv4(src=192.168.0.1/0.0.0.0,dst=192.168.
> 0.2/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> packets:9, bytes:954, used:0.0s, actions:101,3,2
>  ])
>  AT_CHECK([grep -e 'in_port(101).*packets:4' ovs-vswitchd.log | strip_ufid
> | filter_flow_dump], [0], [dnl
> -skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),
> ct_mark(0/0),ct_label(0/0),recirc_id(0),dp_hash(0/0),in_
> port(101),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:07/
> 00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:00:00)
> ,eth_type(0x0800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.
> 0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> packets:4, bytes:168, used:0.0s, actions:100,2,3
> +skb_priority(0/0),skb_mark(0/0),ct_state(0/0),ct_zone(0/0),
> ct_mark(0/0),ct_label(0/0),recirc_id(0),dp_hash(0/0),in_
> port(101),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:07/
> 00:00:00:00:00:00,dst=50:54:00:00:00:05/00:00:00:00:00:00)
> ,eth_type(0x0800),ipv4(src=192.168.0.2/0.0.0.0,dst=192.168.
> 0.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no),icmp(type=8/0,code=0/0),
> packets:4, bytes:424, used:0.0s, actions:100,2,3
>  ])
>
>  AT_CHECK([ovs-ofctl dump-ports br0 pbr0], [0], [dnl
>  OFPST_PORT reply (xid=0x4): 1 ports
> -  port  1: rx pkts=5, bytes=210, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=10, bytes=420, drop=?, errs=?, coll=?
> +  port  1: rx pkts=5, bytes=530, drop=?, errs=?, frame=?, over=?, crc=?
> +           tx pkts=10, bytes=1060, drop=?, errs=?, coll=?
>  ])
>
>  AT_CHECK([ovs-ofctl dump-ports br1 pbr1], [0], [dnl
>  OFPST_PORT reply (xid=0x4): 1 ports
> -  port  1: rx pkts=10, bytes=420, drop=?, errs=?, frame=?, over=?, crc=?
> -           tx pkts=5, bytes=210, drop=?, errs=?, coll=?
> +  port  1: rx pkts=10, bytes=1060, drop=?, errs=?, frame=?, over=?, crc=?
> +           tx pkts=5, bytes=530, drop=?, errs=?, coll=?
>  ])
>
>  OVS_VSWITCHD_STOP
> @@ -8143,8 +8251,8 @@ skb_priority(0),skb_mark(0),
> ct_state(-new-est-rel-rpl-inv-trk-snat-dnat),ct_zone
>  skb_priority(0),skb_mark(0),ct_state(-new-est-rel-rpl-inv-
> trk-snat-dnat),ct_zone(0),ct_mark(0),ct_label(0),recirc_id(
> 0),dp_hash(0),in_port(1),packet_type(ns=0,id=0),eth(
> src=50:54:00:00:00:0b,dst=50:54:00:00:00:0c),eth_type(
> 0x0800),ipv4(src=10.0.0.4,dst=10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0),
> actions:drop
>  ])
>     AT_CHECK([strip_ufid < ovs-vswitchd.log | filter_flow_dump | grep
> 'packets:3'], [0], [dnl
> -skb_priority(0),skb_mark(0),ct_state(0/0xff),ct_zone(0),
> ct_mark(0),ct_label(0),recirc_id(0),dp_hash(0),in_port(1),
> packet_type(ns=0,id=0),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), packets:3,
> bytes:126, used:0.0s, actions:2
> -skb_priority(0),skb_mark(0),ct_state(0/0xff),ct_zone(0),
> ct_mark(0),ct_label(0),recirc_id(0),dp_hash(0),in_port(1),
> packet_type(ns=0,id=0),eth(src=50:54:00:00:00:0b,dst=50:
> 54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=
> 10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:3,
> bytes:126, used:0.0s, actions:drop
> +skb_priority(0),skb_mark(0),ct_state(0/0xff),ct_zone(0),
> ct_mark(0),ct_label(0),recirc_id(0),dp_hash(0),in_port(1),
> packet_type(ns=0,id=0),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), packets:3,
> bytes:318, used:0.0s, actions:2
> +skb_priority(0),skb_mark(0),ct_state(0/0xff),ct_zone(0),
> ct_mark(0),ct_label(0),recirc_id(0),dp_hash(0),in_port(1),
> packet_type(ns=0,id=0),eth(src=50:54:00:00:00:0b,dst=50:
> 54:00:00:00:0c),eth_type(0x0800),ipv4(src=10.0.0.4,dst=
> 10.0.0.3,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:3,
> bytes:318, used:0.0s, actions:drop
>  ])
>     OVS_VSWITCHD_STOP
>     AT_CLEANUP])
> @@ -8718,8 +8826,8 @@ recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_
> type(0x86dd),ipv6(proto=58,fr
>  ])
>
>  AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
> - n_packets=2, n_bytes=124, icmp6,icmp_type=128 actions=output:2
> - n_packets=2, n_bytes=124, icmp6,icmp_type=129 actions=output:3
> + n_packets=2, n_bytes=252, icmp6,icmp_type=128 actions=output:2
> + n_packets=2, n_bytes=252, icmp6,icmp_type=129 actions=output:3
>  NXST_FLOW reply:
>  ])
>
> @@ -8999,11 +9107,11 @@ 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=42
> reg0=0x1,reg1=0x4d2,reg2=0x1,reg3=0x1,reg4=0x1,in_port=1 (via action)
> data_len=42 (unbuffered)
> -udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:
> 54:00:00:00:0a,nw_src=10.1.1.1,nw_dst=10.1.1.2,nw_tos=0,nw_
> ecn=0,nw_ttl=64,tp_src=1,tp_dst=2 udp_csum:e9d6
> +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)
> +udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:
> 54:00:00:00:0a,nw_src=10.1.1.1,nw_dst=10.1.1.2,nw_tos=0,nw_
> ecn=0,nw_ttl=64,tp_src=1,tp_dst=2 udp_csum:553
>  dnl
> -NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x0 total_len=42
> ct_state=est|rpl|trk,ct_zone=1,ct_mark=0x1,ct_label=
> 0x4d2000000000000000000000000,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,reg0=0x1,
> reg1=0x4d2,reg2=0x1,reg3=0x2,reg4=0x1,in_port=2 (via action) data_len=42
> (unbuffered)
> -udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:
> 54:00:00:00:09,nw_src=10.1.1.2,nw_dst=10.1.1.1,nw_tos=0,nw_
> ecn=0,nw_ttl=64,tp_src=2,tp_dst=1 udp_csum:e9d6
> +NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x0 total_len=106
> ct_state=est|rpl|trk,ct_zone=1,ct_mark=0x1,ct_label=
> 0x4d2000000000000000000000000,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,reg0=0x1,
> reg1=0x4d2,reg2=0x1,reg3=0x2,reg4=0x1,in_port=2 (via action) data_len=106
> (unbuffered)
> +udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:
> 54:00:00:00:09,nw_src=10.1.1.2,nw_dst=10.1.1.1,nw_tos=0,nw_
> ecn=0,nw_ttl=64,tp_src=2,tp_dst=1 udp_csum:553
>  ])
>
>  AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in
> --detach --no-chdir --pidfile ...
>
> [Message clipped]
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to