aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'net/netfilter/nf_conntrack_proto_sctp.c')
-rw-r--r--net/netfilter/nf_conntrack_proto_sctp.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/netfilter/nf_conntrack_proto_sctp.c b/net/netfilter/nf_conntrack_proto_sctp.c
index a937d4f75613..8cb62805fd68 100644
--- a/net/netfilter/nf_conntrack_proto_sctp.c
+++ b/net/netfilter/nf_conntrack_proto_sctp.c
@@ -394,6 +394,15 @@ static int sctp_packet(struct nf_conn *ct,
394 pr_debug("Setting vtag %x for dir %d\n", 394 pr_debug("Setting vtag %x for dir %d\n",
395 ih->init_tag, !dir); 395 ih->init_tag, !dir);
396 ct->proto.sctp.vtag[!dir] = ih->init_tag; 396 ct->proto.sctp.vtag[!dir] = ih->init_tag;
397
398 /* don't renew timeout on init retransmit so
399 * port reuse by client or NAT middlebox cannot
400 * keep entry alive indefinitely (incl. nat info).
401 */
402 if (new_state == SCTP_CONNTRACK_CLOSED &&
403 old_state == SCTP_CONNTRACK_CLOSED &&
404 nf_ct_is_confirmed(ct))
405 ignore = true;
397 } 406 }
398 407
399 ct->proto.sctp.state = new_state; 408 ct->proto.sctp.state = new_state;