Re: git: 7e5bf68495cc - main - netlink: add netlink support

From: Shawn Webb <shawn.webb_at_hardenedbsd.org>
Date: Sat, 01 Oct 2022 16:45:56 UTC
On Sat, Oct 01, 2022 at 05:40:05PM +0100, Alexander V. Chernikov wrote:
> 
> > On 1 Oct 2022, at 17:35, Shawn Webb <shawn.webb@hardenedbsd.org> wrote:
> > 
> > On Sat, Oct 01, 2022 at 02:19:03PM +0000, Alexander V. Chernikov wrote:
> >> The branch main has been updated by melifaro:
> >> 
> >> URL: https://cgit.FreeBSD.org/src/commit/?id=7e5bf68495cc0a8c9793a338a8a02009a7f6dbb6
> >> 
> >> commit 7e5bf68495cc0a8c9793a338a8a02009a7f6dbb6
> >> Author:     Alexander V. Chernikov <melifaro@FreeBSD.org>
> >> AuthorDate: 2022-01-20 21:39:21 +0000
> >> Commit:     Alexander V. Chernikov <melifaro@FreeBSD.org>
> >> CommitDate: 2022-10-01 14:15:35 +0000
> >> 
> >>   netlink: add netlink support
> >> 
> >>   Netlinks is a communication protocol currently used in Linux kernel to modify,
> >>    read and subscribe for nearly all networking state. Interfaces, addresses, routes,
> >>    firewall, fibs, vnets, etc are controlled via netlink.
> >>   It is async, TLV-based protocol, providing 1-1 and 1-many communications.
> >> 
> >>   The current implementation supports the subset of NETLINK_ROUTE
> >>   family. To be more specific, the following is supported:
> >>   * Dumps:
> >>    - routes
> >>    - nexthops / nexthop groups
> >>    - interfaces
> >>    - interface addresses
> >>    - neighbors (arp/ndp)
> >>   * Notifications:
> >>    - interface arrival/departure
> >>    - interface address arrival/departure
> >>    - route addition/deletion
> >>   * Modifications:
> >>    - adding/deleting routes
> >>    - adding/deleting nexthops/nexthops groups
> >>    - adding/deleting neghbors
> >>    - adding/deleting interfaces (basic support only)
> >>   * Rtsock interaction
> >>    - route events are bridged both ways
> >> 
> >>   The implementation also supports the NETLINK_GENERIC family framework.
> >> 
> >>   Implementation notes:
> >>   Netlink is implemented via loadable/unloadable kernel module,
> >>    not touching many kernel parts.
> >>   Each netlink socket uses dedicated taskqueue to support async operations
> >>    that can sleep, such as interface creation. All message processing is
> >>    performed within these taskqueues.
> >> 
> >>   Compatibility:
> >>   Most of the Netlink data models specified above maps to FreeBSD concepts
> >>    nicely. Unmodified ip(8) binary correctly works with
> >>   interfaces, addresses, routes, nexthops and nexthop groups. Some
> >>   software such as net/bird require header-only modifications to compile
> >>   and work with FreeBSD netlink.
> >> 
> >>   Reviewed by:    imp
> >>   Differential Revision: https://reviews.freebsd.org/D36002
> >>   MFC after:      2 months
> >> ---
> >> etc/mtree/BSD.include.dist           |    4 +
> >> sys/modules/Makefile                 |    1 +
> >> sys/modules/netlink/Makefile         |   17 +
> >> sys/net/route.c                      |   11 +
> >> sys/net/route/route_ctl.h            |    7 +
> >> sys/net/rtsock.c                     |   42 ++
> >> sys/netlink/netlink.h                |  257 +++++++++
> >> sys/netlink/netlink_ctl.h            |  102 ++++
> >> sys/netlink/netlink_debug.h          |   82 +++
> >> sys/netlink/netlink_domain.c         |  689 +++++++++++++++++++++++
> >> sys/netlink/netlink_generic.c        |  472 ++++++++++++++++
> >> sys/netlink/netlink_generic.h        |  112 ++++
> >> sys/netlink/netlink_io.c             |  528 ++++++++++++++++++
> >> sys/netlink/netlink_linux.h          |   54 ++
> >> sys/netlink/netlink_message_parser.c |  472 ++++++++++++++++
> >> sys/netlink/netlink_message_parser.h |  270 +++++++++
> >> sys/netlink/netlink_message_writer.c |  686 +++++++++++++++++++++++
> >> sys/netlink/netlink_message_writer.h |  250 +++++++++
> >> sys/netlink/netlink_module.c         |  228 ++++++++
> >> sys/netlink/netlink_route.c          |  135 +++++
> >> sys/netlink/netlink_route.h          |   43 ++
> >> sys/netlink/netlink_var.h            |  142 +++++
> >> sys/netlink/route/common.h           |  213 ++++++++
> >> sys/netlink/route/iface.c            |  857 +++++++++++++++++++++++++++++
> >> sys/netlink/route/iface_drivers.c    |  165 ++++++
> >> sys/netlink/route/ifaddrs.h          |   90 +++
> >> sys/netlink/route/interface.h        |  245 +++++++++
> >> sys/netlink/route/neigh.c            |  571 +++++++++++++++++++
> >> sys/netlink/route/neigh.h            |  105 ++++
> >> sys/netlink/route/nexthop.c          | 1000 ++++++++++++++++++++++++++++++++++
> >> sys/netlink/route/nexthop.h          |  102 ++++
> >> sys/netlink/route/route.c            |  972 +++++++++++++++++++++++++++++++++
> >> sys/netlink/route/route.h            |  366 +++++++++++++
> >> sys/netlink/route/route_var.h        |  101 ++++
> >> 34 files changed, 9391 insertions(+)
> >> 
> > 
> > Hey Alexander,
> > 
> > This commit broke buildworld:
> Should be fixed by 11ca01e9aa47 (currently building to see if that’s the last one)

Cool. Thanks!

Tangentially related: it looks like the commit email for 11ca01e9aa47
is missing. I checked my spam folder just to make sure on my end.

Thanks,

-- 
Shawn Webb
Cofounder / Security Engineer
HardenedBSD

https://git.hardenedbsd.org/hardenedbsd/pubkeys/-/raw/master/Shawn_Webb/03A4CBEBB82EA5A67D9F3853FF2E67A277F8E1FA.pub.asc