Bug 9384
Summary: | Appletalk packets are delivered to the last interface FD_SET | ||
---|---|---|---|
Product: | Networking | Reporter: | James Andrewartha (trs80) |
Component: | Other | Assignee: | Arnaldo Carvalho de Melo (acme) |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | ||
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.21.3 | Subsystem: | |
Regression: | --- | Bisected commit-id: |
Description
James Andrewartha
2007-11-15 01:56:07 UTC
Oops, I submitted this twice. *** This bug has been marked as a duplicate of bug 9383 *** Reply-To: akpm@linux-foundation.org (switching to email for netdev - please repond via emailed reply-to-all, not via the bugzilla UI) On Thu, 15 Nov 2007 01:56:07 -0800 (PST) bugme-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=9384 > > Summary: Appletalk packets are delivered to the last interface > FD_SET > Product: Networking > Version: 2.5 > KernelVersion: 2.6.21.3 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: Other > AssignedTo: acme@ghostprotocols.net > ReportedBy: trs80@ucc.asn.au > > > Most recent kernel where this bug did not occur: 2.6.10. Maybe 2.6.15? It was > in 2.6.18 along with bug 7421 which caused me to disable netatalk until now. > Distribution: Debian etch (4.0) > Hardware Environment: Pentium 4 2.8GHz, HT off, Intel D865GLC motherboard, > 256MB RAM, onboard Intel GigE, PCI Intel e100. > Software Environment: Netatalk 2.0.3, ipset patch for iptables and kernel > Problem Description: Appletalk packets appear to come from the wrong > interface, > specifically the last one FD_SET. Using wireshark I see Appletalk rtmp > packets > arrive from the upstream router on eth1 (the e100). Netatalk then reports the > packet as having arrived on eth0.3, which is the only other appletalk enabled > interface, and prints "rtmp_packet interface mismatch" because the packet > appears to come from the wrong interface. > > I'm fairly sure it's the kernel doing it, because wireshark is listening on > eth1 and shows the packet from the upstream router's MAC address and DDP > address, then the debug code in atalkd immediately after the recvfrom prints > the ifr_name which is eth0.3. Also netatalk 2.0.3 was released over 2 years > ago, so the only code that's changed is the kernel. > > Enabling appletalk on eth0.2 clarifies the problem - packets are delivered to > fds belonging to the last interface FD_SET. Reordering the interfaces also > shows this, as in the config file changing the order of the interfaces > changes > the order they're looped through for FD_SET. > > Steps to reproduce: Set up a multi-interface netatalk config and watch for > rtmp_packet interface mismatch messages. I added a bunch of log statements to > debug this, the most useful places to put them are at the end of setaddr() > and > after the select() in main(). > > The machine is a router, so I have to minimise the downtime of testing > different kernel versions. I am happy to instrument atalkd or provide packet > captures. > From: Andrew Morton <akpm@linux-foundation.org> Date: Thu, 15 Nov 2007 02:12:19 -0800 > > Most recent kernel where this bug did not occur: 2.6.10. Maybe 2.6.15? It > was > > in 2.6.18 along with bug 7421 which caused me to disable netatalk until > now. > > Distribution: Debian etch (4.0) > > Hardware Environment: Pentium 4 2.8GHz, HT off, Intel D865GLC motherboard, > > 256MB RAM, onboard Intel GigE, PCI Intel e100. > > Software Environment: Netatalk 2.0.3, ipset patch for iptables and kernel > > Problem Description: Appletalk packets appear to come from the wrong > interface, > > specifically the last one FD_SET. Using wireshark I see Appletalk rtmp > packets > > arrive from the upstream router on eth1 (the e100). Netatalk then reports > the > > packet as having arrived on eth0.3, which is the only other appletalk > enabled > > interface, and prints "rtmp_packet interface mismatch" because the packet > > appears to come from the wrong interface. > > > > I'm fairly sure it's the kernel doing it, because wireshark is listening on > > eth1 and shows the packet from the upstream router's MAC address and DDP > > address, then the debug code in atalkd immediately after the recvfrom > prints > > the ifr_name which is eth0.3. Also netatalk 2.0.3 was released over 2 years > > ago, so the only code that's changed is the kernel. > > > > Enabling appletalk on eth0.2 clarifies the problem - packets are delivered > to > > fds belonging to the last interface FD_SET. Reordering the interfaces also > > shows this, as in the config file changing the order of the interfaces > changes > > the order they're looped through for FD_SET. > > > > Steps to reproduce: Set up a multi-interface netatalk config and watch for > > rtmp_packet interface mismatch messages. I added a bunch of log statements > to > > debug this, the most useful places to put them are at the end of setaddr() > and > > after the select() in main(). > > > > The machine is a router, so I have to minimise the downtime of testing > > different kernel versions. I am happy to instrument atalkd or provide > packet > > captures. I suspect there is some issue with the ordering of the atalk interface list which is causing this. Arnaldo, can you please take a look at this? Thanks. Reply-To: acme@redhat.com Em Thu, Nov 15, 2007 at 03:49:35PM -0800, David Miller escreveu: > From: Andrew Morton <akpm@linux-foundation.org> > Date: Thu, 15 Nov 2007 02:12:19 -0800 > > > > Most recent kernel where this bug did not occur: 2.6.10. Maybe 2.6.15? It > was > > > in 2.6.18 along with bug 7421 which caused me to disable netatalk until > now. > > > Distribution: Debian etch (4.0) > > > Hardware Environment: Pentium 4 2.8GHz, HT off, Intel D865GLC > motherboard, > > > 256MB RAM, onboard Intel GigE, PCI Intel e100. > > > Software Environment: Netatalk 2.0.3, ipset patch for iptables and kernel > > > Problem Description: Appletalk packets appear to come from the wrong > interface, > > > specifically the last one FD_SET. Using wireshark I see Appletalk rtmp > packets > > > arrive from the upstream router on eth1 (the e100). Netatalk then reports > the > > > packet as having arrived on eth0.3, which is the only other appletalk > enabled > > > interface, and prints "rtmp_packet interface mismatch" because the packet > > > appears to come from the wrong interface. > > > > > > I'm fairly sure it's the kernel doing it, because wireshark is listening > on > > > eth1 and shows the packet from the upstream router's MAC address and DDP > > > address, then the debug code in atalkd immediately after the recvfrom > prints > > > the ifr_name which is eth0.3. Also netatalk 2.0.3 was released over 2 > years > > > ago, so the only code that's changed is the kernel. > > > > > > Enabling appletalk on eth0.2 clarifies the problem - packets are > delivered to > > > fds belonging to the last interface FD_SET. Reordering the interfaces > also > > > shows this, as in the config file changing the order of the interfaces > changes > > > the order they're looped through for FD_SET. > > > > > > Steps to reproduce: Set up a multi-interface netatalk config and watch > for > > > rtmp_packet interface mismatch messages. I added a bunch of log > statements to > > > debug this, the most useful places to put them are at the end of > setaddr() and > > > after the select() in main(). > > > > > > The machine is a router, so I have to minimise the downtime of testing > > > different kernel versions. I am happy to instrument atalkd or provide > packet > > > captures. > > I suspect there is some issue with the ordering of the atalk > interface list which is causing this. > > Arnaldo, can you please take a look at this? I'll look at this in the afternoon. - Arnaldo |