lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAE4R7bDnrMZSsZeZmYkT8HhkXUpgnedBo8VX5iEtyJmzJ7gV5A@mail.gmail.com> Date: Wed, 25 Feb 2015 21:08:30 -0800 From: Scott Feldman <sfeldma@...il.com> To: David Miller <davem@...emloft.net> Cc: Netdev <netdev@...r.kernel.org> Subject: Re: ARP resolving for switch drivers On Sat, Feb 21, 2015 at 10:28 PM, Scott Feldman <sfeldma@...il.com> wrote: > On Sat, Feb 21, 2015 at 10:11 PM, David Miller <davem@...emloft.net> wrote: >> >> Scott I looked into the current state of affairs and you should >> be able to use generic infrastructure to resolve a neighbour >> entry and even trigger the state machine. >> >> For ipv4: >> >> n = __ipv4_neigh_lookup(dev, ip_addr); >> if (!n) >> n = neigh_create(&arp_tbl, &ip_addr, dev, true); >> if (!n) >> goto error; >> >> if (!(n->nud_state & NUD_VALID)) >> neigh_event_send(n, NULL); >> else >> memcpy(&hw_entry->mac_addr, n->ha, dev_addr_len); >> >> If you have to take the neigh_event_send() path, you have to wait for >> the notifier to be invoked. And in the notifier you can fetch the >> MAC address. > > Perfect! I'll give this a try shortly and test and report back. > (Trying to beat down some remaining L2 issues first). > David, Just following up on this. The code above works great, at least for the initial nh resolution when route is installed. I need to do some more testing for the cases when the neigh entry goes to !NUD_VALID, but I'm still holding a route with nhs looking for that neigh. I guess I need to re-trigger the above code. Need to play around with it. There are two other items I had on my list for L3 from netconf: 1) Routes that overlap tables, or how to assign priority. I'll look at the RFC you sent for collapsing local/main tables. For now, I used fib_info->fib_priority for the priority in the rocker L3 table. Maybe that's good enough once local/main are collapsed? But for other tables, I'm not sure if fib_info->fib_priority will be sufficient. I probably need some guidance here. 2) Marking routes as "external"[1]. I added a RTAX_FEATURE_EXTERNAL bit to be set by application (iproute2, quagga, etc) when wanting to install route externally, for example to a switchdev switch. Then if application sets bit, it is the applications responsibility to handle failure cases and rollback any lesser-prefixed routes than may have been pushed earlier, successfully to external. The problem I'm running into is internal kernel routes need to be pushed to external and I don't want to mark those as "external", but I also want those to be install externally (to the device), if possible. [1] "external" seems to be the label we're giving kernel objects that get mirrored externally to a device, such as the mark we used for FDB entries populated into the bridge's FDB by a learning device. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists