Commit Graph

24 Commits

Author SHA1 Message Date
Sven Eckelmann
779f17af89
gluon-radv-filterd: Fix use-after-free in expire_routers
The macro foreach is dereferencing router to get the next node in list.
This even happens when the node was just freed in the last iteration (and
thus could crash the program).

To avoid this crash, the next pointer has to be saved before the node is
freed.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2018-01-03 15:19:44 +01:00
Sven Eckelmann
c9eccb9c47
gluon-radv-filterd: Use _GNU_SOURCE by default
Both source files require the _GNU_SOURCE preprocessor. But for one file it is
defined in the source and for the other one in the Makefile. It is better
to have it in the Makefile to avoid that different source files in the same
project use different.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2018-01-03 15:19:26 +01:00
Jan-Philipp Litza
93e2820f61
gluon-radv-filterd: Some minor fixes and cleanup 2018-01-03 14:59:51 +01:00
Jan-Philipp Litza
0aca838f37
gluon-radv-filterd: rename error() -> error_message() 2018-01-03 14:59:51 +01:00
Jan-Philipp Litza
5b34931a97
gluon-radv-filterd: Fix bug in BPF router lifetime filter
The router lifetime field actually is 2 bytes long, but we only checked
the first one, thus falsely discarding RAs with router lifetime < 256
seconds.
2018-01-03 14:59:50 +01:00
Jan-Philipp Litza
31660c7402
gluon-radv-filterd: Seperate macros for printf() and scanf() 2018-01-03 14:59:49 +01:00
Jan-Philipp Litza
ccfd102780
gluon-radv-filterd: Remove all UCI options except threshold 2018-01-03 14:59:48 +01:00
Jan-Philipp Litza
66a26d0d23
gluon-radv-filterd: Various small fixes due to NeoRaider 2018-01-03 14:59:48 +01:00
Jan-Philipp Litza
20d83bca76
gluon-radv-filterd: Refactor packet checking
Move more to BPF code and do not try to parse extension headers in C that
wouldn't have made it through BPF anyway.
2018-01-03 14:59:47 +01:00
Jan-Philipp Litza
5f3f371ee8
gluon-radv-filterd: Fix and simplify originators parsing
Previously, only one nexthop was recognized. The parsing of the whole file
failed immediately when two or more hops were possible for *any* originator (not
only for one with a router behind it).

This makes the parser ignore most of the line in the originators table.
2018-01-03 14:59:46 +01:00
Jan-Philipp Litza
a1fea711da
gluon-radv-filterd: Add respondd module reporting the chosen gateway 2018-01-03 14:59:45 +01:00
Jan-Philipp Litza
3bf4d12911
gluon-radv-filterd: Ship with own implementation of error() 2018-01-03 14:59:45 +01:00
Jan-Philipp Litza
5a4dc1f983
gluon-radv-filterd: Avoid use of GLUONDIR variable 2018-01-03 14:59:44 +01:00
Julian Labus
43664bf383
gluon-radv-filterd: updated socket filter 2018-01-03 14:59:43 +01:00
Jan-Philipp Litza
a313af733d
gluon-radv-filterd: Always output a message when choosing new router 2018-01-03 14:59:42 +01:00
Jan-Philipp Litza
c887960e90
gluon-radv-filterd: Tweak constants
As I have seen instances of ebtables being killed with a timeout of 100ms,
increasing it to 500ms.

Also, to ease the straint on the CPU, increasing minimum time between TQ checks
to 15 seconds.
2018-01-03 14:59:41 +01:00
Jan-Philipp Litza
bd85e99078
gluon-radv-filterd: Use fscanf() instead of getline() & sscanf() for BATMAN data
This reduces the average CPU consumption (on a WDR4300) from 3% to 1%.

Also, this commit adds error messages when the parsing fails and makes matching
more flexible after all relevant fields have been found.
2018-01-03 14:59:41 +01:00
Jan-Philipp Litza
2f8eed6f9a
gluon-radv-filterd: Add more debugging messages and more detailed errors 2018-01-03 14:59:40 +01:00
Jan-Philipp Litza
e4457f2f68
gluon-radv-filterd: Fix use-after-free when best router expires 2018-01-03 14:59:39 +01:00
Jan-Philipp Litza
3667d6061d
gluon-radv-filterd: Add license to source file 2018-01-03 14:59:38 +01:00
Jan-Philipp Litza
615fb91159
gluon-radv-filterd: Fix upgrade script permissions and compilation 2018-01-03 14:59:38 +01:00
Jan-Philipp Litza
7d20a24608
gluon-radv-filterd: Work with newer batman-adv versions 2018-01-03 14:59:37 +01:00
Jan-Philipp Litza
e3b4dc5031
gluon-radv-filterd: Update originators only if one is unknown 2018-01-03 14:59:36 +01:00
Jan-Philipp Litza
f963e054df
Add package gluon-radv-filterd
This package drops all incoming router advertisements except for the
default router with the best metric according to B.A.T.M.A.N. advanced.

Note that advertisements originating from the node itself (for example
via gluon-radvd) are not affected.
2018-01-03 14:59:35 +01:00