HomeFreeBSD

Fix arp/ndp deletion broken by 2fe5a79425c7.

Description

Fix arp/ndp deletion broken by 2fe5a79425c7.

Changes in the 2fe5a79425c7 moved dst sockaddr masking from the
routing control plane to the rtsock code.

It broke arp/ndp deletion.
It turns out, arp/ndp perform RTM_GET request first to get an
interface index necessary for the deletion.
Then they simply stamp the reply with RTF_LLDATA and set the
command to RTM_DELETE.
As a result, kernel receives request with non-empty RTA_NETMASK
and clears RTA_DST host bits before passing the message to the
lla code.

De facto, the only needed bits are RTA_DST, RTA_GATEWAY and the
subset of rtm_flags.

With that in mind, fix the interace by clearing RTA_NETMASK
for every messages with RTF_LLDATA.

While here, cleanup arp/ndp code a bit.

MFC after: 1 day
Reviewed by: gnn
Differential Revision: https://reviews.freebsd.org/D28804

Details

Provenance
melifaroAuthored on Feb 19 2021, 9:09 PM
Reviewer
gnn
Differential Revision
D28804: Fix `arp -d` / `ndp -d`.
Parents
rGa78bb831a17f: fbio: Use appropriate types for the physical and virtual framebuffer address
Branches
Unknown
Tags
Unknown