diff options
author | tuexen <tuexen@FreeBSD.org> | 2012-07-04 20:59:30 +0000 |
---|---|---|
committer | tuexen <tuexen@FreeBSD.org> | 2012-07-04 20:59:30 +0000 |
commit | 4f65fa236f2375697aae8a26e4208dd71aadf951 (patch) | |
tree | 1695ada5ee9245da575d6946a7cb16960ef55ea6 /sys/netinet | |
parent | be3caf7d1b4dddea6a0cc7abed57d218405b0fef (diff) | |
download | FreeBSD-src-4f65fa236f2375697aae8a26e4208dd71aadf951.zip FreeBSD-src-4f65fa236f2375697aae8a26e4208dd71aadf951.tar.gz |
Use consistent method to determine IPV4_OUTPUT/IPV6_OUTPUT.
MFC after: 3 days
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/sctp_output.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 116f07f..41bc1c5 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -10971,8 +10971,9 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, return; } SCTP_ATTACH_CHAIN(o_pak, mout, len); + switch (dst->sa_family) { #ifdef INET - if (ip != NULL) { + case AF_INET: if (port) { if (V_udp_cksum) { udp->uh_sum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr, udp->uh_ulen + htons(IPPROTO_UDP)); @@ -11006,10 +11007,10 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, } #endif SCTP_IP_OUTPUT(ret, o_pak, NULL, NULL, vrf_id); - } + break; #endif #ifdef INET6 - if (ip6 != NULL) { + case AF_INET6: ip6->ip6_plen = len - sizeof(struct ip6_hdr); if (port) { #if defined(SCTP_WITH_NO_CSUM) @@ -11036,8 +11037,15 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst, } #endif SCTP_IP6_OUTPUT(ret, o_pak, NULL, NULL, NULL, vrf_id); - } + break; #endif + default: + SCTPDBG(SCTP_DEBUG_OUTPUT1, "Unknown protocol (TSNH) type %d\n", + dst->sa_family); + sctp_m_freem(mout); + SCTP_LTRACE_ERR_RET_PKT(mout, NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); + return; + } SCTP_STAT_INCR(sctps_sendpackets); SCTP_STAT_INCR_COUNTER64(sctps_outpackets); SCTP_STAT_INCR_COUNTER64(sctps_outcontrolchunks); |