Re: git: e72c522858cb - main - divert(4): make it compilable and working without INET
Date: Wed, 07 Sep 2022 09:54:49 UTC
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 <glebius@FreeBSD.org>
> B> > B> > AuthorDate: 2022-08-30 22:09:21 +0000
> B> > B> > Commit: Gleb Smirnoff <glebius@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