Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c28445c3 authored by Xin Long's avatar Xin Long Committed by David S. Miller
Browse files

sctp: add reconf_enable in asoc ep and netns



This patch is to add reconf_enable field in all of asoc ep and netns
to indicate if they support stream reset.

When initializing, asoc reconf_enable get the default value from ep
reconf_enable which is from netns netns reconf_enable by default.

It is also to add reconf_capable in asoc peer part to know if peer
supports reconf_enable, the value is set if ext params have reconf
chunk support when processing init chunk, just as rfc6525 section
5.1.1 demands.

Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7a090b04
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -118,6 +118,9 @@ struct netns_sctp {
	/* Flag to indicate if PR-SCTP is enabled. */
	int prsctp_enable;

	/* Flag to indicate if PR-CONFIG is enabled. */
	int reconf_enable;

	/* Flag to idicate if SCTP-AUTH is enabled */
	int auth_enable;

+5 −2
Original line number Diff line number Diff line
@@ -1255,7 +1255,8 @@ struct sctp_endpoint {
	struct list_head endpoint_shared_keys;
	__u16 active_key_id;
	__u8  auth_enable:1,
	      prsctp_enable:1;
	      prsctp_enable:1,
	      reconf_enable:1;
};

/* Recover the outter endpoint structure. */
@@ -1508,6 +1509,7 @@ struct sctp_association {
			hostname_address:1, /* Peer understands DNS addresses? */
			asconf_capable:1,   /* Does peer support ADDIP? */
			prsctp_capable:1,   /* Can peer do PR-SCTP? */
			reconf_capable:1,   /* Can peer do RE-CONFIG? */
			auth_capable:1;     /* Is peer doing SCTP-AUTH? */

		/* sack_needed : This flag indicates if the next received
@@ -1867,7 +1869,8 @@ struct sctp_association {

	__u8 need_ecne:1,	/* Need to send an ECNE Chunk? */
	     temp:1,		/* Is it a temporary association? */
	     prsctp_enable:1;
	     prsctp_enable:1,
	     reconf_enable:1;

	__u32 strreset_outseq; /* Update after receiving response */
	__u32 strreset_inseq; /* Update after receiving request */
+1 −0
Original line number Diff line number Diff line
@@ -270,6 +270,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a

	asoc->active_key_id = ep->active_key_id;
	asoc->prsctp_enable = ep->prsctp_enable;
	asoc->reconf_enable = ep->reconf_enable;

	/* Save the hmacs and chunks list into this association */
	if (ep->auth_hmacs_list)
+1 −0
Original line number Diff line number Diff line
@@ -164,6 +164,7 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
	ep->auth_hmacs_list = auth_hmacs;
	ep->auth_chunk_list = auth_chunks;
	ep->prsctp_enable = net->sctp.prsctp_enable;
	ep->reconf_enable = net->sctp.reconf_enable;

	return ep;

+3 −0
Original line number Diff line number Diff line
@@ -1258,6 +1258,9 @@ static int __net_init sctp_defaults_init(struct net *net)
	/* Enable PR-SCTP by default. */
	net->sctp.prsctp_enable = 1;

	/* Disable RECONF by default. */
	net->sctp.reconf_enable = 0;

	/* Disable AUTH by default. */
	net->sctp.auth_enable = 0;

Loading