sctp: Follow security requirement of responding with 1 packet
RFC 4960, Section 11.4. Protection of Non-SCTP-Capable Hosts When an SCTP stack receives a packet containing multiple control or DATA chunks and the processing of the packet requires the sending of multiple chunks in response, the sender of the response chunk(s) MUST NOT send more than one packet. If bundling is supported, multiple response chunks that fit into a single packet MAY be bundled together into one single response packet. If bundling is not supported, then the sender MUST NOT send more than one response chunk and MUST discard all other responses. Note that this rule does NOT apply to a SACK chunk, since a SACK chunk is, in itself, a response to DATA and a SACK does not require a response of more DATA. We implement this by not servicing our outqueue until we reach the end of the packet. This enables maximum bundling. We also identify 'response' chunks and make sure that we only send 1 packet when sending such chunks. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7115e632f9
commit
2e3216cd54
@@ -827,7 +827,7 @@ struct sctp_packet *sctp_packet_init(struct sctp_packet *,
|
||||
__u16 sport, __u16 dport);
|
||||
struct sctp_packet *sctp_packet_config(struct sctp_packet *, __u32 vtag, int);
|
||||
sctp_xmit_t sctp_packet_transmit_chunk(struct sctp_packet *,
|
||||
struct sctp_chunk *);
|
||||
struct sctp_chunk *, int);
|
||||
sctp_xmit_t sctp_packet_append_chunk(struct sctp_packet *,
|
||||
struct sctp_chunk *);
|
||||
int sctp_packet_transmit(struct sctp_packet *);
|
||||
|
Reference in New Issue
Block a user