svn commit: r235175 - stable/9/sys/netinet

Michael Tuexen tuexen at FreeBSD.org
Wed May 9 14:25:15 UTC 2012


Author: tuexen
Date: Wed May  9 14:25:15 2012
New Revision: 235175
URL: http://svn.freebsd.org/changeset/base/235175

Log:
  MFC r235081:
  Add support for the sac_info field in struct sctp_assoc_change
  as required by RFC 6458.

Modified:
  stable/9/sys/netinet/sctp_uio.h
  stable/9/sys/netinet/sctputil.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/netinet/sctp_uio.h
==============================================================================
--- stable/9/sys/netinet/sctp_uio.h	Wed May  9 14:24:39 2012	(r235174)
+++ stable/9/sys/netinet/sctp_uio.h	Wed May  9 14:25:15 2012	(r235175)
@@ -296,16 +296,23 @@ struct sctp_assoc_change {
 	uint16_t sac_outbound_streams;
 	uint16_t sac_inbound_streams;
 	sctp_assoc_t sac_assoc_id;
+	uint8_t sac_info[];
 };
 
 /* sac_state values */
-#define SCTP_COMM_UP		0x0001
-#define SCTP_COMM_LOST		0x0002
-#define SCTP_RESTART		0x0003
-#define SCTP_SHUTDOWN_COMP	0x0004
-#define SCTP_CANT_STR_ASSOC	0x0005
-
-
+#define SCTP_COMM_UP            0x0001
+#define SCTP_COMM_LOST          0x0002
+#define SCTP_RESTART            0x0003
+#define SCTP_SHUTDOWN_COMP      0x0004
+#define SCTP_CANT_STR_ASSOC     0x0005
+
+/* sac_info values */
+#define SCTP_ASSOC_SUPPORTS_PR        0x01
+#define SCTP_ASSOC_SUPPORTS_AUTH      0x02
+#define SCTP_ASSOC_SUPPORTS_ASCONF    0x03
+#define SCTP_ASSOC_SUPPORTS_MULTIBUF  0x04
+#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05
+#define SCTP_ASSOC_SUPPORTS_MAX       0x05
 /*
  * Address event
  */

Modified: stable/9/sys/netinet/sctputil.c
==============================================================================
--- stable/9/sys/netinet/sctputil.c	Wed May  9 14:24:39 2012	(r235174)
+++ stable/9/sys/netinet/sctputil.c	Wed May  9 14:25:15 2012	(r235175)
@@ -2602,6 +2602,7 @@ sctp_notify_assoc_change(uint32_t event,
 	struct mbuf *m_notify;
 	struct sctp_assoc_change *sac;
 	struct sctp_queued_to_read *control;
+	unsigned int i;
 
 #if defined (__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
 	struct socket *so;
@@ -2666,7 +2667,22 @@ sctp_notify_assoc_change(uint32_t event,
 	sac->sac_outbound_streams = stcb->asoc.streamoutcnt;
 	sac->sac_inbound_streams = stcb->asoc.streamincnt;
 	sac->sac_assoc_id = sctp_get_associd(stcb);
-	SCTP_BUF_LEN(m_notify) = sizeof(struct sctp_assoc_change);
+	i = 0;
+	if (stcb->asoc.peer_supports_prsctp) {
+		sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_PR;
+	}
+	if (stcb->asoc.peer_supports_auth) {
+		sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_AUTH;
+	}
+	if (stcb->asoc.peer_supports_asconf) {
+		sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_ASCONF;
+	}
+	sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_MULTIBUF;
+	if (stcb->asoc.peer_supports_strreset) {
+		sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_RE_CONFIG;
+	}
+	sac->sac_length += i;
+	SCTP_BUF_LEN(m_notify) = sac->sac_length;
 	SCTP_BUF_NEXT(m_notify) = NULL;
 	control = sctp_build_readq_entry(stcb, stcb->asoc.primary_destination,
 	    0, 0, stcb->asoc.context, 0, 0, 0,


More information about the svn-src-stable-9 mailing list