diff --git a/gtests/net/packetdrill/parser.y b/gtests/net/packetdrill/parser.y
index 87dd50c284d2033ef24d506375f07636781d43af..235e8f460328744de398a84e68f88856f2ebf051 100644
--- a/gtests/net/packetdrill/parser.y
+++ b/gtests/net/packetdrill/parser.y
@@ -2425,9 +2425,7 @@ sctp_sackinfo
 ;
 
 sstat_state
-: SSTAT_STATE '=' expression {
-	$$ = $3;
-}
+: SSTAT_STATE '=' expression { $$ = $3; }
 ;
 
 sstat_rwnd
@@ -2502,6 +2500,10 @@ spinfo_state
 	}
 	$$ = new_integer_expression($3, "%d"); 
 }
+| SPINFO_STATE '=' WORD { 
+	$$ = new_expression(EXPR_WORD); 
+	$$->value.string = $3; 
+}
 | SPINFO_STATE '=' ELLIPSIS { $$ = new_expression(EXPR_ELLIPSIS); }
 ;
 
diff --git a/gtests/net/packetdrill/script.c b/gtests/net/packetdrill/script.c
index f5d21c2f893a39681a98fd368ab9ca910692a823..b359a85ae910daaa8c6f9f4912bde70f7afea350 100644
--- a/gtests/net/packetdrill/script.c
+++ b/gtests/net/packetdrill/script.c
@@ -559,6 +559,21 @@ static int evaluate_sctp_status_expression(struct expression *in,
 			&out_status->sstat_primary,
 			error))
 		return STATUS_ERR;
+	if (in_status->sstat_primary->type == EXPR_SCTP_PADDRINFO) {
+		struct sctp_paddrinfo_expr *paddrinfo = in_status->sstat_primary->value.sctp_paddrinfo;
+		if (paddrinfo->spinfo_state->type == EXPR_WORD) {
+			s64 val_state = 0;
+			if (symbol_to_int(paddrinfo->spinfo_state->value.string,
+					&val_state, error) == STATUS_OK) {
+				paddrinfo->spinfo_state->type = EXPR_INTEGER;
+				paddrinfo->spinfo_state->value.num = val_state;
+			} else {
+				asprintf(error, "bad expression unknown symbol for spinfo_state %s",
+					paddrinfo->spinfo_state->value.string);
+				return STATUS_ERR;
+			}
+		}
+	}
 	return STATUS_OK;
 }
 #endif
diff --git a/gtests/net/packetdrill/symbols_freebsd.c b/gtests/net/packetdrill/symbols_freebsd.c
index 4edf8e0b05ce18cf453a8ff64a125f16f290b746..aed53ffe01e68831c69cc82fcc50dba5e769e2a2 100644
--- a/gtests/net/packetdrill/symbols_freebsd.c
+++ b/gtests/net/packetdrill/symbols_freebsd.c
@@ -98,6 +98,11 @@ struct int_symbol platform_symbols_table[] = {
 	{ SCTP_SHUTDOWN_ACK_SENT,           "SCTP_SHUTDOWN_ACK_SENT"          },
 	{ SCTP_SHUTDOWN_PENDING,            "SCTP_SHUTDOWN_PENDING"           },
 
+	/* /usr/include/netinet/sctp_uio.h */
+	{ SCTP_UNCONFIRMED,                 "SCTP_UNCONFIRMED"                },
+	{ SCTP_ACTIVE,                      "SCTP_ACTIVE"                     },
+	{ SCTP_INACTIVE,                    "SCTP_INACTIVE"                   },
+
 	/* /usr/include/netinet/tcp.h */
 	{ TCP_NODELAY,                      "TCP_NODELAY"                     },
 	{ TCP_MAXSEG,                       "TCP_MAXSEG"                      },
diff --git a/gtests/net/packetdrill/symbols_linux.c b/gtests/net/packetdrill/symbols_linux.c
index 2601c3588752c4ee4a5bc5a7eee58abb16d24ed7..b5f6247c357609e7b7401798623c036f22cb5903 100644
--- a/gtests/net/packetdrill/symbols_linux.c
+++ b/gtests/net/packetdrill/symbols_linux.c
@@ -136,6 +136,9 @@ struct int_symbol platform_symbols_table[] = {
 	{ SCTP_SHUTDOWN_RECEIVED,           "SCTP_SHUTDOWN_RECEIVED"          },
 	{ SCTP_SHUTDOWN_ACK_SENT,           "SCTP_SHUTDOWN_ACK_SENT"          },
 	{ SCTP_SHUTDOWN_PENDING,            "SCTP_SHUTDOWN_PENDING"           },
+        { SCTP_UNCONFIRMED,                 "SCTP_UNCONFIRMED"                },
+        { SCTP_ACTIVE,                      "SCTP_ACTIVE"                     },
+        { SCTP_INACTIVE,                    "SCTP_INACTIVE"                   },
 
 	{ TCP_NODELAY,                      "TCP_NODELAY"                     },
 	{ TCP_MAXSEG,                       "TCP_MAXSEG"                      },
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt
index 7bc70cd2c4032bbb195be1f79f968739ecc24271..6ce974d7dfb9bb33ef7f03c5b79f615aa51b0e93 100644
--- a/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt
+++ b/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt
@@ -35,9 +35,9 @@ sstat_penddata=0, sstat_instrms=1, sstat_outstrms=..., sstat_fragmentation_point
 +0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=8, sstat_rwnd=1500, sstat_unackdata=0, 
 sstat_penddata=0, sstat_instrms=1, sstat_outstrms=1, sstat_fragmentation_point=..., sstat_primary=...}, [176])= 0
 
-+0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=8, sstat_rwnd=1500, sstat_unackdata=0, sstat_penddata=0, sstat_instrms=1, 
-sstat_outstrms=1, sstat_fragmentation_point=..., 
-sstat_primary={ spinfo_state=1, spinfo_cwnd=4464, spinfo_srtt=..., spinfo_rto=1000, spinfo_mtu=1468} }, [176])= 0
++0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=SCTP_ESTABLISHED, sstat_rwnd=1500, sstat_unackdata=0, sstat_penddata=0,
+sstat_instrms=1, sstat_outstrms=1, sstat_fragmentation_point=..., 
+sstat_primary={ spinfo_state=SCTP_ACTIVE, spinfo_cwnd=4464, spinfo_srtt=..., spinfo_rto=1000, spinfo_mtu=1468} }, [176])= 0
 
 
 +0 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_address={sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.0.2.1")},