diff --git a/gtests/net/packetdrill/parser.y b/gtests/net/packetdrill/parser.y
index eafcb3291376bf5de6efc486bd7edf25ee6821cb..6e594b90cf57c8276101cbd1b2e126f83fd62982 100644
--- a/gtests/net/packetdrill/parser.y
+++ b/gtests/net/packetdrill/parser.y
@@ -3489,7 +3489,7 @@ serinfo_next_stream
 ;
 
 serinfo_next_flags
-: SERINFO_NEXT_FLAGS'=' WORD {
+: SERINFO_NEXT_FLAGS '=' WORD {
 	$$ = new_expression(EXPR_WORD);
 	$$->value.string = $3;
 }
@@ -3533,7 +3533,7 @@ serinfo_next_ppid
 
 sctp_extrcvinfo
 : '{' sinfo_stream ',' sinfo_ssn ',' sinfo_flags ',' sinfo_ppid ',' sinfo_context ',' sinfo_pr_value ',' sinfo_tsn ',' sinfo_cumtsn ',' 
-serinfo_next_stream ',' serinfo_next_flags ',' serinfo_next_aid ',' serinfo_next_length ',' serinfo_next_ppid ',' sinfo_assoc_id '}' {
+serinfo_next_flags ',' serinfo_next_stream ',' serinfo_next_aid ',' serinfo_next_length ',' serinfo_next_ppid ',' sinfo_assoc_id '}' {
 	$$ = new_expression(EXPR_SCTP_EXTRCVINFO);
 	$$->value.sctp_extrcvinfo = calloc(1, sizeof(struct sctp_extrcvinfo_expr));
 	$$->value.sctp_extrcvinfo->sinfo_stream = $2;
diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 8f45e53cc2457ed7d4e3422c83f4e54687e2aab9..4500a33b2a27d1153c6676ae9255c23cd916b89e 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -64,6 +64,8 @@ static int parse_expression_to_sctp_sndrcvinfo(struct expression *expr, struct s
 					       char **error);
 #endif
 #if defined(__FreeBSD__)
+static int parse_expression_to_sctp_extrcvinfo(struct expression *expr, struct sctp_extrcvinfo *info,
+					       char **error);
 static int parse_expression_to_sctp_sndinfo(struct expression *expr, struct sctp_sndinfo *info,
 				            char **error);
 static int parse_expression_to_sctp_prinfo(struct expression *expr, struct sctp_prinfo *info,
@@ -79,6 +81,10 @@ static int check_sctp_sndinfo(struct sctp_sndinfo_expr *expr, struct sctp_sndinf
 static int check_sctp_initmsg(struct sctp_initmsg_expr *expr, struct sctp_initmsg *sctp_initmsg,
 			      char **error);
 #endif
+#if defined(__FreeBSD__)
+static int check_sctp_extrcvinfo(struct sctp_extrcvinfo_expr *expr, struct sctp_extrcvinfo *sctp_info,
+				 char **error);
+#endif
 #if defined(linux) || defined(__FreeBSD__)
 static int check_sctp_rcvinfo(struct sctp_rcvinfo_expr *expr, struct sctp_rcvinfo *sctp_rcvinfo,
 				 char** error);
@@ -564,6 +570,22 @@ int check_s32_expr(struct expression *expr, s16 value, char *val_name, char **er
 	return STATUS_OK;
 }
 
+int check_u32_hton_expr(struct expression *expr, u32 value, char *val_name, char **error) {
+	if (expr->type != EXPR_ELLIPSIS) {
+		u32 script_val;
+
+		if (get_u32(expr, &script_val, error)) {
+			return STATUS_ERR;
+		}
+		if (htonl(value) != htonl(script_val)) {
+			asprintf(error, "%s: expected: %u actual: %u", val_name,
+				 htonl(script_val), htonl(value));
+			return STATUS_ERR;
+		}
+	}
+	return STATUS_OK;
+}
+
 int check_u32_expr(struct expression *expr, u32 value, char *val_name, char **error) {
 	if (expr->type != EXPR_ELLIPSIS) {
 		u32 script_val;
@@ -731,6 +753,12 @@ static int cmsg_new(struct expression *expression,
 			cmsg_size += CMSG_SPACE(sizeof(struct sctp_sndrcvinfo));
 			break;
 #endif
+#if defined(SCTP_EXTRCV)
+		case EXPR_SCTP_EXTRCVINFO:
+			printf("EXT SIZE %zu\n", CMSG_SPACE(sizeof(struct sctp_extrcvinfo)));
+			cmsg_size += CMSG_SPACE(sizeof(struct sctp_extrcvinfo));
+			break;
+#endif
 #if defined(SCTP_SNDINFO)
 		case EXPR_SCTP_SNDINFO:
 			cmsg_size += CMSG_SPACE(sizeof(struct sctp_sndinfo));
@@ -774,7 +802,7 @@ static int cmsg_new(struct expression *expression,
 	*cmsg_len_ptr = cmsg_size;
 	cmsg = calloc(1, cmsg_size);
 	*cmsg_ptr = (void *)cmsg;
-
+	printf("total size %u\n", cmsg_size);
 	for (i = 0; i < list_len; i++) {
 		struct expression *expr;
 		struct cmsghdr_expr *cmsg_expr;
@@ -813,6 +841,17 @@ static int cmsg_new(struct expression *expression,
 			break;		
 		}
 #endif
+#if defined(SCTP_EXTRCV)
+		case EXPR_SCTP_EXTRCVINFO: {
+			struct sctp_extrcvinfo info;
+			if (parse_expression_to_sctp_extrcvinfo(cmsg_expr->cmsg_data, &info, error)) {
+				goto error_out;
+			}
+			memcpy(CMSG_DATA(cmsg), &info, sizeof(struct sctp_extrcvinfo));
+			cmsg = (struct cmsghdr *) ((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_extrcvinfo)));
+			break;		
+		}
+#endif
 #if defined(SCTP_SNDINFO)
 		case EXPR_SCTP_SNDINFO: {
 			struct sctp_sndinfo info;
@@ -881,29 +920,32 @@ error_out:
 	*cmsg_len_ptr = 0;
 	return STATUS_ERR;
 }
+
 static int check_cmsghdr(struct expression *expr_list, struct msghdr *msg, char  **error) {
 	struct expression_list *list;
 	struct expression *cmsg_expr;
 	struct cmsghdr *cmsg_ptr;
 	int cnt = 0;
+	int list_len = 0;
 
 	assert(expr_list->type == EXPR_LIST);
 
 	list = expr_list->value.list;
+	list_len = expression_list_length(list);
 	for (cmsg_ptr = CMSG_FIRSTHDR(msg); cmsg_ptr != NULL; cmsg_ptr = CMSG_NXTHDR(msg, cmsg_ptr)) {
 		cmsg_expr = get_arg(list, cnt, error);
 		if (cmsg_expr->type != EXPR_ELLIPSIS) {
 			struct cmsghdr_expr *expr;
 			expr = cmsg_expr->value.cmsghdr;
+			if (check_s32_expr(expr->cmsg_type, cmsg_ptr->cmsg_type,
+					   "cmsghdr.cmsg_type", error))
+				return STATUS_ERR;
 			if (check_u32_expr(expr->cmsg_len, cmsg_ptr->cmsg_len,
 					   "cmsghdr.cmsg_len", error))
 				return STATUS_ERR;
 			if (check_s32_expr(expr->cmsg_level, cmsg_ptr->cmsg_level,
 					   "cmsghdr.cmsg_level", error))
 				return STATUS_ERR;
-			if (check_s32_expr(expr->cmsg_type, cmsg_ptr->cmsg_type,
-					   "cmsghdr.cmsg_type", error))
-				return STATUS_ERR;
 
 			if (expr->cmsg_data->type == EXPR_ELLIPSIS) {
 				continue;
@@ -927,6 +969,16 @@ static int check_cmsghdr(struct expression *expr_list, struct msghdr *msg, char
 				}
 				break;
 #endif
+#ifdef SCTP_EXTRCV
+			case SCTP_EXTRCV:
+				printf("check extrcv\n");
+				if (check_sctp_extrcvinfo(expr->cmsg_data->value.sctp_extrcvinfo,
+							  (struct sctp_extrcvinfo *) CMSG_DATA(cmsg_ptr),
+							  error)) {
+					return STATUS_ERR;
+				}
+				break;
+#endif
 #ifdef SCTP_SNDINFO
 			case SCTP_SNDINFO:
 				if (check_sctp_sndinfo(expr->cmsg_data->value.sctp_sndinfo,
@@ -1015,6 +1067,10 @@ static int check_cmsghdr(struct expression *expr_list, struct msghdr *msg, char
 		}
 		cnt++;
 	}
+	if (cnt != list_len) {
+		asprintf(error, "Return cmsg count is unqual to expected list len. actual %u, expected %u", cnt, list_len);
+		return STATUS_ERR;
+	}
 	return STATUS_OK;
 }
 
@@ -3389,18 +3445,9 @@ static int check_sctp_sndrcvinfo(struct sctp_sndrcvinfo_expr *expr,
 	if (check_u16_expr(expr->sinfo_flags, sctp_sndrcvinfo->sinfo_flags,
 			   "sctp_sndrcvinfo.sinfo_flags", error))
 		return STATUS_ERR;
-	if (expr->sinfo_ppid->type != EXPR_ELLIPSIS) {
-		u32 sinfo_ppid;
-
-		if (get_u32(expr->sinfo_ppid, &sinfo_ppid, error)) {
-			return STATUS_ERR;
-		}
-		if (ntohl(sctp_sndrcvinfo->sinfo_ppid) != ntohl(sinfo_ppid)) {
-			asprintf(error, "sctp_sndrcvinfo.sinfo_ppid: expected: %u actual: %u",
-				 ntohl(sinfo_ppid), ntohl(sctp_sndrcvinfo->sinfo_ppid));
-			return STATUS_ERR;
-		}
-	}
+	if (check_u32_hton_expr(expr->sinfo_ppid, sctp_sndrcvinfo->sinfo_ppid,
+			   "sctp_sndrcvinfo.sinfo_ppid", error))
+		return STATUS_ERR;
 	if (check_u32_expr(expr->sinfo_context, sctp_sndrcvinfo->sinfo_context,
 			   "sctp_sndrcvinfo.sinfo_context", error))
 		return STATUS_ERR;
@@ -3421,6 +3468,58 @@ static int check_sctp_sndrcvinfo(struct sctp_sndrcvinfo_expr *expr,
 }
 #endif
 
+#if defined(__FreeBSD__)
+static int check_sctp_extrcvinfo(struct sctp_extrcvinfo_expr *expr,
+				 struct sctp_extrcvinfo *sctp_extrcvinfo,
+				 char** error) {
+	if (check_u16_expr(expr->sinfo_stream, sctp_extrcvinfo->sinfo_stream,
+			   "sctp_extrcvinfo.sinfo_stream", error))
+		return STATUS_ERR;
+	if (check_u16_expr(expr->sinfo_ssn, sctp_extrcvinfo->sinfo_ssn,
+			   "sctp_extrcvinfo.sinfo_ssn", error))
+		return STATUS_ERR;
+	if (check_u16_expr(expr->sinfo_flags, sctp_extrcvinfo->sinfo_flags,
+			   "sctp_extrcvinfo.sinfo_flags", error))
+		return STATUS_ERR;
+	if (check_u32_hton_expr(expr->sinfo_ppid, sctp_extrcvinfo->sinfo_ppid,
+			   "sctp_extrcvinfo.sinfo_ppid", error))
+		return STATUS_ERR;
+	if (check_u32_expr(expr->sinfo_context, sctp_extrcvinfo->sinfo_context,
+			   "sctp_extrcvinfo.sinfo_context", error))
+		return STATUS_ERR;
+	//Name not like RFC
+	if (check_u32_expr(expr->sinfo_pr_value, sctp_extrcvinfo->sinfo_timetolive,
+			   "sctp_extrcvinfo.sinfo_pr_value", error))
+		return STATUS_ERR;
+	if (check_u32_expr(expr->sinfo_tsn, sctp_extrcvinfo->sinfo_tsn,
+			   "sctp_extrcvinfo.sinfo_tsn", error))
+		return STATUS_ERR;
+	if (check_u32_expr(expr->sinfo_cumtsn, sctp_extrcvinfo->sinfo_cumtsn,
+			   "sctp_extrcvinfo.sinfo_cumtsn", error))
+		return STATUS_ERR;
+	if (check_u16_expr(expr->serinfo_next_flags, sctp_extrcvinfo->sreinfo_next_flags,
+			   "sctp_extrcvinfo.serinfo_next_flags", error))
+		return STATUS_ERR;
+	if (check_u16_expr(expr->serinfo_next_stream, sctp_extrcvinfo->sreinfo_next_stream,
+			   "sctp_extrcvinfo.serinfo_next_stream", error))
+		return STATUS_ERR;
+	if (check_u32_expr(expr->serinfo_next_aid, sctp_extrcvinfo->sreinfo_next_aid,
+			   "sctp_extrcvinfo.serinfo_next_aid", error))
+		return STATUS_ERR;
+	if (check_u32_expr(expr->serinfo_next_length, sctp_extrcvinfo->sreinfo_next_length,
+			   "sctp_extrcvinfo.serinfo_next_length", error))
+		return STATUS_ERR;
+	if (check_u32_hton_expr(expr->serinfo_next_ppid, sctp_extrcvinfo->sreinfo_next_ppid,
+			   "sctp_extrcvinfo.serinfo_next_ppid", error))
+		return STATUS_ERR;
+	if (check_u32_expr(expr->sinfo_assoc_id, sctp_extrcvinfo->sinfo_assoc_id,
+			   "sctp_extrcvinfo.sinfo_assoc_id", error))
+		return STATUS_ERR;
+
+	return STATUS_OK;
+}
+#endif
+
 static int syscall_sctp_recvmsg(struct state *state, struct syscall_spec *syscall,
 				struct expression_list *args,
 				char **error)
@@ -3558,6 +3657,44 @@ static int parse_expression_to_sctp_sndrcvinfo(struct expression *expr, struct s
 }
 #endif
 
+#if defined(__FreeBSD__)
+static int parse_expression_to_sctp_extrcvinfo(struct expression *expr, struct sctp_extrcvinfo *info, char **error) {
+	if (expr->type == EXPR_SCTP_EXTRCVINFO) {
+		struct sctp_extrcvinfo_expr *extrcvinfo_expr = expr->value.sctp_extrcvinfo;
+		if (get_u16(extrcvinfo_expr->sinfo_stream, &info->sinfo_stream, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u16(extrcvinfo_expr->sinfo_ssn, &info->sinfo_ssn, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u16(extrcvinfo_expr->sinfo_flags, &info->sinfo_flags, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u32(extrcvinfo_expr->sinfo_ppid, &info->sinfo_ppid, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u32(extrcvinfo_expr->sinfo_context, &info->sinfo_context, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u32(extrcvinfo_expr->sinfo_pr_value, &info->sinfo_timetolive, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u32(extrcvinfo_expr->sinfo_tsn, &info->sinfo_tsn, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u32(extrcvinfo_expr->sinfo_cumtsn, &info->sinfo_cumtsn, error)) {
+			return STATUS_ERR;
+		}
+		if (get_u32(extrcvinfo_expr->sinfo_assoc_id, (u32 *)&info->sinfo_assoc_id, error)) {
+			return STATUS_ERR;
+		}
+	} else {
+		return STATUS_ERR;
+	}
+	return STATUS_OK;
+}
+#endif
+
 #if defined(__FreeBSD__)
 static int parse_expression_to_sctp_sndinfo(struct expression *expr, struct sctp_sndinfo *info, char **error) {
 	if (expr->type == EXPR_SCTP_SNDINFO) {
@@ -3776,18 +3913,8 @@ static int check_sctp_rcvinfo(struct sctp_rcvinfo_expr *expr,
 		return STATUS_ERR;
 	if (check_u16_expr(expr->rcv_flags, sctp_rcvinfo->rcv_flags, "sctp_rcvinfo.rcv_flags", error))
 		return STATUS_ERR;
-	if (expr->rcv_ppid->type != EXPR_ELLIPSIS) {
-		u32 rcv_ppid;
-
-		if (get_u32(expr->rcv_ppid, &rcv_ppid, error)) {
-			return STATUS_ERR;
-		}
-		if (sctp_rcvinfo->rcv_ppid != rcv_ppid) {
-			asprintf(error, "sctp_rcvinfo.rcv_ppid: expected: %u actual: %u",
-				 htonl(rcv_ppid), htonl(sctp_rcvinfo->rcv_ppid));
-			return STATUS_ERR;
-		}
-	}
+	if (check_u32_hton_expr(expr->rcv_ppid, sctp_rcvinfo->rcv_ppid, "sctp_rcvinfo.rcv_ppid", error))
+		return STATUS_ERR;
 	if (check_u32_expr(expr->rcv_tsn, sctp_rcvinfo->rcv_tsn,
 			   "sctp_rcvinfo.rcv_tsn", error))
 		return STATUS_ERR;
@@ -3814,18 +3941,8 @@ static int check_sctp_nxtinfo(struct sctp_nxtinfo_expr *expr,
 		return STATUS_ERR;
 	if (check_u16_expr(expr->nxt_flags, sctp_nxtinfo->nxt_flags, "sctp_nxtinfo.nxt_flags", error))
 		return STATUS_ERR;
-	if (expr->nxt_ppid->type != EXPR_ELLIPSIS) {
-		u32 nxt_ppid;
-
-		if (get_u32(expr->nxt_ppid, &nxt_ppid, error)) {
-			return STATUS_ERR;
-		}
-		if (sctp_nxtinfo->nxt_ppid != nxt_ppid) {
-			asprintf(error, "sctp_nxtinfo.nxt_ppid: expected: %u actual: %u",
-				 htonl(nxt_ppid), htonl(sctp_nxtinfo->nxt_ppid));
-			return STATUS_ERR;
-		}
-	}
+	if (check_u32_hton_expr(expr->nxt_ppid, sctp_nxtinfo->nxt_ppid, "sctp_nxtinfo.nxt_ppid", error))
+		return STATUS_ERR;
 	if (check_u32_expr(expr->nxt_length, sctp_nxtinfo->nxt_length, "sctp_nxtinfo.nxt_length", error))
 		return STATUS_ERR;
 	if (check_u32_expr(expr->nxt_assoc_id, sctp_nxtinfo->nxt_assoc_id, "sctp_nxtinfo.nxt_assoc_id", error))
diff --git a/gtests/net/packetdrill/symbols_freebsd.c b/gtests/net/packetdrill/symbols_freebsd.c
index d4907b7f9997e57991ca4449fc5fa88e8d64f51b..39ca41cf794f3f8ec6205eef06c78d9ab9991083 100644
--- a/gtests/net/packetdrill/symbols_freebsd.c
+++ b/gtests/net/packetdrill/symbols_freebsd.c
@@ -231,6 +231,8 @@ struct int_symbol platform_symbols_table[] = {
 	{ SCTP_AUTHINFO,                    "SCTP_AUTHINFO"                   },
 	{ SCTP_DSTADDRV4,                   "SCTP_DSTADDRV4"                  },
 	{ SCTP_DSTADDRV6,                   "SCTP_DSTADDRV6"                  },
+	{ SCTP_EXTRCV,                      "SCTP_EXTRCV"                     },
+	{ SCTP_USE_EXT_RCVINFO,             "SCTP_USE_EXT_RCVINFO"            },
 	/* /usr/include/netinet/tcp.h */
 	{ TCP_NODELAY,                      "TCP_NODELAY"                     },
 	{ TCP_MAXSEG,                       "TCP_MAXSEG"                      },
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/recvmsg.pkt b/gtests/net/packetdrill/tests/bsd/sctp/recvmsg.pkt
index e2d136004a719689073f1d9836abe3b0c0234854..bc8f6de938ab1a2668c28d2008a90113c80fe858 100644
--- a/gtests/net/packetdrill/tests/bsd/sctp/recvmsg.pkt
+++ b/gtests/net/packetdrill/tests/bsd/sctp/recvmsg.pkt
@@ -53,3 +53,14 @@ spp_hbinterval=0, spp_pathmaxrxt=8, spp_pathmtu=1468, spp_flags=SPP_HB_DISABLE,
 	 {nxt_sid=0, nxt_flags=SCTP_COMPLETE, nxt_ppid=htonl(9876), nxt_length=1000, nxt_assoc_id=3}
 	}] ,msg_flags=MSG_EOR}, 0) = 1000
 
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVRCVINFO, [1], 4) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVNXTINFO, [1], 4) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_USE_EXT_RCVINFO, [1], 4) = 0
++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_USE_EXT_RCVINFO, [1], [4]) = 0
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=6, sid=0, ssn=5, ppid=123]
+*    > sctp: SACK[flgs=0, cum_tsn=6, a_rwnd=..., gaps=[], dups=[]]
++0.0 recvmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}],msg_control(140)=
+	[{cmsg_len=140, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_EXTRCV, cmsg_data=
+         {sinfo_stream=0, sinfo_ssn=4, sinfo_flags=0, sinfo_ppid=htonl(9876), sinfo_context=0, sinfo_pr_value=0, sinfo_tsn=4, sinfo_cumtsn=5, serinfo_next_flags=0, 
+	  serinfo_next_stream=0, serinfo_next_aid=0, serinfo_next_length=0, serinfo_next_ppid=htonl(123), sinfo_assoc_id=4}
+	}] ,msg_flags=MSG_EOR}, 0) = 1000
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sctp_recvv.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sctp_recvv.pkt
index b7c6f9283a2f454add5f1f9e64bb9d31420e7b0f..17f94900394fa8e5d1e1fc44c00d53120dcdc19f 100644
--- a/gtests/net/packetdrill/tests/bsd/sctp/sctp_recvv.pkt
+++ b/gtests/net/packetdrill/tests/bsd/sctp/sctp_recvv.pkt
@@ -34,7 +34,8 @@
 +0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVNXTINFO, [0], 4) = 0
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=4, sid=0, ssn=3, ppid=0]
 *    > sctp: SACK[flgs=0, cum_tsn=4, a_rwnd=..., gaps=[], dups=[]]
-+0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {rcv_sid=0, rcv_ssn=3, rcv_flags=0, rcv_ppid=htonl(0), rcv_tsn=4, rcv_cumtsn=4, rcv_context=0},
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {rcv_sid=0, rcv_ssn=3, rcv_flags=0, rcv_ppid=htonl(0), rcv_tsn=4, rcv_cumtsn=4, rcv_context=0, 
+rcv_assoc_id=...},
 [28], [SCTP_RECVV_RCVINFO], [MSG_EOR]) = 1000
 
 //base SCTP_RECVV_NXTINFO
@@ -44,7 +45,7 @@
 *    > sctp: SACK[flgs=0, cum_tsn=5, a_rwnd=..., gaps=[], dups=[]]
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=6, sid=0, ssn=5, ppid=10]
 *    > sctp: SACK[flgs=0, cum_tsn=6, a_rwnd=..., gaps=[], dups=[]]
-+0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {nxt_sid=0, nxt_flags=32, nxt_ppid=htonl(10), nxt_length=1000},
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {nxt_sid=0, nxt_flags=32, nxt_ppid=htonl(10), nxt_length=1000, nxt_assoc_id=3},
 [16], [SCTP_RECVV_NXTINFO], [MSG_EOR]) = 1000
 +0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, NULL, [0], [0], [MSG_EOR]) = 1000
 
@@ -56,19 +57,19 @@
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=8, sid=0, ssn=7, ppid=10]
 *    > sctp: SACK[flgs=0, cum_tsn=8, a_rwnd=..., gaps=[], dups=[]]
 +0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {
-recvv_rcvinfo={rcv_sid=0, rcv_ssn=6, rcv_flags=0, rcv_ppid=htonl(0), rcv_tsn=7, rcv_cumtsn=8, rcv_context=0},
-recvv_nxtinfo={nxt_sid=0, nxt_flags=32, nxt_ppid=htonl(10), nxt_length=1000}}, [44], [SCTP_RECVV_RN], [MSG_EOR]) = 1000
+recvv_rcvinfo={rcv_sid=0, rcv_ssn=6, rcv_flags=0, rcv_ppid=htonl(0), rcv_tsn=7, rcv_cumtsn=8, rcv_context=0, rcv_assoc_id=3},
+recvv_nxtinfo={nxt_sid=0, nxt_flags=32, nxt_ppid=htonl(10), nxt_length=1000, nxt_assoc_id=4}}, [44], [SCTP_RECVV_RN], [MSG_EOR]) = 1000
 
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=9, sid=0, ssn=8, ppid=11]
 *    > sctp: SACK[flgs=0, cum_tsn=9, a_rwnd=..., gaps=[], dups=[]]
 +0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {
-recvv_rcvinfo={rcv_sid=0, rcv_ssn=7, rcv_flags=0, rcv_ppid=htonl(10), rcv_tsn=8, rcv_cumtsn=9, rcv_context=0}, recvv_nxtinfo=...},
+recvv_rcvinfo={rcv_sid=0, rcv_ssn=7, rcv_flags=0, rcv_ppid=htonl(10), rcv_tsn=8, rcv_cumtsn=9, rcv_context=0, rcv_assoc_id=...}, recvv_nxtinfo=...},
 [44], [SCTP_RECVV_RN], [MSG_EOR]) = 1000
 
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=10, sid=0, ssn=9, ppid=10]
 *    > sctp: SACK[flgs=0, cum_tsn=10, a_rwnd=..., gaps=[], dups=[]]
 +0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {
-recvv_rcvinfo=..., recvv_nxtinfo={nxt_sid=0, nxt_flags=32, nxt_ppid=htonl(10), nxt_length=1000}}, [44], [SCTP_RECVV_RN], [8]) = 1000
+recvv_rcvinfo=..., recvv_nxtinfo={nxt_sid=0, nxt_flags=32, nxt_ppid=htonl(10), nxt_length=1000, nxt_assoc_id=3}}, [44], [SCTP_RECVV_RN], [8]) = 1000
 +0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_EOR]) = 1000
 
 +0.0 close(3) = 0