Author: tuexen
Date: Mon Aug 13 13:58:45 2018
New Revision: 337708
URL: https://svnweb.freebsd.org/changeset/base/337708

Log:
  Use the stacb instead of the asoc in state macros.
  
  This is not a functional change. Just a preparation for upcoming
  dtrace state change provider support.

Modified:
  head/sys/netinet/sctp_asconf.c
  head/sys/netinet/sctp_constants.h
  head/sys/netinet/sctp_indata.c
  head/sys/netinet/sctp_input.c
  head/sys/netinet/sctp_output.c
  head/sys/netinet/sctp_pcb.c
  head/sys/netinet/sctp_peeloff.c
  head/sys/netinet/sctp_timer.c
  head/sys/netinet/sctp_usrreq.c
  head/sys/netinet/sctputil.c

Modified: head/sys/netinet/sctp_asconf.c
==============================================================================
--- head/sys/netinet/sctp_asconf.c      Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_asconf.c      Mon Aug 13 13:58:45 2018        
(r337708)
@@ -1991,8 +1991,8 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *inp, struct sc
                         * sent when the state goes open.
                         */
                        if (status == 0 &&
-                           ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) ||
-                           (SCTP_GET_STATE(&stcb->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED))) {
+                           ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                           (SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_RECEIVED))) {
 #ifdef SCTP_TIMER_BASED_ASCONF
                                sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp,
                                    stcb, stcb->asoc.primary_destination);
@@ -2242,8 +2242,8 @@ sctp_asconf_iterator_stcb(struct sctp_inpcb *inp, stru
                         * count of queued params.  If in the non-open
                         * state, these get sent when the assoc goes open.
                         */
-                       if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) ||
-                           (SCTP_GET_STATE(&stcb->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+                       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                           (SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
                                if (status >= 0) {
                                        num_queued++;
                                }
@@ -2304,8 +2304,8 @@ sctp_set_primary_ip_address_sa(struct sctp_tcb *stcb, 
                    "set_primary_ip_address_sa: queued on tcb=%p, ",
                    (void *)stcb);
                SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, sa);
-               if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) ||
-                   (SCTP_GET_STATE(&stcb->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+               if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
 #ifdef SCTP_TIMER_BASED_ASCONF
                        sctp_timer_start(SCTP_TIMER_TYPE_ASCONF,
                            stcb->sctp_ep, stcb,
@@ -2844,8 +2844,7 @@ sctp_process_initack_addresses(struct sctp_tcb *stcb, 
                                 * out the ASCONF.
                                 */
                                if (status == 0 &&
-                                   SCTP_GET_STATE(&stcb->asoc) ==
-                                   SCTP_STATE_OPEN) {
+                                   SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) {
 #ifdef SCTP_TIMER_BASED_ASCONF
                                        sctp_timer_start(SCTP_TIMER_TYPE_ASCONF,
                                            stcb->sctp_ep, stcb,

Modified: head/sys/netinet/sctp_constants.h
==============================================================================
--- head/sys/netinet/sctp_constants.h   Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_constants.h   Mon Aug 13 13:58:45 2018        
(r337708)
@@ -470,10 +470,14 @@ __FBSDID("$FreeBSD$");
 #define SCTP_STATE_IN_ACCEPT_QUEUE      0x1000
 #define SCTP_STATE_MASK                        0x007f
 
-#define SCTP_GET_STATE(asoc)   ((asoc)->state & SCTP_STATE_MASK)
-#define SCTP_SET_STATE(asoc, newstate)  ((asoc)->state = ((asoc)->state & 
~SCTP_STATE_MASK) |  newstate)
-#define SCTP_CLEAR_SUBSTATE(asoc, substate) ((asoc)->state &= ~substate)
-#define SCTP_ADD_SUBSTATE(asoc, substate) ((asoc)->state |= substate)
+#define SCTP_GET_STATE(_stcb) \
+       ((_stcb)->asoc.state & SCTP_STATE_MASK)
+#define SCTP_SET_STATE(_stcb, _state) \
+       (_stcb)->asoc.state = ((_stcb)->asoc.state & ~SCTP_STATE_MASK) | 
(_state)
+#define SCTP_CLEAR_SUBSTATE(_stcb, _substate) \
+       (_stcb)->asoc.state &= ~(_substate)
+#define SCTP_ADD_SUBSTATE(_stcb, _substate) \
+       (_stcb)->asoc.state |= (_substate)
 
 /* SCTP reachability state for each address */
 #define SCTP_ADDR_REACHABLE            0x001

Modified: head/sys/netinet/sctp_indata.c
==============================================================================
--- head/sys/netinet/sctp_indata.c      Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_indata.c      Mon Aug 13 13:58:45 2018        
(r337708)
@@ -2573,7 +2573,7 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap)
         * Now we need to see if we need to queue a sack or just start the
         * timer (if allowed).
         */
-       if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) {
                /*
                 * Ok special case, in SHUTDOWN-SENT case. here we maker
                 * sure SACK timer is off and instead send a SHUTDOWN and a
@@ -2930,7 +2930,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *o
                (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_last_rcvd);
        }
        /* now service all of the reassm queue if needed */
-       if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) {
                /* Assure that we ack right away */
                stcb->asoc.send_sack = 1;
        }
@@ -4329,12 +4329,12 @@ again:
                /* clean up */
                if ((asoc->stream_queue_cnt == 1) &&
                    ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
                    ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete) 
(stcb, asoc))) {
-                       SCTP_ADD_SUBSTATE(asoc, SCTP_STATE_PARTIAL_MSG_LEFT);
+                       SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT);
                }
                if (((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
                    (asoc->stream_queue_cnt == 1) &&
                    (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT)) {
                        struct mbuf *op_err;
@@ -4350,12 +4350,12 @@ again:
                    (asoc->stream_queue_cnt == 0)) {
                        struct sctp_nets *netp;
 
-                       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
-                           (SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+                       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                           (SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
                                SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                        }
-                       SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT);
-                       SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT);
+                       SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
                        sctp_stop_timers_for_shutdown(stcb);
                        if (asoc->alternate) {
                                netp = asoc->alternate;
@@ -4367,13 +4367,13 @@ again:
                            stcb->sctp_ep, stcb, netp);
                        sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
                            stcb->sctp_ep, stcb, netp);
-               } else if ((SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
+               } else if ((SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
                    (asoc->stream_queue_cnt == 0)) {
                        struct sctp_nets *netp;
 
                        SCTP_STAT_DECR_GAUGE32(sctps_currestab);
-                       SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT);
-                       SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_ACK_SENT);
+                       SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
                        sctp_stop_timers_for_shutdown(stcb);
                        if (asoc->alternate) {
                                netp = asoc->alternate;
@@ -5026,12 +5026,12 @@ hopeless_peer:
                /* clean up */
                if ((asoc->stream_queue_cnt == 1) &&
                    ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
                    ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete) 
(stcb, asoc))) {
-                       SCTP_ADD_SUBSTATE(asoc, SCTP_STATE_PARTIAL_MSG_LEFT);
+                       SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT);
                }
                if (((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
                    (asoc->stream_queue_cnt == 1) &&
                    (asoc->state & SCTP_STATE_PARTIAL_MSG_LEFT)) {
                        struct mbuf *op_err;
@@ -5047,12 +5047,12 @@ hopeless_peer:
                    (asoc->stream_queue_cnt == 0)) {
                        struct sctp_nets *netp;
 
-                       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
-                           (SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+                       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                           (SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
                                SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                        }
-                       SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT);
-                       SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT);
+                       SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
                        sctp_stop_timers_for_shutdown(stcb);
                        if (asoc->alternate) {
                                netp = asoc->alternate;
@@ -5065,13 +5065,13 @@ hopeless_peer:
                        sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
                            stcb->sctp_ep, stcb, netp);
                        return;
-               } else if ((SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
+               } else if ((SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
                    (asoc->stream_queue_cnt == 0)) {
                        struct sctp_nets *netp;
 
                        SCTP_STAT_DECR_GAUGE32(sctps_currestab);
-                       SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT);
-                       SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_ACK_SENT);
+                       SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
                        sctp_stop_timers_for_shutdown(stcb);
                        if (asoc->alternate) {
                                netp = asoc->alternate;

Modified: head/sys/netinet/sctp_input.c
==============================================================================
--- head/sys/netinet/sctp_input.c       Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_input.c       Mon Aug 13 13:58:45 2018        
(r337708)
@@ -190,7 +190,7 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offse
                goto outnow;
        }
        if ((stcb != NULL) &&
-           (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                SCTPDBG(SCTP_DEBUG_INPUT3, "sctp_handle_init: sending 
SHUTDOWN-ACK\n");
                sctp_send_shutdown_ack(stcb, NULL);
                sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CONTROL_PROC, 
SCTP_SO_NOT_LOCKED);
@@ -713,15 +713,15 @@ sctp_handle_nat_colliding_state(struct sctp_tcb *stcb)
         */
        struct sctpasochead *head;
 
-       if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_WAIT) ||
-           (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                atomic_add_int(&stcb->asoc.refcnt, 1);
                SCTP_TCB_UNLOCK(stcb);
                SCTP_INP_INFO_WLOCK();
                SCTP_TCB_LOCK(stcb);
                atomic_subtract_int(&stcb->asoc.refcnt, 1);
        }
-       if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_WAIT) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) {
                /* generate a new vtag and send init */
                LIST_REMOVE(stcb, sctp_asocs);
                stcb->asoc.my_vtag = sctp_select_a_tag(stcb->sctp_ep, 
stcb->sctp_ep->sctp_lport, stcb->rport, 1);
@@ -735,14 +735,14 @@ sctp_handle_nat_colliding_state(struct sctp_tcb *stcb)
                SCTP_INP_INFO_WUNLOCK();
                return (1);
        }
-       if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) {
                /*
                 * treat like a case where the cookie expired i.e.: - dump
                 * current cookie. - generate a new vtag. - resend init.
                 */
                /* generate a new vtag and send init */
                LIST_REMOVE(stcb, sctp_asocs);
-               SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_WAIT);
+               SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT);
                sctp_stop_all_cookie_timers(stcb);
                sctp_toss_old_cookies(stcb, &stcb->asoc);
                stcb->asoc.my_vtag = sctp_select_a_tag(stcb->sctp_ep, 
stcb->sctp_ep->sctp_lport, stcb->rport, 1);
@@ -824,8 +824,8 @@ sctp_handle_abort(struct sctp_abort_chunk *abort,
        sctp_abort_notification(stcb, 1, error, abort, SCTP_SO_NOT_LOCKED);
        /* free the tcb */
        SCTP_STAT_INCR_COUNTER32(sctps_aborted);
-       if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) ||
-           (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
                SCTP_STAT_DECR_GAUGE32(sctps_currestab);
        }
 #ifdef SCTP_ASOCLOG_OF_TSNS
@@ -839,7 +839,7 @@ sctp_handle_abort(struct sctp_abort_chunk *abort,
        SCTP_TCB_LOCK(stcb);
        atomic_subtract_int(&stcb->asoc.refcnt, 1);
 #endif
-       SCTP_ADD_SUBSTATE(&stcb->asoc, SCTP_STATE_WAS_ABORTED);
+       SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_WAS_ABORTED);
        (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC,
            SCTP_FROM_SCTP_INPUT + SCTP_LOC_8);
 #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
@@ -894,15 +894,15 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
        if (stcb == NULL)
                return;
        asoc = &stcb->asoc;
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                return;
        }
        if (ntohs(cp->ch.chunk_length) != sizeof(struct sctp_shutdown_chunk)) {
                /* Shutdown NOT the expected size */
                return;
        }
-       old_state = SCTP_GET_STATE(asoc);
+       old_state = SCTP_GET_STATE(stcb);
        sctp_update_acked(stcb, cp, abort_flag);
        if (*abort_flag) {
                return;
@@ -958,11 +958,11 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
        }
        /* goto SHUTDOWN_RECEIVED state to block new requests */
        if (stcb->sctp_socket) {
-               if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) &&
-                   (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT) &&
-                   (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT)) {
-                       SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_RECEIVED);
-                       SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
+               if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) &&
+                   (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT) &&
+                   (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT)) {
+                       SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_RECEIVED);
+                       SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
                        /*
                         * notify upper layer that peer has initiated a
                         * shutdown
@@ -973,7 +973,7 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
                        (void)SCTP_GETTIME_TIMEVAL(&asoc->time_entered);
                }
        }
-       if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) {
                /*
                 * stop the shutdown timer, since we WILL move to
                 * SHUTDOWN-ACK-SENT.
@@ -993,13 +993,13 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
                /* no outstanding data to send, so move on... */
                /* send SHUTDOWN-ACK */
                /* move to SHUTDOWN-ACK-SENT state */
-               if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
+               if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
                        SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                }
-               SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
-               if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT) {
-                       SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_ACK_SENT);
+               SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
+               if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT) {
+                       SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_ACK_SENT);
                        sctp_stop_timers_for_shutdown(stcb);
                        sctp_send_shutdown_ack(stcb, net);
                        sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNACK,
@@ -1028,15 +1028,15 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chun
 
        asoc = &stcb->asoc;
        /* process according to association state */
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                /* unexpected SHUTDOWN-ACK... do OOTB handling... */
                sctp_send_shutdown_complete(stcb, net, 1);
                SCTP_TCB_UNLOCK(stcb);
                return;
        }
-       if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) &&
-           (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+       if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) &&
+           (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                /* unexpected SHUTDOWN-ACK... so ignore... */
                SCTP_TCB_UNLOCK(stcb);
                return;
@@ -1232,7 +1232,7 @@ sctp_handle_error(struct sctp_chunkhdr *ch,
                         * waiting.
                         */
                        if ((cause_length >= sizeof(struct 
sctp_error_stale_cookie)) &&
-                           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) 
{
+                           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) 
{
                                struct sctp_error_stale_cookie *stale_cookie;
 
                                stale_cookie = (struct sctp_error_stale_cookie 
*)cause;
@@ -1265,7 +1265,7 @@ sctp_handle_error(struct sctp_chunkhdr *ch,
                                }
                                /* blast back to INIT state */
                                sctp_toss_old_cookies(stcb, &stcb->asoc);
-                               SCTP_SET_STATE(&stcb->asoc, 
SCTP_STATE_COOKIE_WAIT);
+                               SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT);
                                sctp_stop_all_cookie_timers(stcb);
                                sctp_send_initiate(stcb->sctp_ep, stcb, 
SCTP_SO_NOT_LOCKED);
                        }
@@ -1416,7 +1416,7 @@ sctp_handle_init_ack(struct mbuf *m, int iphlen, int o
                return (-1);
        }
        /* process according to association state... */
-       switch (SCTP_GET_STATE(&stcb->asoc)) {
+       switch (SCTP_GET_STATE(stcb)) {
        case SCTP_STATE_COOKIE_WAIT:
                /* this is the expected state for this chunk */
                /* process the INIT-ACK parameters */
@@ -1442,7 +1442,7 @@ sctp_handle_init_ack(struct mbuf *m, int iphlen, int o
                }
                /* update our state */
                SCTPDBG(SCTP_DEBUG_INPUT2, "moving to COOKIE-ECHOED state\n");
-               SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_ECHOED);
+               SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_ECHOED);
 
                /* reset the RTO calc */
                if (SCTP_BASE_SYSCTL(sctp_logging_level) & 
SCTP_THRESHOLD_LOGGING) {
@@ -1536,7 +1536,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
        if (how_indx < sizeof(asoc->cookie_how)) {
                asoc->cookie_how[how_indx] = 1;
        }
-       if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) {
                /* SHUTDOWN came in after sending INIT-ACK */
                sctp_send_shutdown_ack(stcb, stcb->asoc.primary_destination);
                op_err = sctp_generate_cause(SCTP_CAUSE_COOKIE_IN_SHUTDOWN, "");
@@ -1605,7 +1605,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
                        return (NULL);
 
                }
-               switch (SCTP_GET_STATE(asoc)) {
+               switch (SCTP_GET_STATE(stcb)) {
                case SCTP_STATE_COOKIE_WAIT:
                case SCTP_STATE_COOKIE_ECHOED:
                        /*
@@ -1629,12 +1629,12 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
                            stcb, net,
                            SCTP_FROM_SCTP_INPUT + SCTP_LOC_14);
                        /* update current state */
-                       if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)
+                       if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)
                                SCTP_STAT_INCR_COUNTER32(sctps_activeestab);
                        else
                                SCTP_STAT_INCR_COUNTER32(sctps_collisionestab);
 
-                       SCTP_SET_STATE(asoc, SCTP_STATE_OPEN);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
                        if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
                                sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
                                    stcb->sctp_ep, stcb, 
asoc->primary_destination);
@@ -1734,7 +1734,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
         * If nat support, and the below and stcb is established, send back
         * a ABORT(colliding state) if we are established.
         */
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) &&
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) &&
            (asoc->peer_supports_nat) &&
            ((ntohl(initack_cp->init.initiate_tag) == asoc->my_vtag) &&
            ((ntohl(init_cp->init.initiate_tag) != asoc->peer_vtag) ||
@@ -1839,8 +1839,8 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
                                asoc->cookie_how[how_indx] = 10;
                        return (NULL);
                }
-               if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+               if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                        *notification = SCTP_NOTIFY_ASSOC_UP;
 
                        if (((stcb->sctp_ep->sctp_flags & 
SCTP_PCB_FLAGS_TCPTYPE) ||
@@ -1868,17 +1868,17 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
                                SCTP_SOCKET_UNLOCK(so, 1);
 #endif
                        }
-                       if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)
+                       if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)
                                SCTP_STAT_INCR_COUNTER32(sctps_activeestab);
                        else
                                SCTP_STAT_INCR_COUNTER32(sctps_collisionestab);
                        SCTP_STAT_INCR_GAUGE32(sctps_currestab);
-               } else if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) {
+               } else if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) {
                        SCTP_STAT_INCR_COUNTER32(sctps_restartestab);
                } else {
                        SCTP_STAT_INCR_COUNTER32(sctps_collisionestab);
                }
-               SCTP_SET_STATE(asoc, SCTP_STATE_OPEN);
+               SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
                if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
                        sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
                            stcb->sctp_ep, stcb, asoc->primary_destination);
@@ -1938,24 +1938,24 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
                /* notify upper layer */
                *notification = SCTP_NOTIFY_ASSOC_RESTART;
                atomic_add_int(&stcb->asoc.refcnt, 1);
-               if ((SCTP_GET_STATE(asoc) != SCTP_STATE_OPEN) &&
-                   (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_RECEIVED) &&
-                   (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT)) {
+               if ((SCTP_GET_STATE(stcb) != SCTP_STATE_OPEN) &&
+                   (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_RECEIVED) &&
+                   (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT)) {
                        SCTP_STAT_INCR_GAUGE32(sctps_currestab);
                }
-               if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) {
+               if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) {
                        SCTP_STAT_INCR_GAUGE32(sctps_restartestab);
-               } else if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) {
+               } else if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) {
                        SCTP_STAT_INCR_GAUGE32(sctps_collisionestab);
                }
                if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
-                       SCTP_SET_STATE(asoc, SCTP_STATE_OPEN);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
                        sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
                            stcb->sctp_ep, stcb, asoc->primary_destination);
 
-               } else if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) {
+               } else if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) {
                        /* move to OPEN state, if not in SHUTDOWN_SENT */
-                       SCTP_SET_STATE(asoc, SCTP_STATE_OPEN);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
                }
                asoc->pre_open_streams =
                    ntohs(initack_cp->init.num_outbound_streams);
@@ -2344,7 +2344,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, in
 
        /* update current state */
        SCTPDBG(SCTP_DEBUG_INPUT2, "moving to OPEN state\n");
-       SCTP_SET_STATE(asoc, SCTP_STATE_OPEN);
+       SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
        if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
                sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
                    stcb->sctp_ep, stcb, asoc->primary_destination);
@@ -2881,7 +2881,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, in
                         * the accept state waiting for the accept!
                         */
                        if (*stcb) {
-                               SCTP_ADD_SUBSTATE(&(*stcb)->asoc, 
SCTP_STATE_IN_ACCEPT_QUEUE);
+                               SCTP_ADD_SUBSTATE(*stcb, 
SCTP_STATE_IN_ACCEPT_QUEUE);
                        }
                        sctp_move_pcb_and_assoc(*inp_p, inp, *stcb);
 
@@ -2969,10 +2969,10 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *c
        asoc->overall_error_count = 0;
        sctp_stop_all_cookie_timers(stcb);
        /* process according to association state */
-       if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) {
                /* state change only needed when I am in right state */
                SCTPDBG(SCTP_DEBUG_INPUT2, "moving to OPEN state\n");
-               SCTP_SET_STATE(asoc, SCTP_STATE_OPEN);
+               SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
                sctp_start_net_timers(stcb);
                if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
                        sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
@@ -3243,7 +3243,7 @@ sctp_handle_shutdown_complete(struct sctp_shutdown_com
 
        asoc = &stcb->asoc;
        /* process according to association state */
-       if (SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_ACK_SENT) {
+       if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_ACK_SENT) {
                /* unexpected SHUTDOWN-COMPLETE... so ignore... */
                SCTPDBG(SCTP_DEBUG_INPUT2,
                    "sctp_handle_shutdown_complete: not in 
SCTP_STATE_SHUTDOWN_ACK_SENT --- ignore\n");
@@ -4758,7 +4758,7 @@ sctp_process_control(struct mbuf *m, int iphlen, int *
        if (((ch->chunk_type == SCTP_SELECTIVE_ACK) ||
            (ch->chunk_type == SCTP_NR_SELECTIVE_ACK) ||
            (ch->chunk_type == SCTP_HEARTBEAT_REQUEST)) &&
-           (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                /* implied cookie-ack.. we must have lost the ack */
                sctp_handle_cookie_ack((struct sctp_cookie_ack_chunk *)ch, stcb,
                    *netp);
@@ -4952,7 +4952,7 @@ process_control_chunks:
                                                break;
                                        }
                                }
-                               if (SCTP_GET_STATE(&stcb->asoc) == 
SCTP_STATE_SHUTDOWN_ACK_SENT) {
+                               if (SCTP_GET_STATE(stcb) == 
SCTP_STATE_SHUTDOWN_ACK_SENT) {
                                        /*-
                                         * If we have sent a shutdown-ack, we 
will pay no
                                         * attention to a sack sent in to us 
since
@@ -5773,7 +5773,7 @@ sctp_common_input_processing(struct mbuf **mm, int iph
                 * not get here unless we really did have a tag, so we don't
                 * abort if this happens, just dump the chunk silently.
                 */
-               switch (SCTP_GET_STATE(&stcb->asoc)) {
+               switch (SCTP_GET_STATE(stcb)) {
                case SCTP_STATE_COOKIE_ECHOED:
                        /*
                         * we consider data with valid tags in this state

Modified: head/sys/netinet/sctp_output.c
==============================================================================
--- head/sys/netinet/sctp_output.c      Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_output.c      Mon Aug 13 13:58:45 2018        
(r337708)
@@ -5529,7 +5529,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct 
                asoc = NULL;
        }
        if ((asoc != NULL) &&
-           (SCTP_GET_STATE(asoc) != SCTP_STATE_COOKIE_WAIT)) {
+           (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT)) {
                if (sctp_are_there_new_addresses(asoc, init_pkt, offset, src)) {
                        /*
                         * new addresses, out of here in non-cookie-wait
@@ -5832,9 +5832,9 @@ do_a_abort:
        initack->ch.chunk_length = 0;
        /* place in my tag */
        if ((asoc != NULL) &&
-           ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_INUSE) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED))) {
+           ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_INUSE) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED))) {
                /* re-use the v-tags and init-seq here */
                initack->init.initiate_tag = htonl(asoc->my_vtag);
                initack->init.initial_tsn = htonl(asoc->init_seq_number);
@@ -6363,9 +6363,9 @@ sctp_msg_append(struct sctp_tcb *stcb,
        }
        strm = &stcb->asoc.strmout[srcv->sinfo_stream];
        /* Now can we send this? */
-       if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_SENT) ||
-           (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) ||
-           (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
            (stcb->asoc.state & SCTP_STATE_SHUTDOWN_PENDING)) {
                /* got data while shutting down */
                SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, 
ECONNRESET);
@@ -6698,18 +6698,18 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct s
                                 * there is nothing queued to send, so I'm
                                 * done...
                                 */
-                               if ((SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_SENT) &&
-                                   (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
-                                   (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+                               if ((SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_SENT) &&
+                                   (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
+                                   (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                                        /*
                                         * only send SHUTDOWN the first time
                                         * through
                                         */
-                                       if (SCTP_GET_STATE(asoc) == 
SCTP_STATE_OPEN) {
+                                       if (SCTP_GET_STATE(stcb) == 
SCTP_STATE_OPEN) {
                                                
SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                                        }
-                                       SCTP_SET_STATE(asoc, 
SCTP_STATE_SHUTDOWN_SENT);
-                                       SCTP_CLEAR_SUBSTATE(asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
+                                       SCTP_SET_STATE(stcb, 
SCTP_STATE_SHUTDOWN_SENT);
+                                       SCTP_CLEAR_SUBSTATE(stcb, 
SCTP_STATE_SHUTDOWN_PENDING);
                                        sctp_stop_timers_for_shutdown(stcb);
                                        sctp_send_shutdown(stcb, net);
                                        
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb,
@@ -6730,13 +6730,13 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct s
                                 * we will allow user data to be sent first
                                 * and move to SHUTDOWN-PENDING
                                 */
-                               if ((SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_SENT) &&
-                                   (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
-                                   (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+                               if ((SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_SENT) &&
+                                   (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
+                                   (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                                        if 
((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete) (stcb, asoc)) {
-                                               SCTP_ADD_SUBSTATE(asoc, 
SCTP_STATE_PARTIAL_MSG_LEFT);
+                                               SCTP_ADD_SUBSTATE(stcb, 
SCTP_STATE_PARTIAL_MSG_LEFT);
                                        }
-                                       SCTP_ADD_SUBSTATE(asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
+                                       SCTP_ADD_SUBSTATE(stcb, 
SCTP_STATE_SHUTDOWN_PENDING);
                                        if (TAILQ_EMPTY(&asoc->send_queue) &&
                                            TAILQ_EMPTY(&asoc->sent_queue) &&
                                            (asoc->state & 
SCTP_STATE_PARTIAL_MSG_LEFT)) {
@@ -7856,7 +7856,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp,
        *reason_code = 0;
        auth_keyid = stcb->asoc.authinfo.active_keyid;
        if ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
            (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR))) {
                eeor_mode = 1;
        } else {
@@ -8614,8 +8614,8 @@ again_one_more_time:
                        omtu = 0;
                        break;
                }
-               if ((((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
+               if ((((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) ||
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) &&
                    (skip_data_for_this_net == 0)) ||
                    (cookie)) {
                        TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, 
nchk) {
@@ -9565,8 +9565,8 @@ sctp_chunk_retransmission(struct sctp_inpcb *inp,
        if (TAILQ_EMPTY(&asoc->sent_queue)) {
                return (SCTP_RETRAN_DONE);
        }
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT)) {
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT)) {
                /* not yet open, resend the cookie and that is it */
                return (1);
        }
@@ -12388,9 +12388,9 @@ sctp_copy_it_in(struct sctp_tcb *stcb,
 
        *error = 0;
        /* Now can we send this? */
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
            (asoc->state & SCTP_STATE_SHUTDOWN_PENDING)) {
                /* got data while shutting down */
                SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTP_OUTPUT, 
ECONNRESET);
@@ -12776,7 +12776,7 @@ sctp_lower_sosend(struct socket *so,
                         */
                        queue_only = 1;
                        asoc = &stcb->asoc;
-                       SCTP_SET_STATE(asoc, SCTP_STATE_COOKIE_WAIT);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT);
                        (void)SCTP_GETTIME_TIMEVAL(&asoc->time_entered);
 
                        /* initialize authentication params for the assoc */
@@ -12898,8 +12898,8 @@ sctp_lower_sosend(struct socket *so,
                SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, 
error);
                goto out_unlocked;
        }
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                queue_only = 1;
        }
        /* we are now done with all control */
@@ -12907,9 +12907,9 @@ sctp_lower_sosend(struct socket *so,
                sctp_m_freem(control);
                control = NULL;
        }
-       if ((SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
-           (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_ACK_SENT) ||
+       if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_SENT) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) ||
+           (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_ACK_SENT) ||
            (asoc->state & SCTP_STATE_SHUTDOWN_PENDING)) {
                if (srcv->sinfo_flags & SCTP_ABORT) {
                        ;
@@ -12929,8 +12929,8 @@ sctp_lower_sosend(struct socket *so,
                int tot_demand, tot_out = 0, max_out;
 
                SCTP_STAT_INCR(sctps_sends_with_abort);
-               if ((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
-                   (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+               if ((SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_WAIT) ||
+                   (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED)) {
                        /* It has to be up before we abort */
                        /* how big is the user initiated abort? */
                        SCTP_LTRACE_ERR_RET(inp, stcb, net, 
SCTP_FROM_SCTP_OUTPUT, EINVAL);
@@ -13309,12 +13309,12 @@ skip_preblock:
                                        SCTP_TCB_LOCK(stcb);
                                        hold_tcblock = 1;
                                }
-                               if (SCTP_GET_STATE(&stcb->asoc) == 
SCTP_STATE_OPEN) {
+                               if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) {
                                        /* a collision took us forward? */
                                        queue_only = 0;
                                } else {
                                        sctp_send_initiate(inp, stcb, 
SCTP_SO_LOCKED);
-                                       SCTP_SET_STATE(asoc, 
SCTP_STATE_COOKIE_WAIT);
+                                       SCTP_SET_STATE(stcb, 
SCTP_STATE_COOKIE_WAIT);
                                        queue_only = 1;
                                }
                        }
@@ -13497,17 +13497,17 @@ dataless_eof:
                                goto abort_anyway;
                        }
                        /* there is nothing queued to send, so I'm done... */
-                       if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) 
&&
-                           (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
-                           (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+                       if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) 
&&
+                           (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
+                           (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                                struct sctp_nets *netp;
 
                                /* only send SHUTDOWN the first time through */
-                               if (SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) {
+                               if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) {
                                        SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                                }
-                               SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_SENT);
-                               SCTP_CLEAR_SUBSTATE(asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
+                               SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT);
+                               SCTP_CLEAR_SUBSTATE(stcb, 
SCTP_STATE_SHUTDOWN_PENDING);
                                sctp_stop_timers_for_shutdown(stcb);
                                if (stcb->asoc.alternate) {
                                        netp = stcb->asoc.alternate;
@@ -13531,17 +13531,17 @@ dataless_eof:
                         * data to be sent first and move to
                         * SHUTDOWN-PENDING
                         */
-                       if ((SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT) 
&&
-                           (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
-                           (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+                       if ((SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) 
&&
+                           (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_RECEIVED) &&
+                           (SCTP_GET_STATE(stcb) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                                if (hold_tcblock == 0) {
                                        SCTP_TCB_LOCK(stcb);
                                        hold_tcblock = 1;
                                }
                                if 
((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete) (stcb, asoc)) {
-                                       SCTP_ADD_SUBSTATE(asoc, 
SCTP_STATE_PARTIAL_MSG_LEFT);
+                                       SCTP_ADD_SUBSTATE(stcb, 
SCTP_STATE_PARTIAL_MSG_LEFT);
                                }
-                               SCTP_ADD_SUBSTATE(asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
+                               SCTP_ADD_SUBSTATE(stcb, 
SCTP_STATE_SHUTDOWN_PENDING);
                                if (TAILQ_EMPTY(&asoc->send_queue) &&
                                    TAILQ_EMPTY(&asoc->sent_queue) &&
                                    (asoc->state & 
SCTP_STATE_PARTIAL_MSG_LEFT)) {
@@ -13582,12 +13582,12 @@ skip_out_eof:
                        SCTP_TCB_LOCK(stcb);
                        hold_tcblock = 1;
                }
-               if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) {
+               if (SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) {
                        /* a collision took us forward? */
                        queue_only = 0;
                } else {
                        sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED);
-                       SCTP_SET_STATE(&stcb->asoc, SCTP_STATE_COOKIE_WAIT);
+                       SCTP_SET_STATE(stcb, SCTP_STATE_COOKIE_WAIT);
                        queue_only = 1;
                }
        }

Modified: head/sys/netinet/sctp_pcb.c
==============================================================================
--- head/sys/netinet/sctp_pcb.c Mon Aug 13 11:56:23 2018        (r337707)
+++ head/sys/netinet/sctp_pcb.c Mon Aug 13 13:58:45 2018        (r337708)
@@ -3373,14 +3373,14 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                                         * was not closed. So go ahead and
                                         * start it now.
                                         */
-                                       SCTP_CLEAR_SUBSTATE(&asoc->asoc, 
SCTP_STATE_IN_ACCEPT_QUEUE);
+                                       SCTP_CLEAR_SUBSTATE(asoc, 
SCTP_STATE_IN_ACCEPT_QUEUE);
                                        
sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, asoc, NULL);
                                }
                                SCTP_TCB_UNLOCK(asoc);
                                continue;
                        }
-                       if (((SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_COOKIE_WAIT) ||
-                           (SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_COOKIE_ECHOED)) &&
+                       if (((SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_WAIT) ||
+                           (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED)) 
&&
                            (asoc->asoc.total_output_queue_size == 0)) {
                                /*
                                 * If we have data in queue, we don't want
@@ -3397,7 +3397,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                        }
                        /* Disconnect the socket please */
                        asoc->sctp_socket = NULL;
-                       SCTP_ADD_SUBSTATE(&asoc->asoc, 
SCTP_STATE_CLOSED_SOCKET);
+                       SCTP_ADD_SUBSTATE(asoc, SCTP_STATE_CLOSED_SOCKET);
                        if ((asoc->asoc.size_on_reasm_queue > 0) ||
                            (asoc->asoc.control_pdapi) ||
                            (asoc->asoc.size_on_all_streams > 0) ||
@@ -3409,8 +3409,8 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                                asoc->sctp_ep->last_abort_code = 
SCTP_FROM_SCTP_PCB + SCTP_LOC_3;
                                sctp_send_abort_tcb(asoc, op_err, 
SCTP_SO_LOCKED);
                                SCTP_STAT_INCR_COUNTER32(sctps_aborted);
-                               if ((SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_OPEN) ||
-                                   (SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+                               if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
+                                   (SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
                                        SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                                }
                                if (sctp_free_assoc(inp, asoc,
@@ -3424,20 +3424,20 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                                if 
((*asoc->asoc.ss_functions.sctp_ss_is_user_msgs_incomplete) (asoc, 
&asoc->asoc)) {
                                        goto abort_anyway;
                                }
-                               if ((SCTP_GET_STATE(&asoc->asoc) != 
SCTP_STATE_SHUTDOWN_SENT) &&
-                                   (SCTP_GET_STATE(&asoc->asoc) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
+                               if ((SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_SENT) &&
+                                   (SCTP_GET_STATE(asoc) != 
SCTP_STATE_SHUTDOWN_ACK_SENT)) {
                                        struct sctp_nets *netp;
 
                                        /*
                                         * there is nothing queued to send,
                                         * so I send shutdown
                                         */
-                                       if ((SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_OPEN) ||
-                                           (SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+                                       if ((SCTP_GET_STATE(asoc) == 
SCTP_STATE_OPEN) ||
+                                           (SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
                                                
SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                                        }
-                                       SCTP_SET_STATE(&asoc->asoc, 
SCTP_STATE_SHUTDOWN_SENT);
-                                       SCTP_CLEAR_SUBSTATE(&asoc->asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
+                                       SCTP_SET_STATE(asoc, 
SCTP_STATE_SHUTDOWN_SENT);
+                                       SCTP_CLEAR_SUBSTATE(asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
                                        sctp_stop_timers_for_shutdown(asoc);
                                        if (asoc->asoc.alternate) {
                                                netp = asoc->asoc.alternate;
@@ -3453,11 +3453,11 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                                }
                        } else {
                                /* mark into shutdown pending */
-                               SCTP_ADD_SUBSTATE(&asoc->asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
+                               SCTP_ADD_SUBSTATE(asoc, 
SCTP_STATE_SHUTDOWN_PENDING);
                                sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, 
asoc->sctp_ep, asoc,
                                    asoc->asoc.primary_destination);
                                if 
((*asoc->asoc.ss_functions.sctp_ss_is_user_msgs_incomplete) (asoc, 
&asoc->asoc)) {
-                                       SCTP_ADD_SUBSTATE(&asoc->asoc, 
SCTP_STATE_PARTIAL_MSG_LEFT);
+                                       SCTP_ADD_SUBSTATE(asoc, 
SCTP_STATE_PARTIAL_MSG_LEFT);
                                }
                                if (TAILQ_EMPTY(&asoc->asoc.send_queue) &&
                                    TAILQ_EMPTY(&asoc->asoc.sent_queue) &&
@@ -3469,8 +3469,8 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                                        asoc->sctp_ep->last_abort_code = 
SCTP_FROM_SCTP_PCB + SCTP_LOC_5;
                                        sctp_send_abort_tcb(asoc, op_err, 
SCTP_SO_LOCKED);
                                        SCTP_STAT_INCR_COUNTER32(sctps_aborted);
-                                       if ((SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_OPEN) ||
-                                           (SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+                                       if ((SCTP_GET_STATE(asoc) == 
SCTP_STATE_OPEN) ||
+                                           (SCTP_GET_STATE(asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
                                                
SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                                        }
                                        if (sctp_free_assoc(inp, asoc,
@@ -3518,7 +3518,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                SCTP_TCB_LOCK(asoc);
                if (asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) {
                        if (asoc->asoc.state & SCTP_STATE_IN_ACCEPT_QUEUE) {
-                               SCTP_CLEAR_SUBSTATE(&asoc->asoc, 
SCTP_STATE_IN_ACCEPT_QUEUE);
+                               SCTP_CLEAR_SUBSTATE(asoc, 
SCTP_STATE_IN_ACCEPT_QUEUE);
                                sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, 
asoc, NULL);
                        }
                        cnt++;
@@ -3526,7 +3526,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                        continue;
                }
                /* Free associations that are NOT killing us */
-               if ((SCTP_GET_STATE(&asoc->asoc) != SCTP_STATE_COOKIE_WAIT) &&
+               if ((SCTP_GET_STATE(asoc) != SCTP_STATE_COOKIE_WAIT) &&
                    ((asoc->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0)) {
                        struct mbuf *op_err;
 
@@ -3539,8 +3539,8 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate,
                        SCTP_TCB_UNLOCK(asoc);
                        continue;
                }
-               if ((SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_OPEN) ||
-                   (SCTP_GET_STATE(&asoc->asoc) == 
SCTP_STATE_SHUTDOWN_RECEIVED)) {
+               if ((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) ||
+                   (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) {
                        SCTP_STAT_DECR_GAUGE32(sctps_currestab);
                }
                if (sctp_free_assoc(inp, asoc, SCTP_PCBFREE_FORCE,
@@ -4803,7 +4803,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tc
        }
        /* Now the read queue needs to be cleaned up (only once) */
        if ((stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0) {
-               SCTP_ADD_SUBSTATE(&stcb->asoc, SCTP_STATE_ABOUT_TO_BE_FREED);
+               SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_ABOUT_TO_BE_FREED);
                SCTP_INP_READ_LOCK(inp);
                TAILQ_FOREACH(sq, &inp->read_queue, next) {
                        if (sq->stcb == stcb) {
@@ -4857,7 +4857,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tc
                if ((stcb->asoc.refcnt) ||
                    (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) ||
                    (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE)) {
-                       SCTP_CLEAR_SUBSTATE(&stcb->asoc, 
SCTP_STATE_IN_ACCEPT_QUEUE);
+                       SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE);
                        sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, 
NULL);
                }
                SCTP_TCB_UNLOCK(stcb);
@@ -4939,7 +4939,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tc
                atomic_add_int(&stcb->asoc.refcnt, -1);
        }
        if (stcb->asoc.refcnt) {
-               SCTP_CLEAR_SUBSTATE(&stcb->asoc, SCTP_STATE_IN_ACCEPT_QUEUE);
+               SCTP_CLEAR_SUBSTATE(stcb, SCTP_STATE_IN_ACCEPT_QUEUE);
                sctp_timer_start(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL);
                if (from_inpcbfree == SCTP_NORMAL_PROC) {
                        SCTP_INP_INFO_WUNLOCK();
@@ -6277,7 +6277,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, s
                                         * assoc? straighten out locks.
                                         */
                                        if (stcb_tmp) {
-                                               if 
(SCTP_GET_STATE(&stcb_tmp->asoc) == SCTP_STATE_COOKIE_WAIT) {
+                                               if (SCTP_GET_STATE(stcb_tmp) == 
SCTP_STATE_COOKIE_WAIT) {
                                                        struct mbuf *op_err;
                                                        char 
msg[SCTP_DIAG_INFO_LEN];
 
@@ -6377,7 +6377,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, s
                                         * assoc? straighten out locks.
                                         */
                                        if (stcb_tmp) {
-                                               if 
(SCTP_GET_STATE(&stcb_tmp->asoc) == SCTP_STATE_COOKIE_WAIT) {
+                                               if (SCTP_GET_STATE(stcb_tmp) == 
SCTP_STATE_COOKIE_WAIT) {
                                                        struct mbuf *op_err;
                                                        char 
msg[SCTP_DIAG_INFO_LEN];
 

Modified: head/sys/netinet/sctp_peeloff.c
==============================================================================
--- head/sys/netinet/sctp_peeloff.c     Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_peeloff.c     Mon Aug 13 13:58:45 2018        
(r337708)
@@ -74,7 +74,7 @@ sctp_can_peel_off(struct socket *head, sctp_assoc_t as
                SCTP_LTRACE_ERR_RET(inp, stcb, NULL, SCTP_FROM_SCTP_PEELOFF, 
ENOENT);
                return (ENOENT);
        }
-       state = SCTP_GET_STATE((&stcb->asoc));
+       state = SCTP_GET_STATE(stcb);
        if ((state == SCTP_STATE_EMPTY) ||
            (state == SCTP_STATE_INUSE)) {
                SCTP_TCB_UNLOCK(stcb);
@@ -104,7 +104,7 @@ sctp_do_peeloff(struct socket *head, struct socket *so
                return (ENOTCONN);
        }
 
-       state = SCTP_GET_STATE((&stcb->asoc));
+       state = SCTP_GET_STATE(stcb);
        if ((state == SCTP_STATE_EMPTY) ||
            (state == SCTP_STATE_INUSE)) {
                SCTP_TCB_UNLOCK(stcb);

Modified: head/sys/netinet/sctp_timer.c
==============================================================================
--- head/sys/netinet/sctp_timer.c       Mon Aug 13 11:56:23 2018        
(r337707)
+++ head/sys/netinet/sctp_timer.c       Mon Aug 13 13:58:45 2018        
(r337708)
@@ -962,7 +962,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp,
         * Special case for cookie-echo'ed case, we don't do output but must
         * await the COOKIE-ACK before retransmission
         */
-       if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED) {
+       if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) {
                /*
                 * Here we just reset the timer and start again since we
                 * have not established the asoc
@@ -1004,7 +1004,7 @@ sctp_t1init_timer(struct sctp_inpcb *inp,
                sctp_send_initiate(inp, stcb, SCTP_SO_NOT_LOCKED);
                return (0);
        }
-       if (SCTP_GET_STATE((&stcb->asoc)) != SCTP_STATE_COOKIE_WAIT) {
+       if (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) {
                return (0);
        }
        if (sctp_threshold_management(inp, stcb, net,
@@ -1052,7 +1052,7 @@ sctp_cookie_timer(struct sctp_inpcb *inp,

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to