Lines Matching defs:conn

70 cc_conn_set_state(struct ccconn *conn, enum conn_state ns)
72 if (conn->state != ns) {
73 if (conn->cc->log & CCLOG_CONN_STATE)
74 cc_conn_log(conn, "%s -> %s",
75 stab[conn->state], stab[ns]);
76 conn->state = ns;
93 if (party->conn->cc->log & CCLOG_PARTY_STATE)
104 cc_disconnect_from_user(struct ccconn *conn)
107 if (conn->user == NULL)
108 cc_conn_log(conn, "no %s", "user");
110 TAILQ_REMOVE(&conn->user->connq, conn, connq_link);
111 conn->user->queue_act--;
112 conn->user = NULL;
120 cc_connect_to_user(struct ccconn *conn, struct ccuser *user)
123 if (conn->user != NULL)
124 cc_conn_log(conn, "still connected to %p", conn->user);
125 conn->user = user;
126 TAILQ_INSERT_TAIL(&user->connq, conn, connq_link);
127 conn->user->queue_act++;
134 cc_send_uni(struct ccconn *conn, u_int op, struct uni_msg *msg)
142 cc_conn_log(conn, "no memory for cookie op=%u", op);
146 if ((r->cookie = ++conn->port->cc->cookie) == 0)
147 r->cookie = ++conn->port->cc->cookie;
149 r->conn = conn;
151 TAILQ_INSERT_TAIL(&conn->port->cookies, r, link);
153 conn->port->cc->funcs->send_uni(conn, conn->port->uarg, op,
161 do_release_request(struct ccconn *conn, const struct uni_ie_cause cause[2])
172 req->release.hdr.cref = conn->cref;
185 cc_send_uni(conn, UNIAPI_RELEASE_request, u);
192 do_release_response(struct ccconn *conn, uint8_t cause, struct uni_ie_cause *ie)
203 resp->release_compl.hdr.cref = conn->cref;
216 cc_send_uni(conn, UNIAPI_RELEASE_response, u);
226 struct ccconn *conn;
228 conn = CCZALLOC(sizeof(*conn));
229 if (conn == NULL)
232 conn->state = CONN_NULL;
233 conn->port = NULL;
234 conn->cc = cc;
235 LIST_INIT(&conn->parties);
237 LIST_INSERT_HEAD(&cc->orphaned_conns, conn, port_link);
239 if (conn->cc->log & CCLOG_CONN_INST)
240 cc_conn_log(conn, "created %s", "orphaned");
242 return (conn);
249 cc_conn_ins_port(struct ccconn *conn, struct ccport *port)
252 if (conn->port != NULL) {
253 cc_conn_log(conn, "conn is already on port %u",
254 conn->port->param.port);
255 cc_conn_rem_port(conn);
257 LIST_REMOVE(conn, port_link);
259 conn->port = port;
260 LIST_INSERT_HEAD(&port->conn_list, conn, port_link);
268 cc_conn_rem_port(struct ccconn *conn)
271 if (conn->port == NULL) {
272 cc_conn_log(conn, "conn not on any %s", "port");
275 LIST_REMOVE(conn, port_link);
276 conn->port = NULL;
277 LIST_INSERT_HEAD(&conn->cc->orphaned_conns, conn, port_link);
281 cc_conn_flush_cookies(struct ccconn *conn)
285 if (conn->port == NULL)
287 TAILQ_FOREACH_SAFE(r, &conn->port->cookies, link, r1) {
288 if (r->conn == conn) {
289 TAILQ_REMOVE(&conn->port->cookies, r, link);
296 cc_conn_reset_acceptor(struct ccconn *conn)
298 if (conn->acceptor != NULL) {
299 conn->acceptor->accepted = NULL;
300 conn->acceptor = NULL;
308 cc_conn_destroy(struct ccconn *conn)
312 if (conn->cc->log & CCLOG_CONN_INST)
313 cc_conn_log(conn, "destroy%s", "");
315 if (conn->user != NULL) {
316 cc_conn_log(conn, "still connected to user %p\n", conn->user);
317 conn->user->queue_act--;
318 TAILQ_REMOVE(&conn->user->connq, conn, connq_link);
321 if (conn->acceptor != NULL)
322 conn->acceptor->accepted = NULL;
324 cc_conn_flush_cookies(conn);
325 cc_conn_sig_flush(conn);
327 LIST_REMOVE(conn, port_link);
328 while ((p = LIST_FIRST(&conn->parties)) != NULL) {
333 CCFREE(conn);
337 cc_party_create(struct ccconn *conn, u_int ident, u_int flag)
345 party->conn = conn;
350 LIST_INSERT_HEAD(&conn->parties, party, link);
352 if (party->conn->cc->log & CCLOG_PARTY_INST)
362 if (party->conn->cc->log & CCLOG_PARTY_INST)
371 cc_party_find(struct ccconn *conn, u_int ident)
375 LIST_FOREACH(party, &conn->parties, link)
389 cc_conn_abort(struct ccconn *conn, int shutdown)
391 struct ccuser *u = conn->user;
396 CCASSERT(conn->acceptor == NULL, ("still in use"));
397 cc_conn_destroy(conn);
407 while ((p = LIST_FIRST(&conn->parties)) != NULL)
410 LIST_FOREACH_SAFE(p, &conn->parties, link, p1) {
463 switch (conn->state) {
476 conn->cref.flag = 0;
477 conn->cref.cref = 0;
478 cc_conn_flush_cookies(conn);
479 cc_conn_set_state(conn, CONN_OUT_PREPARING);
480 cc_conn_rem_port(conn);
491 cc_disconnect_from_user(conn);
492 cc_conn_destroy(conn);
500 cc_conn_destroy(conn);
505 cc_disconnect_from_user(conn);
506 cc_conn_destroy(conn);
511 cc_disconnect_from_user(conn);
512 cc_conn_reset_acceptor(conn);
515 cc_conn_destroy(conn);
520 cc_disconnect_from_user(conn);
521 cc_conn_destroy(conn);
532 cc_disconnect_from_user(conn);
534 cc_conn_destroy(conn);
539 cc_disconnect_from_user(conn);
540 cc_conn_destroy(conn);
543 cc_conn_log(conn, "bad state %s", stab[conn->state]);
598 cc_conn_dispatch(struct ccconn *conn)
600 struct ccdata *priv = conn->port->cc;
622 if (blli_index > 0 && !IE_ISGOOD(conn->blli[blli_index]))
625 if (IE_ISPRESENT(conn->called)) {
627 (union uni_ieall *)&conn->called, &cx);
630 if (IE_ISPRESENT(conn->bhli)) {
632 (union uni_ieall *)&conn->bhli, &cx);
635 if (IE_ISPRESENT(conn->blli[blli_index])) {
637 (union uni_ieall *)&conn->blli[blli_index], &cx);
651 if (unisve_match(user->sap, &conn->called,
652 &conn->blli[blli_index], &conn->bhli))
676 do_release_response(conn, UNI_CAUSE_INCOMP, NULL);
677 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
685 do_release_response(conn, UNI_CAUSE_BUSY, NULL);
686 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
690 if (blli_index == 0 && !IE_ISGOOD(conn->blli[blli_index]))
691 conn->blli_selector = 0;
693 conn->blli_selector = blli_index + 1;
695 cc_conn_set_state(conn, CONN_IN_WAITING);
696 cc_connect_to_user(conn, user);
702 cc_party_setup_conf(struct ccconn *conn)
706 party = cc_party_find(conn, conn->epref.epref);
721 cc_party_add_ack_ind(struct ccconn *conn, const struct uni_ie_epref *epref)
725 party = cc_party_find(conn, epref->epref);
737 cc_user_sig(conn->user, USER_SIG_ADD_PARTY_ACK,
742 cc_party_add_rej_ind(struct ccconn *conn, const struct uni_ie_epref *epref)
746 party = cc_party_find(conn, epref->epref);
759 cc_user_sig(conn->user, USER_SIG_ADD_PARTY_REJ, NULL, epref->epref);
763 cc_party_drop_ack_ind(struct ccconn *conn,
768 party = cc_party_find(conn, drop->epref.epref);
777 memset(&conn->user->cause[1], 0, sizeof(conn->user->cause[1]));
778 conn->user->cause[0] = drop->cause;
780 cc_user_sig(conn->user, USER_SIG_DROP_PARTY_IND,
785 memset(&conn->user->cause[1], 0, sizeof(conn->user->cause[1]));
786 conn->user->cause[0] = drop->cause;
788 cc_user_sig(conn->user, USER_SIG_ADD_PARTY_REJ,
794 cc_user_sig(conn->user, USER_SIG_DROP_PARTY_OK, NULL, 0);
814 cc_conn_sig_handle(struct ccconn *conn, enum conn_sig sig,
819 if (conn->cc->log & CCLOG_CONN_SIG)
820 cc_conn_log(conn, "signal %s in state %s", cc_conn_sigtab[sig],
821 stab[conn->state]);
831 if (conn->state != CONN_OUT_PREPARING)
834 if (IE_ISGOOD(conn->bearer) &&
835 conn->bearer.cfg == UNI_BEARER_MP) {
836 IE_SETPRESENT(conn->epref);
837 conn->epref.flag = 0;
838 conn->epref.epref = 0;
846 cc_user_sig(conn->user, USER_SIG_CONNECT_OUTGOING_ERR,
855 memcpy(setup->setup.blli, conn->blli, sizeof(conn->blli));
856 setup->setup.bearer = conn->bearer;
857 setup->setup.traffic = conn->traffic;
858 setup->setup.qos = conn->qos;
859 setup->setup.exqos = conn->exqos;
860 setup->setup.called = conn->called;
861 setup->setup.calledsub[0] = conn->calledsub;
862 setup->setup.aal = conn->aal;
863 setup->setup.epref = conn->epref;
864 setup->setup.eetd = conn->eetd;
865 setup->setup.abrsetup = conn->abrsetup;
866 setup->setup.abradd = conn->abradd;
867 setup->setup.calling = conn->calling;
868 setup->setup.callingsub[0] = conn->callingsub;
869 setup->setup.connid = conn->connid;
870 memcpy(setup->setup.tns, conn->tns, sizeof(conn->tns));
871 setup->setup.atraffic = conn->atraffic;
872 setup->setup.mintraffic = conn->mintraffic;
873 setup->setup.cscope = conn->cscope;
874 setup->setup.bhli = conn->bhli;
875 setup->setup.mdcr = conn->mdcr;
877 cc_conn_set_state(conn, CONN_OUT_WAIT_CREATE);
878 cc_send_uni(conn, UNIAPI_SETUP_request, u);
886 if (conn->state != CONN_IN_WAITING)
888 cc_conn_set_state(conn, CONN_IN_ARRIVED);
898 if (conn->state != CONN_ACTIVE &&
899 conn->state != CONN_IN_WAIT_COMPL)
909 req->release.hdr.cref = conn->cref;
912 req->release.cause[0] = conn->cause[0];
913 req->release.cause[1] = conn->cause[1];
915 if (conn->state == CONN_ACTIVE)
916 cc_conn_set_state(conn, CONN_REL_WAIT_OK);
918 cc_conn_set_state(conn, CONN_REL_IN_WAIT_OK);
920 cc_send_uni(conn, UNIAPI_RELEASE_request, u);
927 struct ccuser *user = conn->user;
929 if (conn->state != CONN_IN_ARRIVED) {
934 cc_conn_set_state(conn, CONN_REJ_WAIT_OK);
935 do_release_response(conn, 0, conn->cause);
946 struct ccuser *user = conn->user;
948 if (conn->state != CONN_IN_ARRIVED) {
964 conn->acceptor = newep;
965 newep->accepted = conn;
975 resp->connect.hdr.cref = conn->cref;
980 if (conn->dirty_attr & CCDIRTY_AAL)
981 resp->connect.aal = conn->aal;
982 if (conn->dirty_attr & CCDIRTY_BLLI)
984 conn->blli[conn->blli_selector - 1];
985 if (conn->dirty_attr & CCDIRTY_CONNID)
986 resp->connect.connid = conn->connid;
988 if (conn->dirty_attr & CCDIRTY_EETD)
989 resp->connect.eetd = conn->eetd;
992 if (conn->dirty_attr & CCDIRTY_TRAFFIC)
993 resp->connect.traffic = conn->traffic;
994 if (conn->dirty_attr & CCDIRTY_EXQOS)
995 resp->connect.exqos = conn->exqos;
996 if (conn->dirty_attr & CCDIRTY_ABRSETUP)
997 resp->connect.abrsetup = conn->abrsetup;
998 if (conn->dirty_attr & CCDIRTY_ABRADD)
999 resp->connect.abradd = conn->abradd;
1004 if (IE_ISPRESENT(conn->epref)) {
1005 resp->connect.epref = conn->epref;
1009 cc_conn_set_state(conn, CONN_IN_WAIT_ACCEPT_OK);
1010 cc_send_uni(conn, UNIAPI_SETUP_response, u);
1021 if (conn->state != CONN_ACTIVE)
1025 party = cc_party_create(conn, (u_int)(uintptr_t)arg, 0);
1027 cc_user_sig(conn->user, USER_SIG_ADD_PARTY_ERR,
1031 party->called = conn->called;
1037 cc_user_sig(conn->user, USER_SIG_ADD_PARTY_ERR,
1047 req->add.hdr.cref = conn->cref;
1052 cc_send_uni(conn, UNIAPI_ADD_PARTY_request, u);
1063 if (conn->state != CONN_ACTIVE)
1066 party = cc_party_find(conn, (u_int)(uintptr_t)arg);
1068 cc_user_sig(conn->user, USER_SIG_DROP_PARTY_ERR,
1080 cc_user_sig(conn->user, USER_SIG_DROP_PARTY_ERR,
1090 cc_user_sig(conn->user, USER_SIG_DROP_PARTY_ERR,
1100 req->drop.hdr.cref = conn->cref;
1102 req->drop.cause = conn->cause[0];
1108 cc_send_uni(conn, UNIAPI_DROP_PARTY_request, u);
1118 cc_party_drop_ack_ind(conn, &ind->drop);
1129 switch (conn->state) {
1133 cc_conn_destroy(conn);
1138 do_release_request(conn, conn->cause);
1139 cc_conn_set_state(conn, CONN_AB_WAIT_REQ_OK);
1152 do_release_response(conn, 0, conn->cause);
1153 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1157 do_release_request(conn, conn->cause);
1158 cc_conn_set_state(conn, CONN_AB_WAIT_REQ_OK);
1162 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1199 switch (conn->state) {
1202 conn->cref = cr->cref;
1203 cc_conn_set_state(conn, CONN_OUT_WAIT_OK);
1207 conn->cref = cr->cref;
1208 cc_conn_set_state(conn, CONN_IN_PREPARING);
1221 switch (conn->state) {
1224 cc_conn_rem_port(conn);
1225 cc_conn_set_state(conn, CONN_OUT_PREPARING);
1226 if (conn->user != NULL)
1227 cc_user_sig(conn->user,
1229 NULL, ATM_MKUNIERR(conn->reason));
1233 cc_conn_destroy(conn);
1237 cc_conn_destroy(conn);
1253 switch (conn->state) {
1264 #define SHUFFLE(ATTR) conn->ATTR = conf->connect.ATTR
1268 (void)memset(conn->blli + 1, 0,
1269 sizeof(conn->blli) - sizeof(conn->blli[0]));
1271 conn->blli[0] = conf->connect.blli;
1272 conn->blli_selector = 1;
1284 if (IE_ISGOOD(conn->epref))
1285 cc_party_setup_conf(conn);
1287 cc_conn_set_state(conn, CONN_ACTIVE);
1288 cc_user_sig(conn->user, USER_SIG_SETUP_CONFIRM,
1310 if (conn->state != CONN_IN_PREPARING)
1317 conn->blli[i] = ind->setup.blli[i];
1318 conn->bearer = ind->setup.bearer;
1319 conn->traffic = ind->setup.traffic;
1320 conn->qos = ind->setup.qos;
1321 conn->exqos = ind->setup.exqos;
1322 conn->called = ind->setup.called;
1323 conn->calledsub = ind->setup.calledsub[0];
1324 conn->aal = ind->setup.aal;
1325 conn->epref = ind->setup.epref;
1326 conn->eetd = ind->setup.eetd;
1327 conn->abrsetup = ind->setup.abrsetup;
1328 conn->abradd = ind->setup.abradd;
1329 conn->calling = ind->setup.calling;
1330 conn->callingsub = ind->setup.callingsub[0];
1331 conn->connid = ind->setup.connid;
1333 conn->tns[i] = ind->setup.tns[i];
1334 conn->atraffic = ind->setup.atraffic;
1335 conn->mintraffic = ind->setup.mintraffic;
1336 conn->cscope = ind->setup.cscope;
1337 conn->bhli = ind->setup.bhli;
1338 conn->mdcr = ind->setup.mdcr;
1340 cc_conn_dispatch(conn);
1352 if (conn->state == CONN_AB_FLUSH_IND ||
1353 conn->state == CONN_AB_WAIT_RESP_OK)
1356 if (conn->state != CONN_IN_WAIT_COMPL)
1359 cc_conn_set_state(conn, CONN_ACTIVE);
1361 LIST_FOREACH(party, &conn->parties, link) {
1370 cc_user_sig(conn->user, USER_SIG_SETUP_COMPL, NULL, 0);
1386 switch (conn->state) {
1390 conn->connid = ind->call_proc.connid;
1409 switch (conn->state) {
1413 conn->connid = ind->alerting.connid;
1433 switch (conn->state) {
1437 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1438 memcpy(conn->user->cause, conf->release.cause,
1439 sizeof(conn->user->cause));
1443 LIST_FOREACH(party, &conn->parties, link) {
1447 cc_user_sig(conn->user,
1452 cc_user_sig(conn->user, USER_SIG_RELEASE_CONFIRM,
1454 cc_disconnect_from_user(conn);
1462 cc_disconnect_from_user(conn);
1463 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1467 conn->user->aborted = 1;
1468 memcpy(conn->user->cause, conf->release.cause,
1469 sizeof(conn->user->cause));
1470 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1471 cc_disconnect_from_user(conn);
1475 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1476 memcpy(conn->user->cause, conf->release.cause,
1477 sizeof(conn->user->cause));
1478 cc_user_sig(conn->user, USER_SIG_RELEASE_CONFIRM,
1480 cc_disconnect_from_user(conn);
1496 switch (conn->state) {
1500 do_release_response(conn, 0, NULL);
1501 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1502 memcpy(conn->user->cause, conf->release.cause,
1503 sizeof(conn->user->cause));
1507 LIST_FOREACH(party, &conn->parties, link) {
1511 cc_user_sig(conn->user,
1516 cc_user_sig(conn->user, USER_SIG_RELEASE_CONFIRM,
1518 cc_disconnect_from_user(conn);
1526 cc_disconnect_from_user(conn);
1527 do_release_response(conn, 0, NULL);
1528 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1532 conn->user->aborted = 1;
1533 cc_disconnect_from_user(conn);
1534 do_release_response(conn, 0, NULL);
1535 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1539 do_release_response(conn, 0, NULL);
1540 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1541 memcpy(conn->user->cause, conf->release.cause,
1542 sizeof(conn->user->cause));
1543 cc_user_sig(conn->user, USER_SIG_RELEASE_CONFIRM,
1545 cc_disconnect_from_user(conn);
1556 if (conn->state == CONN_AB_FLUSH_IND)
1558 if (conn->state != CONN_ACTIVE)
1570 if (conn->state == CONN_AB_FLUSH_IND)
1572 if (conn->state != CONN_ACTIVE)
1575 cc_party_add_ack_ind(conn, &ind->ack.epref);
1587 if (conn->state == CONN_AB_FLUSH_IND)
1589 if (conn->state != CONN_ACTIVE)
1592 memset(&conn->user->cause[1], 0, sizeof(conn->user->cause[1]));
1593 conn->user->cause[0] = ind->rej.cause;
1595 cc_party_add_rej_ind(conn, &ind->rej.epref);
1609 if (conn->state == CONN_AB_FLUSH_IND)
1611 if (conn->state != CONN_ACTIVE)
1614 party = cc_party_find(conn, ind->drop.epref.epref);
1625 memset(&conn->user->cause[1], 0, sizeof(conn->user->cause[1]));
1626 conn->user->cause[0] = ind->drop.cause;
1653 req->ack.hdr.cref = conn->cref;
1658 cc_send_uni(conn, UNIAPI_DROP_PARTY_ACK_request, u);
1665 struct ccuser *user = conn->user;
1667 switch (conn->state) {
1670 cc_conn_set_state(conn, CONN_OUT_WAIT_CONF);
1671 if (conn->user != NULL)
1672 cc_user_sig(conn->user,
1678 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1683 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1684 if (conn->user != NULL) {
1686 memset(&conn->user->cause, 0,
1687 sizeof(conn->user->cause));
1688 cc_user_sig(conn->user,
1690 cc_disconnect_from_user(conn);
1697 do_release_request(conn, NULL);
1698 cc_conn_set_state(conn, CONN_AB_WAIT_REQ_OK);
1701 cc_conn_set_state(conn, CONN_IN_WAIT_COMPL);
1702 cc_disconnect_from_user(conn);
1704 if (conn->acceptor == NULL) {
1705 do_release_request(conn, NULL);
1706 cc_conn_set_state(conn, CONN_AB_WAIT_REQ_OK);
1709 cc_connect_to_user(conn, conn->acceptor);
1710 cc_conn_reset_acceptor(conn);
1711 cc_user_sig(conn->user, USER_SIG_ACCEPTING, NULL, 0);
1715 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1717 cc_disconnect_from_user(conn);
1724 LIST_FOREACH(party, &conn->parties, link) {
1749 LIST_FOREACH(p1, &conn->parties, link)
1782 struct ccuser *user = conn->user;
1784 switch (conn->state) {
1787 cc_conn_rem_port(conn);
1788 cc_conn_set_state(conn, CONN_OUT_PREPARING);
1789 if (conn->user != NULL)
1790 cc_user_sig(conn->user,
1796 cc_conn_set_state(conn, CONN_OUT_WAIT_DESTROY);
1797 conn->reason = reason;
1802 do_release_response(conn, 0, conn->cause);
1803 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1806 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1810 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1818 do_release_request(conn, conn->cause);
1819 cc_conn_set_state(conn,
1822 do_release_response(conn, 0, NULL);
1823 cc_conn_set_state(conn,
1826 cc_conn_set_state(conn,
1832 cc_conn_set_state(conn, CONN_ACTIVE);
1833 cc_user_sig(conn->user, USER_SIG_RELEASE_ERR,
1836 do_release_response(conn, 0, NULL);
1837 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1838 memset(&conn->user->cause, 0,
1839 sizeof(conn->user->cause));
1840 cc_user_sig(conn->user,
1842 cc_disconnect_from_user(conn);
1844 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1845 memset(&conn->user->cause, 0,
1846 sizeof(conn->user->cause));
1847 cc_user_sig(conn->user,
1849 cc_disconnect_from_user(conn);
1860 do_release_response(conn, 0, NULL);
1861 cc_conn_set_state(conn,
1864 cc_conn_set_state(conn,
1869 cc_conn_reset_acceptor(conn);
1875 cc_conn_set_state(conn, CONN_IN_ARRIVED);
1877 do_release_response(conn, 0, NULL);
1878 cc_disconnect_from_user(conn);
1881 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1883 cc_disconnect_from_user(conn);
1886 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1898 do_release_response(conn, 0, NULL);
1899 cc_conn_set_state(conn,
1902 cc_conn_set_state(conn,
1912 cc_conn_set_state(conn, CONN_IN_ARRIVED);
1914 cc_disconnect_from_user(conn);
1916 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1925 do_release_request(conn, conn->cause);
1926 cc_conn_set_state(conn,
1929 do_release_response(conn, 0, NULL);
1930 cc_conn_set_state(conn,
1933 cc_conn_set_state(conn,
1939 cc_conn_set_state(conn, CONN_IN_WAIT_COMPL);
1940 cc_user_sig(conn->user, USER_SIG_RELEASE_ERR,
1943 do_release_response(conn, 0, NULL);
1944 cc_conn_set_state(conn, CONN_AB_WAIT_RESP_OK);
1945 memset(&conn->user->cause, 0,
1946 sizeof(conn->user->cause));
1947 cc_user_sig(conn->user,
1949 cc_disconnect_from_user(conn);
1951 cc_conn_set_state(conn, CONN_AB_FLUSH_IND);
1952 memset(&conn->user->cause, 0,
1953 sizeof(conn->user->cause));
1954 cc_user_sig(conn->user,
1956 cc_disconnect_from_user(conn);
1962 LIST_FOREACH(party, &conn->parties, link) {
2014 cc_conn_log(conn, "unexpected reason=%u ustate=%u "
2015 "state=%s\n", reason, state, stab[conn->state]);
2028 party = cc_party_find(conn, pcr->epref.epref);
2033 switch (conn->state) {
2036 party = cc_party_create(conn,
2045 party = cc_party_create(conn,
2059 if (conn->state != CONN_ACTIVE)
2073 party = cc_party_find(conn, pcr->epref.epref);
2075 cc_conn_log(conn, "no party to destroy %u/%u",
2088 cc_conn_log(conn, "bad state=%s for signal=%s",
2089 stab[conn->state], cc_conn_sigtab[sig]);
2093 cc_conn_log(conn, "bad party state=%s for signal=%s",