diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2014-09-16 10:08:49 +0200 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2014-09-16 10:08:49 +0200 |
commit | b8c203b2d2fc961bafd53b41d5396bbcdec55998 (patch) | |
tree | 4c5872696e7ec6221829b5ed5b26817d6ee66182 /include/net/dst.h | |
parent | f92ee61982d6da15a9e49664ecd6405a15a2ee56 (diff) | |
download | linux-stable-b8c203b2d2fc961bafd53b41d5396bbcdec55998.tar.gz linux-stable-b8c203b2d2fc961bafd53b41d5396bbcdec55998.tar.bz2 linux-stable-b8c203b2d2fc961bafd53b41d5396bbcdec55998.zip |
xfrm: Generate queueing routes only from route lookup functions
Currently we genarate a queueing route if we have matching policies
but can not resolve the states and the sysctl xfrm_larval_drop is
disabled. Here we assume that dst_output() is called to kill the
queued packets. Unfortunately this assumption is not true in all
cases, so it is possible that these packets leave the system unwanted.
We fix this by generating queueing routes only from the
route lookup functions, here we can guarantee a call to
dst_output() afterwards.
Fixes: a0073fe18e71 ("xfrm: Add a state resolution packet queue")
Reported-by: Konstantinos Kolelis <k.kolelis@sirrix.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'include/net/dst.h')
-rw-r--r-- | include/net/dst.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/dst.h b/include/net/dst.h index fa11c904d219..a8ae4e760778 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -480,6 +480,7 @@ void dst_init(void); /* Flags for xfrm_lookup flags argument. */ enum { XFRM_LOOKUP_ICMP = 1 << 0, + XFRM_LOOKUP_QUEUE = 1 << 1, }; struct flowi; |