summaryrefslogtreecommitdiff
path: root/usr/src/cmd/itadm/itadm.c
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-05-18 00:14:28 +0400
committerIgor Pashev <pashev.igor@gmail.com>2013-05-19 18:23:32 +0400
commit48086e4b94f94b9e41d61406129b92078b65fdf1 (patch)
tree3b5ac464ea88e0fbc5ee4810df002647a57fe4d0 /usr/src/cmd/itadm/itadm.c
parent213d4f4f0d053d779dd43aa3ed1b6e256569ce16 (diff)
downloadiscsit-48086e4b94f94b9e41d61406129b92078b65fdf1.tar.gz
Portable versionupstream/1.0
Diffstat (limited to 'usr/src/cmd/itadm/itadm.c')
-rw-r--r--usr/src/cmd/itadm/itadm.c142
1 files changed, 89 insertions, 53 deletions
diff --git a/usr/src/cmd/itadm/itadm.c b/usr/src/cmd/itadm/itadm.c
index 87a6971..58fbefd 100644
--- a/usr/src/cmd/itadm/itadm.c
+++ b/usr/src/cmd/itadm/itadm.c
@@ -23,6 +23,7 @@
*/
#include <stdlib.h>
#include <stdio.h>
+#include <stdbool.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -187,25 +188,25 @@ static int
modify_target(char *tgt, char *new, nvlist_t *proplist);
static int
-delete_target(char *tgt, boolean_t force);
+delete_target(char *tgt, bool force);
static int
-list_target(char *tgt, boolean_t verbose, boolean_t script);
+list_target(char *tgt, bool verbose, bool script);
static int
create_tpg(char *tpg, int addrc, char **addrs);
static int
-list_tpg(char *tpg, boolean_t verbose, boolean_t script);
+list_tpg(char *tpg, bool verbose, bool script);
static int
-delete_tpg(char *tpg, boolean_t force);
+delete_tpg(char *tpg, bool force);
static int
-modify_initiator(char *ini, nvlist_t *proplist, boolean_t create);
+modify_initiator(char *ini, nvlist_t *proplist, bool create);
static int
-list_initiator(char *ini, boolean_t verbose, boolean_t script);
+list_initiator(char *ini, bool verbose, bool script);
static int
delete_initiator(char *ini);
@@ -214,7 +215,7 @@ static int
modify_defaults(nvlist_t *proplist);
static int
-list_defaults(boolean_t script);
+list_defaults(bool script);
static void
tag_name_to_num(char *tagname, uint16_t *tagnum);
@@ -236,18 +237,18 @@ main(int argc, char *argv[])
char *objp;
int itind = 0;
nvlist_t *proplist = NULL;
- boolean_t verbose = B_FALSE;
- boolean_t scripting = B_FALSE;
- boolean_t tbool;
+ bool verbose = false;
+ bool scripting = false;
+ bool tbool;
char *targetname = NULL;
char *propname;
- boolean_t force = B_FALSE;
+ bool force = false;
struct passwd *pwd = NULL;
uint32_t count = 0;
char *smfstate = NULL;
(void) setlocale(LC_ALL, "");
- (void) textdomain(TEXT_DOMAIN);
+ (void) textdomain(PACKAGE);
if (argc < 2) {
ret = 1;
@@ -308,7 +309,7 @@ main(int argc, char *argv[])
"radiussecret", optarg, NULL);
break;
case 'f':
- force = B_TRUE;
+ force = true;
break;
case '?':
/*
@@ -330,10 +331,10 @@ main(int argc, char *argv[])
case 'i':
if (strncmp(optarg, "enable", strlen(optarg))
== 0) {
- tbool = B_TRUE;
+ tbool = true;
} else if (strncmp(optarg, "disable",
strlen(optarg)) == 0) {
- tbool = B_FALSE;
+ tbool = false;
} else {
(void) fprintf(stderr, "%s\n",
gettext("invalid value for -i"));
@@ -406,7 +407,7 @@ main(int argc, char *argv[])
propname, optarg);
break;
case 'v':
- verbose = B_TRUE;
+ verbose = true;
break;
case ':':
(void) fprintf(stderr,
@@ -569,10 +570,10 @@ main(int argc, char *argv[])
ret = list_tpg(objp, verbose, scripting);
break;
case CREATE_INI:
- ret = modify_initiator(objp, proplist, B_TRUE);
+ ret = modify_initiator(objp, proplist, true);
break;
case MODIFY_INI:
- ret = modify_initiator(objp, proplist, B_FALSE);
+ ret = modify_initiator(objp, proplist, false);
break;
case LIST_INI:
ret = list_initiator(objp, verbose, scripting);
@@ -630,7 +631,7 @@ create_target(char *tgt, nvlist_t *proplist)
uint16_t tagid = 0;
it_tpgt_t *tpgt;
char *sec = "solaris.smf.modify.stmf";
- boolean_t did_it_config_load = B_FALSE;
+ bool did_it_config_load = false;
ITADM_CHKAUTH(sec);
@@ -653,7 +654,7 @@ create_target(char *tgt, nvlist_t *proplist)
goto done;
}
- did_it_config_load = B_TRUE;
+ did_it_config_load = true;
ret = it_tgt_create(cfg, &tgtp, tgt);
if (ret != 0) {
@@ -785,14 +786,14 @@ done:
}
int
-list_target(char *tgt, boolean_t verbose, boolean_t script)
+list_target(char *tgt, bool verbose, bool script)
{
int ret;
it_config_t *cfg;
it_tgt_t *ptr;
- boolean_t found = B_FALSE;
- boolean_t first = B_TRUE;
- boolean_t first_tag = B_TRUE;
+ bool found = false;
+ bool first = true;
+ bool first_tag = true;
char *gauth = "none";
char *galias = "-";
char *auth;
@@ -839,7 +840,7 @@ list_target(char *tgt, boolean_t verbose, boolean_t script)
if (strcasecmp(tgt, ptr->tgt_name) != 0) {
continue;
} else {
- found = B_TRUE;
+ found = true;
}
}
@@ -876,7 +877,7 @@ list_target(char *tgt, boolean_t verbose, boolean_t script)
if (!script && first) {
(void) printf("%-61s%-9s%-9s\n", "TARGET NAME",
"STATE", "SESSIONS");
- first = B_FALSE;
+ first = false;
}
if (!script) {
@@ -932,13 +933,13 @@ list_target(char *tgt, boolean_t verbose, boolean_t script)
chapu, chaps);
}
- first_tag = B_TRUE;
+ first_tag = true;
tagp = ptr->tgt_tpgt_list;
for (; tagp != NULL; tagp = tagp->tpgt_next) {
if (!first_tag) {
(void) printf(",");
} else {
- first_tag = B_FALSE;
+ first_tag = false;
}
(void) printf("%s = %d",
tagp->tpgt_tpg_name, tagp->tpgt_tag);
@@ -965,7 +966,7 @@ list_target(char *tgt, boolean_t verbose, boolean_t script)
}
int
-delete_target(char *tgt, boolean_t force)
+delete_target(char *tgt, bool force)
{
int ret;
it_config_t *cfg;
@@ -1047,7 +1048,7 @@ modify_target(char *tgt, char *newname, nvlist_t *proplist)
uint16_t tagid;
it_tpgt_t *tpgt = NULL;
char *sec = "solaris.smf.modify.stmf";
- boolean_t did_it_config_load = B_FALSE;
+ bool did_it_config_load = false;
ITADM_CHKAUTH(sec);
@@ -1067,7 +1068,7 @@ modify_target(char *tgt, char *newname, nvlist_t *proplist)
goto done;
}
- did_it_config_load = B_TRUE;
+ did_it_config_load = true;
/*
* If newname is specified, ensure it is a valid name.
@@ -1400,15 +1401,15 @@ create_tpg(char *tpg, int addrc, char **addrs)
}
static int
-list_tpg(char *tpg, boolean_t verbose, boolean_t script)
+list_tpg(char *tpg, bool verbose, bool script)
{
int ret;
it_config_t *cfg;
it_tpg_t *ptr;
- boolean_t found = B_FALSE;
+ bool found = false;
it_portal_t *portal;
- boolean_t first = B_TRUE;
- boolean_t first_portal;
+ bool first = true;
+ bool first_portal;
char *pstr;
char *sec = "solaris.smf.read.stmf";
@@ -1432,14 +1433,14 @@ list_tpg(char *tpg, boolean_t verbose, boolean_t script)
if (strcmp(tpg, ptr->tpg_name) != 0) {
continue;
} else {
- found = B_TRUE;
+ found = true;
}
}
if (!script && first) {
(void) printf("%-30s%-9s\n", "TARGET PORTAL GROUP",
"PORTAL COUNT");
- first = B_FALSE;
+ first = false;
}
if (!script) {
@@ -1462,7 +1463,7 @@ list_tpg(char *tpg, boolean_t verbose, boolean_t script)
(void) printf("\n portals:");
}
- first_portal = B_TRUE;
+ first_portal = true;
portal = ptr->tpg_portal_list;
for (; portal != NULL; portal = portal->portal_next) {
@@ -1475,7 +1476,7 @@ list_tpg(char *tpg, boolean_t verbose, boolean_t script)
(void) printf(",");
} else {
(void) printf("\t");
- first_portal = B_FALSE;
+ first_portal = false;
}
(void) printf("%s", pstr);
@@ -1503,7 +1504,7 @@ list_tpg(char *tpg, boolean_t verbose, boolean_t script)
}
static int
-delete_tpg(char *tpg, boolean_t force)
+delete_tpg(char *tpg, bool force)
{
int ret;
it_config_t *cfg;
@@ -1562,7 +1563,7 @@ delete_tpg(char *tpg, boolean_t force)
}
static int
-modify_initiator(char *ini, nvlist_t *proplist, boolean_t create)
+modify_initiator(char *ini, nvlist_t *proplist, bool create)
{
int ret;
it_config_t *cfg;
@@ -1570,7 +1571,7 @@ modify_initiator(char *ini, nvlist_t *proplist, boolean_t create)
nvlist_t *errlist = NULL;
nvpair_t *nvp = NULL;
char *sec = "solaris.smf.modify.stmf";
- boolean_t changed = B_TRUE;
+ bool changed = true;
ITADM_CHKAUTH(sec);
@@ -1599,7 +1600,7 @@ modify_initiator(char *ini, nvlist_t *proplist, boolean_t create)
}
if ((nvp == NULL) && !create) {
- changed = B_FALSE;
+ changed = false;
}
/*
@@ -1696,13 +1697,13 @@ modify_initiator(char *ini, nvlist_t *proplist, boolean_t create)
}
static int
-list_initiator(char *ini, boolean_t verbose, boolean_t script) /* ARGSUSED */
+list_initiator(char *ini, bool verbose, bool script) /* ARGSUSED */
{
int ret;
it_config_t *cfg;
it_ini_t *ptr;
- boolean_t found = B_FALSE;
- boolean_t first = B_TRUE;
+ bool found = false;
+ bool first = true;
char *isecret;
char *iuser;
char *sec = "solaris.smf.read.stmf";
@@ -1730,7 +1731,7 @@ list_initiator(char *ini, boolean_t verbose, boolean_t script) /* ARGSUSED */
if (strcasecmp(ini, ptr->ini_name) != 0) {
continue;
} else {
- found = B_TRUE;
+ found = true;
}
}
@@ -1747,7 +1748,7 @@ list_initiator(char *ini, boolean_t verbose, boolean_t script) /* ARGSUSED */
if (!script && first) {
(void) printf("%-61s%-10s%-7s\n", "INITIATOR NAME",
"CHAPUSER", "SECRET");
- first = B_FALSE;
+ first = false;
}
if (!script) {
@@ -1904,7 +1905,7 @@ modify_defaults(nvlist_t *proplist)
}
static int
-list_defaults(boolean_t script)
+list_defaults(bool script)
{
int ret;
it_config_t *cfg;
@@ -1916,7 +1917,7 @@ list_defaults(boolean_t script)
uint32_t scount = 0;
char *rsvr = "<none>";
char *rsecret = "unset";
- boolean_t val = B_FALSE;
+ bool val = false;
int i;
char *sec = "solaris.smf.read.stmf";
@@ -1935,7 +1936,7 @@ list_defaults(boolean_t script)
(void) nvlist_lookup_string(nvl, "alias", &alias);
(void) nvlist_lookup_string(nvl, "auth", &auth);
(void) nvlist_lookup_boolean_value(nvl, "isns", &val);
- if (val == B_TRUE) {
+ if (val == true) {
isns = "enabled";
}
(void) nvlist_lookup_string_array(nvl, "isnsserver", &isvrs,
@@ -2091,6 +2092,41 @@ itadm_get_password(nvlist_t *nvl, char *key, char *passfile,
return (ret);
}
+static size_t
+_my_bufsplit(char *buf, size_t dim, char **array)
+{
+ static char *bsplitchar;
+
+ unsigned numsplit;
+ int i;
+
+ if (!buf)
+ return (0);
+ if (!dim ^ !array)
+ return (0);
+ if (buf && !dim && !array) {
+ bsplitchar = buf;
+ return (1);
+ }
+ numsplit = 0;
+ while (numsplit < dim) {
+ array[numsplit] = buf;
+ numsplit++;
+ buf = strpbrk(buf, bsplitchar);
+ if (buf)
+ *(buf++) = '\0';
+ else
+ break;
+ if (*buf == '\0') {
+ break;
+ }
+ }
+ buf = strrchr(array[numsplit-1], '\0');
+ for (i = numsplit; i < dim; i++)
+ array[i] = buf;
+ return (numsplit);
+}
+
static int
itadm_opt_to_arr(nvlist_t *nvl, char *key, char *opt, uint32_t *num)
{
@@ -2121,10 +2157,10 @@ itadm_opt_to_arr(nvlist_t *nvl, char *key, char *opt, uint32_t *num)
bufp = opt;
/* set delimiter to comma */
- (void) bufsplit(",", 0, NULL);
+ (void) _my_bufsplit(",", 0, NULL);
/* split up that buf! */
- (void) bufsplit(bufp, count, arr);
+ (void) _my_bufsplit(bufp, count, arr);
/* if requested, return the number of array members found */
if (num) {