From: swordfeng Date: Fri, 5 Jun 2015 12:43:04 +0000 (+0800) Subject: fix sctp header structure X-Git-Tag: v0.87~23^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F81%2Fhead;p=thirdparty%2Fmtr.git fix sctp header structure --- diff --git a/net.c b/net.c index d22254f..75b23d4 100644 --- a/net.c +++ b/net.c @@ -75,7 +75,6 @@ struct SCTPHeader { uint16 srcport; uint16 dstport; uint32 veri_tag; - uint32 checksum; }; /* Structure of an IPv4 UDP pseudoheader. */ @@ -980,9 +979,9 @@ void net_process_return(void) if ((size_t) num < sizeof(struct IPHeader) + sizeof(struct ICMPHeader) + sizeof (struct IPHeader) + - sizeof (struct SCTPHeader)) + sizeof (struct TCPHeader)) return; - sctpheader = (struct SCTPHeader *)(packet + sizeof (struct IPHeader) + + tcpheader = (struct TCPHeader *)(packet + sizeof (struct IPHeader) + sizeof (struct ICMPHeader) + sizeof (struct IPHeader)); @@ -993,9 +992,9 @@ void net_process_return(void) #ifdef ENABLE_IPV6 case AF_INET6: if ( num < sizeof (struct ICMPHeader) + - sizeof (struct ip6_hdr) + sizeof (struct SCTPHeader) ) + sizeof (struct ip6_hdr) + sizeof (struct TCPHeader) ) return; - sctpheader = (struct SCTPHeader *) ( packet + + tcpheader = (struct TCPHeader *) ( packet + sizeof (struct ICMPHeader) + sizeof (struct ip6_hdr) ); @@ -1017,9 +1016,9 @@ void net_process_return(void) if ((size_t) num < sizeof(struct IPHeader) + sizeof(struct ICMPHeader) + sizeof (struct IPHeader) + - sizeof (struct TCPHeader)) + sizeof (struct SCTPHeader)) return; - tcpheader = (struct TCPHeader *)(packet + sizeof (struct IPHeader) + + sctpheader = (struct SCTPHeader *)(packet + sizeof (struct IPHeader) + sizeof (struct ICMPHeader) + sizeof (struct IPHeader)); @@ -1030,9 +1029,9 @@ void net_process_return(void) #ifdef ENABLE_IPV6 case AF_INET6: if ( num < sizeof (struct ICMPHeader) + - sizeof (struct ip6_hdr) + sizeof (struct TCPHeader) ) + sizeof (struct ip6_hdr) + sizeof (struct SCTPHeader) ) return; - tcpheader = (struct TCPHeader *) ( packet + + sctpheader = (struct SCTPHeader *) ( packet + sizeof (struct ICMPHeader) + sizeof (struct ip6_hdr) ); @@ -1042,11 +1041,10 @@ void net_process_return(void) break; #endif } - sequence = ntohs(tcpheader->srcport); + sequence = ntohs(sctpheader->srcport); } break; } - if (sequence) net_process_ping (sequence, mpls, (void *) fromaddress, now); }