Thread (1 message) 1 message, 1 author, 2010-09-14

Re: [Bugme-new] [Bug 17622] New: snmp trap ALG issue

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2010-09-14 23:32:41

(switched to email.  Please respond via emailed reply-to-all, not via the
bugzilla web interface).

On Thu, 2 Sep 2010 09:25:12 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:
https://bugzilla.kernel.org/show_bug.cgi?id=17622

           Summary: snmp trap ALG issue
           Product: Networking
           Version: 2.5
    Kernel Version: 2.6.35.4
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: IPV4
        AssignedTo: shemminger@linux-foundation.org
        ReportedBy: wtweeker@163.com
        Regression: No


Symptom:
SNMP manager can't show trap when SNMP agent set trap message to  version1.

steps to reproduce:
(1)SNMP agent-----linux device(NAT)-----SNMP manager.
(2)Set SNMP agent trap message to version 1, destination IP as SNMP   manger's
IP.
(3)Do some operation to generate trap message, such as make one port of SNMP
agent up and down. But SNMP manger can't accept trap message.

I have capured the packet by Ethereal software, and check the SNMP trap packet,
found that the UDP checksum is incorrect. 
I think that the function fast_csum()(nf_nat_snmp_basic.c) have some problem.
and

I have changed this function by refering to other checksum algorithm.
And tested it, it can work. the checksum is correct. 

static void fast_csum(__sum16 *csum,
              const unsigned char *optr,
              const unsigned char *nptr,
              int offset)
{
    unsigned char s[4];

    if (offset & 1) {
        s[0] = s[2] = 0;
        s[0] = ~s[0]; //this line is add by me
        s[1] = ~*optr;
        s[3] = *nptr;
    } else {
        s[1] = s[3] = 0;
        s[1] = ~s[1];//this line is add by me
        s[0] = ~*optr;
        s[2] = *nptr;
    }

    *csum = csum_fold(csum_partial(s, 4, ~csum_unfold(*csum)));
}
Great.  Please prepare a kernel patch as per
Documentation/SubmittingPatches and send it via a reply-to-all to this
email?

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help