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