Fatih USTA
On 8.07.2020 19:19, Alberto Leiva wrote:
Error
src/mod/common/db/global.c:91:26: error: invalid suffix "b1011" on
integer constant
I converted DEFAULT_F_ARGS binary to hex. (Since 4.0.7-my first jool
compile)
Are there any problem here?
Ok, I don't actually have much problem changing the constant from
binary to hex, but this actually looks like a gcc bug. Which version
of gcc are you using?
I aggree with you.
Solution
jool tools minimum libnl3 requierment >= 3.2.22
I compiled and fixed.
You're completely right. nla_nest_cancel first appeared in libnl
3.2.22. Updated: [0]
Do we no longer need these libraries?(I think since 4.0.8)
Short answer: Correct; those libraries were abandoned.
Long answer: Actually, I want to use those libraries, but there's an
autotools error that's preventing me from doing so: [1]
Here's a summary of the problem, in case someone can help:
The autotools have three types of libraries: Public Libraries
(lib_LTLIBRARIES), Private Libraries (pkglib_LTLIBRARIES) and
non-libraries (noinst_LTLIBRARIES).
For now, I want all Jool libraries to be Private Libraries (PL), but
autotools prints a warning and behaves strangely when PLs depend on
other PLs. (PL libjoolargp depends on PL libjoolnl, which in turn
depends on PL libjoolutil.)
(The warning is "relinking" and the strange behavior is dumb error
messages when you try to install a version of the library on top of a
different version of the same library that exports a different API.
See [2])
I "solved" the problem by converting all the PLs into non-libraries.
In other words, the current library code is being merged into the
jool, jool_siit and joold programs. But I would like to revert them
back to PLs.
Kernel compile warnings
src/mod/common/db/pool4/empty.c: In function ‘pool4empty_contains’:
src/mod/common/db/pool4/empty.c:33: warning: comparison is always false
due to limited range of data type
Ok. I removed this validation; It's not needed. ([0])
I applied patch and fixed.
Some tools warnings ?
tribute.Tpo -c attribute.c -fPIC -DPIC -o .libs/libjoolnl_la-attribute.o
In file included from /usr/include/libnl3/netlink/netlink.h:26:0,
from /usr/include/libnl3/netlink/attr.h:15,
from ../../../src/usr/nl/attribute.h:4,
from attribute.c:1:
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:289:15:
warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
RT_TABLE_MAX=0xFFFFFFFF
^
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:369:9:
warning: ISO C forbids zero-size array 'rtvia_addr' [-Wpedantic]
__u8 rtvia_addr[0];
^
I don't think I can fix these; the problem is in kernel headers, not Jool code.
attribute.c: In function 'jnla_validate_list':
attribute.c:74:2: warning: passing argument 4 of 'nla_validate' discards
'const' qualifier from pointer target type [enabled by default]
error = nla_validate(head, len, JNLAL_MAX, policy);
^
In file included from ../../../src/usr/nl/attribute.h:4:0,
from attribute.c:1:
/usr/include/libnl3/netlink/attr.h:84:13: note: expected 'struct
nla_policy *' but argument is of type 'const struct nla_policy *'
extern int nla_validate(struct nlattr *, int, int,
^
Good catch. I wonder why it's not showing this warning to me. ([0])
I applied patch and fixed.
wargp/global.c: In function 'handle_global_display':
wargp/global.c:40:9: warning: missing braces around initializer
[-Wmissing-braces]
struct display_args dargs = { 0 };
^
wargp/global.c:40:9: warning: (near initialization for
'dargs.no_headers') [-Wmissing-braces]
wargp/global.c: In function 'handle_global_update':
wargp/global.c:87:9: warning: missing braces around initializer
[-Wmissing-braces]
struct update_args uargs = { 0 };
^
Hm. The code is correct though. I think you're using an old version of
gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119
The warning itself is a bug, and was fixed around gcc 4.7 apparently.
Assuming you're using an old gcc: Is a newer version available in your distro?
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
This gcc coming from devtoolset-2.
I am using the old distribution. And yes there is a newer version
available. However, I cannot upgrade the newer version quickly. Because
I have many packages.
I planned to upgrade for next year. I hope I have free time for the plan.
Thank you.
[0]
https://github.com/NICMx/Jool/commit/bdab9612ffb2b548dd0d7d97a43101af9c205e66
[1] https://stackoverflow.com/questions/61533589
[2] https://github.com/NICMx/Jool/issues/325
On Wed, Jul 8, 2020 at 6:24 AM Fatih USTA via Jool-list
<[email protected]> wrote:
Hi,
I compiled 4.1.1 successfully. Thank you for your effort.
I just want to share some notes with you.
Kernel version 4.9.228
Error
src/mod/common/db/global.c:91:26: error: invalid suffix "b1011" on
integer constant
I converted DEFAULT_F_ARGS binary to hex. (Since 4.0.7-my first jool
compile)
Are there any problem here?
Patch
cat binary_to_hex.patch
diff -aur a/src/common/constants.h b/src/common/constants.h
--- a/src/common/constants.h 2020-07-08 09:51:44.000000000 +0300
+++ b/src/common/constants.h 2020-07-08 09:52:12.000000000 +0300
@@ -68,7 +68,7 @@
#define DEFAULT_DROP_EXTERNAL_CONNECTIONS false
#define DEFAULT_MAX_STORED_PKTS 10
#define DEFAULT_SRC_ICMP6ERRS_BETTER true
-#define DEFAULT_F_ARGS 0b1011
+#define DEFAULT_F_ARGS 0xb
#define DEFAULT_HANDLE_FIN_RCV_RST false
#define DEFAULT_BIB_LOGGING false
#define DEFAULT_SESSION_LOGGING false
By the way I still see binary output. I think there is no problem here.
#jool global display | grep f-arg
f-args: 11 (0b1011): SrcAddr:1 SrcPort:0 DstAddr:1 DstPort:1
Error nla_nest_cancel
gcc -Wall -pedantic -std=gnu11 -I../../../src -m32
-I/usr/local/include/kernel-headers-4.9.228/usr/include -m32 -o
jool_siit jool_siit-main-siit.o ../argp/.libs/libjoolargp.a -lnl-genl-3
-lnl-3 -lpthread -lm
../argp/.libs/libjoolargp.a(libjoolnl_la-attribute.o): In function
`nla_put_prefix6':
attribute.c:(.text+0xe34): undefined reference to `nla_nest_cancel'
../argp/.libs/libjoolargp.a(libjoolnl_la-attribute.o): In function
`nla_put_prefix4':
attribute.c:(.text+0xf0a): undefined reference to `nla_nest_cancel'
../argp/.libs/libjoolargp.a(libjoolnl_la-attribute.o): In function
`nla_put_taddr6':
attribute.c:(.text+0xfbb): undefined reference to `nla_nest_cancel'
../argp/.libs/libjoolargp.a(libjoolnl_la-attribute.o): In function
`nla_put_taddr4':
attribute.c:(.text+0x106c): undefined reference to `nla_nest_cancel'
../argp/.libs/libjoolargp.a(libjoolnl_la-attribute.o): In function
`nla_put_plateaus':
attribute.c:(.text+0x10ee): undefined reference to `nla_nest_cancel'
../argp/.libs/libjoolargp.a(libjoolnl_la-attribute.o):attribute.c:(.text+0x11ca):
more undefined references to `nla_nest_cancel' follow
collect2: error: ld returned 1 exit status
Solution
jool tools minimum libnl3 requierment >= 3.2.22
I compiled and fixed.
Do we no longer need these libraries?(I think since 4.0.8)
/usr/lib/jool/libjoolargp.so
/usr/lib/jool/libjoolargp.so.0
/usr/lib/jool/libjoolargp.so.0.0.0
/usr/lib/jool/libjoolnl.so
/usr/lib/jool/libjoolnl.so.0
/usr/lib/jool/libjoolnl.so.0.0.0
/usr/lib/jool/libjoolutil.so
/usr/lib/jool/libjoolutil.so.0
/usr/lib/jool/libjoolutil.so.0.0.0
Kernel compile warnings
src/mod/common/db/pool4/empty.c: In function ‘pool4empty_contains’:
src/mod/common/db/pool4/empty.c:33: warning: comparison is always false
due to limited range of data type
Some tools warnings ?
tribute.Tpo -c attribute.c -fPIC -DPIC -o .libs/libjoolnl_la-attribute.o
In file included from /usr/include/libnl3/netlink/netlink.h:26:0,
from /usr/include/libnl3/netlink/attr.h:15,
from ../../../src/usr/nl/attribute.h:4,
from attribute.c:1:
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:289:15:
warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
RT_TABLE_MAX=0xFFFFFFFF
^
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:369:9:
warning: ISO C forbids zero-size array 'rtvia_addr' [-Wpedantic]
__u8 rtvia_addr[0];
^
attribute.c: In function 'jnla_validate_list':
attribute.c:74:2: warning: passing argument 4 of 'nla_validate' discards
'const' qualifier from pointer target type [enabled by default]
error = nla_validate(head, len, JNLAL_MAX, policy);
^
In file included from ../../../src/usr/nl/attribute.h:4:0,
from attribute.c:1:
/usr/include/libnl3/netlink/attr.h:84:13: note: expected 'struct
nla_policy *' but argument is of type 'const struct nla_policy *'
extern int nla_validate(struct nlattr *, int, int,
^
................
In file included from /usr/include/libnl3/netlink/netlink.h:26:0,
from /usr/include/libnl3/netlink/attr.h:15,
from ../../../src/common/config.h:13,
from ../../../src/usr/argp/command.h:5,
from wargp/global.c:3:
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:289:15:
warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
RT_TABLE_MAX=0xFFFFFFFF
^
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:369:9:
warning: ISO C forbids zero-size array 'rtvia_addr' [-Wpedantic]
__u8 rtvia_addr[0];
^
wargp/global.c: In function 'handle_global_display':
wargp/global.c:40:9: warning: missing braces around initializer
[-Wmissing-braces]
struct display_args dargs = { 0 };
^
wargp/global.c:40:9: warning: (near initialization for
'dargs.no_headers') [-Wmissing-braces]
wargp/global.c: In function 'handle_global_update':
wargp/global.c:87:9: warning: missing braces around initializer
[-Wmissing-braces]
struct update_args uargs = { 0 };
^
.............................
In file included from /usr/include/libnl3/netlink/netlink.h:26:0,
from /usr/include/libnl3/netlink/attr.h:15,
from ../../../src/common/config.h:13,
from wargp/instance.c:4:
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:289:15:
warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
RT_TABLE_MAX=0xFFFFFFFF
^
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:369:9:
warning: ISO C forbids zero-size array 'rtvia_addr' [-Wpedantic]
__u8 rtvia_addr[0];
^
wargp/instance.c: In function 'handle_instance_display':
wargp/instance.c:116:9: warning: missing braces around initializer
[-Wmissing-braces]
struct display_args dargs = { 0 };
^
wargp/instance.c:116:9: warning: (near initialization for
'dargs.no_headers') [-Wmissing-braces]
wargp/instance.c: In function 'handle_instance_add':
wargp/instance.c:194:9: warning: missing braces around initializer
[-Wmissing-braces]
struct add_args aargs = { 0 };
^
wargp/instance.c:194:9: warning: (near initialization for 'aargs.iname')
[-Wmissing-braces]
wargp/instance.c: In function 'handle_instance_remove':
wargp/instance.c:252:9: warning: missing braces around initializer
[-Wmissing-braces]
struct rm_args rargs = { 0 };
^
.............................
In file included from /usr/include/libnl3/netlink/netlink.h:26:0,
from ../../../src/usr/nl/core.h:4,
from wargp/pool4.c:4:
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:289:15:
warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
RT_TABLE_MAX=0xFFFFFFFF
^
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:369:9:
warning: ISO C forbids zero-size array 'rtvia_addr' [-Wpedantic]
__u8 rtvia_addr[0];
^
wargp/pool4.c: In function 'handle_pool4_display':
wargp/pool4.c:115:9: warning: missing braces around initializer
[-Wmissing-braces]
struct display_args dargs = { 0 };
^
wargp/pool4.c:115:9: warning: (near initialization for 'dargs.proto')
[-Wmissing-braces]
wargp/pool4.c: In function 'handle_pool4_add':
wargp/pool4.c:251:9: warning: missing braces around initializer
[-Wmissing-braces]
struct add_args aargs = { 0 };
^
wargp/pool4.c:251:9: warning: (near initialization for 'aargs.entry')
[-Wmissing-braces]
wargp/pool4.c: In function 'handle_pool4_remove':
wargp/pool4.c:331:9: warning: missing braces around initializer
[-Wmissing-braces]
struct rm_args rargs = { 0 };
^
wargp/pool4.c:331:9: warning: (near initialization for 'rargs.entry')
[-Wmissing-braces]
.....................
In file included from /usr/include/libnl3/netlink/netlink.h:26:0,
from ../../../src/usr/nl/core.h:4,
from wargp/stats.c:3:
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:289:15:
warning: ISO C restricts enumerator values to range of 'int' [-Wpedantic]
RT_TABLE_MAX=0xFFFFFFFF
^
/usr/local/include/kernel-headers-4.9.228/usr/include/linux/rtnetlink.h:369:9:
warning: ISO C forbids zero-size array 'rtvia_addr' [-Wpedantic]
__u8 rtvia_addr[0];
^
wargp/stats.c: In function 'handle_stats_display':
wargp/stats.c:59:9: warning: missing braces around initializer
[-Wmissing-braces]
struct display_args dargs = { 0 };
^
wargp/stats.c:59:9: warning: (near initialization for 'dargs.all')
[-Wmissing-braces]
--
Fatih USTA
_______________________________________________
Jool-list mailing list
[email protected]
https://mail-lists.nic.mx/listas/listinfo/jool-list
_______________________________________________
Jool-list mailing list
[email protected]
https://mail-lists.nic.mx/listas/listinfo/jool-list