Author: tuexen
Date: Sun Nov 27 19:09:31 2011
New Revision: 228036
URL: http://svn.freebsd.org/changeset/base/228036

Log:
  MFC r228031:
  
  Fix a warning reported by arundel@.
  Fix a bug where the parameter length of a supported address types
  parameter is set to a wrong value if the kernel is built with
  with either INET or INET6, but not both.
  
  Approved by: re@

Modified:
  stable/9/sys/netinet/sctp_header.h
  stable/9/sys/netinet/sctp_output.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/amd64/include/xen/   (props changed)
  stable/9/sys/boot/   (props changed)
  stable/9/sys/boot/i386/efi/   (props changed)
  stable/9/sys/boot/ia64/efi/   (props changed)
  stable/9/sys/boot/ia64/ski/   (props changed)
  stable/9/sys/boot/powerpc/boot1.chrp/   (props changed)
  stable/9/sys/boot/powerpc/ofw/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)
  stable/9/sys/conf/   (props changed)
  stable/9/sys/contrib/dev/acpica/   (props changed)
  stable/9/sys/contrib/octeon-sdk/   (props changed)
  stable/9/sys/contrib/pf/   (props changed)
  stable/9/sys/contrib/x86emu/   (props changed)

Modified: stable/9/sys/netinet/sctp_header.h
==============================================================================
--- stable/9/sys/netinet/sctp_header.h  Sun Nov 27 19:02:18 2011        
(r228035)
+++ stable/9/sys/netinet/sctp_header.h  Sun Nov 27 19:09:31 2011        
(r228036)
@@ -81,8 +81,7 @@ struct sctp_host_name_param {
 /* supported address type */
 struct sctp_supported_addr_param {
        struct sctp_paramhdr ph;/* type=SCTP_SUPPORTED_ADDRTYPE */
-       uint16_t addr_type[SCTP_ARRAY_MIN_LEN]; /* array of supported address
-                                                * types */
+       uint16_t addr_type[2];  /* array of supported address types */
 }                         SCTP_PACKED;
 
 /* ECN parameter */

Modified: stable/9/sys/netinet/sctp_output.c
==============================================================================
--- stable/9/sys/netinet/sctp_output.c  Sun Nov 27 19:02:18 2011        
(r228035)
+++ stable/9/sys/netinet/sctp_output.c  Sun Nov 27 19:09:31 2011        
(r228036)
@@ -4668,24 +4668,24 @@ sctp_send_initiate(struct sctp_inpcb *in
 #ifdef INET6
 #ifdef INET
        /* we support 2 types: IPv4/IPv6 */
-       sup_addr->ph.param_length = htons(sizeof(*sup_addr) + sizeof(uint16_t));
+       sup_addr->ph.param_length = htons(sizeof(struct sctp_paramhdr) + 2 * 
sizeof(uint16_t));
        sup_addr->addr_type[0] = htons(SCTP_IPV4_ADDRESS);
        sup_addr->addr_type[1] = htons(SCTP_IPV6_ADDRESS);
 #else
        /* we support 1 type: IPv6 */
-       sup_addr->ph.param_length = htons(sizeof(*sup_addr) + sizeof(uint8_t));
+       sup_addr->ph.param_length = htons(sizeof(struct sctp_paramhdr) + 
sizeof(uint16_t));
        sup_addr->addr_type[0] = htons(SCTP_IPV6_ADDRESS);
        sup_addr->addr_type[1] = htons(0);      /* this is the padding */
 #endif
 #else
        /* we support 1 type: IPv4 */
-       sup_addr->ph.param_length = htons(sizeof(*sup_addr) + sizeof(uint8_t));
+       sup_addr->ph.param_length = htons(sizeof(struct sctp_paramhdr) + 
sizeof(uint16_t));
        sup_addr->addr_type[0] = htons(SCTP_IPV4_ADDRESS);
        sup_addr->addr_type[1] = htons(0);      /* this is the padding */
 #endif
-       SCTP_BUF_LEN(m) += sizeof(*sup_addr) + sizeof(uint16_t);
+       SCTP_BUF_LEN(m) += sizeof(struct sctp_supported_addr_param);
        /* adaptation layer indication parameter */
-       ali = (struct sctp_adaptation_layer_indication *)((caddr_t)sup_addr + 
sizeof(*sup_addr) + sizeof(uint16_t));
+       ali = (struct sctp_adaptation_layer_indication *)((caddr_t)sup_addr + 
sizeof(struct sctp_supported_addr_param));
        ali->ph.param_type = htons(SCTP_ULP_ADAPTATION);
        ali->ph.param_length = htons(sizeof(*ali));
        ali->indication = ntohl(inp->sctp_ep.adaptation_layer_indicator);
_______________________________________________
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