Merge branch 'sctp-two-fixes-for-spp_ipv6_flowlabel-and-spp_dscp-sockopts'
Xin Long says: ==================== sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts This patchset fixes two problems in sctp_apply_peer_addr_params() when setting spp_ipv6_flowlabel or spp_dscp. ==================== Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
6570aa1d10
|
@ -2658,20 +2658,23 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
|
|||
}
|
||||
|
||||
if (params->spp_flags & SPP_IPV6_FLOWLABEL) {
|
||||
if (trans && trans->ipaddr.sa.sa_family == AF_INET6) {
|
||||
trans->flowlabel = params->spp_ipv6_flowlabel &
|
||||
SCTP_FLOWLABEL_VAL_MASK;
|
||||
trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK;
|
||||
} else if (asoc) {
|
||||
list_for_each_entry(trans,
|
||||
&asoc->peer.transport_addr_list,
|
||||
transports) {
|
||||
if (trans->ipaddr.sa.sa_family != AF_INET6)
|
||||
continue;
|
||||
if (trans) {
|
||||
if (trans->ipaddr.sa.sa_family == AF_INET6) {
|
||||
trans->flowlabel = params->spp_ipv6_flowlabel &
|
||||
SCTP_FLOWLABEL_VAL_MASK;
|
||||
trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK;
|
||||
}
|
||||
} else if (asoc) {
|
||||
struct sctp_transport *t;
|
||||
|
||||
list_for_each_entry(t, &asoc->peer.transport_addr_list,
|
||||
transports) {
|
||||
if (t->ipaddr.sa.sa_family != AF_INET6)
|
||||
continue;
|
||||
t->flowlabel = params->spp_ipv6_flowlabel &
|
||||
SCTP_FLOWLABEL_VAL_MASK;
|
||||
t->flowlabel |= SCTP_FLOWLABEL_SET_MASK;
|
||||
}
|
||||
asoc->flowlabel = params->spp_ipv6_flowlabel &
|
||||
SCTP_FLOWLABEL_VAL_MASK;
|
||||
asoc->flowlabel |= SCTP_FLOWLABEL_SET_MASK;
|
||||
|
@ -2687,12 +2690,13 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
|
|||
trans->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK;
|
||||
trans->dscp |= SCTP_DSCP_SET_MASK;
|
||||
} else if (asoc) {
|
||||
list_for_each_entry(trans,
|
||||
&asoc->peer.transport_addr_list,
|
||||
struct sctp_transport *t;
|
||||
|
||||
list_for_each_entry(t, &asoc->peer.transport_addr_list,
|
||||
transports) {
|
||||
trans->dscp = params->spp_dscp &
|
||||
SCTP_DSCP_VAL_MASK;
|
||||
trans->dscp |= SCTP_DSCP_SET_MASK;
|
||||
t->dscp = params->spp_dscp &
|
||||
SCTP_DSCP_VAL_MASK;
|
||||
t->dscp |= SCTP_DSCP_SET_MASK;
|
||||
}
|
||||
asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK;
|
||||
asoc->dscp |= SCTP_DSCP_SET_MASK;
|
||||
|
|
Loading…
Reference in New Issue