Author: tuexen
Date: Thu Mar  7 23:35:06 2013
New Revision: 247968
URL: http://svnweb.freebsd.org/changeset/base/247968

Log:
  MFC r238122:
  
  Use consistent method to determine IPV4_OUTPUT/IPV6_OUTPUT.

Modified:
  stable/8/sys/netinet/sctp_output.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/netinet/   (props changed)

Modified: stable/8/sys/netinet/sctp_output.c
==============================================================================
--- stable/8/sys/netinet/sctp_output.c  Thu Mar  7 23:31:32 2013        
(r247967)
+++ stable/8/sys/netinet/sctp_output.c  Thu Mar  7 23:35:06 2013        
(r247968)
@@ -10977,8 +10977,9 @@ sctp_send_resp_msg(struct sockaddr *src,
                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));
@@ -11012,10 +11013,10 @@ sctp_send_resp_msg(struct sockaddr *src,
                }
 #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)
@@ -11042,8 +11043,15 @@ sctp_send_resp_msg(struct sockaddr *src,
                }
 #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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to