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

From: Shawn Webb <shawn.webb_at_hardenedbsd.org>
Date: Sat, 01 Oct 2022 16:56:15 UTC
On Sat, Oct 01, 2022 at 09:51:40AM -0700, Cy Schubert wrote:
> In message <20221001164556.guh2gu6umjvehq3r@mutt-hbsd>, Shawn Webb writes:
> > 
> > --iwomfqhvgfyzurjf
> > Content-Type: text/plain; charset=utf-8
> > Content-Disposition: inline
> > Content-Transfer-Encoding: quoted-printable
> >
> > On Sat, Oct 01, 2022 at 05:40:05PM +0100, Alexander V. Chernikov wrote:
> > >=20
> > > > On 1 Oct 2022, at 17:35, Shawn Webb <shawn.webb@hardenedbsd.org> wrote:
> > > >=20
> > > > On Sat, Oct 01, 2022 at 02:19:03PM +0000, Alexander V. Chernikov wrote:
> > > >> The branch main has been updated by melifaro:
> > > >>=20
> > > >> URL: https://cgit.FreeBSD.org/src/commit/?id=3D7e5bf68495cc0a8c9793a33=
> > 8a8a02009a7f6dbb6
> > > >>=20
> > > >> 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
> > > >>=20
> > > >>   netlink: add netlink support
> > > >>=20
> > > >>   Netlinks is a communication protocol currently used in Linux kernel =
> > to modify,
> > > >>    read and subscribe for nearly all networking state. Interfaces, add=
> > resses, routes,
> > > >>    firewall, fibs, vnets, etc are controlled via netlink.
> > > >>   It is async, TLV-based protocol, providing 1-1 and 1-many communicat=
> > ions.
> > > >>=20
> > > >>   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
> > > >>=20
> > > >>   The implementation also supports the NETLINK_GENERIC family framewor=
> > k.
> > > >>=20
> > > >>   Implementation notes:
> > > >>   Netlink is implemented via loadable/unloadable kernel module,
> > > >>    not touching many kernel parts.
> > > >>   Each netlink socket uses dedicated taskqueue to support async operat=
> > ions
> > > >>    that can sleep, such as interface creation. All message processing =
> > is
> > > >>    performed within these taskqueues.
> > > >>=20
> > > >>   Compatibility:
> > > >>   Most of the Netlink data models specified above maps to FreeBSD conc=
> > epts
> > > >>    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 compi=
> > le
> > > >>   and work with FreeBSD netlink.
> > > >>=20
> > > >>   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(+)
> > > >>=20
> > > >=20
> > > > Hey Alexander,
> > > >=20
> > > > This commit broke buildworld:
> > > Should be fixed by 11ca01e9aa47 (currently building to see if that=E2=80=
> > =99s 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.
> 
> It's not missing. He hasn't pushed it yet. Alexander's statement in 
> brackets "()" implies he hasn't pushed it yet.
> 
> ** Though, the hash will change should a rebase be needed between the time 
> he committed it and it is pushed.

cgit shows that it was pushed:
https://cgit.freebsd.org/src/commit/?id=11ca01e9aa479559da240ceba17fdcdf2d1e97c3

Or am I misreading cgit?

-- 
Shawn Webb
Cofounder / Security Engineer
HardenedBSD

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