• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sbin/iscontrol/

Lines Matching refs:sess

75 tcpConnect(isess_t *sess)
77 isc_opt_t *op = sess->op;
83 if(sess->flags & (SESS_RECONNECT|SESS_REDIRECT)) {
84 syslog(LOG_INFO, "%s", (sess->flags & SESS_RECONNECT)
87 debug(1, "%s", (sess->flags & SESS_RECONNECT) ? "Reconnect": "Redirected");
88 shutdown(sess->soc, SHUT_RDWR);
89 //close(sess->soc);
90 sess->soc = -1;
92 sess->flags &= ~SESS_CONNECTED;
93 if(sess->flags & SESS_REDIRECT) {
94 sess->redirect_cnt++;
95 sess->flags |= SESS_RECONNECT;
103 sec = time(0) - sess->reconnect_time;
107 sess->reconnect_time = sec;
108 sess->reconnect_cnt1 = 0;
112 sess->reconnect_cnt1++;
113 if((sec / sess->reconnect_cnt1) < 2) {
116 syslog(LOG_CRIT, "too many reconnects %d", sess->reconnect_cnt1);
122 sess->reconnect_cnt++;
134 sess->flags &= ~SESS_CONNECTED;
158 sess->soc = soc;
164 if(setsockopt(sess->soc, IPPROTO_TCP, TCP_KEEPALIVE, &val, sizeof(val)) < 0)
168 if(setsockopt(sess->soc, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)) < 0)
174 if((setsockopt(sess->soc, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)) < 0)
175 || (setsockopt(sess->soc, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) < 0)) {
183 if(getsockopt(sess->soc, SOL_SOCKET, SO_SNDBUF, &val, &len) == 0)
187 if(sess->op->sockbufsize) {
188 val = sess->op->sockbufsize * 1024;
189 if((setsockopt(sess->soc, SOL_SOCKET, SO_SNDBUF, &val, sizeof(val)) < 0)
190 || (setsockopt(sess->soc, SOL_SOCKET, SO_RCVBUF, &val, sizeof(val)) < 0)) {
196 sess->flags |= SESS_CONNECTED;
207 if((sess->flags & SESS_REDIRECT) == 0) {
208 if(strcmp(op->targetAddress, sess->target.address) != 0) {
211 op->targetAddress = sess->target.address;
212 op->port = sess->target.port;
213 op->targetPortalGroupTag = sess->target.pgt;
225 setOptions(isess_t *sess, int flag)
235 oop.initiatorName = sess->op->initiatorName;
236 oop.targetAddress = sess->op->targetAddress;
237 if(sess->op->targetName != 0)
238 oop.targetName = sess->op->targetName;
240 oop.maxRecvDataSegmentLength = sess->op->maxRecvDataSegmentLength;
241 oop.maxXmitDataSegmentLength = sess->op->maxXmitDataSegmentLength; // XXX:
242 oop.maxBurstLength = sess->op->maxBurstLength;
243 oop.maxluns = sess->op->maxluns;
249 if(sess->op->headerDigest != NULL) {
250 sep = strchr(sess->op->headerDigest, ',');
252 oop.headerDigest = sess->op->headerDigest;
255 if(sess->op->dataDigest != NULL) {
256 sep = strchr(sess->op->dataDigest, ',');
258 oop.dataDigest = sess->op->dataDigest;
263 if(ioctl(sess->fd, ISCSISETOPT, &oop)) {
271 startSession(isess_t *sess)
279 if((sess->flags & SESS_CONNECTED) == 0) {
282 if(sess->fd == -1) {
291 n = sizeof(sess->isid);
292 if(sysctlbyname("net.iscsi_initiator.isid", (void *)sess->isid, (size_t *)&n, 0, 0) != 0)
308 sess->fd = nfd;
310 if(setOptions(sess, 0) != 0)
314 if(ioctl(sess->fd, ISCSISETSOC, &sess->soc)) {
347 doCAM(isess_t *sess)
353 if(ioctl(sess->fd, ISCSIGETCAM, &sess->cam) != 0) {
357 debug(1, "nluns=%d", sess->cam.target_nluns);
361 for(n = i = 0; i < sess->cam.target_nluns; i++) {
363 sess->cam.path_id, sess->cam.target_id);
365 sess->camdev = cam_open_btl(sess->cam.path_id, sess->cam.target_id,
367 if(sess->camdev == NULL) {
373 cam_path_string(sess->camdev, pathstr, sizeof(pathstr));
376 ccb = cam_getccb(sess->camdev);
380 ccb->crs.openings = sess->op->tags;
381 if(cam_send_ccb(sess->camdev, ccb) < 0)
386 // cam_error_print(sess->camdev, ccb, CAM_ESF_ALL, CAM_EPF_ALL, stderr);
393 cam_close_device(sess->camdev);
399 supervise(isess_t *sess)
405 if(strcmp(sess->op->sessionType, "Discovery") == 0) {
406 sess->flags |= SESS_DISCONNECT;
413 if(setOptions(sess, SESS_FULLFEATURE) != 0)
416 if((sess->flags & SESS_FULLFEATURE) == 0) {
421 if(sess->op->pidfile != NULL) {
424 pidf = fopen(sess->op->pidfile, "w");
433 currsess = sess;
434 if(ioctl(sess->fd, ISCSISTART)) {
438 if(doCAM(sess) == 0) {
440 ioctl(sess->fd, ISCSISTOP);
446 if(ioctl(sess->fd, ISCSIRESTART)) {
458 if(ioctl(sess->fd, ISCSISIGNAL, &sig)) {
462 sess->flags |= SESS_FULLFEATURE;
464 sess->flags &= ~(SESS_REDIRECT | SESS_RECONNECT);
471 while((sess->flags & (SESS_REDIRECT|SESS_RECONNECT|SESS_DISCONNECT)) == 0) {
477 syslog(LOG_INFO, "sess flags=%x", sess->flags);
480 if(ioctl(sess->fd, ISCSISIGNAL, &sig)) {
484 if(sess->flags & SESS_DISCONNECT) {
485 sess->flags &= ~SESS_FULLFEATURE;
490 if(ioctl(sess->fd, ISCSISTOP, &val)) {
493 sess->flags |= SESS_INITIALLOGIN1;
499 handledDiscoveryResp(isess_t *sess, pdu_t *pp)
519 doDiscovery(isess_t *sess)
531 return sendPDU(sess, &spp, handledDiscoveryResp);
535 doLogin(isess_t *sess)
537 isc_opt_t *op = sess->op;
547 sess->csg = LON_PHASE;
549 sess->csg = SN_PHASE;
551 if(sess->tsih) {
552 sess->tsih = 0; // XXX: no 'reconnect' yet
553 sess->flags &= ~SESS_NEGODONE; // XXX: KLUDGE
557 debug(3, "count=%d csg=%d", count, sess->csg);
558 status = loginPhase(sess);
562 } while(status == 0 && (sess->csg != FF_PHASE));
564 sess->flags &= ~SESS_INITIALLOGIN;
569 sess->flags |= SESS_LOGGEDIN;
570 if(strcmp(sess->op->sessionType, "Discovery") == 0)
571 doDiscovery(sess);
578 sess->flags &= ~SESS_NEGODONE;
579 sess->flags |= (SESS_REDIRECT | SESS_INITIALLOGIN1);
594 handleLogoutResp(isess_t *sess, pdu_t *pp)
596 if(sess->flags & SESS_DISCONNECT) {
598 if(ioctl(sess->fd, ISCSISTOP, &val)) {
607 startLogout(isess_t *sess)
617 return sendPDU(sess, &spp, handleLogoutResp);
621 inLogout(isess_t *sess)
623 if(sess->flags & SESS_RECONNECT)
681 isess_t *sess;
683 if((sess = calloc(1, sizeof(isess_t))) == NULL) {
690 sess->op = op;
691 sess->fd = -1;
692 sess->soc = -1;
693 sess->target.address = strdup(op->targetAddress);
694 sess->target.port = op->port;
695 sess->target.pgt = op->targetPortalGroupTag;
697 sess->flags = SESS_INITIALLOGIN | SESS_INITIALLOGIN1;
703 switch(tcpConnect(sess)) {
710 switch(startSession(sess)) {
718 switch(doLogin(sess)) {
726 switch(supervise(sess)) {
736 switch(startLogout(sess)) {
745 switch(inLogout(sess)) {