| @@ -1,83 +1,85 @@ | | | @@ -1,83 +1,85 @@ |
1 | /* $NetBSD: iscsi.h,v 1.3 2009/06/30 02:44:52 agc Exp $ */ | | 1 | /* $NetBSD: iscsi.h,v 1.4 2011/12/14 07:20:31 agc Exp $ */ |
2 | | | 2 | |
3 | /*- | | 3 | /*- |
4 | * Copyright (c) 2009 The NetBSD Foundation, Inc. | | 4 | * Copyright (c) 2009 The NetBSD Foundation, Inc. |
5 | * All rights reserved. | | 5 | * All rights reserved. |
6 | * | | 6 | * |
7 | * This code is derived from software contributed to The NetBSD Foundation | | 7 | * This code is derived from software contributed to The NetBSD Foundation |
8 | * by Alistair Crooks (agc@netbsd.org) | | 8 | * by Alistair Crooks (agc@netbsd.org) |
9 | * | | 9 | * |
10 | * Redistribution and use in source and binary forms, with or without | | 10 | * Redistribution and use in source and binary forms, with or without |
11 | * modification, are permitted provided that the following conditions | | 11 | * modification, are permitted provided that the following conditions |
12 | * are met: | | 12 | * are met: |
13 | * 1. Redistributions of source code must retain the above copyright | | 13 | * 1. Redistributions of source code must retain the above copyright |
14 | * notice, this list of conditions and the following disclaimer. | | 14 | * notice, this list of conditions and the following disclaimer. |
15 | * 2. Redistributions in binary form must reproduce the above copyright | | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in the | | 16 | * notice, this list of conditions and the following disclaimer in the |
17 | * documentation and/or other materials provided with the distribution. | | 17 | * documentation and/or other materials provided with the distribution. |
18 | * | | 18 | * |
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | | 19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | | 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | | 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | | 22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | | 23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | | 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | | 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 | * POSSIBILITY OF SUCH DAMAGE. | | 29 | * POSSIBILITY OF SUCH DAMAGE. |
30 | */ | | 30 | */ |
31 | #ifndef ISCSI_H_ | | 31 | #ifndef ISCSI_H_ |
32 | #define ISCSI_H_ 1 | | 32 | #define ISCSI_H_ 1 |
33 | | | 33 | |
| | | 34 | #include <inttypes.h> |
| | | 35 | |
34 | enum { | | 36 | enum { |
35 | ISCSI_MAXSOCK = 8 | | 37 | ISCSI_MAXSOCK = 8 |
36 | }; | | 38 | }; |
37 | | | 39 | |
38 | /* variables which relate to an embedded iSCSI target */ | | 40 | /* variables which relate to an embedded iSCSI target */ |
39 | typedef struct iscsi_target_t { | | 41 | typedef struct iscsi_target_t { |
40 | int sockc; /* sockets where listening */ | | 42 | int sockc; /* sockets where listening */ |
41 | int sockv[ISCSI_MAXSOCK]; /* listening sockets */ | | 43 | int sockv[ISCSI_MAXSOCK]; /* listening sockets */ |
42 | int famv[ISCSI_MAXSOCK]; /* address families */ | | 44 | int famv[ISCSI_MAXSOCK]; /* address families */ |
43 | int state; /* current state of target */ | | 45 | int state; /* current state of target */ |
44 | int listener_pid; /* PID */ | | 46 | int listener_pid; /* PID */ |
45 | int main_pid; /* main IQN PID */ | | 47 | int main_pid; /* main IQN PID */ |
46 | volatile int listener_listening; /* a listener is listening? */ | | 48 | volatile int listener_listening; /* a listener is listening? */ |
47 | void *lunv; /* array of target devices */ | | 49 | void *lunv; /* array of target devices */ |
48 | void *devv; /* array of devices */ | | 50 | void *devv; /* array of devices */ |
49 | void *extentv; /* array of extents */ | | 51 | void *extentv; /* array of extents */ |
50 | uint32_t last_tsih; /* the last TSIH used */ | | 52 | uint32_t last_tsih; /* the last TSIH used */ |
51 | uint32_t c; /* # of vars */ | | 53 | uint32_t c; /* # of vars */ |
52 | uint32_t size; /* size of var array */ | | 54 | uint32_t size; /* size of var array */ |
53 | char **name; /* variable names */ | | 55 | char **name; /* variable names */ |
54 | char **value; /* variable values */ | | 56 | char **value; /* variable values */ |
55 | } iscsi_target_t; | | 57 | } iscsi_target_t; |
56 | | | 58 | |
57 | /* target functions */ | | 59 | /* target functions */ |
58 | int iscsi_target_set_defaults(iscsi_target_t *); | | 60 | int iscsi_target_set_defaults(iscsi_target_t *); |
59 | int iscsi_target_start(iscsi_target_t *); | | 61 | int iscsi_target_start(iscsi_target_t *); |
60 | int iscsi_target_listen(iscsi_target_t *); | | 62 | int iscsi_target_listen(iscsi_target_t *); |
61 | int iscsi_target_shutdown(iscsi_target_t *); | | 63 | int iscsi_target_shutdown(iscsi_target_t *); |
62 | void iscsi_target_write_pidfile(const char *); | | 64 | void iscsi_target_write_pidfile(const char *); |
63 | int iscsi_target_setvar(iscsi_target_t *, const char *, const char *); | | 65 | int iscsi_target_setvar(iscsi_target_t *, const char *, const char *); |
64 | char *iscsi_target_getvar(iscsi_target_t *, const char *); | | 66 | char *iscsi_target_getvar(iscsi_target_t *, const char *); |
65 | int iscsi_target_reconfigure(iscsi_target_t *); | | 67 | int iscsi_target_reconfigure(iscsi_target_t *); |
66 | | | 68 | |
67 | typedef struct iscsi_initiator_t { | | 69 | typedef struct iscsi_initiator_t { |
68 | uint32_t c; /* # of vars */ | | 70 | uint32_t c; /* # of vars */ |
69 | uint32_t size; /* size of var array */ | | 71 | uint32_t size; /* size of var array */ |
70 | char **name; /* variable names */ | | 72 | char **name; /* variable names */ |
71 | char **value; /* variable values */ | | 73 | char **value; /* variable values */ |
72 | } iscsi_initiator_t; | | 74 | } iscsi_initiator_t; |
73 | | | 75 | |
74 | int iscsi_initiator_set_defaults(iscsi_initiator_t *); | | 76 | int iscsi_initiator_set_defaults(iscsi_initiator_t *); |
75 | int iscsi_initiator_start(iscsi_initiator_t *); | | 77 | int iscsi_initiator_start(iscsi_initiator_t *); |
76 | int iscsi_initiator_info(char *, int, int); | | 78 | int iscsi_initiator_info(char *, int, int); |
77 | int iscsi_initiator_shutdown(void); | | 79 | int iscsi_initiator_shutdown(void); |
78 | int iscsi_initiator_discover(char *, uint64_t, int); | | 80 | int iscsi_initiator_discover(char *, uint64_t, int); |
79 | | | 81 | |
80 | int iscsi_initiator_setvar(iscsi_initiator_t *, const char *, const char *); | | 82 | int iscsi_initiator_setvar(iscsi_initiator_t *, const char *, const char *); |
81 | char *iscsi_initiator_getvar(iscsi_initiator_t *, const char *); | | 83 | char *iscsi_initiator_getvar(iscsi_initiator_t *, const char *); |
82 | | | 84 | |
83 | #endif | | 85 | #endif |