sctp: Adjust PMTU updates to accomodate route invalidation.
This adjusts the call to dst_ops->update_pmtu() so that we can transparently handle the fact that, in the future, the dst itself can be invalidated by the PMTU update (when we have non-host routes cached in sockets). Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1853,7 +1853,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
|
||||
}
|
||||
|
||||
if (asoc->pmtu_pending)
|
||||
sctp_assoc_pending_pmtu(asoc);
|
||||
sctp_assoc_pending_pmtu(sk, asoc);
|
||||
|
||||
/* If fragmentation is disabled and the message length exceeds the
|
||||
* association fragmentation point, return EMSGSIZE. The I-D
|
||||
@@ -2365,7 +2365,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
|
||||
if ((params->spp_flags & SPP_PMTUD_DISABLE) && params->spp_pathmtu) {
|
||||
if (trans) {
|
||||
trans->pathmtu = params->spp_pathmtu;
|
||||
sctp_assoc_sync_pmtu(asoc);
|
||||
sctp_assoc_sync_pmtu(sctp_opt2sk(sp), asoc);
|
||||
} else if (asoc) {
|
||||
asoc->pathmtu = params->spp_pathmtu;
|
||||
sctp_frag_point(asoc, params->spp_pathmtu);
|
||||
@@ -2382,7 +2382,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
|
||||
(trans->param_flags & ~SPP_PMTUD) | pmtud_change;
|
||||
if (update) {
|
||||
sctp_transport_pmtu(trans, sctp_opt2sk(sp));
|
||||
sctp_assoc_sync_pmtu(asoc);
|
||||
sctp_assoc_sync_pmtu(sctp_opt2sk(sp), asoc);
|
||||
}
|
||||
} else if (asoc) {
|
||||
asoc->param_flags =
|
||||
|
Reference in New Issue
Block a user