summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authortuexen <tuexen@FreeBSD.org>2016-01-30 11:10:22 +0000
committertuexen <tuexen@FreeBSD.org>2016-01-30 11:10:22 +0000
commit8a9d3a9d9f89f3731ef2821665265c9fd250bbff (patch)
tree98d337b23e2f169dcfbc0dfafcea9ecb8a08e1a7 /sys/netinet
parente13af8890119de2f10170bd143a071b9dc7ace5c (diff)
downloadFreeBSD-src-8a9d3a9d9f89f3731ef2821665265c9fd250bbff.zip
FreeBSD-src-8a9d3a9d9f89f3731ef2821665265c9fd250bbff.tar.gz
Don't change the remote UDP encapsulation port for SCTP packets
containing an INIT chunk. MFC after: 3 days
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/sctp_input.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c
index 9edfcf6..1dbb6cf 100644
--- a/sys/netinet/sctp_input.c
+++ b/sys/netinet/sctp_input.c
@@ -5684,7 +5684,9 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
stcb = sctp_findassociation_addr(m, offset, src, dst,
sh, ch, &inp, &net, vrf_id);
#if defined(INET) || defined(INET6)
- if ((net != NULL) && (port != 0)) {
+ if ((net != NULL) &&
+ (ch->chunk_type != SCTP_INITIATION) &&
+ (port != 0)) {
if (net->port == 0) {
sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr));
}
@@ -5715,7 +5717,9 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
stcb = sctp_findassociation_addr(m, offset, src, dst,
sh, ch, &inp, &net, vrf_id);
#if defined(INET) || defined(INET6)
- if ((net != NULL) && (port != 0)) {
+ if ((net != NULL) &&
+ (ch->chunk_type != SCTP_INITIATION) &&
+ (port != 0)) {
if (net->port == 0) {
sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr));
}
@@ -5827,7 +5831,9 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
*/
inp = stcb->sctp_ep;
#if defined(INET) || defined(INET6)
- if ((net != NULL) && (port != 0)) {
+ if ((net != NULL) &&
+ (ch->chunk_type != SCTP_INITIATION) &&
+ (port != 0)) {
if (net->port == 0) {
sctp_pathmtu_adjustment(stcb, net->mtu - sizeof(struct udphdr));
}
OpenPOWER on IntegriCloud