diff mbox

TAHI CN-6-4-1 failed on Linux 2.6.32 kernel

Message ID AANLkTikeLtFqO4FcZKceCntycLSa-ZCPGF28t6nj=Gab@mail.gmail.com
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Steve Chen Aug. 13, 2010, midnight UTC
On Thu, Aug 12, 2010 at 6:04 PM, Steve Chen <schen@mvista.com> wrote:
> On Thu, Aug 12, 2010 at 4:10 PM, Brian Haley <brian.haley@hp.com> wrote:
>> Hi Steve,
>>
>> On 07/28/2010 11:20 PM, Steve Chen wrote:
>>> Hello,
>>>
>>> The TAHI correspondent node tests CN-6-4-1 (Processing in upper layer
>>> - Echo Checksum) failed for me in the 2.6.32 kernel.  It appears that
>>> the Linux kernel is replying the ICMP echo request in
>>> icmpv6_echo_reply without much checking.  Is this an intentional
>>> non-conformance to RFC3775 section 9.3.1?
>>
>> Sorry for the late reply.  I've run these tests in the past against
>> SLES11 (2.6.27 ?) back in January 2009 and this one passed from looking
>> at my logs.  I don't have that system around anymore to check the config,
>> etc.  I didn't see any obvious commit that would have broken it from a
>> quick look, do you have a test setup to do some debugging?  It will
>> take a little time for me to re-configure mine to run this test.
>
> Brian,
>
> I'm using mip6d from git://www.umip.org/git/umip.git commit id
> d1c240f3deb690af902ce1ff128780551ff6141c.  Is that the correct version
> to use?  Looking at the kernel code again, the checksum error should
> have been caught in icmpv6_rcv.  There are probably something wrong
> with my setup.  I'll dig around a bit more.
>
> Tests 5-3-1 to 5-3-6 also failed for me.   Did they pass for you?

By the way, these tests passed for me with the following patch.
Please let me know what you think.

Thanks

Steve
diff mbox

Patch

Reinstate checks to handle BU with H bit set

Check for the H flag was omitted in 2276ddec36a3789826842ac8316553fa0702ea89.
This caused TAHI correcpondend node tests 118-123 (5.3. Receiving BU with
(H)bit is set) to fail.

diff --git a/src/cn.c b/src/cn.c
index 0318e9e..a036d96 100644
--- a/src/cn.c
+++ b/src/cn.c
@@ -173,6 +173,10 @@  static int cn_bu_check(struct ip6_mh_binding_update *bu, ssize_t len,
 	int ret;
 
 	non_ind = mh_opt(&bu->ip6mhbu_hdr, mh_opts, IP6_MHOPT_NONCEID);
+
+	if (bu->ip6mhbu_flags & IP6_MH_BU_HOME)
+		return non_ind ? -1 : 0;
+
 	if (!non_ind)
 		return -1;