diff options
author | Nicolas Dichtel <nicolas.dichtel@6wind.com> | 2012-05-04 05:24:54 +0000 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2012-06-10 14:42:06 +0100 |
commit | ba9ee5eb730f20bab874ba91d3dfec7816459dad (patch) | |
tree | 0c757c9ddb80d61efea1432d8f0cd7d1448f2410 /include/net | |
parent | 0fc2cf738f345db9798e546a70810c5984aed214 (diff) | |
download | lwn-ba9ee5eb730f20bab874ba91d3dfec7816459dad.tar.gz lwn-ba9ee5eb730f20bab874ba91d3dfec7816459dad.zip |
sctp: check cached dst before using it
[ Upstream commit e0268868ba064980488fc8c194db3d8e9fb2959c ]
dst_check() will take care of SA (and obsolete field), hence
IPsec rekeying scenario is taken into account.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Vlad Yaseivch <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/sctp/sctp.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 6a72a58cde59..ad0398815045 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -703,4 +703,17 @@ static inline void sctp_v4_map_v6(union sctp_addr *addr) addr->v6.sin6_addr.s6_addr32[2] = htonl(0x0000ffff); } +/* The cookie is always 0 since this is how it's used in the + * pmtu code. + */ +static inline struct dst_entry *sctp_transport_dst_check(struct sctp_transport *t) +{ + if (t->dst && !dst_check(t->dst, 0)) { + dst_release(t->dst); + t->dst = NULL; + } + + return t->dst; +} + #endif /* __net_sctp_h__ */ |