Commit 20dcb110 authored by Tom Parkin's avatar Tom Parkin Committed by David S. Miller

l2tp: cleanup comments

Modify some l2tp comments to better adhere to kernel coding style, as
reported by checkpatch.pl.

Add descriptive comments for the l2tp per-net spinlocks to document
their use.

Fix an incorrect comment in l2tp_recv_common:

RFC2661 section 5.4 states that:

"The LNS controls enabling and disabling of sequence numbers by sending a
data message with or without sequence numbers present at any time during
the life of a session."

l2tp handles this correctly in l2tp_recv_common, but the comment around
the code was incorrect and confusing.  Fix up the comment accordingly.
Signed-off-by: default avatarTom Parkin <tparkin@katalix.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b71a61cc
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /* L2TP core.
* L2TP core.
* *
* Copyright (c) 2008,2009,2010 Katalix Systems Ltd * Copyright (c) 2008,2009,2010 Katalix Systems Ltd
* *
...@@ -102,8 +101,10 @@ static struct workqueue_struct *l2tp_wq; ...@@ -102,8 +101,10 @@ static struct workqueue_struct *l2tp_wq;
static unsigned int l2tp_net_id; static unsigned int l2tp_net_id;
struct l2tp_net { struct l2tp_net {
struct list_head l2tp_tunnel_list; struct list_head l2tp_tunnel_list;
/* Lock for write access to l2tp_tunnel_list */
spinlock_t l2tp_tunnel_list_lock; spinlock_t l2tp_tunnel_list_lock;
struct hlist_head l2tp_session_hlist[L2TP_HASH_SIZE_2]; struct hlist_head l2tp_session_hlist[L2TP_HASH_SIZE_2];
/* Lock for write access to l2tp_session_hlist */
spinlock_t l2tp_session_hlist_lock; spinlock_t l2tp_session_hlist_lock;
}; };
...@@ -678,7 +679,7 @@ void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb, ...@@ -678,7 +679,7 @@ void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb,
} }
if (L2TP_SKB_CB(skb)->has_seq) { if (L2TP_SKB_CB(skb)->has_seq) {
/* Received a packet with sequence numbers. If we're the LNS, /* Received a packet with sequence numbers. If we're the LAC,
* check if we sre sending sequence numbers and if not, * check if we sre sending sequence numbers and if not,
* configure it so. * configure it so.
*/ */
...@@ -1604,7 +1605,7 @@ void __l2tp_session_unhash(struct l2tp_session *session) ...@@ -1604,7 +1605,7 @@ void __l2tp_session_unhash(struct l2tp_session *session)
EXPORT_SYMBOL_GPL(__l2tp_session_unhash); EXPORT_SYMBOL_GPL(__l2tp_session_unhash);
/* This function is used by the netlink SESSION_DELETE command and by /* This function is used by the netlink SESSION_DELETE command and by
pseudowire modules. * pseudowire modules.
*/ */
int l2tp_session_delete(struct l2tp_session *session) int l2tp_session_delete(struct l2tp_session *session)
{ {
......
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
/* /* L2TP internal definitions.
* L2TP internal definitions.
* *
* Copyright (c) 2008,2009 Katalix Systems Ltd * Copyright (c) 2008,2009 Katalix Systems Ltd
*/ */
...@@ -49,32 +48,26 @@ struct l2tp_tunnel; ...@@ -49,32 +48,26 @@ struct l2tp_tunnel;
*/ */
struct l2tp_session_cfg { struct l2tp_session_cfg {
enum l2tp_pwtype pw_type; enum l2tp_pwtype pw_type;
unsigned int recv_seq:1; /* expect receive packets with unsigned int recv_seq:1; /* expect receive packets with sequence numbers? */
* sequence numbers? */ unsigned int send_seq:1; /* send packets with sequence numbers? */
unsigned int send_seq:1; /* send packets with sequence unsigned int lns_mode:1; /* behave as LNS?
* numbers? */ * LAC enables sequence numbers under LNS control.
unsigned int lns_mode:1; /* behave as LNS? LAC enables */
* sequence numbers under int debug; /* bitmask of debug message categories */
* control of LNS. */
int debug; /* bitmask of debug message
* categories */
u16 l2specific_type; /* Layer 2 specific type */ u16 l2specific_type; /* Layer 2 specific type */
u8 cookie[8]; /* optional cookie */ u8 cookie[8]; /* optional cookie */
int cookie_len; /* 0, 4 or 8 bytes */ int cookie_len; /* 0, 4 or 8 bytes */
u8 peer_cookie[8]; /* peer's cookie */ u8 peer_cookie[8]; /* peer's cookie */
int peer_cookie_len; /* 0, 4 or 8 bytes */ int peer_cookie_len; /* 0, 4 or 8 bytes */
int reorder_timeout; /* configured reorder timeout int reorder_timeout; /* configured reorder timeout (in jiffies) */
* (in jiffies) */
char *ifname; char *ifname;
}; };
struct l2tp_session { struct l2tp_session {
int magic; /* should be int magic; /* should be L2TP_SESSION_MAGIC */
* L2TP_SESSION_MAGIC */
long dead; long dead;
struct l2tp_tunnel *tunnel; /* back pointer to tunnel struct l2tp_tunnel *tunnel; /* back pointer to tunnel context */
* context */
u32 session_id; u32 session_id;
u32 peer_session_id; u32 peer_session_id;
u8 cookie[8]; u8 cookie[8];
...@@ -89,42 +82,37 @@ struct l2tp_session { ...@@ -89,42 +82,37 @@ struct l2tp_session {
u32 nr_max; /* max NR. Depends on tunnel */ u32 nr_max; /* max NR. Depends on tunnel */
u32 nr_window_size; /* NR window size */ u32 nr_window_size; /* NR window size */
u32 nr_oos; /* NR of last OOS packet */ u32 nr_oos; /* NR of last OOS packet */
int nr_oos_count; /* For OOS recovery */ int nr_oos_count; /* for OOS recovery */
int nr_oos_count_max; int nr_oos_count_max;
struct hlist_node hlist; /* Hash list node */ struct hlist_node hlist; /* hash list node */
refcount_t ref_count; refcount_t ref_count;
char name[32]; /* for logging */ char name[32]; /* for logging */
char ifname[IFNAMSIZ]; char ifname[IFNAMSIZ];
unsigned int recv_seq:1; /* expect receive packets with unsigned int recv_seq:1; /* expect receive packets with sequence numbers? */
* sequence numbers? */ unsigned int send_seq:1; /* send packets with sequence numbers? */
unsigned int send_seq:1; /* send packets with sequence unsigned int lns_mode:1; /* behave as LNS?
* numbers? */ * LAC enables sequence numbers under LNS control.
unsigned int lns_mode:1; /* behave as LNS? LAC enables */
* sequence numbers under int debug; /* bitmask of debug message categories */
* control of LNS. */ int reorder_timeout; /* configured reorder timeout (in jiffies) */
int debug; /* bitmask of debug message
* categories */
int reorder_timeout; /* configured reorder timeout
* (in jiffies) */
int reorder_skip; /* set if skip to next nr */ int reorder_skip; /* set if skip to next nr */
enum l2tp_pwtype pwtype; enum l2tp_pwtype pwtype;
struct l2tp_stats stats; struct l2tp_stats stats;
struct hlist_node global_hlist; /* Global hash list node */ struct hlist_node global_hlist; /* global hash list node */
int (*build_header)(struct l2tp_session *session, void *buf); int (*build_header)(struct l2tp_session *session, void *buf);
void (*recv_skb)(struct l2tp_session *session, struct sk_buff *skb, int data_len); void (*recv_skb)(struct l2tp_session *session, struct sk_buff *skb, int data_len);
void (*session_close)(struct l2tp_session *session); void (*session_close)(struct l2tp_session *session);
void (*show)(struct seq_file *m, void *priv); void (*show)(struct seq_file *m, void *priv);
u8 priv[]; /* private data */ u8 priv[]; /* private data */
}; };
/* Describes the tunnel. It contains info to track all the associated /* Describes the tunnel. It contains info to track all the associated
* sessions so incoming packets can be sorted out * sessions so incoming packets can be sorted out
*/ */
struct l2tp_tunnel_cfg { struct l2tp_tunnel_cfg {
int debug; /* bitmask of debug message int debug; /* bitmask of debug message categories */
* categories */
enum l2tp_encap_type encap; enum l2tp_encap_type encap;
/* Used only for kernel-created sockets */ /* Used only for kernel-created sockets */
...@@ -148,31 +136,29 @@ struct l2tp_tunnel { ...@@ -148,31 +136,29 @@ struct l2tp_tunnel {
struct rcu_head rcu; struct rcu_head rcu;
rwlock_t hlist_lock; /* protect session_hlist */ rwlock_t hlist_lock; /* protect session_hlist */
bool acpt_newsess; /* Indicates whether this bool acpt_newsess; /* indicates whether this tunnel accepts
* tunnel accepts new sessions. * new sessions. Protected by hlist_lock.
* Protected by hlist_lock.
*/ */
struct hlist_head session_hlist[L2TP_HASH_SIZE]; struct hlist_head session_hlist[L2TP_HASH_SIZE];
/* hashed list of sessions, /* hashed list of sessions, hashed by id */
* hashed by id */
u32 tunnel_id; u32 tunnel_id;
u32 peer_tunnel_id; u32 peer_tunnel_id;
int version; /* 2=>L2TPv2, 3=>L2TPv3 */ int version; /* 2=>L2TPv2, 3=>L2TPv3 */
char name[20]; /* for logging */ char name[20]; /* for logging */
int debug; /* bitmask of debug message int debug; /* bitmask of debug message categories */
* categories */
enum l2tp_encap_type encap; enum l2tp_encap_type encap;
struct l2tp_stats stats; struct l2tp_stats stats;
struct list_head list; /* Keep a list of all tunnels */ struct list_head list; /* list node on per-namespace list of tunnels */
struct net *l2tp_net; /* the net we belong to */ struct net *l2tp_net; /* the net we belong to */
refcount_t ref_count; refcount_t ref_count;
void (*old_sk_destruct)(struct sock *); void (*old_sk_destruct)(struct sock *);
struct sock *sock; /* Parent socket */ struct sock *sock; /* parent socket */
int fd; /* Parent fd, if tunnel socket int fd; /* parent fd, if tunnel socket was created
* was created by userspace */ * by userspace
*/
struct work_struct del_work; struct work_struct del_work;
}; };
......
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
/* /* L2TP subsystem debugfs
* L2TP subsystem debugfs
* *
* Copyright (c) 2010 Katalix Systems Ltd * Copyright (c) 2010 Katalix Systems Ltd
*/ */
......
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
/* /* L2TPv3 ethernet pseudowire driver
* L2TPv3 ethernet pseudowire driver
* *
* Copyright (c) 2008,2009,2010 Katalix Systems Ltd * Copyright (c) 2008,2009,2010 Katalix Systems Ltd
*/ */
......
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
/* /* L2TPv3 IP encapsulation support
* L2TPv3 IP encapsulation support
* *
* Copyright (c) 2008,2009,2010 Katalix Systems Ltd * Copyright (c) 2008,2009,2010 Katalix Systems Ltd
*/ */
......
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
/* /* L2TPv3 IP encapsulation support for IPv6
* L2TPv3 IP encapsulation support for IPv6
* *
* Copyright (c) 2012 Katalix Systems Ltd * Copyright (c) 2012 Katalix Systems Ltd
*/ */
...@@ -38,7 +37,8 @@ struct l2tp_ip6_sock { ...@@ -38,7 +37,8 @@ struct l2tp_ip6_sock {
u32 peer_conn_id; u32 peer_conn_id;
/* ipv6_pinfo has to be the last member of l2tp_ip6_sock, see /* ipv6_pinfo has to be the last member of l2tp_ip6_sock, see
inet6_sk_generic */ * inet6_sk_generic
*/
struct ipv6_pinfo inet6; struct ipv6_pinfo inet6;
}; };
...@@ -519,7 +519,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) ...@@ -519,7 +519,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
int err; int err;
/* Rough check on arithmetic overflow, /* Rough check on arithmetic overflow,
better check is made in ip6_append_data(). * better check is made in ip6_append_data().
*/ */
if (len > INT_MAX) if (len > INT_MAX)
return -EMSGSIZE; return -EMSGSIZE;
...@@ -528,9 +528,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) ...@@ -528,9 +528,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
if (msg->msg_flags & MSG_OOB) if (msg->msg_flags & MSG_OOB)
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* /* Get and verify the address */
* Get and verify the address.
*/
memset(&fl6, 0, sizeof(fl6)); memset(&fl6, 0, sizeof(fl6));
fl6.flowi6_mark = sk->sk_mark; fl6.flowi6_mark = sk->sk_mark;
...@@ -555,8 +553,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) ...@@ -555,8 +553,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
} }
} }
/* /* Otherwise it will be difficult to maintain
* Otherwise it will be difficult to maintain
* sk->sk_dst_cache. * sk->sk_dst_cache.
*/ */
if (sk->sk_state == TCP_ESTABLISHED && if (sk->sk_state == TCP_ESTABLISHED &&
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /* L2TP netlink layer, for management
* L2TP netlink layer, for management
* *
* Copyright (c) 2008,2009,2010 Katalix Systems Ltd * Copyright (c) 2008,2009,2010 Katalix Systems Ltd
* *
......
...@@ -117,8 +117,7 @@ struct pppol2tp_session { ...@@ -117,8 +117,7 @@ struct pppol2tp_session {
int owner; /* pid that opened the socket */ int owner; /* pid that opened the socket */
struct mutex sk_lock; /* Protects .sk */ struct mutex sk_lock; /* Protects .sk */
struct sock __rcu *sk; /* Pointer to the session struct sock __rcu *sk; /* Pointer to the session PPPoX socket */
* PPPoX socket */
struct sock *__sk; /* Copy of .sk, for cleanup */ struct sock *__sk; /* Copy of .sk, for cleanup */
struct rcu_head rcu; /* For asynchronous release */ struct rcu_head rcu; /* For asynchronous release */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment