41 Commits

Author SHA1 Message Date
agc
72a3c3e7b9 Add support for Vital Product Data 0x80, Unit Serial Number, reported to be
used by the beta FreeBSD initiator by Paul Dekkers.
2006-08-03 20:49:11 +00:00
agc
66644e0749 + add support for IPv6 in the target (CIDR scoping has still to be
implemented for IPv6, but works fine for IPv4)

+ now poll any connections opened in the target.  select is used if
poll is not available

+ remove ramdisk type of backing store, since it was never used, and
is of no use for our needs

+ bump version to 20060727
2006-08-03 20:21:59 +00:00
agc
2b1d5a0345 :g/%i/s//%d/gc
Also make a first stab at implementing persistent reserve in SCSI command.
2006-05-31 19:53:13 +00:00
agc
c52b27c275 Bump version number for the portability fix, and the dynamic number of
sessions.
2006-05-27 21:29:32 +00:00
agc
36fad19155 Rather than hardcoding the maximum number of sessions that a target can
serve simultaneously to DEFAULT_TARGET_MAX_SESSIONS, add a -s argument to
iscsi-target(8) to specify the maximum number of sessions.

Also bump default from 4 to 16.
2006-05-27 21:21:04 +00:00
agc
2fa516b2eb Rewrite the way report_luns() works, after suspicion by Matt Green, and
following Dan Carosone's suggestion of the uint64_t array.

Abstract a bit more from the HTOBE64() macro intrigue, for platforms
like Solaris/x86 which have fun in this part.

Tested only with little-endian initiators for now.

Bump version to 20060526.
2006-05-26 16:34:43 +00:00
he
c6974f26a9 Use the value-returning variants of the 64-bit endian macros instead
of the argument-tweaking variants (e.g. htobe64 instead of HTOBE64).
2006-05-22 20:48:08 +00:00
agc
e32a776a5a Adjust the data VPD returns, to work around a problem in the Cisco
initiator (used on Solaris 10 Update 1) - the initiator demands that a
UUID is returned, so give it one.

Add autoconf glue for that, and a compat uuid_create(3) and
uuid_to_string(3).

This still spews a lot of output via the target's syslog, but persevere,
since it does actually make the target work with the Solaris initiator:

	solaris10# format
	Searching for disks...done


	AVAILABLE DISK SELECTIONS:
	       0. c1d0 <DEFAULT cyl 29728 alt 2 hd 64 sec 63>
		  /pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
	       1. c2t5d0 <DEFAULT cyl 96 alt 2 hd 64 sec 32>
		  /iscsi/disk@0000iqn.1994-04.org.netbsd.iscsi-target%3Atarget00001,0
	Specify disk (enter its number): ^D
	solaris10# df -k /mnt
	Filesystem            kbytes    used   avail capacity  Mounted on
	/dev/dsk/c2t5d0s0      91407    1041   81226     2%    /mnt
	solaris10# uname -a
	SunOS solaris10 5.10 Generic_118844-26 i86pc i386 i86pc
	solaris10#
2006-05-21 09:26:37 +00:00
uwe
ee952d9fc0 Use be64toh/htobe64 instead of upper-case versions.
Thanks to lint that caught this on big-endian arches.  Little-endian
compiled, but I guess that converting your loop counter into
big-endian inside the loop is not exactly what you want to do.
2006-04-30 01:07:59 +00:00
agc
84fba20a22 Use the correct opcode for the WRITE6 SCSI command 2006-04-26 20:29:56 +00:00
agc
000a68021a + Some minor formatting cleanup in the header files.
+ Properly pad the names with spaces (with thanks to Bill Studenmund)
+ Use the official T10 vendor name, "NetBSD".
+ Minor cleanup in the INQUIRY command
+ Rather than just punting on the REPORT LUNs SCSI command, emulate it
properly.  This change makes the target work with the Solaris initiator:

	AVAILABLE DISK SELECTIONS:
	       0. c1d0 <DEFAULT cyl 29728 alt 2 hd 64 sec 63>
		  /pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
	       1. c2t5d0 <DEFAULT cyl 97 alt 2 hd 64 sec 32>
		  /iscsi/disk@0000iqn.1994-04.org.netbsd.iscsi-target%3Atarget00001,0
	Specify disk (enter its number): 1
2006-04-24 21:59:03 +00:00
agc
339a11eb23 Bump version to 20060417 for the Mac OS X build fixes (thanks, Jason) 2006-04-18 06:52:59 +00:00
thorpej
0c7787e9ae Let MD5Update() take a void *, rather than a uint8_t *. Gets rid of a
GCC 4 warning.
2006-04-17 16:49:16 +00:00
thorpej
01de58d459 Test HAVE_STDINT_H and bring in <stdint.h> if defined. 2006-04-17 16:45:02 +00:00
thorpej
57de6c70c3 Pull in config.h to get the definition of HAVE_STDINT_H 2006-04-17 16:44:42 +00:00
thorpej
7dd6393f48 Check for <libkern/OSByteOrder.h>. If it exists, use it to get the
OSSwapBigToHostInt64() definition for HTOBE64().  This now builds on
Mac OS X 10.4.6.
2006-04-17 16:30:00 +00:00
agc
f27a3c2c6b Commit regenerated config.h so that the correct version strings are picked
up for NetBSD.
2006-04-16 17:19:50 +00:00
agc
cf0dd67053 Provide a bit more information in the error and warning routines - needed
since variadic macros were removed.
2006-03-31 23:22:24 +00:00
agc
2171876d1d More portability fixes, mainly for Solaris 9. 2006-03-28 20:03:30 +00:00
agc
f02decf866 Add changes to make the NetBSD iSCSI target compile and run on Solaris 9
Ultrasparc.
2006-03-27 22:26:28 +00:00
agc
6e1f35f92e minor cleanup in preparation for porting the NetBSD iSCSI target to Solaris 9. 2006-03-26 23:34:06 +00:00
agc
e1d9f9cea5 First stab at implementing INQUIRY for Vital Product Data, aka Page 83
information in the Solaris initiator, with information taken from
SPC3, T10/1416-D Revision 23, from www.t10.org.

This is untested, work-in-progress.
2006-03-23 00:01:48 +00:00
agc
86caa230d8 Actually do something with the SYNC_CACHE command - use fsync_range(2) if
it's available, falling back to fsync(2) if it's not. Add the necessary
glue to the autoconf scripts.
2006-03-21 22:56:55 +00:00
agc
cbf5d4f8f5 Abstract out some common code, and place it in the utilities source.
Get rid of some #ifdef __KERNEL__ abstractions - they're not needed.
2006-03-21 21:03:14 +00:00
agc
a055fd96f7 Incorporate changes from F. Senault, modified by myself to use
autoconf glue, to make the NetBSD iSCSI target build and run on
FreeBSD.
2006-03-20 20:45:07 +00:00
agc
2010c5954a Clean up, mostly to autoconf glue, to check whether syslog(3) exists or not. 2006-03-20 20:25:42 +00:00
agc
a4c7ca1aeb Get rid of c99isms in the form of variable number of args to CPP macros.
This should slim down the resulting binaries a fair bit as well.
2006-03-12 18:47:27 +00:00
agc
d4397af4d8 One more off the TODO list, although I hadn't realised it was going to be
as painful as it was.

Teach GNU autoconf to recognise socklen_t, and use it in the code.
2006-03-06 20:52:32 +00:00
agc
32306cea7e I have a nasty feeling it's time to sell all my guitars:
Add some very crude hacks which allow the iscsi-target to work with IPv6:

Mar  5 23:43:45 sys3 iscsi-target: > Discovery login from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
Mar  5 23:43:45 sys3 iscsi-target: < Discovery logout from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
Mar  5 23:43:45 sys3 iscsi-target: > Normal login from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
Mar  5 23:43:48 sys3 iscsi-target: < Normal logout from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc

These have still to be cleaned up, but this will happen over the next
few days.

Update the TODO list to reflect the current state.
2006-03-05 23:50:46 +00:00
agc
7717b41470 Include version number, passed down from GNU autoconf.
Add a -V argument to iscsi-target (and iscsi-harness), which will print
the utility name, version number, and destination for all bug reports,
and then exit the utility.

Modify the documentation accordingly.

Re-run autoconf and autoheader to pick up the necessary autoconf glue.
2006-03-04 21:56:11 +00:00
agc
b95774e6d4 Implement SCSI commands:
0x1b Load/Unload Sequential
0x4d Log Sense
0x5e (unknown for just now)
0x35 Synchronise cache

as no ops for the present time - reported on current-users by Chavdar
Ivanov as being generated by the Solaris 10 initiator.
2006-02-24 20:47:30 +00:00
he
127058acaa Include <sys/param.h> explicitly relatively early, so that we pick
up the definition of MAX earlier, and avoid a redefinition which
GCC 2 isn't very fond of.  Fixes build problem for vax.
2006-02-22 08:56:46 +00:00
agc
f06c81ed28 Further cleanup.
Add an initiator_discover() function, and start to break up the monolithic
discovery function that's currently used.
2006-02-20 08:59:07 +00:00
agc
56abe96063 By popular request, modify the IQN to:
"iqn.1994-04.org.netbsd.iscsi-target"
2006-02-16 23:16:05 +00:00
agc
ec095879d4 Introduce a backwards compatible change to the targets configuration
file.

The new file specifies whether targets should be presented as readonly
or read-write.

If a target is marked as read-only, don't allow any writes to be made
to it.

Also, add syntax recognition of "any" and "all" in the netmask recognition
code.
2006-02-16 19:19:38 +00:00
agc
c963d486fc Present multiple targets properly 2006-02-14 20:08:37 +00:00
agc
a31b31cf51 keep a reference to the device target information in the globals structure 2006-02-12 15:34:29 +00:00
agc
e48ae9ed1d use a proper prototype for allow_netmask 2006-02-12 15:33:26 +00:00
agc
0a7d1d9211 Break out the files relating to storage extents, devices and targets into
a separate source file.
2006-02-09 23:08:31 +00:00
mrg
5f90d3d8b1 - use <inttypes.h> and PRIu64 in many places.
- don't try to use the return value of NTOHL().

fixes sparc64 build problems.
2006-02-09 08:46:43 +00:00
agc
33645f4ad2 Import the distribution files for the iSCSI target, developed from the
original Intel code (BSD-licensed) in othersrc, by myself.

This provides an iSCSI target implementation in userland, as well as a
test harness which also runs in userland.

The iSCSI target has been tested with version 1.06 of the Microsoft
initiator, as well as with its own test harness.
2006-02-08 18:56:14 +00:00