Lines Matching defs:scb

72 	( (*(long *)&scb->rem_addr != *(long *)&addr) \
73 && ((scb->rem_addr.net != addr.net) \
74 || (scb->rem_addr.node != addr.node)) )
89 StaticProc void asp_accept(asp_scb_t *scb, asp_scb_t *sess_scb, gbuf_t *m);
133 asp_scb_t *scb;
138 if ((scb = asp_scb_alloc()) == 0)
144 gref->info = (void *)scb;
148 * initialize the scb data structure
150 scb->dflag = 1;
151 scb->magic_num = 222;
152 scb->state = ASPSTATE_Idle;
153 scb->pid = gref->pid;
154 scb->gref = gref;
155 scb->session_timer = DEF_SESS_TMO;
156 scb->cmd_retry = asp_def_retry;
157 if ((scb->next_scb = scb_used_list) != 0)
158 scb->next_scb->prev_scb = scb;
159 scb_used_list = scb;
164 dPrintf(D_M_ASP, D_L_INFO, ("asp_open: pid=%d\n", scb->pid));
176 asp_scb_t *scb, *new_scb;
179 scb = (asp_scb_t *)gref->info;
181 scb->loc_addr.socket));
183 if (scb->pid && scb->sess_ioc && (scb->dflag != 1)) {
187 if (gbuf_type(scb->sess_ioc) != MSG_PROTO) {
188 m = scb->sess_ioc;
189 scb->sess_ioc = gbuf_next(m);
190 atp_send_rsp(scb->gref, m, TRUE);
194 if (scb->atp_state) {
195 sock_num = scb->loc_addr.socket;
196 if ((scb->dflag != 1) && scb->stat_msg) {
197 untimeout(atp_retry_req, scb->stat_msg);
198 gbuf_freem(scb->stat_msg);
199 scb->stat_msg = 0;
205 (" : atp_close(), loc=%d\n", scb->loc_addr.socket));
209 if (scb == asp_scbQ[sock_num]) {
210 new_scb = scb->next_scb;
217 if ((scb->prev_scb->next_scb = scb->next_scb) != 0)
218 scb->next_scb->prev_scb = scb->prev_scb;
220 scb->next_scb = 0;
223 asp_dequeue_scb(scb);
228 if (scb->stat_msg) {
229 gbuf_freem(scb->stat_msg);
230 scb->stat_msg = 0;
232 if (scb->sess_ioc) {
233 gbuf_freel(scb->sess_ioc);
234 scb->sess_ioc = 0;
236 if (scb->req_msgq) {
237 gbuf_freel(scb->req_msgq);
238 scb->req_msgq = 0;
241 scb->rem_addr.node = 0;
246 scb->tmo_cnt = 0;
247 asp_untimout(asp_hangup, scb);
248 untimeout(asp_send_tickle_locked, (void *)scb); /* added for 2225395 */
253 scb->state = ASPSTATE_Close;
254 asp_scb_free(scb);
375 asp_scb_t *scb, *server_scb, *curr_scb;
383 scb = (asp_scb_t *)gref->info;
384 if (scb->dflag == 0) {
402 aspIOCStr(iocbp->ioc_cmd), scb->loc_addr.socket,
403 aspStateStr(scb->state)));
407 if ((scb->state == ASPSTATE_Close) || (scb->rem_addr.node == 0))
413 aw.param1 = scb->sess_id;
415 iocbp->ioc_private = (void *)scb;
416 scb->ioc_wait = (unsigned char)(iocbp->ioc_cmd & 0xff);
418 asp_send_req(gref, mioc, &scb->rem_addr, &Retry, &aw,
430 scb->atp_state = (atp_state_t *)gref->info;
431 scb->atp_state->pid = scb->pid;
435 scb->dflag = 2;
436 sockSav = scb->dflag;
438 scb->atp_state = (atp_state_t *)0;
440 gref->info = (void *)scb;
444 gref->info = (void *)scb;
445 asp_dequeue_scb(scb);
446 scb->atp_state->dflag = scb->dflag;
447 scb->loc_addr.socket = sock_num;
448 asp_scbQ[sock_num] = scb;
461 scb->atp_state = (atp_state_t *)gref->info;
462 scb->atp_state->pid = scb->pid;
467 scb->atp_state = (atp_state_t *)0;
469 gref->info = (void *)scb;
473 gref->info = (void *)scb;
474 asp_dequeue_scb(scb);
475 scb->atp_state->dflag = scb->dflag;
476 scb->loc_addr.socket = sock_num;
477 asp_scbQ[sock_num] = scb;
480 *(at_inet_t *)gbuf_rptr(gbuf_cont(mioc)) = scb->loc_addr;
484 if ((gbuf_cont(mioc) == 0) || (scb->atp_state == 0)) {
488 *(at_inet_t *)gbuf_rptr(gbuf_cont(mioc)) = scb->loc_addr;
492 if ((gbuf_cont(mioc) == 0) || (scb->atp_state == 0)) {
496 *(at_inet_t *)gbuf_rptr(gbuf_cont(mioc)) = scb->rem_addr;
505 scb->tickle_interval = (unsigned short)addr->node;
506 scb->session_timer = addr->net;
522 gref->info = (void *)scb;
526 scb->atp_state = (atp_state_t *)gref->info;
527 scb->atp_state->pid = scb->pid;
531 scb->dflag = 3;
532 sockSav = scb->dflag;
535 asp_dequeue_scb(scb);
537 scb->loc_addr.socket = sock_num;
540 scb->prev_scb = curr_scb;
541 curr_scb->next_scb = scb;
542 scb->atp_state = curr_scb->atp_state;
544 asp_dequeue_scb(scb);
545 scb->loc_addr.socket = sock_num;
546 asp_scbQ[sock_num] = scb;
547 scb->atp_state->dflag = scb->dflag;
549 gref->info = (void *)scb;
552 asp_accept(server_scb, scb, mdata);
565 scb->ioc_wait = (unsigned char)(iocbp->ioc_cmd & 0xff);
580 scb->svc_addr = open_cmd->SLSEntityIdentifier;
581 scb->rem_addr = scb->svc_addr;
582 scb->rem_node = scb->rem_addr.node;
583 scb->rem_addr.node = 0;
584 scb->tickle_interval = open_cmd->TickleInterval;
585 scb->session_timer = open_cmd->SessionTimer;
587 aw.param1 = scb->loc_addr.socket;
589 scb->ioc_wait = (unsigned char)(iocbp->ioc_cmd & 0xff);
600 if (scb->stat_msg)
601 gbuf_freem(scb->stat_msg);
602 scb->stat_msg = gbuf_cont(mioc);
606 /* *** Does scb->pid get used in a packet header,
616 scb->pid = *(int *)gbuf_rptr(gbuf_cont(mioc));
632 if (scb->sess_ioc) {
633 primitives = (union asp_primitives *)gbuf_rptr(scb->sess_ioc);
654 scb->state = ASPSTATE_Idle;
698 asp_scb_t *scb = (asp_scb_t *)gref->info;
709 ("asp_send_req: ENOBUFS, loc=%d\n", scb->loc_addr.socket));
732 NET_ASSIGN(ddp->src_net, scb->loc_addr.net);
733 ddp->src_node = scb->loc_addr.node;
750 scb->state = state;
754 scb->loc_addr.socket, ddp->dst_socket, iocbp->ioc_count,
755 aspStateStr(scb->state)));
765 asp_send_tickle_locked(scb)
766 void *scb;
769 asp_send_tickle((asp_scb_t *)scb);
778 asp_send_tickle(scb)
779 asp_scb_t *scb;
790 if (scb->rem_addr.node == 0) {
797 scb->loc_addr.socket,scb->rem_addr.socket));
798 timeout(asp_send_tickle_locked, (void *)scb, 10);
804 dest = scb->svc_addr.node ?
805 (at_inet_t *)&scb->svc_addr : (at_inet_t *)&scb->rem_addr;
806 retry.interval = scb->tickle_interval;
810 aw.param1 = scb->sess_id;
812 ((ioc_t *)gbuf_rptr(mioc))->ioc_cr = (void *)scb;
815 if (asp_send_req(scb->gref, mioc, dest, &retry, &aw, 0, scb->state, 0)) {
818 scb->loc_addr.socket,scb->rem_addr.socket));
820 timeout(asp_send_tickle_locked, (void *)scb, 10);
829 asp_accept(scb, sess_scb, m)
830 asp_scb_t *scb;
840 mdata = scb->sess_ioc;
865 scb->sess_ioc = gbuf_next(mdata);
868 atp_send_rsp(scb->gref, mdata, TRUE);
894 asp_scb_t *scb;
899 while (((scb = scb_tmo_list) != 0) && (scb_tmo_list->tmo_delta == 0)) {
900 if ((scb_tmo_list = scb->next_tmo) != 0)
902 if ((tmo_func = scb->tmo_func) != 0) {
903 scb->tmo_func = 0;
904 (*tmo_func)(scb);
926 register asp_scb_t *scb, *sess_scb;
939 scb = (asp_scb_t *)iocbp->ioc_cr;
940 scb->tickle_tid = (unsigned short)iocbp->ioc_rval;
945 scb = (asp_scb_t *)gref->info;
946 if (scb == 0) {
970 if (scb->next_scb) {
972 * find the responsible scb
974 if ((scb = asp_find_scb(scb->loc_addr.socket, &rem_addr)) == 0) {
981 aspCmdStr(awp->func),scb->loc_addr.socket,
984 if (scb->rem_addr.node)
985 asp_untimout(asp_hangup, scb);
993 if ((scb->dflag != 1) || (scb->stat_msg
994 && ((mx = gbuf_dupb(scb->stat_msg)) == 0)))
1044 if ((scb->dflag != 1) || (scb->stat_msg == 0))
1078 if ((m = scb->sess_ioc) == 0) {
1079 scb->sess_ioc = mdata;
1080 if (scb->get_wait)
1081 wakeup(&scb->event);
1096 if ( (scb->sess_id != awp->param1)
1097 || (scb->rcv_seq_num != ntohs(awp->param2))
1100 snprintf(era, sizeof(era), "%d.%d", scb->rem_addr.node,scb->rem_addr.socket);
1104 scb->sess_id,scb->rcv_seq_num,awp->param2,era,ra));
1110 scb->reply_socket = rem_addr.socket;
1112 scb->wrt_seq_num = scb->rcv_seq_num;
1113 NEXT_SEQ_NUM(scb->rcv_seq_num);
1124 if (scb->req_flag) {
1125 if ((mx = scb->req_msgq) != 0) {
1130 scb->req_msgq = mioc;
1132 scb->req_flag = 1;
1133 asp_putnext(scb->gref, mioc);
1138 if ( (scb->sess_id != awp->param1)
1139 || (scb->snd_seq_num != awp->param2)
1143 scb->reply_socket = rem_addr.socket;
1154 asp_putnext(scb->gref, mioc);
1158 if (scb->stat_msg) {
1176 if ( (scb->sess_id != awp->param1)
1177 || (scb->state == ASPSTATE_Close)
1178 || (scb->state == ASPSTATE_WaitingForCloseSessRsp)
1179 || (scb->rem_addr.net != rem_addr.net)
1180 || (scb->rem_addr.node != rem_addr.node) ) {
1183 scb->loc_addr.socket,
1184 scb->rem_addr.net,
1185 scb->rem_addr.node,
1186 scb->rem_addr.socket));
1212 scb->loc_addr.socket,
1213 scb->rem_addr.net,
1214 scb->rem_addr.node,
1215 scb->rem_addr.socket));
1218 if (scb->sess_ioc)
1219 gbuf_freel(scb->sess_ioc);
1220 scb->sess_ioc = mdata;
1221 scb->state = ASPSTATE_Close;
1226 asp_hangup(scb);
1230 if ( (scb->sess_id != awp->param1)
1231 || (scb->rem_addr.net != rem_addr.net)
1232 || (scb->rem_addr.node != rem_addr.node) ) {
1242 scb->attn_tid = *(unsigned short *)atp->tid;
1243 scb->attn_flag = 1;
1248 asp_putnext(scb->gref, mioc);
1261 if (scb->next_scb) {
1263 * find the responsible scb
1265 scb = (asp_scb_t *)iocbp->ioc_private;
1266 if ((scb == 0) || (scb->magic_num != 222)) {
1268 ("asp_ack_reply: CAN'T find scb 1\n"));
1275 scb->loc_addr.socket,
1276 scb->rem_addr.net,
1277 scb->rem_addr.node,
1278 scb->rem_addr.socket,
1279 aspStateStr(scb->state)));
1281 switch (scb->state) {
1284 scb->rem_addr.node = 0;
1286 if (scb->get_wait)
1287 wakeup(&scb->event);
1293 scb->ioc_wait = 0;
1294 scb->state = ASPSTATE_Idle;
1308 scb->ioc_wait = 0;
1309 scb->state = ASPSTATE_Idle;
1325 scb->rem_addr.node = scb->rem_node;
1326 scb->rem_addr.socket = awp->func;
1329 scb->reply_socket = scb->rem_addr.socket;
1330 scb->sess_id = awp->param1;
1333 asp_timout(asp_hangup, scb, scb->session_timer);
1334 asp_send_tickle(scb);
1337 scb->loc_addr.socket,
1338 scb->rem_addr.net,
1339 scb->rem_addr.node,
1340 scb->rem_addr.socket));
1347 if (scb->rem_addr.node)
1348 asp_untimout(asp_hangup, scb);
1349 NEXT_SEQ_NUM(scb->snd_seq_num);
1350 scb->state = ASPSTATE_Idle;
1361 asp_putnext(scb->gref, mioc);
1365 scb->ioc_wait = 0;
1366 scb->state = ASPSTATE_Close;
1367 scb->rem_addr.node = 0;
1374 atalk_putnext(scb->gref, mioc);
1375 atp_cancel_req(scb->gref, (unsigned int)scb->tickle_tid);
1376 scb->tickle_tid = 0;
1382 aspStateStr(scb->state)));
1388 if (scb->next_scb) {
1390 * find the responsible scb
1392 scb = (asp_scb_t *)iocbp->ioc_cr;
1393 if ((scb == 0) || (scb->magic_num != 222)) {
1395 ("asp_ack_reply: CAN'T find scb 2\n"));
1401 switch (scb->state) {
1403 scb->rem_addr.node = 0;
1412 if (scb->rem_addr.node)
1413 asp_timout(asp_hangup, scb, scb->session_timer);
1424 register asp_scb_t *scb;
1433 scb = (asp_scb_t *)iocbp->ioc_cr;
1435 asp_hangup(scb);
1438 scb->loc_addr.socket,
1439 scb->rem_addr.net,
1440 scb->rem_addr.node,
1441 scb->rem_addr.socket,
1442 aspStateStr(scb->state)));
1447 scb = (asp_scb_t *)gref->info;
1448 if (scb == 0) {
1454 if (scb->next_scb) {
1456 * find the responsible scb
1458 scb = (asp_scb_t *)iocbp->ioc_private;
1459 if ((scb == 0) || (scb->magic_num != 222)) {
1461 ("asp_nak_reply: CAN'T find scb 1\n"));
1468 scb->loc_addr.socket,
1469 scb->rem_addr.net,
1470 scb->rem_addr.node,
1471 scb->rem_addr.socket,
1472 aspStateStr(scb->state)));
1474 switch (scb->state) {
1486 scb->state = ASPSTATE_Idle;
1497 asp_putnext(scb->gref, mioc);
1501 scb->state = ASPSTATE_Close;
1504 scb->rem_addr.node = 0;
1512 atalk_putnext(scb->gref, mioc);
1519 scb->state = ASPSTATE_Idle;
1524 if (scb->next_scb) {
1526 * find the responsible scb
1528 scb = (asp_scb_t *)iocbp->ioc_cr;
1529 if ((scb == 0) || (scb->magic_num != 222)) {
1531 ("asp_nak_reply: CAN'T find scb 2\n"));
1537 switch (scb->state) {
1539 scb->rem_addr.node = 0;
1548 * delete scb from the use list
1551 asp_dequeue_scb(scb)
1552 asp_scb_t *scb;
1555 if (scb == scb_used_list) {
1556 if ((scb_used_list = scb->next_scb) != 0)
1557 scb->next_scb->prev_scb = 0;
1559 if ((scb->prev_scb->next_scb = scb->next_scb) != 0)
1560 scb->next_scb->prev_scb = scb->prev_scb;
1563 scb->next_scb = 0;
1564 scb->prev_scb = 0;
1568 * find scb routine
1575 asp_scb_t *scb;
1578 for (scb = asp_scbQ[sock_num]; scb; scb = scb->next_scb) {
1579 if ((scb->rem_addr.net == rem_addr->net)
1580 && (scb->rem_addr.node == rem_addr->node)) {
1581 if ((scb->rem_addr.socket == rem_addr->socket)
1582 || (scb->rem_socket == rem_addr->socket))
1585 alt_scb = scb;
1589 if ((scb == 0) && ((scb = alt_scb) == 0)) {
1591 ("asp_find_scb: CAN'T find scb, loc=%d, rem=%x.%x.%d\n",
1598 return scb;
1605 asp_timout(func, scb, seconds)
1607 register asp_scb_t *scb;
1613 if (scb->tmo_func)
1616 scb->tmo_func = func;
1617 scb->tmo_delta = (seconds>>SESS_TMO_RES);
1618 scb->tmo_cnt = scb_tmo_cnt;
1621 scb->next_tmo = scb->prev_tmo = 0;
1622 scb_tmo_list = scb;
1632 if (sum > scb->tmo_delta) {
1634 scb->tmo_delta -= sum;
1635 curr_scb->tmo_delta -= scb->tmo_delta;
1640 scb->tmo_delta -= sum;
1646 scb->prev_tmo = prev_scb;
1647 if ((scb->next_tmo = prev_scb->next_tmo) != 0)
1648 prev_scb->next_tmo->prev_tmo = scb;
1649 prev_scb->next_tmo = scb;
1651 scb->prev_tmo = 0;
1652 scb->next_tmo = scb_tmo_list;
1653 scb_tmo_list->prev_tmo = scb;
1654 scb_tmo_list = scb;
1664 register asp_scb_t *scb)
1667 if ((scb->tmo_cnt == scb_tmo_cnt) || (scb->tmo_func == 0))
1670 if (scb_tmo_list == scb) {
1671 if ((scb_tmo_list = scb->next_tmo) != 0) {
1673 scb->next_tmo->tmo_delta += scb->tmo_delta;
1675 } else if (scb->prev_tmo) {
1676 if ((scb->prev_tmo->next_tmo = scb->next_tmo) != 0) {
1677 scb->next_tmo->prev_tmo = scb->prev_tmo;
1678 scb->next_tmo->tmo_delta += scb->tmo_delta;
1680 scb->prev_tmo = 0;
1682 scb->tmo_func = 0;
1689 asp_hangup(scb)
1690 asp_scb_t *scb;
1695 scb->state = ASPSTATE_Close;
1696 if (scb->tickle_tid) {
1697 atp_cancel_req(scb->gref, (unsigned int)scb->tickle_tid);
1698 scb->tickle_tid = 0;
1704 if (scb->rem_addr.node) {
1705 if (scb->get_wait)
1706 wakeup(&scb->event);
1708 atalk_notify_sel(scb->gref);
1747 * the alloc scb routine
1754 asp_scb_t *scb, *scb_array;
1769 scb = scb_free_list;
1770 scb_free_list = scb->next_scb;
1771 ATEVENTINIT(scb->event);
1772 ATEVENTINIT(scb->delay_event);
1774 return scb;
1778 * the free scb routine
1781 asp_scb_free(scb)
1782 asp_scb_t *scb;
1785 bzero((char *)scb, sizeof(asp_scb_t));
1786 scb->next_scb = scb_free_list;
1787 scb_free_list = scb;
1799 asp_scb_t *scb;
1801 scb = (asp_scb_t *)gref->info;
1807 if ((m = scb->sess_ioc) == 0)
1808 scb->sess_ioc = mproto;
1814 scb->rcv_cnt++;
1815 if (scb->rcv_cnt >= MAX_RCV_CNT)
1816 scb->snd_stop = 1;
1818 if (scb->get_wait)
1819 wakeup(&scb->event);
1820 else if (mproto == scb->sess_ioc)
1851 asp_scb_t *scb;
1863 if ((scb = (asp_scb_t *)gref->info) == 0) {
1872 if (scb->state == ASPSTATE_Close)
1874 if (scb->snd_stop) {
2024 sd->def_retries = (scb->cmd_retry.retries == -1) ?
2025 ATP_INFINITE_RETRIES : scb->cmd_retry.retries;
2026 sd->def_rate = scb->cmd_retry.interval*TICKS_PER_SEC;
2029 NET_ASSIGN(ddp->src_net, scb->loc_addr.net);
2030 ddp->src_node = scb->loc_addr.node;
2031 NET_ASSIGN(ddp->dst_net, scb->rem_addr.net);
2032 ddp->dst_node = scb->rem_addr.node;
2033 ddp->dst_socket = scb->rem_addr.socket;
2042 awp->param1 = scb->sess_id;
2043 awp->param2 = htons(scb->snd_seq_num);
2044 iocbp->ioc_private = (void *)scb;
2054 scb->state = ASPSTATE_WaitingForCommandRsp;
2057 scb->state = ASPSTATE_WaitingForWriteRsp;
2060 scb->state = ASPSTATE_WaitingForWriteContinueRsp;
2061 awp->param2 = htons(scb->wrt_seq_num);
2064 scb->state = ASPSTATE_WaitingForCommandRsp;
2077 "AttentionReq"),scb->loc_addr.socket,
2084 if (scb->req_msgq) {
2085 mx = scb->req_msgq;
2086 scb->req_msgq = gbuf_next(mx);
2088 asp_putnext(scb->gref, mx);
2090 scb->req_flag = 0;
2102 NET_ASSIGN(ddp->src_net, scb->loc_addr.net);
2103 ddp->src_node = scb->loc_addr.node;
2104 NET_ASSIGN(ddp->dst_net, scb->rem_addr.net);
2105 ddp->dst_node = scb->rem_addr.node;
2106 ddp->dst_socket = scb->reply_socket;
2110 if (scb->attn_flag && (tid == scb->attn_tid)) {
2111 scb->attn_flag = 0;
2137 scb->loc_addr.socket, aspStateStr(scb->state),
2160 asp_scb_t *scb;
2163 if ((scb = (asp_scb_t *)gref->info) == 0) {
2172 if (scb->state == ASPSTATE_Close)
2178 while ((mproto = scb->sess_ioc) == 0) {
2179 scb->get_wait = 1;
2181 err = msleep(&scb->event, atalk_mutex, PSOCK | PCATCH, "aspgetmsg", 0);
2183 scb->get_wait = 0;
2187 if (scb->state == ASPSTATE_Close) {
2188 scb->get_wait = 0;
2192 get_wait = scb->get_wait;
2193 scb->get_wait = 0;
2196 scb->sess_ioc = gbuf_next(mproto);
2222 gbuf_next(mproto) = scb->sess_ioc;
2223 scb->sess_ioc = mproto;
2233 if (scb->sess_ioc != 0)
2300 if (scb->sess_ioc)
2301 scb->rcv_cnt--;
2303 scb->rcv_cnt = 0;
2304 scb->snd_stop = 0;
2309 gbuf_next(mproto) = scb->sess_ioc;
2310 scb->sess_ioc = mproto;