aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/socket.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-07-16 06:57:14 -0400
committerDavid S. Miller <davem@davemloft.net>2012-07-16 06:57:14 -0400
commit02f3d4ce9e81434a365f4643020b0402f6fe3332 (patch)
tree8fd12d62c3d92ed090d1d7e5f92750bef951b914 /net/sctp/socket.c
parent35ad9b9cf7d8a2e6259a0d24022e910adb6f3489 (diff)
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>
Diffstat (limited to 'net/sctp/socket.c')
-rw-r--r--net/sctp/socket.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index b3b8a8d813eb..74bd3c47350a 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -1853,7 +1853,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
1853 } 1853 }
1854 1854
1855 if (asoc->pmtu_pending) 1855 if (asoc->pmtu_pending)
1856 sctp_assoc_pending_pmtu(asoc); 1856 sctp_assoc_pending_pmtu(sk, asoc);
1857 1857
1858 /* If fragmentation is disabled and the message length exceeds the 1858 /* If fragmentation is disabled and the message length exceeds the
1859 * association fragmentation point, return EMSGSIZE. The I-D 1859 * association fragmentation point, return EMSGSIZE. The I-D
@@ -2365,7 +2365,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
2365 if ((params->spp_flags & SPP_PMTUD_DISABLE) && params->spp_pathmtu) { 2365 if ((params->spp_flags & SPP_PMTUD_DISABLE) && params->spp_pathmtu) {
2366 if (trans) { 2366 if (trans) {
2367 trans->pathmtu = params->spp_pathmtu; 2367 trans->pathmtu = params->spp_pathmtu;
2368 sctp_assoc_sync_pmtu(asoc); 2368 sctp_assoc_sync_pmtu(sctp_opt2sk(sp), asoc);
2369 } else if (asoc) { 2369 } else if (asoc) {
2370 asoc->pathmtu = params->spp_pathmtu; 2370 asoc->pathmtu = params->spp_pathmtu;
2371 sctp_frag_point(asoc, params->spp_pathmtu); 2371 sctp_frag_point(asoc, params->spp_pathmtu);
@@ -2382,7 +2382,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
2382 (trans->param_flags & ~SPP_PMTUD) | pmtud_change; 2382 (trans->param_flags & ~SPP_PMTUD) | pmtud_change;
2383 if (update) { 2383 if (update) {
2384 sctp_transport_pmtu(trans, sctp_opt2sk(sp)); 2384 sctp_transport_pmtu(trans, sctp_opt2sk(sp));
2385 sctp_assoc_sync_pmtu(asoc); 2385 sctp_assoc_sync_pmtu(sctp_opt2sk(sp), asoc);
2386 } 2386 }
2387 } else if (asoc) { 2387 } else if (asoc) {
2388 asoc->param_flags = 2388 asoc->param_flags =