linux/include/net/netns/sctp.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __NETNS_SCTP_H__
   3#define __NETNS_SCTP_H__
   4
   5struct sock;
   6struct proc_dir_entry;
   7struct sctp_mib;
   8struct ctl_table_header;
   9
  10struct netns_sctp {
  11        DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics);
  12
  13#ifdef CONFIG_PROC_FS
  14        struct proc_dir_entry *proc_net_sctp;
  15#endif
  16#ifdef CONFIG_SYSCTL
  17        struct ctl_table_header *sysctl_header;
  18#endif
  19        /* This is the global socket data structure used for responding to
  20         * the Out-of-the-blue (OOTB) packets.  A control sock will be created
  21         * for this socket at the initialization time.
  22         */
  23        struct sock *ctl_sock;
  24
  25        /* This is the global local address list.
  26         * We actively maintain this complete list of addresses on
  27         * the system by catching address add/delete events.
  28         *
  29         * It is a list of sctp_sockaddr_entry.
  30         */
  31        struct list_head local_addr_list;
  32        struct list_head addr_waitq;
  33        struct timer_list addr_wq_timer;
  34        struct list_head auto_asconf_splist;
  35        /* Lock that protects both addr_waitq and auto_asconf_splist */
  36        spinlock_t addr_wq_lock;
  37
  38        /* Lock that protects the local_addr_list writers */
  39        spinlock_t local_addr_lock;
  40
  41        /* RFC2960 Section 14. Suggested SCTP Protocol Parameter Values
  42         *
  43         * The following protocol parameters are RECOMMENDED:
  44         *
  45         * RTO.Initial              - 3  seconds
  46         * RTO.Min                  - 1  second
  47         * RTO.Max                 -  60 seconds
  48         * RTO.Alpha                - 1/8  (3 when converted to right shifts.)
  49         * RTO.Beta                 - 1/4  (2 when converted to right shifts.)
  50         */
  51        unsigned int rto_initial;
  52        unsigned int rto_min;
  53        unsigned int rto_max;
  54
  55        /* Note: rto_alpha and rto_beta are really defined as inverse
  56         * powers of two to facilitate integer operations.
  57         */
  58        int rto_alpha;
  59        int rto_beta;
  60
  61        /* Max.Burst                - 4 */
  62        int max_burst;
  63
  64        /* Whether Cookie Preservative is enabled(1) or not(0) */
  65        int cookie_preserve_enable;
  66
  67        /* The namespace default hmac alg */
  68        char *sctp_hmac_alg;
  69
  70        /* Valid.Cookie.Life        - 60  seconds  */
  71        unsigned int valid_cookie_life;
  72
  73        /* Delayed SACK timeout  200ms default*/
  74        unsigned int sack_timeout;
  75
  76        /* HB.interval              - 30 seconds  */
  77        unsigned int hb_interval;
  78
  79        /* Association.Max.Retrans  - 10 attempts
  80         * Path.Max.Retrans         - 5  attempts (per destination address)
  81         * Max.Init.Retransmits     - 8  attempts
  82         */
  83        int max_retrans_association;
  84        int max_retrans_path;
  85        int max_retrans_init;
  86        /* Potentially-Failed.Max.Retrans sysctl value
  87         * taken from:
  88         * http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05
  89         */
  90        int pf_retrans;
  91
  92        /*
  93         * Disable Potentially-Failed feature, the feature is enabled by default
  94         * pf_enable    -  0  : disable pf
  95         *              - >0  : enable pf
  96         */
  97        int pf_enable;
  98
  99        /*
 100         * Policy for preforming sctp/socket accounting
 101         * 0   - do socket level accounting, all assocs share sk_sndbuf
 102         * 1   - do sctp accounting, each asoc may use sk_sndbuf bytes
 103         */
 104        int sndbuf_policy;
 105
 106        /*
 107         * Policy for preforming sctp/socket accounting
 108         * 0   - do socket level accounting, all assocs share sk_rcvbuf
 109         * 1   - do sctp accounting, each asoc may use sk_rcvbuf bytes
 110         */
 111        int rcvbuf_policy;
 112
 113        int default_auto_asconf;
 114
 115        /* Flag to indicate if addip is enabled. */
 116        int addip_enable;
 117        int addip_noauth;
 118
 119        /* Flag to indicate if PR-SCTP is enabled. */
 120        int prsctp_enable;
 121
 122        /* Flag to indicate if PR-CONFIG is enabled. */
 123        int reconf_enable;
 124
 125        /* Flag to indicate if SCTP-AUTH is enabled */
 126        int auth_enable;
 127
 128        /* Flag to indicate if stream interleave is enabled */
 129        int intl_enable;
 130
 131        /*
 132         * Policy to control SCTP IPv4 address scoping
 133         * 0   - Disable IPv4 address scoping
 134         * 1   - Enable IPv4 address scoping
 135         * 2   - Selectively allow only IPv4 private addresses
 136         * 3   - Selectively allow only IPv4 link local address
 137         */
 138        int scope_policy;
 139
 140        /* Threshold for rwnd update SACKS.  Receive buffer shifted this many
 141         * bits is an indicator of when to send and window update SACK.
 142         */
 143        int rwnd_upd_shift;
 144
 145        /* Threshold for autoclose timeout, in seconds. */
 146        unsigned long max_autoclose;
 147};
 148
 149#endif /* __NETNS_SCTP_H__ */
 150