* [PATCH iproute2 v2 2/9] man: ip-l2tp.8: remove non-existent tunnel parameter name
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 3/9] l2tp: fix integers with too few significant bits Asbjørn Sloth Tønnesen
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
The name parameter is only valid for sessions, not tunnels.
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
man/man8/ip-l2tp.8 | 3 ---
1 file changed, 3 deletions(-)
diff --git a/man/man8/ip-l2tp.8 b/man/man8/ip-l2tp.8
index 4a3bb20..991d097 100644
--- a/man/man8/ip-l2tp.8
+++ b/man/man8/ip-l2tp.8
@@ -154,9 +154,6 @@ tunnels and sessions to be established and provides for detecting and
acting upon network failures.
.SS ip l2tp add tunnel - add a new tunnel
.TP
-.BI name " NAME "
-sets the session network interface name. Default is l2tpethN.
-.TP
.BI tunnel_id " ID"
set the tunnel id, which is a 32-bit integer value. Uniquely
identifies the tunnel. The value used must match the peer_tunnel_id
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 3/9] l2tp: fix integers with too few significant bits
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 2/9] man: ip-l2tp.8: remove non-existent tunnel parameter name Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 4/9] l2tp: fix L2TP_ATTR_{RECV,SEND}_SEQ handling Asbjørn Sloth Tønnesen
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
udp6_csum_{tx,rx}, tunnel and session are the only ones
currently used.
recv_seq, send_seq, lns_mode and data_seq are partially
implemented in a useless way.
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
ip/ipl2tp.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index d3338ac..2e0e9c7 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -56,15 +56,15 @@ struct l2tp_parm {
uint16_t pw_type;
uint16_t mtu;
- int udp6_csum_tx:1;
- int udp6_csum_rx:1;
- int udp_csum:1;
- int recv_seq:1;
- int send_seq:1;
- int lns_mode:1;
- int data_seq:2;
- int tunnel:1;
- int session:1;
+ unsigned int udp6_csum_tx:1;
+ unsigned int udp6_csum_rx:1;
+ unsigned int udp_csum:1;
+ unsigned int recv_seq:1;
+ unsigned int send_seq:1;
+ unsigned int lns_mode:1;
+ unsigned int data_seq:2;
+ unsigned int tunnel:1;
+ unsigned int session:1;
int reorder_timeout;
const char *ifname;
uint8_t l2spec_type;
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 4/9] l2tp: fix L2TP_ATTR_{RECV,SEND}_SEQ handling
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 2/9] man: ip-l2tp.8: remove non-existent tunnel parameter name Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 3/9] l2tp: fix integers with too few significant bits Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 5/9] l2tp: fix L2TP_ATTR_UDP_CSUM handling Asbjørn Sloth Tønnesen
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
L2TP_ATTR_RECV_SEQ and L2TP_ATTR_SEND_SEQ are declared as NLA_U8
attributes in the kernel, so let's threat them accordingly.
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
ip/ipl2tp.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index 2e0e9c7..a7cbd66 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -160,8 +160,8 @@ static int create_session(struct l2tp_parm *p)
addattr8(&req.n, 1024, L2TP_ATTR_L2SPEC_LEN, p->l2spec_len);
if (p->mtu) addattr16(&req.n, 1024, L2TP_ATTR_MTU, p->mtu);
- if (p->recv_seq) addattr(&req.n, 1024, L2TP_ATTR_RECV_SEQ);
- if (p->send_seq) addattr(&req.n, 1024, L2TP_ATTR_SEND_SEQ);
+ if (p->recv_seq) addattr8(&req.n, 1024, L2TP_ATTR_RECV_SEQ, 1);
+ if (p->send_seq) addattr8(&req.n, 1024, L2TP_ATTR_SEND_SEQ, 1);
if (p->lns_mode) addattr(&req.n, 1024, L2TP_ATTR_LNS_MODE);
if (p->data_seq) addattr8(&req.n, 1024, L2TP_ATTR_DATA_SEQ, p->data_seq);
if (p->reorder_timeout) addattr64(&req.n, 1024, L2TP_ATTR_RECV_TIMEOUT,
@@ -304,8 +304,10 @@ static int get_response(struct nlmsghdr *n, void *arg)
memcpy(p->peer_cookie, RTA_DATA(attrs[L2TP_ATTR_PEER_COOKIE]),
p->peer_cookie_len = RTA_PAYLOAD(attrs[L2TP_ATTR_PEER_COOKIE]));
- p->recv_seq = !!attrs[L2TP_ATTR_RECV_SEQ];
- p->send_seq = !!attrs[L2TP_ATTR_SEND_SEQ];
+ if (attrs[L2TP_ATTR_RECV_SEQ])
+ p->recv_seq = !!rta_getattr_u8(attrs[L2TP_ATTR_RECV_SEQ]);
+ if (attrs[L2TP_ATTR_SEND_SEQ])
+ p->send_seq = !!rta_getattr_u8(attrs[L2TP_ATTR_SEND_SEQ]);
if (attrs[L2TP_ATTR_RECV_TIMEOUT])
p->reorder_timeout = rta_getattr_u64(attrs[L2TP_ATTR_RECV_TIMEOUT]);
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 5/9] l2tp: fix L2TP_ATTR_UDP_CSUM handling
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
` (2 preceding siblings ...)
2016-11-16 22:45 ` [PATCH iproute2 v2 4/9] l2tp: fix L2TP_ATTR_{RECV,SEND}_SEQ handling Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 6/9] l2tp: read IPv6 UDP checksum attributes from kernel Asbjørn Sloth Tønnesen
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
L2TP_ATTR_UDP_CSUM is read by the kernel as a NLA_FLAG value,
but is validated as a NLA_U8, so we will write it as an u8,
but the value isn't actually being read by the kernel.
It is written by the kernel as a NLA_U8, so we will read as
such.
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
ip/ipl2tp.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index a7cbd66..03ca0cc 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -120,7 +120,7 @@ static int create_tunnel(struct l2tp_parm *p)
addattr16(&req.n, 1024, L2TP_ATTR_UDP_SPORT, p->local_udp_port);
addattr16(&req.n, 1024, L2TP_ATTR_UDP_DPORT, p->peer_udp_port);
if (p->udp_csum)
- addattr(&req.n, 1024, L2TP_ATTR_UDP_CSUM);
+ addattr8(&req.n, 1024, L2TP_ATTR_UDP_CSUM, 1);
if (!p->udp6_csum_tx)
addattr(&req.n, 1024, L2TP_ATTR_UDP_ZERO_CSUM6_TX);
if (!p->udp6_csum_rx)
@@ -289,7 +289,9 @@ static int get_response(struct nlmsghdr *n, void *arg)
if (attrs[L2TP_ATTR_L2SPEC_LEN])
p->l2spec_len = rta_getattr_u8(attrs[L2TP_ATTR_L2SPEC_LEN]);
- p->udp_csum = !!attrs[L2TP_ATTR_UDP_CSUM];
+ if (attrs[L2TP_ATTR_UDP_CSUM])
+ p->udp_csum = !!rta_getattr_u8(attrs[L2TP_ATTR_UDP_CSUM]);
+
/*
* Not fetching from L2TP_ATTR_UDP_ZERO_CSUM6_{T,R}X because the
* kernel doesn't send it so just leave it as default value.
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 6/9] l2tp: read IPv6 UDP checksum attributes from kernel
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
` (3 preceding siblings ...)
2016-11-16 22:45 ` [PATCH iproute2 v2 5/9] l2tp: fix L2TP_ATTR_UDP_CSUM handling Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 7/9] l2tp: support sequence numbering Asbjørn Sloth Tønnesen
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
In case of an older kernel that doesn't set L2TP_ATTR_UDP_ZERO_CSUM6_{RX,TX}
the old hard-coded value is being preserved, since the attribute flag will be
missing.
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
ip/ipl2tp.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index 03ca0cc..f5d4113 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -292,12 +292,9 @@ static int get_response(struct nlmsghdr *n, void *arg)
if (attrs[L2TP_ATTR_UDP_CSUM])
p->udp_csum = !!rta_getattr_u8(attrs[L2TP_ATTR_UDP_CSUM]);
- /*
- * Not fetching from L2TP_ATTR_UDP_ZERO_CSUM6_{T,R}X because the
- * kernel doesn't send it so just leave it as default value.
- */
- p->udp6_csum_tx = 1;
- p->udp6_csum_rx = 1;
+ p->udp6_csum_tx = !attrs[L2TP_ATTR_UDP_ZERO_CSUM6_TX];
+ p->udp6_csum_rx = !attrs[L2TP_ATTR_UDP_ZERO_CSUM6_RX];
+
if (attrs[L2TP_ATTR_COOKIE])
memcpy(p->cookie, RTA_DATA(attrs[L2TP_ATTR_COOKIE]),
p->cookie_len = RTA_PAYLOAD(attrs[L2TP_ATTR_COOKIE]));
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 7/9] l2tp: support sequence numbering
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
` (4 preceding siblings ...)
2016-11-16 22:45 ` [PATCH iproute2 v2 6/9] l2tp: read IPv6 UDP checksum attributes from kernel Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 8/9] l2tp: show tunnel: expose UDP checksum state Asbjørn Sloth Tønnesen
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
This patch implement and documents the user interface for
sequence numbering.
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
ip/ipl2tp.c | 23 +++++++++++++++++++++++
man/man8/ip-l2tp.8 | 15 +++++++++++++++
2 files changed, 38 insertions(+)
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index f5d4113..ab35023 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -246,6 +246,12 @@ static void print_session(struct l2tp_data *data)
printf(" reorder timeout: %u\n", p->reorder_timeout);
else
printf("\n");
+ if (p->send_seq || p->recv_seq) {
+ printf(" sequence numbering:");
+ if (p->send_seq) printf(" send");
+ if (p->recv_seq) printf(" recv");
+ printf("\n");
+ }
}
static int get_response(struct nlmsghdr *n, void *arg)
@@ -482,6 +488,7 @@ static void usage(void)
fprintf(stderr, " session_id ID peer_session_id ID\n");
fprintf(stderr, " [ cookie HEXSTR ] [ peer_cookie HEXSTR ]\n");
fprintf(stderr, " [ offset OFFSET ] [ peer_offset OFFSET ]\n");
+ fprintf(stderr, " [ seq { none | send | recv | both } ]\n");
fprintf(stderr, " [ l2spec_type L2SPEC ]\n");
fprintf(stderr, " ip l2tp del tunnel tunnel_id ID\n");
fprintf(stderr, " ip l2tp del session tunnel_id ID session_id ID\n");
@@ -652,6 +659,22 @@ static int parse_args(int argc, char **argv, int cmd, struct l2tp_parm *p)
fprintf(stderr, "Unknown layer2specific header type \"%s\"\n", *argv);
exit(-1);
}
+ } else if (strcmp(*argv, "seq") == 0) {
+ NEXT_ARG();
+ if (strcasecmp(*argv, "both") == 0) {
+ p->recv_seq = 1;
+ p->send_seq = 1;
+ } else if (strcasecmp(*argv, "recv") == 0) {
+ p->recv_seq = 1;
+ } else if (strcasecmp(*argv, "send") == 0) {
+ p->send_seq = 1;
+ } else if (strcasecmp(*argv, "none") == 0) {
+ p->recv_seq = 0;
+ p->send_seq = 0;
+ } else {
+ fprintf(stderr, "Unknown seq value \"%s\"\n", *argv);
+ exit(-1);
+ }
} else if (strcmp(*argv, "tunnel") == 0) {
p->tunnel = 1;
} else if (strcmp(*argv, "session") == 0) {
diff --git a/man/man8/ip-l2tp.8 b/man/man8/ip-l2tp.8
index 991d097..d4e7270 100644
--- a/man/man8/ip-l2tp.8
+++ b/man/man8/ip-l2tp.8
@@ -51,6 +51,8 @@ ip-l2tp - L2TPv3 static unmanaged tunnel configuration
.br
.RB "[ " l2spec_type " { " none " | " default " } ]"
.br
+.RB "[ " seq " { " none " | " send " | " recv " | " both " } ]"
+.br
.RB "[ " offset
.IR OFFSET
.RB " ] [ " peer_offset
@@ -238,6 +240,19 @@ set the layer2specific header type of the session.
Valid values are:
.BR none ", " default "."
.TP
+.BI seq " SEQ"
+controls sequence numbering to prevent or detect out of order packets.
+.B send
+puts a sequence number in the default layer2specific header of each
+outgoing packet.
+.B recv
+reorder packets if they are received out of order.
+Default is
+.BR none "."
+.br
+Valid values are:
+.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
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 8/9] l2tp: show tunnel: expose UDP checksum state
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
` (5 preceding siblings ...)
2016-11-16 22:45 ` [PATCH iproute2 v2 7/9] l2tp: support sequence numbering Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-16 22:45 ` [PATCH iproute2 v2 9/9] man: ip-l2tp.8: document UDP checksum options Asbjørn Sloth Tønnesen
2016-11-29 21:43 ` [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Stephen Hemminger
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
ip/ipl2tp.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index ab35023..f2bbc0c 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -218,9 +218,24 @@ static void print_tunnel(const struct l2tp_data *data)
printf(" Peer tunnel %u\n",
p->peer_tunnel_id);
- if (p->encap == L2TP_ENCAPTYPE_UDP)
+ if (p->encap == L2TP_ENCAPTYPE_UDP) {
printf(" UDP source / dest ports: %hu/%hu\n",
p->local_udp_port, p->peer_udp_port);
+
+ switch (p->local_ip.family) {
+ case AF_INET:
+ printf(" UDP checksum: %s\n",
+ p->udp_csum ? "enabled" : "disabled");
+ break;
+ case AF_INET6:
+ printf(" UDP checksum: %s%s%s%s\n",
+ p->udp6_csum_tx && p->udp6_csum_rx ? "enabled" : "",
+ p->udp6_csum_tx && !p->udp6_csum_rx ? "tx" : "",
+ !p->udp6_csum_tx && p->udp6_csum_rx ? "rx" : "",
+ !p->udp6_csum_tx && !p->udp6_csum_rx ? "disabled" : "");
+ break;
+ }
+ }
}
static void print_session(struct l2tp_data *data)
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH iproute2 v2 9/9] man: ip-l2tp.8: document UDP checksum options
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
` (6 preceding siblings ...)
2016-11-16 22:45 ` [PATCH iproute2 v2 8/9] l2tp: show tunnel: expose UDP checksum state Asbjørn Sloth Tønnesen
@ 2016-11-16 22:45 ` Asbjørn Sloth Tønnesen
2016-11-29 21:43 ` [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Stephen Hemminger
8 siblings, 0 replies; 10+ messages in thread
From: Asbjørn Sloth Tønnesen @ 2016-11-16 22:45 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: James Chapman, netdev
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
---
man/man8/ip-l2tp.8 | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/man/man8/ip-l2tp.8 b/man/man8/ip-l2tp.8
index d4e7270..8ce630a 100644
--- a/man/man8/ip-l2tp.8
+++ b/man/man8/ip-l2tp.8
@@ -30,6 +30,12 @@ ip-l2tp - L2TPv3 static unmanaged tunnel configuration
.IR PORT
.RB " ]"
.br
+.RB "[ " udp_csum " { " on " | " off " } ]"
+.br
+.RB "[ " udp6_csum_tx " { " on " | " off " } ]"
+.br
+.RB "[ " udp6_csum_rx " { " on " | " off " } ]"
+.br
.ti -8
.BR "ip l2tp add session"
.RB "[ " name
@@ -190,6 +196,33 @@ selected.
set the UDP destination port to be used for the tunnel. Must be
present when udp encapsulation is selected. Ignored when ip
encapsulation is selected.
+.TP
+.BI udp_csum " STATE"
+(IPv4 only) control if IPv4 UDP checksums should be calculated and checked for the
+encapsulating UDP packets, when UDP encapsulating is selected.
+Default is
+.BR off "."
+.br
+Valid values are:
+.BR on ", " off "."
+.TP
+.BI udp6_csum_tx " STATE"
+(IPv6 only) control if IPv6 UDP checksums should be calculated for encapsulating
+UDP packets, when UDP encapsulating is selected.
+Default is
+.BR on "."
+.br
+Valid values are:
+.BR on ", " off "."
+.TP
+.BI udp6_csum_rx " STATE"
+(IPv6 only) control if IPv6 UDP checksums should be checked for the encapsulating
+UDP packets, when UDP encapsulating is selected.
+Default is
+.BR on "."
+.br
+Valid values are:
+.BR on ", " off "."
.SS ip l2tp del tunnel - destroy a tunnel
.TP
.BI tunnel_id " ID"
--
2.10.2
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation
2016-11-16 22:45 [PATCH iproute2 v2 1/9] man: ip-l2tp.8: fix l2spec_type documentation Asbjørn Sloth Tønnesen
` (7 preceding siblings ...)
2016-11-16 22:45 ` [PATCH iproute2 v2 9/9] man: ip-l2tp.8: document UDP checksum options Asbjørn Sloth Tønnesen
@ 2016-11-29 21:43 ` Stephen Hemminger
8 siblings, 0 replies; 10+ messages in thread
From: Stephen Hemminger @ 2016-11-29 21:43 UTC (permalink / raw)
To: Asbjørn Sloth Tønnesen; +Cc: James Chapman, netdev
On Wed, 16 Nov 2016 22:45:18 +0000
Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st> wrote:
> Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.st>
Applied this set, and queued for next push
^ permalink raw reply [flat|nested] 10+ messages in thread