I confess that I have no idea what your response means! The packet I am
using in that test is cribbed from another test "ofproto-dpif - Neighbor
Discovery set-field with checksum update", and does appear to have the
desired result, it create a dpif flow, just not the right one.
The testsuite.log file contains:
-recirc_id(0),in_port(1),eth_type(0x86dd),ipv6(proto=58,frag=no),icmpv6(code=3),
packets:0, bytes:0, used:never,
actions:userspace(pid=0,slow_path(controller))
+recirc_id(0),in_port(1),eth_type(0x86dd),ipv6(proto=58,frag=no),
packets:0, bytes:0, used:never,
actions:userspace(pid=0,slow_path(controller))
I think this is a result of this piece of code (flow.c, flow_wc_map)
} else if (flow->dl_type == htons(ETH_TYPE_IPV6)) {
map |= MINIFLOW_MAP(ipv6_src) | MINIFLOW_MAP(ipv6_dst)
| MINIFLOW_MAP(ipv6_label)
| MINIFLOW_MAP(nw_proto) | MINIFLOW_MAP(nw_frag)
| MINIFLOW_MAP(nw_tos) | MINIFLOW_MAP(nw_ttl);
if (OVS_UNLIKELY(flow->nw_proto == IPPROTO_ICMPV6)) {
map |= MINIFLOW_MAP(nd_target)
| MINIFLOW_MAP(arp_sha) | MINIFLOW_MAP(arp_tha);
} else {
map |= MINIFLOW_MAP(tcp_flags)
| MINIFLOW_MAP(tp_src) | MINIFLOW_MAP(tp_dst);
}
} else if (eth_type_mpls(flow->dl_type)) {
which could look better as:
} else if (flow->dl_type == htons(ETH_TYPE_IPV6)) {
map |= MINIFLOW_MAP(ipv6_src) | MINIFLOW_MAP(ipv6_dst)
| MINIFLOW_MAP(ipv6_label)
| MINIFLOW_MAP(nw_proto) | MINIFLOW_MAP(nw_frag)
| MINIFLOW_MAP(nw_tos) | MINIFLOW_MAP(nw_ttl);
map |= MINIFLOW_MAP(tp_src) | MINIFLOW_MAP(tp_dst);
if (OVS_UNLIKELY(flow->nw_proto == IPPROTO_ICMPV6)) {
if (OVS_UNLIKELY(flow->tp_dst == 0 &&
(flow->tp_src == ND_NEIGHBOR_SOLICIT ||
flow->tp_src == ND_NEIGHBOR_ADVERT))) {
map |= MINIFLOW_MAP(nd_target)
| MINIFLOW_MAP(arp_sha) | MINIFLOW_MAP(arp_tha);
}
} else {
map |= MINIFLOW_MAP(tcp_flags);
}
} else if (eth_type_mpls(flow->dl_type)) {
based on functionally similar code a few hundred lines down in the same
file.
The first time I tried a fix it caused some TCP and UDP tests to fail,
hence my question about how many test cases would be appropriate here. I
don't want to write a bunch of test cases until I'm happy that I'm writing
them correctly.
Just to be clear, even though I originally found this on our platform (with
code modifications by us), I am writing and running this test on a clean
clone of the repo, with no other mods.
Cheers
Tony
On Thu, Jun 11, 2015 at 3:44 AM, Ben Pfaff <[email protected]> wrote:
> On Wed, Jun 10, 2015 at 08:50:56PM +1200, Tony van der Peet wrote:
> > * git clone carried out Wednesday 10/Jun/2015 (NZ time)
> > * test case suggested by a failing oftest case
> > * is this in the correct test file?
> > * is the test written to the correct standard?
> > * is it a valid test?
> > * what other test cases suggest themselves? (the fix is going to involve
> > *all* IPv6 protocols, not just ICMPv6)
> > * how do I proceed from here?
> > * if you apply the patch it should be test #912
>
> The flow extractor is bailing out because the IPv6 packet claims a
> length longer than the actual space in the packet.
>
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss