Date: Wed, 23 Jul 2014 11:38:01 +0800 From: Chen Wen <pokkys@gmail.com> To: freebsd-net@freebsd.org Subject: usr.sbin/ctld/login.c do not reply TargetPortalGroupTag in Login response Message-ID: <CB12983AE11B45F28F414DCA3FFB4766@gmail.com>
next in thread | raw e-mail | index | archive | help
Hi =20 I am a mac user, when I try to use xtendsan iSCSI initiator to connect na= tive iSCSI target, I found that the login response pdu do not have Target= PortalGroupTag key-pair. xtendsan told me TargetPortalGroupTag is missing and disconnected. I try to do a workaround to it and it works. Add some codes in usr.sbin/ctld/login.c:login=5Fnegotiate() > login=5Fnegotiate(struct connection *conn, struct pdu *request) > =7B > struct pdu *response; > struct iscsi=5Fbhs=5Flogin=5Fresponse *bhslr2; > struct keys *request=5Fkeys, *response=5Fkeys; > int i; > bool skipped=5Fsecurity; char *portal=5Fgroup=5Ftag; int rv; > =20 > if (request =3D=3D NULL) =7B > log=5Fdebugx(=22beginning parameter negotiation; =22 > =22waiting for Login PDU=22); > request =3D login=5Freceive(conn, false); > skipped=5Fsecurity =3D false; > =7D else > skipped=5Fsecurity =3D true; > =20 > request=5Fkeys =3D keys=5Fnew(); > keys=5Fload(request=5Fkeys, request); > =20 > response =3D login=5Fnew=5Fresponse(request); > bhslr2 =3D (struct iscsi=5Fbhs=5Flogin=5Fresponse *)response->p= du=5Fbhs; > bhslr2->bhslr=5Fflags =7C=3D BHSLR=5F=46LAGS=5FTRANSIT; > bhslr2->bhslr=5Ftsih =3D htons(0xbadd); > login=5Fset=5Fcsg(response, BHSLR=5FSTAGE=5FOPERATIONAL=5FNEGOT= IATION); > login=5Fset=5Fnsg(response, BHSLR=5FSTAGE=5F=46ULL=5F=46EATURE=5F= PHASE); > response=5Fkeys =3D keys=5Fnew(); if (conn->conn=5Fsession=5Ftype =3D=3D CONN=5FSESSION=5FTYPE=5FNO= RMAL) =7B if (conn->conn=5Ftarget->t=5Falias =21=3D NULL) keys=5Fadd(response=5Fkeys, =22TargetAlias=22, conn->conn=5Ftarget->t=5Fa= lias); rv =3D asprintf(&portal=5Fgroup=5Ftag, =22%d=22, conn->conn=5Fportal->p=5Fportal=5Fgroup->pg=5Ftag); if (rv <=3D 0) log=5Ferr(1, =22asprintf=22); keys=5Fadd(response=5Fkeys, =22TargetPortalGroupTag=22, portal=5Fgroup=5Ftag); free(portal=5Fgroup=5Ftag); =7D =20 > for (i =3D 0; i < KEYS=5FMAX; i++) =7B > if (request=5Fkeys->keys=5Fnames=5Bi=5D =3D=3D NULL) > break; > =20 > login=5Fnegotiate=5Fkey(request, request=5Fkeys->keys=5F= names=5Bi=5D, > request=5Fkeys->keys=5Fvalues=5Bi=5D, skipped=5Fsec= urity, > response=5Fkeys); > =7D I don=E2=80=99t read whole iSCSI R=46C, is this right to add missing Targ= etPortalGroupTag=3F Maybe you have better solution to fix this, please help me and thanks. -- =20 Chen Wen Sent with Sparrow (http://www.sparrowmailapp.com/=3Fsig)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CB12983AE11B45F28F414DCA3FFB4766>