License cleanup: add SPDX GPL-2.0 license identifier to files with no license
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.
By default all files without license information are under the default
license of the kernel, which is GPL version 2.
Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.
This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.
How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,
Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.
The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.
The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.
Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if <5
lines).
All documentation files were explicitly excluded.
The following heuristics were used to determine which SPDX license
identifiers to apply.
- when both scanners couldn't find any license traces, file was
considered to have no license information in it, and the top level
COPYING file license applied.
For non */uapi/* files that summary was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 11139
and resulted in the first patch in this series.
If that file was a */uapi/* path one, it was "GPL-2.0 WITH
Linux-syscall-note" otherwise it was "GPL-2.0". Results of that was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 WITH Linux-syscall-note 930
and resulted in the second patch in this series.
- if a file had some form of licensing information in it, and was one
of the */uapi/* ones, it was denoted with the Linux-syscall-note if
any GPL family license was found in the file or had no licensing in
it (per prior point). Results summary:
SPDX license identifier # files
---------------------------------------------------|------
GPL-2.0 WITH Linux-syscall-note 270
GPL-2.0+ WITH Linux-syscall-note 169
((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
LGPL-2.1+ WITH Linux-syscall-note 15
GPL-1.0+ WITH Linux-syscall-note 14
((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
LGPL-2.0+ WITH Linux-syscall-note 4
LGPL-2.1 WITH Linux-syscall-note 3
((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1
and that resulted in the third patch in this series.
- when the two scanners agreed on the detected license(s), that became
the concluded license(s).
- when there was disagreement between the two scanners (one detected a
license but the other didn't, or they both detected different
licenses) a manual inspection of the file occurred.
- In most cases a manual inspection of the information in the file
resulted in a clear resolution of the license that should apply (and
which scanner probably needed to revisit its heuristics).
- When it was not immediately clear, the license identifier was
confirmed with lawyers working with the Linux Foundation.
- If there was any question as to the appropriate license identifier,
the file was flagged for further research and to be revisited later
in time.
In total, over 70 hours of logged manual review was done on the
spreadsheet to determine the SPDX license identifiers to apply to the
source files by Kate, Philippe, Thomas and, in some cases, confirmation
by lawyers working with the Linux Foundation.
Kate also obtained a third independent scan of the 4.13 code base from
FOSSology, and compared selected files where the other two scanners
disagreed against that SPDX file, to see if there was new insights. The
Windriver scanner is based on an older version of FOSSology in part, so
they are related.
Thomas did random spot checks in about 500 files from the spreadsheets
for the uapi headers and agreed with SPDX license identifier in the
files he inspected. For the non-uapi files Thomas did random spot checks
in about 15000 files.
In initial set of patches against 4.14-rc6, 3 files were found to have
copy/paste license identifier errors, and have been fixed to reflect the
correct identifier.
Additionally Philippe spent 10 hours this week doing a detailed manual
inspection and review of the 12,461 patched files from the initial patch
version early this week with:
- a full scancode scan run, collecting the matched texts, detected
license ids and scores
- reviewing anything where there was a license detected (about 500+
files) to ensure that the applied SPDX license was correct
- reviewing anything where there was no detection but the patch license
was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied
SPDX license was correct
This produced a worksheet with 20 files needing minor correction. This
worksheet was then exported into 3 different .csv files for the
different types of files to be modified.
These .csv files were then reviewed by Greg. Thomas wrote a script to
parse the csv files and add the proper SPDX tag to the file, in the
format that the file expected. This script was further refined by Greg
based on the output to detect more types of files automatically and to
distinguish between header and source .c files (which need different
comment types.) Finally Greg ran the script using the .csv files to
generate the patches.
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-01 22:07:57 +08:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
2012-08-06 16:42:04 +08:00
|
|
|
#ifndef __NETNS_SCTP_H__
|
|
|
|
#define __NETNS_SCTP_H__
|
|
|
|
|
2012-08-06 16:43:06 +08:00
|
|
|
struct sock;
|
2012-08-06 16:45:15 +08:00
|
|
|
struct proc_dir_entry;
|
2012-08-06 16:47:55 +08:00
|
|
|
struct sctp_mib;
|
2012-08-07 15:23:59 +08:00
|
|
|
struct ctl_table_header;
|
2012-08-06 16:43:06 +08:00
|
|
|
|
2012-08-06 16:42:04 +08:00
|
|
|
struct netns_sctp {
|
2012-08-06 16:47:55 +08:00
|
|
|
DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics);
|
|
|
|
|
2012-08-06 16:45:15 +08:00
|
|
|
#ifdef CONFIG_PROC_FS
|
|
|
|
struct proc_dir_entry *proc_net_sctp;
|
|
|
|
#endif
|
2012-08-07 15:23:59 +08:00
|
|
|
#ifdef CONFIG_SYSCTL
|
|
|
|
struct ctl_table_header *sysctl_header;
|
|
|
|
#endif
|
2012-08-06 16:43:06 +08:00
|
|
|
/* This is the global socket data structure used for responding to
|
|
|
|
* the Out-of-the-blue (OOTB) packets. A control sock will be created
|
|
|
|
* for this socket at the initialization time.
|
|
|
|
*/
|
|
|
|
struct sock *ctl_sock;
|
|
|
|
|
2012-08-06 16:42:04 +08:00
|
|
|
/* This is the global local address list.
|
|
|
|
* We actively maintain this complete list of addresses on
|
|
|
|
* the system by catching address add/delete events.
|
|
|
|
*
|
|
|
|
* It is a list of sctp_sockaddr_entry.
|
|
|
|
*/
|
|
|
|
struct list_head local_addr_list;
|
|
|
|
struct list_head addr_waitq;
|
|
|
|
struct timer_list addr_wq_timer;
|
|
|
|
struct list_head auto_asconf_splist;
|
2015-06-12 21:16:41 +08:00
|
|
|
/* Lock that protects both addr_waitq and auto_asconf_splist */
|
2012-08-06 16:42:04 +08:00
|
|
|
spinlock_t addr_wq_lock;
|
|
|
|
|
|
|
|
/* Lock that protects the local_addr_list writers */
|
|
|
|
spinlock_t local_addr_lock;
|
2012-08-07 15:23:59 +08:00
|
|
|
|
2012-08-07 15:29:57 +08:00
|
|
|
/* RFC2960 Section 14. Suggested SCTP Protocol Parameter Values
|
|
|
|
*
|
|
|
|
* The following protocol parameters are RECOMMENDED:
|
|
|
|
*
|
|
|
|
* RTO.Initial - 3 seconds
|
|
|
|
* RTO.Min - 1 second
|
|
|
|
* RTO.Max - 60 seconds
|
|
|
|
* RTO.Alpha - 1/8 (3 when converted to right shifts.)
|
|
|
|
* RTO.Beta - 1/4 (2 when converted to right shifts.)
|
|
|
|
*/
|
|
|
|
unsigned int rto_initial;
|
|
|
|
unsigned int rto_min;
|
|
|
|
unsigned int rto_max;
|
|
|
|
|
|
|
|
/* Note: rto_alpha and rto_beta are really defined as inverse
|
|
|
|
* powers of two to facilitate integer operations.
|
|
|
|
*/
|
|
|
|
int rto_alpha;
|
|
|
|
int rto_beta;
|
|
|
|
|
|
|
|
/* Max.Burst - 4 */
|
|
|
|
int max_burst;
|
|
|
|
|
|
|
|
/* Whether Cookie Preservative is enabled(1) or not(0) */
|
|
|
|
int cookie_preserve_enable;
|
|
|
|
|
2012-10-24 17:20:03 +08:00
|
|
|
/* The namespace default hmac alg */
|
|
|
|
char *sctp_hmac_alg;
|
|
|
|
|
2012-08-07 15:29:57 +08:00
|
|
|
/* Valid.Cookie.Life - 60 seconds */
|
|
|
|
unsigned int valid_cookie_life;
|
|
|
|
|
|
|
|
/* Delayed SACK timeout 200ms default*/
|
|
|
|
unsigned int sack_timeout;
|
|
|
|
|
|
|
|
/* HB.interval - 30 seconds */
|
|
|
|
unsigned int hb_interval;
|
|
|
|
|
|
|
|
/* Association.Max.Retrans - 10 attempts
|
|
|
|
* Path.Max.Retrans - 5 attempts (per destination address)
|
|
|
|
* Max.Init.Retransmits - 8 attempts
|
|
|
|
*/
|
|
|
|
int max_retrans_association;
|
|
|
|
int max_retrans_path;
|
|
|
|
int max_retrans_init;
|
|
|
|
/* Potentially-Failed.Max.Retrans sysctl value
|
|
|
|
* taken from:
|
|
|
|
* http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05
|
|
|
|
*/
|
|
|
|
int pf_retrans;
|
|
|
|
|
2019-11-08 13:20:35 +08:00
|
|
|
/* Primary.Switchover.Max.Retrans sysctl value
|
|
|
|
* taken from:
|
|
|
|
* https://tools.ietf.org/html/rfc7829
|
|
|
|
*/
|
|
|
|
int ps_retrans;
|
|
|
|
|
2015-12-16 13:55:04 +08:00
|
|
|
/*
|
|
|
|
* Disable Potentially-Failed feature, the feature is enabled by default
|
|
|
|
* pf_enable - 0 : disable pf
|
|
|
|
* - >0 : enable pf
|
|
|
|
*/
|
|
|
|
int pf_enable;
|
|
|
|
|
sctp: add pf_expose per netns and sock and asoc
As said in rfc7829, section 3, point 12:
The SCTP stack SHOULD expose the PF state of its destination
addresses to the ULP as well as provide the means to notify the
ULP of state transitions of its destination addresses from
active to PF, and vice versa. However, it is recommended that
an SCTP stack implementing SCTP-PF also allows for the ULP to be
kept ignorant of the PF state of its destinations and the
associated state transitions, thus allowing for retention of the
simpler state transition model of [RFC4960] in the ULP.
Not only does it allow to expose the PF state to ULP, but also
allow to ignore sctp-pf to ULP.
So this patch is to add pf_expose per netns, sock and asoc. And in
sctp_assoc_control_transport(), ulp_notify will be set to false if
asoc->expose is not 'enabled' in next patch.
It also allows a user to change pf_expose per netns by sysctl, and
pf_expose per sock and asoc will be initialized with it.
Note that pf_expose also works for SCTP_GET_PEER_ADDR_INFO sockopt,
to not allow a user to query the state of a sctp-pf peer address
when pf_expose is 'disabled', as said in section 7.3.
v1->v2:
- Fix a build warning noticed by Nathan Chancellor.
v2->v3:
- set pf_expose to UNUSED by default to keep compatible with old
applications.
v3->v4:
- add a new entry for pf_expose on ip-sysctl.txt, as Marcelo suggested.
- change this patch to 1/5, and move sctp_assoc_control_transport
change into 2/5, as Marcelo suggested.
- use SCTP_PF_EXPOSE_UNSET instead of SCTP_PF_EXPOSE_UNUSED, and
set SCTP_PF_EXPOSE_UNSET to 0 in enum, as Marcelo suggested.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-11-08 13:20:32 +08:00
|
|
|
/*
|
|
|
|
* Disable Potentially-Failed state exposure, ignored by default
|
|
|
|
* pf_expose - 0 : compatible with old applications (by default)
|
|
|
|
* - 1 : disable pf state exposure
|
|
|
|
* - 2 : enable pf state exposure
|
|
|
|
*/
|
|
|
|
int pf_expose;
|
|
|
|
|
2012-08-07 15:29:57 +08:00
|
|
|
/*
|
|
|
|
* Policy for preforming sctp/socket accounting
|
|
|
|
* 0 - do socket level accounting, all assocs share sk_sndbuf
|
|
|
|
* 1 - do sctp accounting, each asoc may use sk_sndbuf bytes
|
|
|
|
*/
|
|
|
|
int sndbuf_policy;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Policy for preforming sctp/socket accounting
|
|
|
|
* 0 - do socket level accounting, all assocs share sk_rcvbuf
|
|
|
|
* 1 - do sctp accounting, each asoc may use sk_rcvbuf bytes
|
|
|
|
*/
|
|
|
|
int rcvbuf_policy;
|
|
|
|
|
|
|
|
int default_auto_asconf;
|
|
|
|
|
|
|
|
/* Flag to indicate if addip is enabled. */
|
|
|
|
int addip_enable;
|
|
|
|
int addip_noauth;
|
|
|
|
|
|
|
|
/* Flag to indicate if PR-SCTP is enabled. */
|
|
|
|
int prsctp_enable;
|
|
|
|
|
2017-01-18 00:44:45 +08:00
|
|
|
/* Flag to indicate if PR-CONFIG is enabled. */
|
|
|
|
int reconf_enable;
|
|
|
|
|
2017-12-08 21:03:58 +08:00
|
|
|
/* Flag to indicate if SCTP-AUTH is enabled */
|
2012-08-07 15:29:57 +08:00
|
|
|
int auth_enable;
|
|
|
|
|
2017-12-08 21:03:58 +08:00
|
|
|
/* Flag to indicate if stream interleave is enabled */
|
|
|
|
int intl_enable;
|
|
|
|
|
2019-08-26 16:30:02 +08:00
|
|
|
/* Flag to indicate if ecn is enabled */
|
|
|
|
int ecn_enable;
|
|
|
|
|
2012-08-07 15:29:57 +08:00
|
|
|
/*
|
|
|
|
* Policy to control SCTP IPv4 address scoping
|
|
|
|
* 0 - Disable IPv4 address scoping
|
|
|
|
* 1 - Enable IPv4 address scoping
|
|
|
|
* 2 - Selectively allow only IPv4 private addresses
|
|
|
|
* 3 - Selectively allow only IPv4 link local address
|
|
|
|
*/
|
|
|
|
int scope_policy;
|
|
|
|
|
|
|
|
/* Threshold for rwnd update SACKS. Receive buffer shifted this many
|
|
|
|
* bits is an indicator of when to send and window update SACK.
|
|
|
|
*/
|
|
|
|
int rwnd_upd_shift;
|
|
|
|
|
|
|
|
/* Threshold for autoclose timeout, in seconds. */
|
|
|
|
unsigned long max_autoclose;
|
2012-08-06 16:42:04 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* __NETNS_SCTP_H__ */
|