Re: git: fe33e0ab83d1 - main - ifnet/API: Move the IfAPI from if_var.h to if.h

From: Justin Hibbits <jhibbits_at_FreeBSD.org>
Date: Fri, 13 Jan 2023 00:01:14 UTC
Hi Gleb,

On Thu, 12 Jan 2023 15:37:43 -0800
Gleb Smirnoff <glebius@freebsd.org> wrote:

>   Justin,
> 
> On Thu, Jan 12, 2023 at 04:20:55PM +0000, Justin Hibbits wrote:
> J> The branch main has been updated by jhibbits:
> J> 
> J> URL:
> J> https://cgit.FreeBSD.org/src/commit/?id=fe33e0ab83d1fbc3c5cd4a2591ba0036e47b1fec
> J> 
> J> commit fe33e0ab83d1fbc3c5cd4a2591ba0036e47b1fec
> J> Author:     Justin Hibbits <jhibbits@FreeBSD.org>
> J> AuthorDate: 2023-01-11 16:56:39 +0000
> J> Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
> J> CommitDate: 2023-01-12 16:25:41 +0000
> J> 
> J>     ifnet/API: Move the IfAPI from if_var.h to if.h
> J>     
> J>     Summary:
> J>     The "public" KPI for ifnet belongs in net/if.h, with
> J> net/if_var.h being implementation details for the netstack. This
> J> is the next step in enforcing that separation.
> J>     
> J>     Reviewed by:    melifaro
> J>     Sponsored by:   Juniper Networks, Inc.
> J>     Differential Revision: https://reviews.freebsd.org/D38030  
> 
> I'm very sorry for not reviewing the D38030 in time. I didn't have
> electricity for a few days in a raw.
> 
> I agree that DrvAPI needs to be isolated from stack visible header
> file, but I can't agree that if.h needs to be polluted with it. First
> of all net/if.h is a SuS/POSIX mandated header[1], with a very
> limited set of features announced and perfectionist-wise we
> definitely shouldn't pollute it with our kernel driver API. Second,
> it of course has lots of stuff beyond POSIX, but it still was 99%
> userland visible (before this change) and ideally it should be a 100%
> userland header.
> 
> I think this change as is needs to be reverted. And to properly
> isolate DrvAPI we have two options:
> 
> 1) Leave it in if_var.h and start a new header where we will move
> stuff that should stay private from drivers. Drivers keep using
> if_var.h. 2) Create a new header with DrvAPI. Drivers to stop useing
> if_var.h and switch to new header file.
> 
> I personally prefer 1), as it follows what we have started to do long
> time ago, see c29e1ad9304, c3322cb91ca, 76039bc84fa, eedc7fd9e87.
> 
> [1]
> https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/net_if.h.html
> 

I'll revert this, but I think we should discuss further how to approach
this, since on our call last week I got the impression that the DrvAPI
does belong in if.h, with if_var.h being exclusively used by netstack.

- Justin