From patchwork Thu Jan 18 22:45:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 863199 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zMzYx3ghMz9sBd for ; Fri, 19 Jan 2018 09:45:25 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 0B884E80; Thu, 18 Jan 2018 22:45:24 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 5597BE42 for ; Thu, 18 Jan 2018 22:45:23 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id E8CAB51E for ; Thu, 18 Jan 2018 22:45:21 +0000 (UTC) X-Originating-IP: 208.91.3.26 Received: from sigabrt.benpfaff.org (unknown [208.91.3.26]) (Authenticated sender: blp@ovn.org) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 52A2AFB87D; Thu, 18 Jan 2018 23:45:18 +0100 (CET) From: Ben Pfaff To: dev@openvswitch.org Date: Thu, 18 Jan 2018 14:45:12 -0800 Message-Id: <20180118224515.4208-1-blp@ovn.org> X-Mailer: git-send-email 2.10.2 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH 1/4] ofproto-dpif-trace: Generalize syntax for ofproto/trace. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org ofproto/trace takes a bunch of options that have weird placement and syntax. This commit changes the syntax so that the options can be placed anywhere and consistently use a double-dash option prefix. For compatibility, the previous syntax is also supported. An upcoming commit will add new options and this change allows that upcoming commit to be less confusing. Signed-off-by: Ben Pfaff Tested-by: Yifeng Sun Reviewed-by: Yifeng Sun --- ofproto/ofproto-dpif-trace.c | 194 +++++++++++++++++++++---------------------- ofproto/ofproto-unixctl.man | 42 +++++----- tests/ofproto-dpif.at | 2 +- 3 files changed, 120 insertions(+), 118 deletions(-) diff --git a/ofproto/ofproto-dpif-trace.c b/ofproto/ofproto-dpif-trace.c index 4999d1d6f326..75730155080c 100644 --- a/ofproto/ofproto-dpif-trace.c +++ b/ofproto/ofproto-dpif-trace.c @@ -183,41 +183,11 @@ oftrace_node_print_details(struct ds *output, } } -static char * OVS_WARN_UNUSED_RESULT -parse_oftrace_options(int argc, const char *argv[], - struct ovs_list *next_ct_states) -{ - int k; - struct ds ds = DS_EMPTY_INITIALIZER; - - for (k = 0; k < argc; k++) { - if (!strncmp(argv[k], "--ct-next", 9)) { - if (k + 1 > argc) { - return xasprintf("Missing argument for option %s", argv[k]); - } - - uint32_t ct_state; - if (!parse_ct_state(argv[++k], 0, &ct_state, &ds)) { - return ds_steal_cstr(&ds); - } - if (!validate_ct_state(ct_state, &ds)) { - return ds_steal_cstr(&ds); - } - oftrace_push_ct_state(next_ct_states, ct_state); - } else { - return xasprintf("Invalid option %s", argv[k]); - } - } - - ds_destroy(&ds); - return NULL; -} - /* Parses the 'argc' elements of 'argv', ignoring argv[0]. The following * forms are supported: * - * - [dpname] odp_flow [OPTIONS] [-generate | packet] - * - bridge br_flow [OPTIONS] [-generate | packet] + * - [options] [dpname] odp_flow [packet] + * - [options] bridge br_flow [packet] * * On success, initializes '*ofprotop' and 'flow' and returns NULL. On failure * returns a nonnull malloced error message. */ @@ -225,67 +195,109 @@ static char * OVS_WARN_UNUSED_RESULT parse_flow_and_packet(int argc, const char *argv[], struct ofproto_dpif **ofprotop, struct flow *flow, struct dp_packet **packetp, - struct ovs_list *next_ct_states) + struct ovs_list *next_ct_states, + bool *consistent) { const struct dpif_backer *backer = NULL; const char *error = NULL; char *m_err = NULL; struct simap port_names = SIMAP_INITIALIZER(&port_names); - struct dp_packet *packet; + struct dp_packet *packet = NULL; struct ofpbuf odp_key; struct ofpbuf odp_mask; - int first_option; ofpbuf_init(&odp_key, 0); ofpbuf_init(&odp_mask, 0); - /* Handle "-generate" or a hex string as the last argument. */ - if (!strcmp(argv[argc - 1], "-generate")) { - packet = dp_packet_new(0); - argc--; - } else { - error = eth_from_hex(argv[argc - 1], &packet); - if (!error) { - argc--; - } else if (argc == 4) { - /* The 3-argument form must end in "-generate' or a hex string. */ - goto exit; - } - error = NULL; + const char *args[3]; + int n_args = 0; + bool generate_packet = false; + if (consistent) { + *consistent = false; } + for (int i = 1; i < argc; i++) { + const char *arg = argv[i]; + if (!strcmp(arg, "-generate") || !strcmp(arg, "--generate")) { + generate_packet = true; + } else if (consistent + && (!strcmp(arg, "-consistent") || + !strcmp(arg, "--consistent"))) { + *consistent = true; + } else if (!strcmp(arg, "--ct-next")) { + if (i + 1 >= argc) { + m_err = xasprintf("Missing argument for option %s", arg); + goto exit; + } - /* Parse options. */ - if (argc >= 4) { - if (!strncmp(argv[2], "--", 2)) { - first_option = 2; - } else if (!strncmp(argv[3], "--", 2)) { - first_option = 3; - } else { - error = "Syntax error: invalid option"; + uint32_t ct_state; + struct ds ds = DS_EMPTY_INITIALIZER; + if (!parse_ct_state(argv[++i], 0, &ct_state, &ds) + || !validate_ct_state(ct_state, &ds)) { + m_err = ds_steal_cstr(&ds); + goto exit; + } + oftrace_push_ct_state(next_ct_states, ct_state); + } else if (arg[0] == '-') { + m_err = xasprintf("%s: unknown option", arg); + goto exit; + } else if (n_args >= ARRAY_SIZE(args)) { + m_err = xstrdup("too many arguments"); goto exit; + } else { + args[n_args++] = arg; } + } - m_err = parse_oftrace_options(argc - first_option, argv + first_option, - next_ct_states); - if (m_err) { + /* 'args' must now have one of the following forms: + * + * odp_flow + * dpname odp_flow + * bridge br_flow + * odp_flow packet + * dpname odp_flow packet + * bridge br_flow packet + * + * Parse the packet if it's there. Note that: + * + * - If there is one argument, there cannot be a packet. + * + * - If there are three arguments, there must be a packet. + * + * If there is a packet, we strip it off. + */ + if (!generate_packet && n_args > 1) { + error = eth_from_hex(args[n_args - 1], &packet); + if (!error) { + n_args--; + } else if (n_args > 2) { + /* The 3-argument form must end in a hex string. */ goto exit; } - argc = first_option; + error = NULL; } - /* odp_flow can have its in_port specified as a name instead of port no. - * We do not yet know whether a given flow is a odp_flow or a br_flow. - * But, to know whether a flow is odp_flow through odp_flow_from_string(), - * we need to create a simap of name to port no. */ - if (argc == 3) { + /* We stripped off the packet if there was one, so 'args' now has one of + * the following forms: + * + * odp_flow + * dpname odp_flow + * bridge br_flow + * + * Before we parse the flow, try to identify the backer, then use that + * backer to assemble a collection of port names. The port names are + * useful so that the user can specify ports by name instead of number in + * the flow. */ + if (n_args == 2) { + /* args[0] might be dpname. */ const char *dp_type; - if (!strncmp(argv[1], "ovs-", 4)) { - dp_type = argv[1] + 4; + if (!strncmp(args[0], "ovs-", 4)) { + dp_type = args[0] + 4; } else { - dp_type = argv[1]; + dp_type = args[0]; } backer = shash_find_data(&all_dpif_backers, dp_type); - } else if (argc == 2) { + } else if (n_args == 1) { + /* Pick default backer. */ struct shash_node *node; if (shash_count(&all_dpif_backers) == 1) { node = shash_first(&all_dpif_backers); @@ -308,7 +320,7 @@ parse_flow_and_packet(int argc, const char *argv[], * bridge is specified. If function odp_flow_key_from_string() * returns 0, the flow is a odp_flow. If function * parse_ofp_exact_flow() returns NULL, the flow is a br_flow. */ - if (!odp_flow_from_string(argv[argc - 1], &port_names, + if (!odp_flow_from_string(args[n_args - 1], &port_names, &odp_key, &odp_mask)) { if (!backer) { error = "Cannot find the datapath"; @@ -349,14 +361,14 @@ parse_flow_and_packet(int argc, const char *argv[], } else { char *err; - if (argc != 3) { + if (n_args != 2) { error = "Must specify bridge name"; goto exit; } - *ofprotop = ofproto_dpif_lookup_by_name(argv[1]); + *ofprotop = ofproto_dpif_lookup_by_name(args[0]); if (!*ofprotop) { - error = "Unknown bridge name"; + m_err = xasprintf("%s: unknown bridge", args[0]); goto exit; } @@ -368,7 +380,7 @@ parse_flow_and_packet(int argc, const char *argv[], } err = parse_ofp_exact_flow(flow, NULL, ofproto_get_tun_tab(&(*ofprotop)->up), - argv[argc - 1], &map); + args[n_args - 1], &map); ofputil_port_map_destroy(&map); if (err) { m_err = xasprintf("Bad openflow flow syntax: %s", err); @@ -377,16 +389,15 @@ parse_flow_and_packet(int argc, const char *argv[], } } - /* Generate a packet, if requested. */ - if (packet) { - if (!dp_packet_size(packet)) { - flow_compose(packet, flow, 0); - } else { - /* Use the metadata from the flow and the packet argument - * to reconstruct the flow. */ - pkt_metadata_from_flow(&packet->md, flow); - flow_extract(packet, flow); - } + if (generate_packet) { + /* Generate a packet, as requested. */ + packet = dp_packet_new(0); + flow_compose(packet, flow, 0); + } else if (packet) { + /* Use the metadata from the flow and the packet argument to + * reconstruct the flow. */ + pkt_metadata_from_flow(&packet->md, flow); + flow_extract(packet, flow); } exit: @@ -423,7 +434,7 @@ ofproto_unixctl_trace(struct unixctl_conn *conn, int argc, const char *argv[], struct ovs_list next_ct_states = OVS_LIST_INITIALIZER(&next_ct_states); error = parse_flow_and_packet(argc, argv, &ofproto, &flow, &packet, - &next_ct_states); + &next_ct_states, NULL); if (!error) { struct ds result; @@ -471,19 +482,8 @@ ofproto_unixctl_trace_actions(struct unixctl_conn *conn, int argc, goto exit; } - /* OpenFlow 1.1 and later suggest that the switch enforces certain forms of - * consistency between the flow and the actions. With -consistent, we - * enforce consistency even for a flow supported in OpenFlow 1.0. */ - if (!strcmp(argv[1], "-consistent")) { - enforce_consistency = true; - argv++; - argc--; - } else { - enforce_consistency = false; - } - error = parse_flow_and_packet(argc, argv, &ofproto, &match.flow, &packet, - &next_ct_states); + &next_ct_states, &enforce_consistency); if (error) { unixctl_command_reply_error(conn, error); free(error); diff --git a/ofproto/ofproto-unixctl.man b/ofproto/ofproto-unixctl.man index ee1f81fceaec..8f1d12c654ab 100644 --- a/ofproto/ofproto-unixctl.man +++ b/ofproto/ofproto-unixctl.man @@ -6,10 +6,10 @@ These commands manage the core OpenFlow switch implementation (called Lists the names of the running ofproto instances. These are the names that may be used on \fBofproto/trace\fR. . -.IP "\fBofproto/trace\fR [\fIdpname\fR] \fIodp_flow\fR [\fIOPTIONS\fR] [\fB\-generate \fR| \fIpacket\fR]" -.IQ "\fBofproto/trace\fR \fIbridge\fR \fIbr_flow\fR [\fIOPTIONS\fR] [\fB\-generate \fR| \fIpacket\fR]" -.IQ "\fBofproto/trace\-packet\-out\fR [\fB\-consistent\fR] [\fIdpname\fR] \fIodp_flow\fR [\fIOPTIONS\fR] [\fB\-generate \fR| \fIpacket\fR] \fIactions\fR" -.IQ "\fBofproto/trace\-packet\-out\fR [\fB\-consistent\fR] \fIbridge\fR \fIbr_flow\fR [\fIOPTIONS\fR] [\fB\-generate \fR| \fIpacket\fR] \fIactions\fR" +.IP "\fBofproto/trace\fR [\fIoptions\fR] [\fIdpname\fR] \fIodp_flow\fR [\fIpacket\fR] +.IQ "\fBofproto/trace\fR [\fIoptions\fR] \fIbridge\fR \fIbr_flow\fR [\fIpacket\fR]] +.IQ "\fBofproto/trace\-packet\-out\fR [\fIoptions\fR] [\fIdpname\fR] \fIodp_flow\fR [\fIpacket\fR] \fIactions\fR" +.IQ "\fBofproto/trace\-packet\-out\fR [\fIoptions\fR \fIbridge\fR \fIbr_flow\fR [\fIpacket\fR] \fIactions\fR" Traces the path of an imaginary packet through \fIswitch\fR and reports the path that it took. The initial treatment of the packet varies based on the command: @@ -49,7 +49,21 @@ wildcards.) \fIbridge\fR names of the bridge through which . .IP .RS -\fBofproto/trace\fR supports the following options: +These commands support the following options: +.IP \fB\-\-generate\fR +Generate a packet from the flow (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 +specified packet. (An example of an inconsistency is attempting to +strip the VLAN tag from a packet that does not have a VLAN tag.) Open +vSwitch ignores most forms of inconsistency in OpenFlow 1.0 and +rejects inconsistencies in later versions of OpenFlow. The option is +necessary because the command does not ordinarily imply a particular +OpenFlow version. One exception is that, when \fIactions\fR includes +an action that only OpenFlow 1.1 and later supports (such as +\fBpush_vlan\fR), \fB\-\-consistent\fR is automatically enabled. . .IP "--ct-next \fIflags\fR" When the traced flow triggers conntrack actions, \fBofproto/trace\fR @@ -124,12 +138,12 @@ If you wish to include a packet as part of a trace operation, there are two ways to do it: . .RS -.IP \fB\-generate\fR +.IP \fB\-\-generate\fR This option, added to one of the ways to specify a flow already described, causes Open vSwitch to internally generate a packet with the flow described and then to use that packet. If your goal is to -execute side effects, then \fB\-generate\fR is the easiest way to do -it, but \fB\-generate\fR is not a good way to fill in incomplete +execute side effects, then \fB\-\-generate\fR is the easiest way to do +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. @@ -169,18 +183,6 @@ The in_port value is kernel datapath port number for the first format and OpenFlow port number for the second format. The numbering of these two types of port usually differs and there is no relationship. . -.IP -\fBofproto\-trace\-packet\-out\fR accepts an additional -\fB\-consistent\fR option. With this option specified, the command -rejects \fIactions\fR that are inconsistent with the specified packet. -(An example of an inconsistency is attempting to strip the VLAN tag -from a packet that does not have a VLAN tag.) Open vSwitch ignores -most forms of inconsistency in OpenFlow 1.0 and rejects -inconsistencies in later versions of OpenFlow. The option is -necessary because the command does not ordinarily imply a particular -OpenFlow version. One exception is that, when \fIactions\fR includes -an action that only OpenFlow 1.1 and later supports (such as -\fBpush_vlan\fR), \fB\-consistent\fR is automatically enabled. . .IP "Usage examples:" .RS 4 diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index a582aaf391b1..cbe0d91352fa 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -5302,7 +5302,7 @@ m4_foreach( [AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$br_flow" option], [2], [], [stderr]) AT_CHECK([tail -2 stderr], [0], [dnl -Unknown bridge name +ovs-dummy: unknown bridge ovs-appctl: ovs-vswitchd: server returned an error ])]) From patchwork Thu Jan 18 22:45:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 863200 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zMzZh6kp7z9sBd for ; Fri, 19 Jan 2018 09:46:04 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 4FF2FF14; Thu, 18 Jan 2018 22:45:27 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id F3650E42 for ; Thu, 18 Jan 2018 22:45:23 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 62E7A51E for ; Thu, 18 Jan 2018 22:45:23 +0000 (UTC) X-Originating-IP: 208.91.3.26 Received: from sigabrt.benpfaff.org (unknown [208.91.3.26]) (Authenticated sender: blp@ovn.org) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 3714BFB89F; Thu, 18 Jan 2018 23:45:20 +0100 (CET) From: Ben Pfaff To: dev@openvswitch.org Date: Thu, 18 Jan 2018 14:45:13 -0800 Message-Id: <20180118224515.4208-2-blp@ovn.org> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20180118224515.4208-1-blp@ovn.org> References: <20180118224515.4208-1-blp@ovn.org> X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH 2/4] flow: Simplify flow_compose_l4(). X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Each of the cases in flow_compose_l4() separately tracked the number of bytes of L4 data added to the packet. This commit makes the function do that in a single place without per-protocol bookkeeping. Signed-off-by: Ben Pfaff Reviewed-by: Yifeng Sun --- lib/flow.c | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/lib/flow.c b/lib/flow.c index f9d7c2a74007..04a73fd4ed5a 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -2695,53 +2695,35 @@ flow_set_mpls_lse(struct flow *flow, int idx, ovs_be32 lse) static size_t flow_compose_l4(struct dp_packet *p, const struct flow *flow) { - size_t l4_len = 0; + size_t orig_len = dp_packet_size(p); if (!(flow->nw_frag & FLOW_NW_FRAG_ANY) || !(flow->nw_frag & FLOW_NW_FRAG_LATER)) { if (flow->nw_proto == IPPROTO_TCP) { - struct tcp_header *tcp; - - l4_len = sizeof *tcp; - tcp = dp_packet_put_zeros(p, l4_len); + struct tcp_header *tcp = dp_packet_put_zeros(p, sizeof *tcp); tcp->tcp_src = flow->tp_src; tcp->tcp_dst = flow->tp_dst; tcp->tcp_ctl = TCP_CTL(ntohs(flow->tcp_flags), 5); } else if (flow->nw_proto == IPPROTO_UDP) { - struct udp_header *udp; - - l4_len = sizeof *udp; - udp = dp_packet_put_zeros(p, l4_len); + 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(l4_len); + udp->udp_len = htons(sizeof *udp); } else if (flow->nw_proto == IPPROTO_SCTP) { - struct sctp_header *sctp; - - l4_len = sizeof *sctp; - sctp = dp_packet_put_zeros(p, l4_len); + struct sctp_header *sctp = dp_packet_put_zeros(p, sizeof *sctp); sctp->sctp_src = flow->tp_src; sctp->sctp_dst = flow->tp_dst; } else if (flow->nw_proto == IPPROTO_ICMP) { - struct icmp_header *icmp; - - l4_len = sizeof *icmp; - icmp = dp_packet_put_zeros(p, l4_len); + 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); } else if (flow->nw_proto == IPPROTO_IGMP) { - struct igmp_header *igmp; - - l4_len = sizeof *igmp; - igmp = dp_packet_put_zeros(p, l4_len); + struct igmp_header *igmp = dp_packet_put_zeros(p, sizeof *igmp); igmp->igmp_type = ntohs(flow->tp_src); igmp->igmp_code = ntohs(flow->tp_dst); put_16aligned_be32(&igmp->group, flow->igmp_group_ip4); } else if (flow->nw_proto == IPPROTO_ICMPV6) { - struct icmp6_hdr *icmp; - - l4_len = sizeof *icmp; - icmp = dp_packet_put_zeros(p, l4_len); + struct icmp6_hdr *icmp = dp_packet_put_zeros(p, sizeof *icmp); icmp->icmp6_type = ntohs(flow->tp_src); icmp->icmp6_code = ntohs(flow->tp_dst); @@ -2751,19 +2733,16 @@ flow_compose_l4(struct dp_packet *p, const struct flow *flow) struct in6_addr *nd_target; struct ovs_nd_lla_opt *lla_opt; - l4_len += sizeof *nd_target; nd_target = dp_packet_put_zeros(p, sizeof *nd_target); *nd_target = flow->nd_target; if (!eth_addr_is_zero(flow->arp_sha)) { - l4_len += 8; lla_opt = dp_packet_put_zeros(p, 8); lla_opt->len = 1; lla_opt->type = ND_OPT_SOURCE_LINKADDR; lla_opt->mac = flow->arp_sha; } if (!eth_addr_is_zero(flow->arp_tha)) { - l4_len += 8; lla_opt = dp_packet_put_zeros(p, 8); lla_opt->len = 1; lla_opt->type = ND_OPT_TARGET_LINKADDR; @@ -2772,7 +2751,8 @@ flow_compose_l4(struct dp_packet *p, const struct flow *flow) } } } - return l4_len; + + return dp_packet_size(p) - orig_len; } static void From patchwork Thu Jan 18 22:45:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 863202 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zMzbl1rnSz9sBd for ; Fri, 19 Jan 2018 09:46:59 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 6F8D8FE6; Thu, 18 Jan 2018 22:45:37 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 08906FE4 for ; Thu, 18 Jan 2018 22:45:36 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id E650751E for ; Thu, 18 Jan 2018 22:45:26 +0000 (UTC) X-Originating-IP: 208.91.3.26 Received: from sigabrt.benpfaff.org (unknown [208.91.3.26]) (Authenticated sender: blp@ovn.org) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id B54AFFB883; Thu, 18 Jan 2018 23:45:22 +0100 (CET) From: Ben Pfaff To: dev@openvswitch.org Date: Thu, 18 Jan 2018 14:45:14 -0800 Message-Id: <20180118224515.4208-3-blp@ovn.org> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20180118224515.4208-1-blp@ovn.org> References: <20180118224515.4208-1-blp@ovn.org> X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,LOTS_OF_MONEY, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff , Brad Cowie Subject: [ovs-dev] [PATCH 3/4] flow: Add some L7 payload data to most L4 protocols that accept it. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org 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 Signed-off-by: Ben Pfaff --- 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 -01005e5e0101aa55aa550001810006bd08004500001c00000000401180710a000001ef5e010100001f400008e63d +01005e5e0101aa55aa550001810006bd08004500005c00000000401180310a000001ef5e010100001f40004801ba000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f ]) # 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 2> ofctl_monitor.log]) @@ -9020,11 +9128,11 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We should see both packets AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x0 total_len=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=3,tp_dst=2 udp_csum:e9d4 +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=3,tp_dst=2 udp_csum:551 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=3,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=3 udp_csum:e9d4 +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=3,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=3 udp_csum:551 ]) OVS_VSWITCHD_STOP @@ -9072,11 +9180,11 @@ dnl Check this output. We only see the latter two packets, not the first. dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 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): cookie=0x0 total_len=106 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=1 cookie=0x0 total_len=42 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=1 cookie=0x0 total_len=106 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 2> ofctl_monitor.log]) @@ -9094,11 +9202,11 @@ dnl Check this output. We should see both packets dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 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=3,tp_dst=4 udp_csum:e9d2 +NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 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=3,tp_dst=4 udp_csum:54f dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 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=4,tp_dst=3 udp_csum:e9d2 +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 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=4,tp_dst=3 udp_csum:54f ]) dnl @@ -9153,10 +9261,10 @@ dnl Check this output. We only see the latter two packets, not the first. dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=62 in_port=1 (via action) data_len=62 (unbuffered) -udp6,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,ipv6_src=2001:db8::1,ipv6_dst=2001:db8::2,ipv6_label=0x00000,nw_tos=112,nw_ecn=0,nw_ttl=128,tp_src=1,tp_dst=2 udp_csum:a466 -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=62 ct_state=est|rpl|trk,ct_ipv6_src=2001:db8::1,ct_ipv6_dst=2001:db8::2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ipv6,in_port=2 (via action) data_len=62 (unbuffered) -udp6,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:54:00:00:00:09,ipv6_src=2001:db8::2,ipv6_dst=2001:db8::1,ipv6_label=0x00000,nw_tos=112,nw_ecn=0,nw_ttl=128,tp_src=2,tp_dst=1 udp_csum:a466 +NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=126 in_port=1 (via action) data_len=126 (unbuffered) +udp6,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,ipv6_src=2001:db8::1,ipv6_dst=2001:db8::2,ipv6_label=0x00000,nw_tos=112,nw_ecn=0,nw_ttl=128,tp_src=1,tp_dst=2 udp_csum:bfe2 +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=126 ct_state=est|rpl|trk,ct_ipv6_src=2001:db8::1,ct_ipv6_dst=2001:db8::2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ipv6,in_port=2 (via action) data_len=126 (unbuffered) +udp6,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:54:00:00:00:09,ipv6_src=2001:db8::2,ipv6_dst=2001:db8::1,ipv6_label=0x00000,nw_tos=112,nw_ecn=0,nw_ttl=128,tp_src=2,tp_dst=1 udp_csum:bfe2 ]) OVS_VSWITCHD_STOP @@ -9266,8 +9374,8 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. Only one reply must be there AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) +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 dnl OFPT_ECHO_REQUEST (xid=0x0): 0 bytes of payload ]) @@ -9356,17 +9464,17 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. We only see the latter two packets (for each zone), not the first. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 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): cookie=0x0 total_len=106 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=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) +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 dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 in_port=3 (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): cookie=0x0 total_len=106 in_port=3 (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=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_zone=1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=4 (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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_zone=1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=4 (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 ]) OVS_VSWITCHD_STOP @@ -9412,11 +9520,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=1 cookie=0x0 total_len=42 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=1 cookie=0x0 total_len=106 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=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) +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 ]) OVS_VSWITCHD_STOP @@ -9514,20 +9622,20 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 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): cookie=0x0 total_len=106 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): cookie=0x0 total_len=42 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=3,tp_dst=4 udp_csum:e9d2 +NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 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=3,tp_dst=4 udp_csum:54f dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 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=5,tp_dst=6 udp_csum:e9ce +NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=106 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=5,tp_dst=6 udp_csum:54b dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_mark=0x1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_mark=0x1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) +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 dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_mark=0x3,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=3,ct_tp_dst=4,ip,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=4,tp_dst=3 udp_csum:e9d2 +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_mark=0x3,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=3,ct_tp_dst=4,ip,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=4,tp_dst=3 udp_csum:54f ]) OVS_VSWITCHD_STOP @@ -9571,11 +9679,11 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) dnl Check this output. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_label=0x1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_label=0x1,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) +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 dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_label=0x2,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=3,ct_tp_dst=4,ip,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=4,tp_dst=3 udp_csum:e9d2 +NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_label=0x2,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=3,ct_tp_dst=4,ip,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=4,tp_dst=3 udp_csum:54f ]) OVS_VSWITCHD_STOP @@ -9847,17 +9955,17 @@ dnl Check this output. We only see the latter two packets, not the first. dnl Note that the first packet doesn't have the ct_state bits set. This dnl happens because the ct_state field is available only after recirc. AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=42 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): cookie=0x0 total_len=106 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): cookie=0x0 total_len=42 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): cookie=0x0 total_len=106 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=1 cookie=0x0 total_len=42 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=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=1 cookie=0x0 total_len=106 ct_state=est|rpl|trk,ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17,ct_tp_src=1,ct_tp_dst=2,ip,in_port=2 (via action) data_len=106 (unbuffered) +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 dnl -NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=42 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=1 cookie=0x0 total_len=106 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 ]) OVS_VSWITCHD_STOP AT_CLEANUP diff --git a/tests/pmd.at b/tests/pmd.at index fcb007ce04f4..23b5a713b9a7 100644 --- a/tests/pmd.at +++ b/tests/pmd.at @@ -235,8 +235,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) AT_CHECK([ovs-vsctl set interface p1 options:n_rxq=4]) @@ -257,8 +257,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) dnl Check resetting to default number of rx queues after removal from the db. @@ -308,10 +308,10 @@ AT_CHECK([ovs-appctl dpctl/dump-flows | flow_dump_prepend_pmd], [0], [dnl ]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) OVS_VSWITCHD_STOP @@ -343,8 +343,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log]) @@ -355,8 +355,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=2 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=2 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) AT_CHECK([ovs-vsctl set Interface p2 options:numa_id=1]) @@ -376,8 +376,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log]) @@ -388,8 +388,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=2 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=2 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) OVS_VSWITCHD_STOP @@ -417,8 +417,8 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p2 --qid 0 'in_port(1),eth(src=50:54:0 OVS_WAIT_UNTIL([test `ovs-pcap br0.pcap | wc -l` -ge 2]) AT_CHECK([ovs-pcap br0.pcap], [0], [dnl -50540000000a50540000000908004500001c00000000400166df0a0000020a0000010800f7ff00000000 -50540000000a50540000000908004500001c00000000400166df0a0000020a0000010800f7ff00000000 +50540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +50540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f ]) AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=2]) @@ -436,10 +436,10 @@ AT_CHECK([ovs-appctl netdev-dummy/receive p2 --qid 0 'in_port(1),eth(src=50:54:0 OVS_WAIT_UNTIL([test `ovs-pcap br0.pcap | wc -l` -ge 4]) AT_CHECK([ovs-pcap br0.pcap], [0], [dnl -50540000000a50540000000908004500001c00000000400166df0a0000020a0000010800f7ff00000000 -50540000000a50540000000908004500001c00000000400166df0a0000020a0000010800f7ff00000000 -50540000000a50540000000908004500001c00000000400166df0a0000020a0000010800f7ff00000000 -50540000000a50540000000908004500001c00000000400166df0a0000020a0000010800f7ff00000000 +50540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +50540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +50540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +50540000000a50540000000908004500005c000000004001669f0a0000020a000001080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f ]) OVS_VSWITCHD_STOP @@ -467,8 +467,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) AT_CHECK([ovs-vsctl del-port br0 p1]) @@ -482,8 +482,8 @@ OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl -NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=42 in_port=1 (via action) data_len=42 (unbuffered) -icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:f7ff +NXT_PACKET_IN2 (xid=0x0): cookie=0x0 total_len=106 in_port=1 (via action) data_len=106 (unbuffered) +icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0 icmp_csum:13fc ]) OVS_VSWITCHD_STOP diff --git a/tests/test-ovn.c b/tests/test-ovn.c index f9a5085f7185..408878d18b41 100644 --- a/tests/test-ovn.c +++ b/tests/test-ovn.c @@ -1171,7 +1171,7 @@ test_expr_to_packets(struct ovs_cmdl_context *ctx OVS_UNUSED) 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); struct ds output = DS_EMPTY_INITIALIZER; const uint8_t *buf = dp_packet_data(&packet); From patchwork Thu Jan 18 22:45:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 863201 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zMzbD4tnNz9sBd for ; Fri, 19 Jan 2018 09:46:32 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 2C982F80; Thu, 18 Jan 2018 22:45:31 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id EB2C7E6E for ; Thu, 18 Jan 2018 22:45:28 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 65E2E47C for ; Thu, 18 Jan 2018 22:45:28 +0000 (UTC) X-Originating-IP: 208.91.3.26 Received: from sigabrt.benpfaff.org (unknown [208.91.3.26]) (Authenticated sender: blp@ovn.org) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 70713FB88B; Thu, 18 Jan 2018 23:45:26 +0100 (CET) From: Ben Pfaff To: dev@openvswitch.org Date: Thu, 18 Jan 2018 14:45:15 -0800 Message-Id: <20180118224515.4208-4-blp@ovn.org> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20180118224515.4208-1-blp@ovn.org> References: <20180118224515.4208-1-blp@ovn.org> X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH 4/4] ovs-ofctl: Add "compose-packet" command for testing flow_compose(). X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org I don't feel obligated to add a bunch of automatic tests for flow_compose(), but this is handy for manual testing or for simple packet generation. Signed-off-by: Ben Pfaff --- utilities/ovs-ofctl.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index 953184da4d19..94bd9abd6dc1 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -138,6 +138,9 @@ static bool should_show_ports(void); /* --stats, --no-stats: Show statistics in flow dumps? */ static int show_stats = 1; +/* --pcap: Makes "compose-packet" print a pcap on stdout. */ +static int print_pcap = 0; + static const struct ovs_cmdl_command *get_all_commands(void); OVS_NO_RETURN static void usage(void); @@ -223,6 +226,7 @@ parse_options(int argc, char *argv[]) {"bundle", no_argument, NULL, OPT_BUNDLE}, {"color", optional_argument, NULL, OPT_COLOR}, {"may-create", no_argument, NULL, OPT_MAY_CREATE}, + {"pcap", no_argument, &print_pcap, 1}, {"read-only", no_argument, NULL, OPT_READ_ONLY}, DAEMON_LONG_OPTIONS, OFP_VERSION_LONG_OPTIONS, @@ -4492,6 +4496,73 @@ ofctl_parse_key_value(struct ovs_cmdl_context *ctx) } } +/* "compose-packet [--pcap] FLOW [L7]": Converts the OpenFlow flow + * specification FLOW to a packet with flow_compose() and prints the hex bytes + * in the packet on stdout. Also verifies that the flow extracted from that + * packet matches the original FLOW. + * + * With --pcap, prints the packet to stdout instead as a pcap file, so that you + * can do something like "ovs-ofctl compose-packet udp | tcpdump -vvvv -r-" to + * use another tool to dump the packet contents. + * + * If L7 is specified, draws the L7 payload data from it, otherwise defaults to + * 64 bytes of payload. */ +static void +ofctl_compose_packet(struct ovs_cmdl_context *ctx) +{ + if (print_pcap && isatty(STDOUT_FILENO)) { + ovs_fatal(1, "not writing pcap data to stdout; redirect to a file " + "or pipe to tcpdump instead"); + } + + struct flow flow1; + char *error = parse_ofp_exact_flow(&flow1, NULL, NULL, ctx->argv[1], NULL); + if (error) { + ovs_fatal(0, "%s", error); + } + + struct dp_packet p; + memset(&p, 0, sizeof p); + dp_packet_init(&p, 0); + + void *l7 = NULL; + size_t l7_len = 64; + if (ctx->argc > 2) { + struct dp_packet payload; + memset(&payload, 0, sizeof payload); + dp_packet_init(&payload, 0); + if (dp_packet_put_hex(&payload, ctx->argv[2], NULL)[0] != '\0') { + ovs_fatal(0, "%s: trailing garbage in packet data", ctx->argv[2]); + } + l7_len = dp_packet_size(&payload); + l7 = dp_packet_steal_data(&payload); + } + flow_compose(&p, &flow1, l7, l7_len); + free(l7); + + if (print_pcap) { + ovs_pcap_write_header(stdout); + ovs_pcap_write(stdout, &p); + } else { + ovs_hex_dump(stdout, dp_packet_data(&p), dp_packet_size(&p), 0, false); + } + + struct flow flow2; + flow_extract(&p, &flow2); + flow2.in_port.ofp_port = OFPP_ANY; + + dp_packet_uninit(&p); + + if (!flow_equal(&flow1, &flow2)) { + fprintf(stderr, "specified and extracted flows differ:\n"); + fputs("specified: ", stderr); + flow_print(stderr, &flow1, NULL); + fputs("\nextracted: ", stderr); + flow_print(stderr, &flow2, NULL); + exit(1); + } +} + static const struct ovs_cmdl_command all_commands[] = { { "show", "switch", 1, 1, ofctl_show, OVS_RO }, @@ -4625,6 +4696,7 @@ static const struct ovs_cmdl_command all_commands[] = { { "ofp-print", NULL, 1, 2, ofctl_ofp_print, OVS_RW }, { "encode-hello", NULL, 1, 1, ofctl_encode_hello, OVS_RW }, { "parse-key-value", NULL, 1, INT_MAX, ofctl_parse_key_value, OVS_RW }, + { "compose-packet", NULL, 1, 2, ofctl_compose_packet, OVS_RO }, { NULL, NULL, 0, 0, NULL, OVS_RO }, };