|
@@ -780,10 +780,8 @@ void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /* Session data offset is handled differently for L2TPv2 and
|
|
|
- * L2TPv3. For L2TPv2, there is an optional 16-bit value in
|
|
|
- * the header. For L2TPv3, the offset is negotiated using AVPs
|
|
|
- * in the session setup control protocol.
|
|
|
+ /* Session data offset is defined only for L2TPv2 and is
|
|
|
+ * indicated by an optional 16-bit value in the header.
|
|
|
*/
|
|
|
if (tunnel->version == L2TP_HDR_VER_2) {
|
|
|
/* If offset bit set, skip it. */
|
|
@@ -791,8 +789,7 @@ void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb,
|
|
|
offset = ntohs(*(__be16 *)ptr);
|
|
|
ptr += 2 + offset;
|
|
|
}
|
|
|
- } else
|
|
|
- ptr += session->offset;
|
|
|
+ }
|
|
|
|
|
|
offset = ptr - optr;
|
|
|
if (!pskb_may_pull(skb, offset))
|
|
@@ -1068,8 +1065,6 @@ static int l2tp_build_l2tpv3_header(struct l2tp_session *session, void *buf)
|
|
|
}
|
|
|
bufp += session->l2specific_len;
|
|
|
}
|
|
|
- if (session->offset)
|
|
|
- bufp += session->offset;
|
|
|
|
|
|
return bufp - optr;
|
|
|
}
|
|
@@ -1734,7 +1729,7 @@ void l2tp_session_set_header_len(struct l2tp_session *session, int version)
|
|
|
if (session->send_seq)
|
|
|
session->hdr_len += 4;
|
|
|
} else {
|
|
|
- session->hdr_len = 4 + session->cookie_len + session->l2specific_len + session->offset;
|
|
|
+ session->hdr_len = 4 + session->cookie_len + session->l2specific_len;
|
|
|
if (session->tunnel->encap == L2TP_ENCAPTYPE_UDP)
|
|
|
session->hdr_len += 4;
|
|
|
}
|
|
@@ -1784,7 +1779,6 @@ struct l2tp_session *l2tp_session_create(int priv_size, struct l2tp_tunnel *tunn
|
|
|
session->recv_seq = cfg->recv_seq;
|
|
|
session->lns_mode = cfg->lns_mode;
|
|
|
session->reorder_timeout = cfg->reorder_timeout;
|
|
|
- session->offset = cfg->offset;
|
|
|
session->l2specific_type = cfg->l2specific_type;
|
|
|
session->l2specific_len = cfg->l2specific_len;
|
|
|
session->cookie_len = cfg->cookie_len;
|