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 (params->spp_flags & SPP_IPV6_FLOWLABEL) {
|
||||||
if (trans && trans->ipaddr.sa.sa_family == AF_INET6) {
|
if (trans) {
|
||||||
trans->flowlabel = params->spp_ipv6_flowlabel &
|
if (trans->ipaddr.sa.sa_family == AF_INET6) {
|
||||||
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;
|
|
||||||
trans->flowlabel = params->spp_ipv6_flowlabel &
|
trans->flowlabel = params->spp_ipv6_flowlabel &
|
||||||
SCTP_FLOWLABEL_VAL_MASK;
|
SCTP_FLOWLABEL_VAL_MASK;
|
||||||
trans->flowlabel |= SCTP_FLOWLABEL_SET_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 &
|
asoc->flowlabel = params->spp_ipv6_flowlabel &
|
||||||
SCTP_FLOWLABEL_VAL_MASK;
|
SCTP_FLOWLABEL_VAL_MASK;
|
||||||
asoc->flowlabel |= SCTP_FLOWLABEL_SET_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 = params->spp_dscp & SCTP_DSCP_VAL_MASK;
|
||||||
trans->dscp |= SCTP_DSCP_SET_MASK;
|
trans->dscp |= SCTP_DSCP_SET_MASK;
|
||||||
} else if (asoc) {
|
} else if (asoc) {
|
||||||
list_for_each_entry(trans,
|
struct sctp_transport *t;
|
||||||
&asoc->peer.transport_addr_list,
|
|
||||||
|
list_for_each_entry(t, &asoc->peer.transport_addr_list,
|
||||||
transports) {
|
transports) {
|
||||||
trans->dscp = params->spp_dscp &
|
t->dscp = params->spp_dscp &
|
||||||
SCTP_DSCP_VAL_MASK;
|
SCTP_DSCP_VAL_MASK;
|
||||||
trans->dscp |= SCTP_DSCP_SET_MASK;
|
t->dscp |= SCTP_DSCP_SET_MASK;
|
||||||
}
|
}
|
||||||
asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK;
|
asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK;
|
||||||
asoc->dscp |= SCTP_DSCP_SET_MASK;
|
asoc->dscp |= SCTP_DSCP_SET_MASK;
|
||||||
|
|
Loading…
Reference in New Issue