diff options
author | David S. Miller <davem@davemloft.net> | 2019-11-08 14:18:32 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-08 14:18:32 -0800 |
commit | 92da362c07d413786ab59db1665376fb63805586 (patch) | |
tree | bb0bc2ba544e3d50c84421d630643ae35a36e423 /include/net | |
parent | a0c76345e3d3dbc40c39de2e00d15a3b7eef7885 (diff) | |
parent | d467ac0a38551a5904878b1f5a2fe20a040c0e11 (diff) | |
download | linux-92da362c07d413786ab59db1665376fb63805586.tar.gz |
Merge branch 'sctp-rfc7829'
Xin Long says:
====================
sctp: update from rfc7829
SCTP-PF was implemented based on a Internet-Draft in 2012:
https://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05
It's been updated quite a few by rfc7829 in 2016.
This patchset adds the following features:
1. add SCTP_ADDR_POTENTIALLY_FAILED notification
2. add pf_expose per netns/sock/asoc
3. add SCTP_EXPOSE_POTENTIALLY_FAILED_STATE sockopt
4. add ps_retrans per netns/sock/asoc/transport
(Primary Path Switchover)
5. add spt_pathcpthld for SCTP_PEER_ADDR_THLDS sockopt
v1->v2:
- See Patch 2/5 and Patch 5/5.
v2->v3:
- See Patch 1/5, 2/5 and 3/5.
v3->v4:
- See Patch 1/5, 2/5, 3/5 and 4/5.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/netns/sctp.h | 14 | ||||
-rw-r--r-- | include/net/sctp/constants.h | 12 | ||||
-rw-r--r-- | include/net/sctp/structs.h | 13 |
3 files changed, 36 insertions, 3 deletions
diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h index bdc0f27b8514..d8d02e4188d1 100644 --- a/include/net/netns/sctp.h +++ b/include/net/netns/sctp.h @@ -89,6 +89,12 @@ struct netns_sctp { */ int pf_retrans; + /* Primary.Switchover.Max.Retrans sysctl value + * taken from: + * https://tools.ietf.org/html/rfc7829 + */ + int ps_retrans; + /* * Disable Potentially-Failed feature, the feature is enabled by default * pf_enable - 0 : disable pf @@ -97,6 +103,14 @@ struct netns_sctp { int pf_enable; /* + * 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; + + /* * 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 diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h index 823afc42a3aa..15b4d9aec7ff 100644 --- a/include/net/sctp/constants.h +++ b/include/net/sctp/constants.h @@ -286,6 +286,18 @@ enum { SCTP_MAX_GABS = 16 }; * functions simpler to write. */ +/* These are the values for pf exposure, UNUSED is to keep compatible with old + * applications by default. + */ +enum { + SCTP_PF_EXPOSE_UNSET, + SCTP_PF_EXPOSE_DISABLE, + SCTP_PF_EXPOSE_ENABLE, +}; +#define SCTP_PF_EXPOSE_MAX SCTP_PF_EXPOSE_ENABLE + +#define SCTP_PS_RETRANS_MAX 0xffff + /* These return values describe the success or failure of a number of * routines which form the lower interface to SCTP_outqueue. */ diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 503fbc3cd819..3cc913f328cd 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -184,7 +184,8 @@ struct sctp_sock { __u32 flowlabel; __u8 dscp; - int pf_retrans; + __u16 pf_retrans; + __u16 ps_retrans; /* The initial Path MTU to use for new associations. */ __u32 pathmtu; @@ -215,6 +216,7 @@ struct sctp_sock { __u32 adaptation_ind; __u32 pd_point; __u16 nodelay:1, + pf_expose:2, reuse:1, disable_fragments:1, v4mapped:1, @@ -896,7 +898,9 @@ struct sctp_transport { * and will be initialized from the assocs value. This can be changed * using the SCTP_PEER_ADDR_THLDS socket option */ - int pf_retrans; + __u16 pf_retrans; + /* Used for primary path switchover. */ + __u16 ps_retrans; /* PMTU : The current known path MTU. */ __u32 pathmtu; @@ -1772,7 +1776,9 @@ struct sctp_association { * and will be initialized from the assocs value. This can be * changed using the SCTP_PEER_ADDR_THLDS socket option */ - int pf_retrans; + __u16 pf_retrans; + /* Used for primary path switchover. */ + __u16 ps_retrans; /* Maximum number of times the endpoint will retransmit INIT */ __u16 max_init_attempts; @@ -2053,6 +2059,7 @@ struct sctp_association { __u8 need_ecne:1, /* Need to send an ECNE Chunk? */ temp:1, /* Is it a temporary association? */ + pf_expose:2, /* Expose pf state? */ force_delay:1; __u8 strreset_enable; |