Hey Ethan,<br><br>Thanks for your reply.<br>I will send out a revised patch and an additional patch as a bug fix for the issue you mentioned. <br><br>thanx!<br>mehak<br><br><div class="gmail_quote">On Wed, Oct 17, 2012 at 1:32 PM, Ethan Jackson <span dir="ltr">&lt;<a href="mailto:ethan@nicira.com" target="_blank">ethan@nicira.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry it took me so long to get back to this.<br>
<div class="im"><br>
&gt; The reason to additionally check if the format is IP or not is because else<br>
&gt; we will print the icmp code and icmp type for non icmp packets which can be<br>
&gt; quite misleading. For example for the ARP request packets. The arp_op field<br>
&gt; in an ARP packet overlaps with the nw_proto field. When the arp packet is a<br>
&gt; request (arp_op = 1), we print the icmp code and icmp type as well (nw_proto<br>
&gt; is ETH_TYPE_ICMP = 1). Essentially we are misinterpretting the ARP packet to<br>
&gt; be an ICMP packet. Hence the additional check. We should check for the<br>
&gt; nw_proto only if the packet is an IP packet.<br>
<br>
</div>This makes sense.  Ideally this change would be in its own patch<br>
because it&#39;s really a bug fix.  Also, you want to check for<br>
ETH_TYPE_IPV6 in the ICMPv6 case.<br>
<div class="im"><br>
&gt; The check for the tp src and tp dst is because these fields will be zero for<br>
&gt; non TCP packets and atleast one will be non zero for a TCP frame. Again we<br>
&gt; unnecessarily print these for non tcp frames which is again misleading.<br>
<br>
</div>My inclination would be to maintain the current behavior and print the<br>
tp_src and tp_dst if the mask directs us to.  As a user of the<br>
function, I would find it surprising for the mask to be ignored in<br>
this case, and not in others.<br>
<span class="HOEnZb"><font color="#888888"><br>
Ethan<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt; Please let me know if this makes sense.<br>
&gt;<br>
&gt;&gt; Ethan<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Oct 12, 2012 at 3:08 PM, Mehak Mahajan &lt;<a href="mailto:mmahajan@nicira.com">mmahajan@nicira.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; flow_format() logs packets contents.  However, the format used is not<br>
&gt;&gt; &gt; the format accepted by ofproto/trace.  Hence it becomes difficult to<br>
&gt;&gt; &gt; trace the packets using the debugs printed.  With this commit, the<br>
&gt;&gt; &gt; logging of the packet contents is done in a format that is accepted<br>
&gt;&gt; &gt; by ofproto/trace.  This will make debugging easier.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Signed-off-by: Mehak Mahajan &lt;<a href="mailto:mmahajan@nicira.com">mmahajan@nicira.com</a>&gt;<br>
&gt;&gt; &gt; ---<br>
&gt;&gt; &gt;  lib/flow.c            |   88<br>
&gt;&gt; &gt; ++---------------------------------------------<br>
&gt;&gt; &gt;  lib/match.c           |   91<br>
&gt;&gt; &gt; +++++++++++++++++++++++++++++++++++++++++++++++--<br>
&gt;&gt; &gt;  lib/match.h           |    1 +<br>
&gt;&gt; &gt;  tests/<a href="http://ofp-print.at" target="_blank">ofp-print.at</a>    |   16 ++++----<br>
&gt;&gt; &gt;  tests/<a href="http://ofproto-dpif.at" target="_blank">ofproto-dpif.at</a> |   56 +++++++++++++++---------------<br>
&gt;&gt; &gt;  tests/<a href="http://ofproto.at" target="_blank">ofproto.at</a>      |   12 +++---<br>
&gt;&gt; &gt;  6 files changed, 135 insertions(+), 129 deletions(-)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; diff --git a/lib/flow.c b/lib/flow.c<br>
&gt;&gt; &gt; index 76d2340..0c9aa36 100644<br>
&gt;&gt; &gt; --- a/lib/flow.c<br>
&gt;&gt; &gt; +++ b/lib/flow.c<br>
&gt;&gt; &gt; @@ -31,6 +31,7 @@<br>
&gt;&gt; &gt;  #include &quot;csum.h&quot;<br>
&gt;&gt; &gt;  #include &quot;dynamic-string.h&quot;<br>
&gt;&gt; &gt;  #include &quot;hash.h&quot;<br>
&gt;&gt; &gt; +#include &quot;match.h&quot;<br>
&gt;&gt; &gt;  #include &quot;ofpbuf.h&quot;<br>
&gt;&gt; &gt;  #include &quot;openflow/openflow.h&quot;<br>
&gt;&gt; &gt;  #include &quot;packets.h&quot;<br>
&gt;&gt; &gt; @@ -479,94 +480,13 @@ flow_to_string(const struct flow *flow)<br>
&gt;&gt; &gt;      return ds_cstr(&amp;ds);<br>
&gt;&gt; &gt;  }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; -static void format_tunnel_flags(uint16_t flags, struct ds *ds)<br>
&gt;&gt; &gt; -{<br>
&gt;&gt; &gt; -    flags &amp;= ~FLOW_TNL_F_KEY;<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    if (flags &amp; FLOW_TNL_F_DONT_FRAGMENT) {<br>
&gt;&gt; &gt; -        ds_put_cstr(ds, &quot;,df&quot;);<br>
&gt;&gt; &gt; -        flags &amp;= ~FLOW_TNL_F_DONT_FRAGMENT;<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    if (flags &amp; FLOW_TNL_F_CSUM) {<br>
&gt;&gt; &gt; -        ds_put_cstr(ds, &quot;,csum&quot;);<br>
&gt;&gt; &gt; -        flags &amp;= ~FLOW_TNL_F_CSUM;<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    if (flags) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot;,flags:%#&quot;PRIx16, flags);<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -}<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt;  void<br>
&gt;&gt; &gt;  flow_format(struct ds *ds, const struct flow *flow)<br>
&gt;&gt; &gt;  {<br>
&gt;&gt; &gt; -    ds_put_format(ds, &quot;priority:%&quot;PRIu32, flow-&gt;skb_priority);<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    if (flow-&gt;tunnel.ip_dst || flow-&gt;tunnel.tun_id) {<br>
&gt;&gt; &gt; -        ds_put_cstr(ds, &quot;,tunnel(&quot;);<br>
&gt;&gt; &gt; -        ds_put_format(ds, IP_FMT&quot;-&gt;&quot;IP_FMT,<br>
&gt;&gt; &gt; IP_ARGS(&amp;flow-&gt;tunnel.ip_src),<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; IP_ARGS(&amp;flow-&gt;tunnel.ip_dst));<br>
&gt;&gt; &gt; +    struct match match;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; -        if (flow-&gt;tunnel.flags &amp; FLOW_TNL_F_KEY) {<br>
&gt;&gt; &gt; -            ds_put_format(ds, &quot;,key:%#&quot;PRIx64,<br>
&gt;&gt; &gt; ntohll(flow-&gt;tunnel.tun_id));<br>
&gt;&gt; &gt; -        }<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot;,tos:%#&quot;PRIx8&quot;,ttl:%&quot;PRIu8,<br>
&gt;&gt; &gt; flow-&gt;tunnel.ip_tos,<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; flow-&gt;tunnel.ip_ttl);<br>
&gt;&gt; &gt; -        format_tunnel_flags(flow-&gt;tunnel.flags, ds);<br>
&gt;&gt; &gt; -        ds_put_char(ds, &#39;)&#39;);<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    ds_put_format(ds, &quot;,metadata:%#&quot;PRIx64<br>
&gt;&gt; &gt; -                      &quot;,in_port:%04&quot;PRIx16,<br>
&gt;&gt; &gt; -                      ntohll(flow-&gt;metadata),<br>
&gt;&gt; &gt; -                      flow-&gt;in_port);<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    ds_put_format(ds, &quot;,tci(&quot;);<br>
&gt;&gt; &gt; -    if (flow-&gt;vlan_tci) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot;vlan:%&quot;PRIu16&quot;,pcp:%d&quot;,<br>
&gt;&gt; &gt; -                      vlan_tci_to_vid(flow-&gt;vlan_tci),<br>
&gt;&gt; &gt; -                      vlan_tci_to_pcp(flow-&gt;vlan_tci));<br>
&gt;&gt; &gt; -    } else {<br>
&gt;&gt; &gt; -        ds_put_char(ds, &#39;0&#39;);<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -    ds_put_format(ds, &quot;) mac(&quot;ETH_ADDR_FMT&quot;-&gt;&quot;ETH_ADDR_FMT<br>
&gt;&gt; &gt; -                      &quot;) type:%04&quot;PRIx16,<br>
&gt;&gt; &gt; -                  ETH_ADDR_ARGS(flow-&gt;dl_src),<br>
&gt;&gt; &gt; -                  ETH_ADDR_ARGS(flow-&gt;dl_dst),<br>
&gt;&gt; &gt; -                  ntohs(flow-&gt;dl_type));<br>
&gt;&gt; &gt; -<br>
&gt;&gt; &gt; -    if (flow-&gt;dl_type == htons(ETH_TYPE_IPV6)) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot; label:%#&quot;PRIx32&quot; proto:%&quot;PRIu8&quot;<br>
&gt;&gt; &gt; tos:%#&quot;PRIx8<br>
&gt;&gt; &gt; -                          &quot; ttl:%&quot;PRIu8&quot; ipv6(&quot;,<br>
&gt;&gt; &gt; -                      ntohl(flow-&gt;ipv6_label), flow-&gt;nw_proto,<br>
&gt;&gt; &gt; -                      flow-&gt;nw_tos, flow-&gt;nw_ttl);<br>
&gt;&gt; &gt; -        print_ipv6_addr(ds, &amp;flow-&gt;ipv6_src);<br>
&gt;&gt; &gt; -        ds_put_cstr(ds, &quot;-&gt;&quot;);<br>
&gt;&gt; &gt; -        print_ipv6_addr(ds, &amp;flow-&gt;ipv6_dst);<br>
&gt;&gt; &gt; -        ds_put_char(ds, &#39;)&#39;);<br>
&gt;&gt; &gt; -    } else if (flow-&gt;dl_type == htons(ETH_TYPE_IP) ||<br>
&gt;&gt; &gt; -               flow-&gt;dl_type == htons(ETH_TYPE_ARP)) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot; proto:%&quot;PRIu8&quot; tos:%#&quot;PRIx8&quot; ttl:%&quot;PRIu8<br>
&gt;&gt; &gt; -                          &quot; ip(&quot;IP_FMT&quot;-&gt;&quot;IP_FMT&quot;)&quot;,<br>
&gt;&gt; &gt; -                          flow-&gt;nw_proto, flow-&gt;nw_tos, flow-&gt;nw_ttl,<br>
&gt;&gt; &gt; -                          IP_ARGS(&amp;flow-&gt;nw_src),<br>
&gt;&gt; &gt; IP_ARGS(&amp;flow-&gt;nw_dst));<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -    if (flow-&gt;nw_frag) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot; frag(%s)&quot;,<br>
&gt;&gt; &gt; -                      flow-&gt;nw_frag == FLOW_NW_FRAG_ANY ? &quot;first&quot;<br>
&gt;&gt; &gt; -                      : flow-&gt;nw_frag == (FLOW_NW_FRAG_ANY |<br>
&gt;&gt; &gt; FLOW_NW_FRAG_LATER)<br>
&gt;&gt; &gt; -                      ? &quot;later&quot; : &quot;&lt;error&gt;&quot;);<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -    if (flow-&gt;tp_src || flow-&gt;tp_dst) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot; port(%&quot;PRIu16&quot;-&gt;%&quot;PRIu16&quot;)&quot;,<br>
&gt;&gt; &gt; -                ntohs(flow-&gt;tp_src), ntohs(flow-&gt;tp_dst));<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; -    if (!eth_addr_is_zero(flow-&gt;arp_sha) ||<br>
&gt;&gt; &gt; !eth_addr_is_zero(flow-&gt;arp_tha)) {<br>
&gt;&gt; &gt; -        ds_put_format(ds, &quot; arp_ha(&quot;ETH_ADDR_FMT&quot;-&gt;&quot;ETH_ADDR_FMT&quot;)&quot;,<br>
&gt;&gt; &gt; -                ETH_ADDR_ARGS(flow-&gt;arp_sha),<br>
&gt;&gt; &gt; -                ETH_ADDR_ARGS(flow-&gt;arp_tha));<br>
&gt;&gt; &gt; -    }<br>
&gt;&gt; &gt; +    match_wc_init(&amp;match, flow);<br>
&gt;&gt; &gt; +    match_format(&amp;match, ds, flow-&gt;skb_priority);<br>
&gt;&gt; &gt;  }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  void<br>
&gt;&gt; &gt; diff --git a/lib/match.c b/lib/match.c<br>
&gt;&gt; &gt; index b25569d..9d77605 100644<br>
&gt;&gt; &gt; --- a/lib/match.c<br>
&gt;&gt; &gt; +++ b/lib/match.c<br>
&gt;&gt; &gt; @@ -21,6 +21,10 @@<br>
&gt;&gt; &gt;  #include &quot;byte-order.h&quot;<br>
&gt;&gt; &gt;  #include &quot;dynamic-string.h&quot;<br>
&gt;&gt; &gt;  #include &quot;packets.h&quot;<br>
&gt;&gt; &gt; +#include &quot;vlog.h&quot;<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +VLOG_DEFINE_THIS_MODULE(match);<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  /* Converts the flow in &#39;flow&#39; into a match in &#39;match&#39;, with the given<br>
&gt;&gt; &gt;   * &#39;wildcards&#39;. */<br>
&gt;&gt; &gt; @@ -33,6 +37,85 @@ match_init(struct match *match,<br>
&gt;&gt; &gt;      match_zero_wildcarded_fields(match);<br>
&gt;&gt; &gt;  }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +/* Converts a flow into a match.  It sets the wildcard masks based on<br>
&gt;&gt; &gt; + * the packet contents.  It will not set the mask for fields that do<br>
&gt;&gt; &gt; not<br>
&gt;&gt; &gt; + * make sense for the packet type. */<br>
&gt;&gt; &gt; +void<br>
&gt;&gt; &gt; +match_wc_init(struct match *match, const struct flow *flow)<br>
&gt;&gt; &gt; +{<br>
&gt;&gt; &gt; +    struct flow_wildcards *wc;<br>
&gt;&gt; &gt; +    int i;<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    match-&gt;flow = *flow;<br>
&gt;&gt; &gt; +    wc = &amp;match-&gt;wc;<br>
&gt;&gt; &gt; +    memset(&amp;wc-&gt;masks, 0x0, sizeof wc-&gt;masks);<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;dl_type) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.dl_type, 0xff, sizeof wc-&gt;masks.dl_type);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;nw_proto) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.nw_proto, 0xff, sizeof wc-&gt;masks.nw_proto);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    for (i = 0; i &lt; FLOW_N_REGS; i++) {<br>
&gt;&gt; &gt; +        if (flow-&gt;regs[i]) {<br>
&gt;&gt; &gt; +            memset(&amp;wc-&gt;masks.regs[i], 0xff, sizeof wc-&gt;masks.regs[i]);<br>
&gt;&gt; &gt; +        }<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;tunnel.ip_dst || flow-&gt;tunnel.tun_id) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.tunnel.tun_id, 0xff, sizeof<br>
&gt;&gt; &gt; wc-&gt;masks.tunnel.tun_id);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +    memset(&amp;wc-&gt;masks.metadata, 0xff, sizeof wc-&gt;masks.metadata);<br>
&gt;&gt; &gt; +    memset(&amp;wc-&gt;masks.in_port, 0xff, sizeof wc-&gt;masks.in_port);<br>
&gt;&gt; &gt; +    memset(&amp;wc-&gt;masks.vlan_tci, 0xff, sizeof wc-&gt;masks.vlan_tci);<br>
&gt;&gt; &gt; +    memset(&amp;wc-&gt;masks.dl_src, 0xff, sizeof wc-&gt;masks.dl_src);<br>
&gt;&gt; &gt; +    memset(&amp;wc-&gt;masks.dl_dst, 0xff, sizeof wc-&gt;masks.dl_dst);<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;dl_type == htons(ETH_TYPE_IPV6)) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.ipv6_src, 0xff, sizeof wc-&gt;masks.ipv6_src);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.ipv6_dst, 0xff, sizeof wc-&gt;masks.ipv6_dst);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.ipv6_label, 0xff, sizeof<br>
&gt;&gt; &gt; wc-&gt;masks.ipv6_label);<br>
&gt;&gt; &gt; +    } else if (flow-&gt;dl_type == htons(ETH_TYPE_IP) ||<br>
&gt;&gt; &gt; +               (flow-&gt;dl_type == htons(ETH_TYPE_ARP))) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.nw_src, 0xff, sizeof wc-&gt;masks.nw_src);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.nw_dst, 0xff, sizeof wc-&gt;masks.nw_dst);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;dl_type == htons(ETH_TYPE_ARP)) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.arp_sha, 0xff, sizeof wc-&gt;masks.arp_sha);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.arp_tha, 0xff, sizeof wc-&gt;masks.arp_tha);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;dl_type == htons(ETH_TYPE_IPV6) ||<br>
&gt;&gt; &gt; +        flow-&gt;dl_type == htons(ETH_TYPE_IP)) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.nw_tos, 0xff, sizeof wc-&gt;masks.nw_tos);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.nw_ttl, 0xff, sizeof wc-&gt;masks.nw_ttl);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;nw_frag) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.nw_frag, 0xff, sizeof wc-&gt;masks.nw_frag);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;nw_proto == IPPROTO_ICMP || flow-&gt;nw_proto ==<br>
&gt;&gt; &gt; IPPROTO_ICMPV6) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.tp_src, 0xff, sizeof wc-&gt;masks.tp_src);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.tp_dst, 0xff, sizeof wc-&gt;masks.tp_dst);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;nw_proto == IPPROTO_ICMPV6) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.arp_sha, 0xff, sizeof wc-&gt;masks.arp_sha);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.arp_tha, 0xff, sizeof wc-&gt;masks.arp_tha);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    if (flow-&gt;tp_src || flow-&gt;tp_dst) {<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.tp_src, 0xff, sizeof wc-&gt;masks.tp_src);<br>
&gt;&gt; &gt; +        memset(&amp;wc-&gt;masks.tp_dst, 0xff, sizeof wc-&gt;masks.tp_dst);<br>
&gt;&gt; &gt; +    }<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt; +    return;<br>
&gt;&gt; &gt; +}<br>
&gt;&gt; &gt; +<br>
&gt;&gt; &gt;  /* Converts the flow in &#39;flow&#39; into an exact-match match in &#39;match&#39;. */<br>
&gt;&gt; &gt;  void<br>
&gt;&gt; &gt;  match_init_exact(struct match *match, const struct flow *flow)<br>
&gt;&gt; &gt; @@ -740,17 +823,19 @@ match_format(const struct match *match, struct ds<br>
&gt;&gt; &gt; *s, unsigned int priority)<br>
&gt;&gt; &gt;                        f-&gt;nw_frag &amp; FLOW_NW_FRAG_LATER ? &quot;later&quot; :<br>
&gt;&gt; &gt; &quot;not_later&quot;);<br>
&gt;&gt; &gt;          break;<br>
&gt;&gt; &gt;      }<br>
&gt;&gt; &gt; -    if (f-&gt;nw_proto == IPPROTO_ICMP) {<br>
&gt;&gt; &gt; +    if (f-&gt;dl_type == htons(ETH_TYPE_IP) &amp;&amp;<br>
&gt;&gt; &gt; +        f-&gt;nw_proto == IPPROTO_ICMP) {<br>
&gt;&gt; &gt;          format_be16_masked(s, &quot;icmp_type&quot;, f-&gt;tp_src,<br>
&gt;&gt; &gt; wc-&gt;masks.tp_src);<br>
&gt;&gt; &gt;          format_be16_masked(s, &quot;icmp_code&quot;, f-&gt;tp_dst,<br>
&gt;&gt; &gt; wc-&gt;masks.tp_dst);<br>
&gt;&gt; &gt; -    } else if (f-&gt;nw_proto == IPPROTO_ICMPV6) {<br>
&gt;&gt; &gt; +    } else if (f-&gt;dl_type == htons(ETH_TYPE_IPV6) &amp;&amp;<br>
&gt;&gt; &gt; +                   f-&gt;nw_proto == IPPROTO_ICMPV6) {<br>
&gt;&gt; &gt;          format_be16_masked(s, &quot;icmp_type&quot;, f-&gt;tp_src,<br>
&gt;&gt; &gt; wc-&gt;masks.tp_src);<br>
&gt;&gt; &gt;          format_be16_masked(s, &quot;icmp_code&quot;, f-&gt;tp_dst,<br>
&gt;&gt; &gt; wc-&gt;masks.tp_dst);<br>
&gt;&gt; &gt;          format_ipv6_netmask(s, &quot;nd_target&quot;, &amp;f-&gt;nd_target,<br>
&gt;&gt; &gt;                              &amp;wc-&gt;masks.nd_target);<br>
&gt;&gt; &gt;          format_eth_masked(s, &quot;nd_sll&quot;, f-&gt;arp_sha, wc-&gt;masks.arp_sha);<br>
&gt;&gt; &gt;          format_eth_masked(s, &quot;nd_tll&quot;, f-&gt;arp_tha, wc-&gt;masks.arp_tha);<br>
&gt;&gt; &gt; -    } else {<br>
&gt;&gt; &gt; +    } else if (f-&gt;tp_src || f-&gt;tp_dst) {<br>
&gt;&gt; &gt;          format_be16_masked(s, &quot;tp_src&quot;, f-&gt;tp_src, wc-&gt;masks.tp_src);<br>
&gt;&gt; &gt;          format_be16_masked(s, &quot;tp_dst&quot;, f-&gt;tp_dst, wc-&gt;masks.tp_dst);<br>
&gt;&gt; &gt;      }<br>
&gt;&gt; &gt; diff --git a/lib/match.h b/lib/match.h<br>
&gt;&gt; &gt; index 2d05819..28433b9 100644<br>
&gt;&gt; &gt; --- a/lib/match.h<br>
&gt;&gt; &gt; +++ b/lib/match.h<br>
&gt;&gt; &gt; @@ -36,6 +36,7 @@ struct match {<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  void match_init(struct match *,<br>
&gt;&gt; &gt;                  const struct flow *, const struct flow_wildcards *);<br>
&gt;&gt; &gt; +void match_wc_init(struct match *match, const struct flow *flow);<br>
&gt;&gt; &gt;  void match_init_catchall(struct match *);<br>
&gt;&gt; &gt;  void match_init_exact(struct match *, const struct flow *);<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; diff --git a/tests/<a href="http://ofp-print.at" target="_blank">ofp-print.at</a> b/tests/<a href="http://ofp-print.at" target="_blank">ofp-print.at</a><br>
&gt;&gt; &gt; index 5a64ff2..6a5ec60 100644<br>
&gt;&gt; &gt; --- a/tests/<a href="http://ofp-print.at" target="_blank">ofp-print.at</a><br>
&gt;&gt; &gt; +++ b/tests/<a href="http://ofp-print.at" target="_blank">ofp-print.at</a><br>
&gt;&gt; &gt; @@ -337,7 +337,7 @@ c0 a8 00 02 27 2f 00 00 78 50 cc 5b 57 af 42 1e \<br>
&gt;&gt; &gt;  50 00 02 00 26 e8 00 00 00 00 00 00 00 00 \<br>
&gt;&gt; &gt;  &quot;], [0], [dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=3 (via no_match)<br>
&gt;&gt; &gt; data_len=60 buffer=0x00000111<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(50:54:00:00:00:05-&gt;50:54:00:00:00:06) type:0800 proto:6 tos:0 ttl:64<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(10031-&gt;0) tcp_csum:26e8<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0<br>
&gt;&gt; &gt; tcp_csum:26e8<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; @@ -351,7 +351,7 @@ AT_CHECK([ovs-ofctl ofp-print &quot;\<br>
&gt;&gt; &gt;  00 00 00 23 20 83 c1 5f 00 00 00 00 \<br>
&gt;&gt; &gt;  &quot;], [0], [dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=42 in_port=LOCAL (via<br>
&gt;&gt; &gt; no_match) data_len=42 buffer=0xffffff00<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:23:20:83:c1:5f-&gt;ff:ff:ff:ff:ff:ff) type:8035<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,dl_type=0x8035<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; @@ -365,7 +365,7 @@ AT_CHECK([ovs-ofctl ofp-print &quot;\<br>
&gt;&gt; &gt;  30 e0 35 00 00 05 00 00 00 00 00 00 00 00 00 01 \<br>
&gt;&gt; &gt;  00 00 00 00 00 00 00 3c \<br>
&gt;&gt; &gt;  &quot;], [0], [dnl<br>
&gt;&gt; &gt; -OFPT_FLOW_REMOVED (xid=0x0):<br>
&gt;&gt; &gt; priority=65535,arp,in_port=3,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0<br>
&gt;&gt; &gt; reason=idle duration5.82s idle5 pkts1 bytes60<br>
&gt;&gt; &gt; +OFPT_FLOW_REMOVED (xid=0x0):<br>
&gt;&gt; &gt; priority=65535,arp,in_port=3,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,arp_op=2,nw_tos=0<br>
&gt;&gt; &gt; reason=idle duration5.82s idle5 pkts1 bytes60<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; @@ -455,7 +455,7 @@ AT_CHECK([ovs-ofctl &#39;-vPATTERN:console:%c|%p|%m&#39;<br>
&gt;&gt; &gt; ofp-print &quot;\<br>
&gt;&gt; &gt;  OFPT_FLOW_MOD (xid=0x0): ADD<br>
&gt;&gt; &gt; priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2<br>
&gt;&gt; &gt; idle:5 buf:0x10e out_port:0 actions=output:3<br>
&gt;&gt; &gt;  ], [dnl<br>
&gt;&gt; &gt;  ofp_util|INFO|normalization changed ofp_match, details:<br>
&gt;&gt; &gt; -ofp_util|INFO| pre:<br>
&gt;&gt; &gt; arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0<br>
&gt;&gt; &gt; +ofp_util|INFO| pre:<br>
&gt;&gt; &gt; arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2,nw_tos=0<br>
&gt;&gt; &gt;  ofp_util|INFO|post:<br>
&gt;&gt; &gt; arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt; @@ -493,7 +493,7 @@ AT_CHECK([ovs-ofctl &#39;-vPATTERN:console:%c|%p|%m&#39;<br>
&gt;&gt; &gt; ofp-print &quot;\<br>
&gt;&gt; &gt;  OFPT_FLOW_MOD (xid=0x0): ADD<br>
&gt;&gt; &gt; arp,in_port=1,dl_vlan=65535,dl_vlan_pcp=0,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0<br>
&gt;&gt; &gt; idle:5 pri:65535 buf:0x10e out_port:0 actions=output:3<br>
&gt;&gt; &gt;  ], [dnl<br>
&gt;&gt; &gt;  ofp_util|INFO|normalization changed ofp_match, details:<br>
&gt;&gt; &gt; -ofp_util|INFO| pre:<br>
&gt;&gt; &gt; arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0<br>
&gt;&gt; &gt; +ofp_util|INFO| pre:<br>
&gt;&gt; &gt; arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2,nw_tos=0<br>
&gt;&gt; &gt;  ofp_util|INFO|post:<br>
&gt;&gt; &gt; arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt; @@ -769,9 +769,9 @@ c0 a8 00 02 00 08 00 00 00 00 00 09 05 b8 d8 00 \<br>
&gt;&gt; &gt;  00 00 00 00 00 00 00 00 \<br>
&gt;&gt; &gt;  &quot;], [0], [dnl<br>
&gt;&gt; &gt;  OFPST_FLOW reply (xid=0x4):<br>
&gt;&gt; &gt; - cookie=0x0, duration=4.2s, table=0, n_packets=1, n_bytes=60,<br>
&gt;&gt; &gt; idle_timeout=5,<br>
&gt;&gt; &gt; priority=65535,arp,in_port=3,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0<br>
&gt;&gt; &gt; actions=output:1<br>
&gt;&gt; &gt; + cookie=0x0, duration=4.2s, table=0, n_packets=1, n_bytes=60,<br>
&gt;&gt; &gt; idle_timeout=5,<br>
&gt;&gt; &gt; priority=65535,arp,in_port=3,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,arp_op=2,nw_tos=0<br>
&gt;&gt; &gt; actions=output:1<br>
&gt;&gt; &gt;   cookie=0x0, duration=8.9s, table=0, n_packets=13, n_bytes=1274,<br>
&gt;&gt; &gt; idle_timeout=5,<br>
&gt;&gt; &gt; priority=65535,icmp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,icmp_type=0,icmp_code=0<br>
&gt;&gt; &gt; actions=output:3<br>
&gt;&gt; &gt; - cookie=0x0, duration=4.28s, table=0, n_packets=1, n_bytes=60,<br>
&gt;&gt; &gt; idle_timeout=5,<br>
&gt;&gt; &gt; priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=1,nw_tos=0,icmp_type=0,icmp_code=0<br>
&gt;&gt; &gt; actions=output:3<br>
&gt;&gt; &gt; + cookie=0x0, duration=4.28s, table=0, n_packets=1, n_bytes=60,<br>
&gt;&gt; &gt; idle_timeout=5,<br>
&gt;&gt; &gt; priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=1,nw_tos=0<br>
&gt;&gt; &gt; actions=output:3<br>
&gt;&gt; &gt;   cookie=0x0, duration=9.096s, table=0, n_packets=13, n_bytes=1274,<br>
&gt;&gt; &gt; idle_timeout=5,<br>
&gt;&gt; &gt; icmp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,icmp_type=8,icmp_code=0<br>
&gt;&gt; &gt; actions=output:1<br>
&gt;&gt; &gt;   cookie=0x0, duration=0s, table=2, n_packets=0, n_bytes=0, actions=drop<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt; @@ -1154,7 +1154,7 @@ ff ff ff ff ff ff 00 00 00 00 82 82 82 82 82 82 \<br>
&gt;&gt; &gt;  31 6d 00 00 00 00 00 00 00 00 \<br>
&gt;&gt; &gt;  &quot;], [0], [dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 metadata=0x5a5a5a5a5a5a5a5a reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4<br>
&gt;&gt; &gt; reg4=0x5 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;86) tcp_csum:316d<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86<br>
&gt;&gt; &gt; tcp_csum:316d<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; diff --git a/tests/<a href="http://ofproto-dpif.at" target="_blank">ofproto-dpif.at</a> b/tests/<a href="http://ofproto-dpif.at" target="_blank">ofproto-dpif.at</a><br>
&gt;&gt; &gt; index 80ba333..bc2362d 100644<br>
&gt;&gt; &gt; --- a/tests/<a href="http://ofproto-dpif.at" target="_blank">ofproto-dpif.at</a><br>
&gt;&gt; &gt; +++ b/tests/<a href="http://ofproto-dpif.at" target="_blank">ofproto-dpif.at</a><br>
&gt;&gt; &gt; @@ -98,7 +98,7 @@ AT_CHECK([ovs-appctl ofproto/trace br0<br>
&gt;&gt; &gt; &#39;in_port(1),eth(src=50:54:00:00:00:05,dst<br>
&gt;&gt; &gt;  OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])<br>
&gt;&gt; &gt;  AT_CHECK([cat ofctl_monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=1 total_len=42 in_port=1 (via<br>
&gt;&gt; &gt; invalid_ttl) data_len=42 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(50:54:00:00:00:05-&gt;50:54:00:00:00:07) type:0800 proto:1 tos:0 ttl:1<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,icmp,metadata=0,in_port=0,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=1,icmp_type=0,icmp_code=0<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;  OVS_VSWITCHD_STOP<br>
&gt;&gt; &gt;  AT_CLEANUP<br>
&gt;&gt; &gt; @@ -263,13 +263,13 @@ done<br>
&gt;&gt; &gt;  OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])<br>
&gt;&gt; &gt;  AT_CHECK([cat ofctl_monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(50:54:00:00:00:05-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;9) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,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=0,tp_src=8,tp_dst=9<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(50:54:00:00:00:05-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;9) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,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=0,tp_src=8,tp_dst=9<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(50:54:00:00:00:05-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;9) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,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=0,tp_src=8,tp_dst=9<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  dnl Singleton controller action.<br>
&gt;&gt; &gt; @@ -282,13 +282,13 @@ done<br>
&gt;&gt; &gt;  OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])<br>
&gt;&gt; &gt;  AT_CHECK([cat ofctl_monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(10:11:11:11:11:11-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;10) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,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=0,tp_src=8,tp_dst=10<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(10:11:11:11:11:11-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;10) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,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=0,tp_src=8,tp_dst=10<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(10:11:11:11:11:11-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;10) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,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=0,tp_src=8,tp_dst=10<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  dnl Modified controller action.<br>
&gt;&gt; &gt; @@ -301,13 +301,13 @@ done<br>
&gt;&gt; &gt;  OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])<br>
&gt;&gt; &gt;  AT_CHECK([cat ofctl_monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:15,pcp:0)<br>
&gt;&gt; &gt; mac(30:33:33:33:33:33-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;10) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,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=0,tp_src=8,tp_dst=10<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:15,pcp:0)<br>
&gt;&gt; &gt; mac(30:33:33:33:33:33-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;10) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,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=0,tp_src=8,tp_dst=10<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN (xid=0x0): total_len=64 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:15,pcp:0)<br>
&gt;&gt; &gt; mac(30:33:33:33:33:33-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;10) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=15,dl_vlan_pcp=0,dl_src=30:33:33:33:33:33,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=0,tp_src=8,tp_dst=10<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  dnl Checksum TCP.<br>
&gt;&gt; &gt; @@ -320,31 +320,31 @@ done<br>
&gt;&gt; &gt;  OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])<br>
&gt;&gt; &gt;  AT_CHECK([cat ofctl_monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(20:22:22:22:22:22-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,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=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(20:22:22:22:22:22-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,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=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 reg1=0x2 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;50:54:00:00:00:07) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,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=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) tcp_csum:0<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:0<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;192.168.0.2) port(8-&gt;11) tcp_csum:1a03<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:1a03<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(8-&gt;11) tcp_csum:3205<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:3205<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;11) tcp_csum:31b8<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=11<br>
&gt;&gt; &gt; tcp_csum:31b8<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;86) tcp_csum:316d<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86<br>
&gt;&gt; &gt; tcp_csum:316d<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:6 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;86) tcp_csum:316d<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,tcp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86<br>
&gt;&gt; &gt; tcp_csum:316d<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  dnl Checksum UDP.<br>
&gt;&gt; &gt; @@ -357,31 +357,31 @@ done<br>
&gt;&gt; &gt;  OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])<br>
&gt;&gt; &gt;  AT_CHECK([cat ofctl_monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): cookie=0x1 total_len=60 in_port=1 (via action)<br>
&gt;&gt; &gt; data_len=60 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(20:22:22:22:22:22-&gt;50:54:00:00:00:07) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) udp_csum:1234<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=20:22:22:22:22:22,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=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:1234<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x3 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(20:22:22:22:22:22-&gt;50:54:00:00:00:07) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) udp_csum:1234<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=20:22:22:22:22:22,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=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:1234<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=2 cookie=0x4 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 reg1=0x2 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;50:54:00:00:00:07) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) udp_csum:1234<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,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=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:1234<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=3 cookie=0x5 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 reg1=0x2 reg2=0x3 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(192.168.0.1-&gt;192.168.0.2) port(8-&gt;11) udp_csum:1234<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:1234<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=4 cookie=0x6 total_len=64 in_port=1<br>
&gt;&gt; &gt; reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 (via action) data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;192.168.0.2) port(8-&gt;11) udp_csum:2c37<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:2c37<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=5 cookie=0x7 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(8-&gt;11) udp_csum:4439<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=8,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:4439<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=6 cookie=0x8 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;11) udp_csum:43ec<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=11<br>
&gt;&gt; &gt; udp_csum:43ec<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;86) udp_csum:43a1<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86<br>
&gt;&gt; &gt; udp_csum:43a1<br>
&gt;&gt; &gt;  dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1<br>
&gt;&gt; &gt; tun_id=0x6 reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action)<br>
&gt;&gt; &gt; data_len=64 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(vlan:80,pcp:0)<br>
&gt;&gt; &gt; mac(80:81:81:81:81:81-&gt;82:82:82:82:82:82) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(83.83.83.83-&gt;84.84.84.84) port(85-&gt;86) udp_csum:43a1<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86<br>
&gt;&gt; &gt; udp_csum:43a1<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl<br>
&gt;&gt; &gt; diff --git a/tests/<a href="http://ofproto.at" target="_blank">ofproto.at</a> b/tests/<a href="http://ofproto.at" target="_blank">ofproto.at</a><br>
&gt;&gt; &gt; index 8a728e4..b2a8b20 100644<br>
&gt;&gt; &gt; --- a/tests/<a href="http://ofproto.at" target="_blank">ofproto.at</a><br>
&gt;&gt; &gt; +++ b/tests/<a href="http://ofproto.at" target="_blank">ofproto.at</a><br>
&gt;&gt; &gt; @@ -631,21 +631,21 @@ check_async () {<br>
&gt;&gt; &gt;      ovs-ofctl -v packet-out br0 none controller<br>
&gt;&gt; &gt; &#39;0001020304050010203040501234&#39;<br>
&gt;&gt; &gt;      if test X&quot;$1&quot; = X&quot;OFPR_ACTION&quot;; then shift;<br>
&gt;&gt; &gt;          echo &gt;&gt;expout &quot;OFPT_PACKET_IN: total_len=14 in_port=NONE (via<br>
&gt;&gt; &gt; action) data_len=14 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:10:20:30:40:50-&gt;00:01:02:03:04:05) type:1234&quot;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234&quot;<br>
&gt;&gt; &gt;      fi<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;      # OFPT_PACKET_IN, OFPR_NO_MATCH (controller_id=123)<br>
&gt;&gt; &gt;      ovs-ofctl -v packet-out br0 none<br>
&gt;&gt; &gt; &#39;controller(reason=no_match,id=123)&#39; &#39;0001020304050010203040501234&#39;<br>
&gt;&gt; &gt;      if test X&quot;$1&quot; = X&quot;OFPR_NO_MATCH&quot;; then shift;<br>
&gt;&gt; &gt;          echo &gt;&gt;expout &quot;OFPT_PACKET_IN: total_len=14 in_port=NONE (via<br>
&gt;&gt; &gt; no_match) data_len=14 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:10:20:30:40:50-&gt;00:01:02:03:04:05) type:1234&quot;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234&quot;<br>
&gt;&gt; &gt;      fi<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;      # OFPT_PACKET_IN, OFPR_INVALID_TTL (controller_id=0)<br>
&gt;&gt; &gt;      ovs-ofctl packet-out br0 none dec_ttl<br>
&gt;&gt; &gt; &#39;002583dfb4000026b98cb0f908004500003fb7e200000011339bac11370dac100002d7730035002b8f6d86fb0100000100000000000006626c702d7873066e696369726103636f6d00000f00&#39;<br>
&gt;&gt; &gt;      if test X&quot;$1&quot; = X&quot;OFPR_INVALID_TTL&quot;; then shift;<br>
&gt;&gt; &gt;          echo &gt;&gt;expout &quot;OFPT_PACKET_IN: total_len=76 in_port=NONE (via<br>
&gt;&gt; &gt; invalid_ttl) data_len=76 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:26:b9:8c:b0:f9-&gt;00:25:83:df:b4:00) type:0800 proto:17 tos:0 ttl:0<br>
&gt;&gt; &gt; ip(172.17.55.13-&gt;172.16.0.2) port(55155-&gt;53) udp_csum:8f6d&quot;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,udp,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:26:b9:8c:b0:f9,dl_dst=00:25:83:df:b4:00,nw_src=172.17.55.13,nw_dst=172.16.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=55155,tp_dst=53<br>
&gt;&gt; &gt; udp_csum:8f6d&quot;<br>
&gt;&gt; &gt;      fi<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;      # OFPT_PORT_STATUS, OFPPR_ADD<br>
&gt;&gt; &gt; @@ -743,9 +743,9 @@ ovs-appctl -t ovs-ofctl exit<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  AT_CHECK([sed &#39;s/ (xid=0x[[0-9a-fA-F]]*)//&#39; monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  OFPT_PACKET_IN: total_len=14 in_port=NONE (via action) data_len=14<br>
&gt;&gt; &gt; (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:10:20:30:40:50-&gt;00:01:02:03:04:05) type:1234<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234<br>
&gt;&gt; &gt;  OFPT_PACKET_IN: total_len=14 in_port=CONTROLLER (via action)<br>
&gt;&gt; &gt; data_len=14 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:10:20:30:40:50-&gt;00:01:02:03:04:05) type:5678<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x5678<br>
&gt;&gt; &gt;  OFPT_BARRIER_REPLY:<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; @@ -773,7 +773,7 @@ ovs-appctl -t ovs-ofctl exit<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;  AT_CHECK([sed &#39;s/ (xid=0x[[0-9a-fA-F]]*)//&#39; monitor.log], [0], [dnl<br>
&gt;&gt; &gt;  NXT_PACKET_IN: total_len=14 in_port=NONE metadata=0xfafafafa5a5a5a5a<br>
&gt;&gt; &gt; (via action) data_len=14 (unbuffered)<br>
&gt;&gt; &gt; -priority:0,metadata:0,in_port:0000,tci(0)<br>
&gt;&gt; &gt; mac(00:10:20:30:40:50-&gt;00:01:02:03:04:05) type:1234<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; +priority=0,metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234<br>
&gt;&gt; &gt;  OFPT_BARRIER_REPLY:<br>
&gt;&gt; &gt;  ])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; 1.7.2.5<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; dev mailing list<br>
&gt;&gt; &gt; <a href="mailto:dev@openvswitch.org">dev@openvswitch.org</a><br>
&gt;&gt; &gt; <a href="http://openvswitch.org/mailman/listinfo/dev" target="_blank">http://openvswitch.org/mailman/listinfo/dev</a><br>
&gt;<br>
&gt;<br>
&gt; thanx!<br>
&gt; mehak<br>
</div></div></blockquote></div><br>