sctp: add support for dscp and flowlabel per transport
Like some other per transport params, flowlabel and dscp are added in transport, asoc and sctp_sock. By default, transport sets its value from asoc's, and asoc does it from sctp_sock. flowlabel only works for ipv6 transport. Other than that they need to be passed down in sctp_xmit, flow4/6 also needs to set them before looking up route in get_dst. Note that it uses '& 0x100000' to check if flowlabel is set and '& 0x1' (tos 1st bit is unused) to check if dscp is set by users, so that they could be set to 0 by sockopt in next patch. Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
69b9e1e07d
commit
8a9c58d28d
@@ -115,6 +115,9 @@ static struct sctp_association *sctp_association_init(
|
||||
/* Initialize path max retrans value. */
|
||||
asoc->pathmaxrxt = sp->pathmaxrxt;
|
||||
|
||||
asoc->flowlabel = sp->flowlabel;
|
||||
asoc->dscp = sp->dscp;
|
||||
|
||||
/* Initialize default path MTU. */
|
||||
asoc->pathmtu = sp->pathmtu;
|
||||
|
||||
@@ -647,6 +650,10 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
|
||||
peer->sackdelay = asoc->sackdelay;
|
||||
peer->sackfreq = asoc->sackfreq;
|
||||
|
||||
if (addr->sa.sa_family == AF_INET6)
|
||||
peer->flowlabel = asoc->flowlabel;
|
||||
peer->dscp = asoc->dscp;
|
||||
|
||||
/* Enable/disable heartbeat, SACK delay, and path MTU discovery
|
||||
* based on association setting.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user