On Tue, 6 Sep 2022, Gleb Smirnoff wrote:

On Sun, Sep 04, 2022 at 06:39:53AM +0000, Bjoern A. Zeeb wrote:
B> > B> > Author:     Gleb Smirnoff <gleb...@freebsd.org>
B> > B> > AuthorDate: 2022-08-30 22:09:21 +0000
B> > B> > Commit:     Gleb Smirnoff <gleb...@freebsd.org>
B> > B> > CommitDate: 2022-08-30 22:09:21 +0000
B> > B> >
B> > B> >    divert(4): make it compilable and working without INET
B> > B> >
B> > B> >    Differential revision:  https://reviews.freebsd.org/D36383
B> > B>
B> > B> Well, almost at least....
B> >
B> > I wonder why LINT-NOINET builds without this??
B>
B> I wondered the same last night.. I would be good to find out?

Ok, I think that assumption that sysctl parts of divert require
INET were just wrong, that's why LINT-NOINET builds.

Not entirely.  It's because sys/netinet/in_proto.c uncodonitionally
currently provides _net_inet for the sysctl.
The reason for that is that a lot of AF independent sysctls were initially
put under inet but are equally used for inet6 or neither in the network stack.

You will need at least #if defined(INET6) || defined(INET)  around the sysctls
in divert.c then.

A LINT-NOIP kernel will complain about the missing symbol if we keep compiling
divert without INET or INET6 in the kernel:

      1 make[4]: "/tank/users/bz/git/FreeBSD/freebsd-src/Makefile.inc1" line 
334: SYSTEM_LINKER: Determined that LD=ld matches the source tree.  Not bootstrapping a 
cross-linker.
      2
      3 --------------------------------------------------------------
      4 >>> Kernel build for LINT-NOIP started on Mon Sep  5 20:26:47 UTC 2022
      5 --------------------------------------------------------------
      6 ===> LINT-NOIP
      7         0.09 real         0.03 user         0.06 sys
      8
      9 --------------------------------------------------------------
     10 >>> stage 2.3: build tools
     11 --------------------------------------------------------------
     12         0.12 real         0.03 user         0.09 sys
     13 --------------------------------------------------------------
     14 >>> stage 3.1: building everything
     15 --------------------------------------------------------------
     16 linking kernel
     17 ld: error: undefined symbol: ip_divert_ptr
     18 >>> referenced by ip_divert.c
     19 >>>               ip_divert.o:(div_modevent)
     20 >>> referenced by ip_divert.c
     21 >>>               ip_divert.o:(div_modevent)
     22
     23 ld: error: undefined symbol: sctp_delayed_cksum
     24 >>> referenced by ip_divert.c
     25 >>>               ip_divert.o:(divert_packet)
     26
     27 ld: error: undefined symbol: sysctl___net_inet
     28 >>> referenced by ip_divert.c
     29 >>>               ip_divert.o:(sysctl___net_inet_divert)
     30 --- kernel ---
     31 *** [kernel] Error code 1
     32
     33 make[5]: stopped in 
/tank/users/bz/obj/tank/users/bz/git/FreeBSD/freebsd-src/amd64.amd64/sys/LINT-NOIP
     34 1 error
     35
     36 make[5]: stopped in 
/tank/users/bz/obj/tank/users/bz/git/FreeBSD/freebsd-src/amd64.amd64/sys/LINT-NOIP
     37      1224.73 real      2829.68 user       196.38 sys
     38 --- buildkernel ---
     39
     40 make[4]: stopped in /tank/users/bz/git/FreeBSD/freebsd-src
     41 --- buildkernel ---
     42
     43 make[3]: stopped in /tank/users/bz/git/FreeBSD/freebsd-src

--
Bjoern A. Zeeb                                                     r15:7

Reply via email to