diff options
author | Guillaume Nault <g.nault@alphalink.fr> | 2014-03-06 11:14:30 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-06 14:25:39 -0500 |
commit | bb5016eac1656506df1a9d6057ce5bec342afbef (patch) | |
tree | c83f3e91c9e71915164e4212722f2415b5998f6a /net/l2tp/l2tp_core.h | |
parent | 1b07da516ee25250f458c76c012ebe4cd677a84f (diff) | |
download | linux-stable-bb5016eac1656506df1a9d6057ce5bec342afbef.tar.gz linux-stable-bb5016eac1656506df1a9d6057ce5bec342afbef.tar.bz2 linux-stable-bb5016eac1656506df1a9d6057ce5bec342afbef.zip |
l2tp: fix manual sequencing (de)activation in L2TPv2
Commit e0d4435f "l2tp: Update PPP-over-L2TP driver to work over L2TPv3"
broke the PPPOL2TP_SO_SENDSEQ setsockopt. The L2TP header length was
previously computed by pppol2tp_l2t_header_len() before each call to
l2tp_xmit_skb(). Now that header length is retrieved from the hdr_len
session field, this field must be updated every time the L2TP header
format is modified, or l2tp_xmit_skb() won't push the right amount of
data for the L2TP header.
This patch uses l2tp_session_set_header_len() to adjust hdr_len every
time sequencing is (de)activated from userspace (either by the
PPPOL2TP_SO_SENDSEQ setsockopt or the L2TP_ATTR_SEND_SEQ netlink
attribute).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/l2tp/l2tp_core.h')
-rw-r--r-- | net/l2tp/l2tp_core.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/l2tp/l2tp_core.h b/net/l2tp/l2tp_core.h index 1f01ba3435bc..3f93ccd6ba97 100644 --- a/net/l2tp/l2tp_core.h +++ b/net/l2tp/l2tp_core.h @@ -263,6 +263,7 @@ void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb, int length, int (*payload_hook)(struct sk_buff *skb)); int l2tp_session_queue_purge(struct l2tp_session *session); int l2tp_udp_encap_recv(struct sock *sk, struct sk_buff *skb); +void l2tp_session_set_header_len(struct l2tp_session *session, int version); int l2tp_xmit_skb(struct l2tp_session *session, struct sk_buff *skb, int hdr_len); |