ip/l2tp: remove offset and peer-offset options
Ignore options "peer-offset" and "offset" when creating sessions. Keep them when dumping sessions in order to avoid breaking external scripts. "peer-offset" has always been a noop in iproute2. "offset" is now ignored in Linux 4.16 (and was broken before that). Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
fda0a61dde
commit
2f75c5cf1a
23
ip/ipl2tp.c
23
ip/ipl2tp.c
|
|
@ -42,8 +42,6 @@ struct l2tp_parm {
|
||||||
uint32_t peer_tunnel_id;
|
uint32_t peer_tunnel_id;
|
||||||
uint32_t session_id;
|
uint32_t session_id;
|
||||||
uint32_t peer_session_id;
|
uint32_t peer_session_id;
|
||||||
uint32_t offset;
|
|
||||||
uint32_t peer_offset;
|
|
||||||
enum l2tp_encap_type encap;
|
enum l2tp_encap_type encap;
|
||||||
uint16_t local_udp_port;
|
uint16_t local_udp_port;
|
||||||
uint16_t peer_udp_port;
|
uint16_t peer_udp_port;
|
||||||
|
|
@ -174,8 +172,6 @@ static int create_session(struct l2tp_parm *p)
|
||||||
if (p->reorder_timeout)
|
if (p->reorder_timeout)
|
||||||
addattr64(&req.n, 1024, L2TP_ATTR_RECV_TIMEOUT,
|
addattr64(&req.n, 1024, L2TP_ATTR_RECV_TIMEOUT,
|
||||||
p->reorder_timeout);
|
p->reorder_timeout);
|
||||||
if (p->offset)
|
|
||||||
addattr16(&req.n, 1024, L2TP_ATTR_OFFSET, p->offset);
|
|
||||||
if (p->cookie_len)
|
if (p->cookie_len)
|
||||||
addattr_l(&req.n, 1024, L2TP_ATTR_COOKIE,
|
addattr_l(&req.n, 1024, L2TP_ATTR_COOKIE,
|
||||||
p->cookie, p->cookie_len);
|
p->cookie, p->cookie_len);
|
||||||
|
|
@ -310,8 +306,8 @@ static void print_session(struct l2tp_data *data)
|
||||||
print_string(PRINT_FP, NULL, "%s", _SL_);
|
print_string(PRINT_FP, NULL, "%s", _SL_);
|
||||||
}
|
}
|
||||||
|
|
||||||
print_uint(PRINT_ANY, "offset", " offset %u,", p->offset);
|
print_uint(PRINT_ANY, "offset", " offset %u,", 0);
|
||||||
print_uint(PRINT_ANY, "peer_offset", " peer offset %u\n", p->peer_offset);
|
print_uint(PRINT_ANY, "peer_offset", " peer offset %u\n", 0);
|
||||||
|
|
||||||
if (p->cookie_len > 0)
|
if (p->cookie_len > 0)
|
||||||
print_cookie("cookie", "cookie",
|
print_cookie("cookie", "cookie",
|
||||||
|
|
@ -362,8 +358,6 @@ static int get_response(struct nlmsghdr *n, void *arg)
|
||||||
p->pw_type = rta_getattr_u16(attrs[L2TP_ATTR_PW_TYPE]);
|
p->pw_type = rta_getattr_u16(attrs[L2TP_ATTR_PW_TYPE]);
|
||||||
if (attrs[L2TP_ATTR_ENCAP_TYPE])
|
if (attrs[L2TP_ATTR_ENCAP_TYPE])
|
||||||
p->encap = rta_getattr_u16(attrs[L2TP_ATTR_ENCAP_TYPE]);
|
p->encap = rta_getattr_u16(attrs[L2TP_ATTR_ENCAP_TYPE]);
|
||||||
if (attrs[L2TP_ATTR_OFFSET])
|
|
||||||
p->offset = rta_getattr_u16(attrs[L2TP_ATTR_OFFSET]);
|
|
||||||
if (attrs[L2TP_ATTR_DATA_SEQ])
|
if (attrs[L2TP_ATTR_DATA_SEQ])
|
||||||
p->data_seq = rta_getattr_u16(attrs[L2TP_ATTR_DATA_SEQ]);
|
p->data_seq = rta_getattr_u16(attrs[L2TP_ATTR_DATA_SEQ]);
|
||||||
if (attrs[L2TP_ATTR_CONN_ID])
|
if (attrs[L2TP_ATTR_CONN_ID])
|
||||||
|
|
@ -550,7 +544,6 @@ static void usage(void)
|
||||||
" tunnel_id ID\n"
|
" tunnel_id ID\n"
|
||||||
" session_id ID peer_session_id ID\n"
|
" session_id ID peer_session_id ID\n"
|
||||||
" [ cookie HEXSTR ] [ peer_cookie HEXSTR ]\n"
|
" [ cookie HEXSTR ] [ peer_cookie HEXSTR ]\n"
|
||||||
" [ offset OFFSET ] [ peer_offset OFFSET ]\n"
|
|
||||||
" [ seq { none | send | recv | both } ]\n"
|
" [ seq { none | send | recv | both } ]\n"
|
||||||
" [ l2spec_type L2SPEC ]\n"
|
" [ l2spec_type L2SPEC ]\n"
|
||||||
" ip l2tp del tunnel tunnel_id ID\n"
|
" ip l2tp del tunnel tunnel_id ID\n"
|
||||||
|
|
@ -678,19 +671,11 @@ static int parse_args(int argc, char **argv, int cmd, struct l2tp_parm *p)
|
||||||
invarg("invalid option for udp6_csum_tx\n"
|
invarg("invalid option for udp6_csum_tx\n"
|
||||||
, *argv);
|
, *argv);
|
||||||
} else if (strcmp(*argv, "offset") == 0) {
|
} else if (strcmp(*argv, "offset") == 0) {
|
||||||
__u8 uval;
|
fprintf(stderr, "Ignoring option \"offset\"\n");
|
||||||
|
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_u8(&uval, *argv, 0))
|
|
||||||
invarg("invalid offset\n", *argv);
|
|
||||||
p->offset = uval;
|
|
||||||
} else if (strcmp(*argv, "peer_offset") == 0) {
|
} else if (strcmp(*argv, "peer_offset") == 0) {
|
||||||
__u8 uval;
|
fprintf(stderr, "Ignoring option \"peer_offset\"\n");
|
||||||
|
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_u8(&uval, *argv, 0))
|
|
||||||
invarg("invalid offset\n", *argv);
|
|
||||||
p->peer_offset = uval;
|
|
||||||
} else if (strcmp(*argv, "cookie") == 0) {
|
} else if (strcmp(*argv, "cookie") == 0) {
|
||||||
int slen;
|
int slen;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,12 +59,6 @@ ip-l2tp - L2TPv3 static unmanaged tunnel configuration
|
||||||
.br
|
.br
|
||||||
.RB "[ " seq " { " none " | " send " | " recv " | " both " } ]"
|
.RB "[ " seq " { " none " | " send " | " recv " | " both " } ]"
|
||||||
.br
|
.br
|
||||||
.RB "[ " offset
|
|
||||||
.IR OFFSET
|
|
||||||
.RB " ] [ " peer_offset
|
|
||||||
.IR OFFSET
|
|
||||||
.RB " ]"
|
|
||||||
.br
|
|
||||||
.ti -8
|
.ti -8
|
||||||
.BR "ip l2tp del tunnel"
|
.BR "ip l2tp del tunnel"
|
||||||
.B tunnel_id
|
.B tunnel_id
|
||||||
|
|
@ -285,16 +279,6 @@ Default is
|
||||||
.br
|
.br
|
||||||
Valid values are:
|
Valid values are:
|
||||||
.BR none ", " send ", " recv ", " both "."
|
.BR none ", " send ", " recv ", " both "."
|
||||||
.TP
|
|
||||||
.BI offset " OFFSET"
|
|
||||||
sets the byte offset from the L2TP header where user data starts in
|
|
||||||
transmitted L2TP data packets. This is hardly ever used. If set, the
|
|
||||||
value must match the peer_offset value used at the peer. Default is 0.
|
|
||||||
.TP
|
|
||||||
.BI peer_offset " OFFSET"
|
|
||||||
sets the byte offset from the L2TP header where user data starts in
|
|
||||||
received L2TP data packets. This is hardly ever used. If set, the
|
|
||||||
value must match the offset value used at the peer. Default is 0.
|
|
||||||
.SS ip l2tp del session - destroy a session
|
.SS ip l2tp del session - destroy a session
|
||||||
.TP
|
.TP
|
||||||
.BI tunnel_id " ID"
|
.BI tunnel_id " ID"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue