FreeBSD Bugzilla – Attachment 153967 Details for
Bug 198396
iscsictl: Add libxo support
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch to libxo-ify iscsictl
iscsictl.patch (text/plain), 23.58 KB, created by
Marie Helene Kvello-Aune
on 2015-03-07 20:07:09 UTC
(
hide
)
Description:
patch to libxo-ify iscsictl
Filename:
MIME Type:
Creator:
Marie Helene Kvello-Aune
Created:
2015-03-07 20:07:09 UTC
Size:
23.58 KB
patch
obsolete
>diff -dur /usr/src/usr.bin/iscsictl/Makefile ./Makefile >--- /usr/src/usr.bin/iscsictl/Makefile 2015-03-06 08:54:51.880618000 +0100 >+++ ./Makefile 2015-03-07 20:49:11.792636000 +0100 >@@ -7,6 +7,7 @@ > MAN= iscsi.conf.5 iscsictl.8 > > LIBADD= cam util >+LDADD= -lxo > > YFLAGS+= -v > LFLAGS+= -i >diff -dur /usr/src/usr.bin/iscsictl/iscsictl.c ./iscsictl.c >--- /usr/src/usr.bin/iscsictl/iscsictl.c 2015-03-06 08:54:52.015784000 +0100 >+++ ./iscsictl.c 2015-03-07 20:43:47.000000000 +0100 >@@ -44,6 +44,7 @@ > #include <stdlib.h> > #include <string.h> > #include <unistd.h> >+#include <libxo/xo.h> > > #include <iscsi_ioctl.h> > #include "iscsictl.h" >@@ -55,7 +56,7 @@ > > conf = calloc(1, sizeof(*conf)); > if (conf == NULL) >- err(1, "calloc"); >+ xo_err(1, "calloc"); > > TAILQ_INIT(&conf->conf_targets); > >@@ -83,7 +84,7 @@ > > targ = calloc(1, sizeof(*targ)); > if (targ == NULL) >- err(1, "calloc"); >+ xo_err(1, "calloc"); > targ->t_conf = conf; > TAILQ_INSERT_TAIL(&conf->conf_targets, targ, t_next); > >@@ -110,12 +111,12 @@ > > name = calloc(1, namelen + 1); > if (name == NULL) >- err(1, "calloc"); >+ xo_err(1, "calloc"); > strcpy(name, DEFAULT_IQN); > error = gethostname(name + strlen(DEFAULT_IQN), > namelen - strlen(DEFAULT_IQN)); > if (error != 0) >- err(1, "gethostname"); >+ xo_err(1, "gethostname"); > > return (name); > } >@@ -158,7 +159,7 @@ > int i; > > if (strlen(name) >= MAX_NAME_LEN) { >- warnx("overlong name for \"%s\"; max length allowed " >+ xo_warnx("overlong name for \"%s\"; max length allowed " > "by iSCSI specification is %d characters", > name, MAX_NAME_LEN); > return (false); >@@ -178,7 +179,7 @@ > continue; > if (name[i] == '-' || name[i] == '.' || name[i] == ':') > continue; >- warnx("invalid character \"%c\" in iSCSI name " >+ xo_warnx("invalid character \"%c\" in iSCSI name " > "\"%s\"; allowed characters are letters, digits, " > "'-', '.', and ':'", name[i], name); > break; >@@ -188,12 +189,12 @@ > */ > } else if (strncasecmp(name, "eui.", strlen("eui.")) == 0) { > if (strlen(name) != strlen("eui.") + 16) >- warnx("invalid iSCSI name \"%s\"; the \"eui.\" " >+ xo_warnx("invalid iSCSI name \"%s\"; the \"eui.\" " > "should be followed by exactly 16 hexadecimal " > "digits", name); > for (i = strlen("eui."); name[i] != '\0'; i++) { > if (!valid_hex(name[i])) { >- warnx("invalid character \"%c\" in iSCSI " >+ xo_warnx("invalid character \"%c\" in iSCSI " > "name \"%s\"; allowed characters are 1-9 " > "and A-F", name[i], name); > break; >@@ -201,19 +202,19 @@ > } > } else if (strncasecmp(name, "naa.", strlen("naa.")) == 0) { > if (strlen(name) > strlen("naa.") + 32) >- warnx("invalid iSCSI name \"%s\"; the \"naa.\" " >+ xo_warnx("invalid iSCSI name \"%s\"; the \"naa.\" " > "should be followed by at most 32 hexadecimal " > "digits", name); > for (i = strlen("naa."); name[i] != '\0'; i++) { > if (!valid_hex(name[i])) { >- warnx("invalid character \"%c\" in ISCSI " >+ xo_warnx("invalid character \"%c\" in ISCSI " > "name \"%s\"; allowed characters are 1-9 " > "and A-F", name[i], name); > break; > } > } > } else { >- warnx("invalid iSCSI name \"%s\"; should start with " >+ xo_warnx("invalid iSCSI name \"%s\"; should start with " > "either \".iqn\", \"eui.\", or \"naa.\"", > name); > } >@@ -231,26 +232,26 @@ > targ->t_session_type = SESSION_TYPE_NORMAL; > if (targ->t_session_type == SESSION_TYPE_NORMAL && > targ->t_name == NULL) >- errx(1, "missing TargetName for target \"%s\"", >+ xo_errx(1, "missing TargetName for target \"%s\"", > targ->t_nickname); > if (targ->t_session_type == SESSION_TYPE_DISCOVERY && > targ->t_name != NULL) >- errx(1, "cannot specify TargetName for discovery " >+ xo_errx(1, "cannot specify TargetName for discovery " > "sessions for target \"%s\"", targ->t_nickname); > if (targ->t_name != NULL) { > if (valid_iscsi_name(targ->t_name) == false) >- errx(1, "invalid target name \"%s\"", >+ xo_errx(1, "invalid target name \"%s\"", > targ->t_name); > } > if (targ->t_protocol == PROTOCOL_UNSPECIFIED) > targ->t_protocol = PROTOCOL_ISCSI; > if (targ->t_address == NULL) >- errx(1, "missing TargetAddress for target \"%s\"", >+ xo_errx(1, "missing TargetAddress for target \"%s\"", > targ->t_nickname); > if (targ->t_initiator_name == NULL) > targ->t_initiator_name = default_initiator_name(); > if (valid_iscsi_name(targ->t_initiator_name) == false) >- errx(1, "invalid initiator name \"%s\"", >+ xo_errx(1, "invalid initiator name \"%s\"", > targ->t_initiator_name); > if (targ->t_header_digest == DIGEST_UNSPECIFIED) > targ->t_header_digest = DIGEST_NONE; >@@ -268,19 +269,19 @@ > } > if (targ->t_auth_method == AUTH_METHOD_CHAP) { > if (targ->t_user == NULL) { >- errx(1, "missing chapIName for target \"%s\"", >+ xo_errx(1, "missing chapIName for target \"%s\"", > targ->t_nickname); > } > if (targ->t_secret == NULL) >- errx(1, "missing chapSecret for target \"%s\"", >+ xo_errx(1, "missing chapSecret for target \"%s\"", > targ->t_nickname); > if (targ->t_mutual_user != NULL || > targ->t_mutual_secret != NULL) { > if (targ->t_mutual_user == NULL) >- errx(1, "missing tgtChapName for " >+ xo_errx(1, "missing tgtChapName for " > "target \"%s\"", targ->t_nickname); > if (targ->t_mutual_secret == NULL) >- errx(1, "missing tgtChapSecret for " >+ xo_errx(1, "missing tgtChapSecret for " > "target \"%s\"", targ->t_nickname); > } > } >@@ -350,7 +351,7 @@ > conf_from_target(&isa.isa_conf, targ); > error = ioctl(iscsi_fd, ISCSISADD, &isa); > if (error != 0) >- warn("ISCSISADD"); >+ xo_warn("ISCSISADD"); > return (error); > } > >@@ -365,7 +366,7 @@ > conf_from_target(&ism.ism_conf, targ); > error = ioctl(iscsi_fd, ISCSISMODIFY, &ism); > if (error != 0) >- warn("ISCSISMODIFY"); >+ xo_warn("ISCSISMODIFY"); > return (error); > } > >@@ -385,7 +386,7 @@ > states = realloc(states, > nentries * sizeof(struct iscsi_session_state)); > if (states == NULL) >- err(1, "realloc"); >+ xo_err(1, "realloc"); > > memset(&isl, 0, sizeof(isl)); > isl.isl_nentries = nentries; >@@ -399,7 +400,7 @@ > break; > } > if (error != 0) >- errx(1, "ISCSISLIST"); >+ xo_errx(1, "ISCSISLIST"); > > for (i = 0; i < isl.isl_nentries; i++) { > state = &states[i]; >@@ -408,7 +409,7 @@ > break; > } > if (i == isl.isl_nentries) >- errx(1, "session-id %u not found", session_id); >+ xo_errx(1, "session-id %u not found", session_id); > > conf = &state->iss_conf; > >@@ -427,7 +428,7 @@ > memcpy(&ism.ism_conf, conf, sizeof(ism.ism_conf)); > error = ioctl(iscsi_fd, ISCSISMODIFY, &ism); > if (error != 0) >- warn("ISCSISMODIFY"); >+ xo_warn("ISCSISMODIFY"); > } > > static int >@@ -440,7 +441,7 @@ > conf_from_target(&isr.isr_conf, targ); > error = ioctl(iscsi_fd, ISCSISREMOVE, &isr); > if (error != 0) >- warn("ISCSISREMOVE"); >+ xo_warn("ISCSISREMOVE"); > return (error); > } > >@@ -462,7 +463,7 @@ > states = realloc(states, > nentries * sizeof(struct iscsi_session_state)); > if (states == NULL) >- err(1, "realloc"); >+ xo_err(1, "realloc"); > > memset(&isl, 0, sizeof(isl)); > isl.isl_nentries = nentries; >@@ -476,78 +477,140 @@ > break; > } > if (error != 0) { >- warn("ISCSISLIST"); >+ xo_warn("ISCSISLIST"); > return (error); > } > > if (verbose != 0) { >+ xo_open_list("target"); > for (i = 0; i < isl.isl_nentries; i++) { > state = &states[i]; > conf = &state->iss_conf; >- >- printf("Session ID: %u\n", state->iss_id); >- printf("Initiator name: %s\n", conf->isc_initiator); >- printf("Initiator portal: %s\n", >- conf->isc_initiator_addr); >- printf("Initiator alias: %s\n", >- conf->isc_initiator_alias); >- printf("Target name: %s\n", conf->isc_target); >- printf("Target portal: %s\n", >- conf->isc_target_addr); >- printf("Target alias: %s\n", >- state->iss_target_alias); >- printf("User: %s\n", conf->isc_user); >- printf("Secret: %s\n", conf->isc_secret); >- printf("Mutual user: %s\n", >- conf->isc_mutual_user); >- printf("Mutual secret: %s\n", >- conf->isc_mutual_secret); >- printf("Session type: %s\n", >- conf->isc_discovery ? "Discovery" : "Normal"); >- printf("Session state: %s\n", >- state->iss_connected ? >- "Connected" : "Disconnected"); >- printf("Failure reason: %s\n", state->iss_reason); >- printf("Header digest: %s\n", >- state->iss_header_digest == ISCSI_DIGEST_CRC32C ? >- "CRC32C" : "None"); >- printf("Data digest: %s\n", >- state->iss_data_digest == ISCSI_DIGEST_CRC32C ? >- "CRC32C" : "None"); >- printf("DataSegmentLen: %d\n", >- state->iss_max_data_segment_length); >- printf("ImmediateData: %s\n", >- state->iss_immediate_data ? "Yes" : "No"); >- printf("iSER (RDMA): %s\n", >- conf->isc_iser ? "Yes" : "No"); >- printf("Offload driver: %s\n", state->iss_offload); >- printf("Device nodes: "); >+ >+ xo_open_instance("target"); >+ >+ // Display-only modifier as this information >+ // is also present within the 'session' container >+ xo_emit("{Ld:/%-18s}{Vd:sessionId/%u}\n", >+ "Session ID:", state->iss_id); >+ >+ // Start Container: initiator >+ xo_open_container("initiator"); >+ xo_emit("{L:/%-18s}{V:name/%s}\n", >+ "Initiator name:", conf->isc_initiator); >+ xo_emit("{L:/%-18s}{V:portal/%s}\n", >+ "Initiator portal:", conf->isc_initiator_addr); >+ xo_emit("{L:/%-18s}{V:alias/%s}\n", >+ "Initiator alias:", conf->isc_initiator_alias); >+ xo_close_container("initiator"); >+ // End Container: initiator >+ >+ // Start Container: target >+ xo_open_container("target"); >+ xo_emit("{L:/%-18s}{V:name/%s}\n", >+ "Target name:", conf->isc_target); >+ xo_emit("{L:/%-18s}{V:portal/%s}\n", >+ "Target portal:", conf->isc_target_addr); >+ xo_emit("{L:/%-18s}{V:alias/%s}\n", >+ "Target alias:", state->iss_target_alias); >+ xo_close_container("target"); >+ // End Container: target >+ >+ // Start Container: auth >+ xo_open_container("auth"); >+ xo_emit("{L:/%-18s}{V:user/%s}\n", >+ "User:", conf->isc_user); >+ xo_emit("{L:/%-18s}{V:secret/%s}\n", >+ "Secret:", conf->isc_secret); >+ xo_emit("{L:/%-18s}{V:mutualUser/%s}\n", >+ "Mutual user:", conf->isc_mutual_user); >+ xo_emit("{L:/%-18s}{V:mutualSecret/%s}\n", >+ "Mutual secret:", conf->isc_mutual_secret); >+ xo_close_container("auth"); >+ // End Container: auth >+ >+ // Start Container: session >+ xo_open_container("session"); >+ /* Session ID is already printed for >+ * display outputs. Only include it for >+ * non-display output. >+ */ >+ xo_emit("{Ve:id/%u}", >+ state->iss_id); >+ xo_emit("{L:/%-18s}{V:type/%s}\n", >+ "Session type:", (conf->isc_discovery ? "Discovery" : "Normal")); >+ xo_emit("{L:/%-18s}{V:state/%s}\n", >+ "Session state:", >+ (state->iss_connected ? >+ "Connected" : "Disconnected")); >+ xo_close_container("session"); >+ // End Container: session >+ >+ xo_emit("{L:/%-18s}{V:failureReason/%s}\n", >+ "Failure reason:", state->iss_reason); >+ >+ // Start Container: digest >+ xo_open_container("digest"); >+ xo_emit("{L:/%-18s}{V:header/%s}\n", >+ "Header digest:", >+ (state->iss_header_digest == ISCSI_DIGEST_CRC32C ? >+ "CRC32C" : "None")); >+ xo_emit("{L:/%-18s}{V:data/%s}\n", >+ "Data digest:", >+ (state->iss_data_digest == ISCSI_DIGEST_CRC32C ? >+ "CRC32C" : "None")); >+ xo_close_container("digest"); >+ // End Container: digest >+ >+ xo_emit("{L:/%-18s}{V:dataSegmentLen/%d}\n", >+ "DataSegmentLen:", state->iss_max_data_segment_length); >+ xo_emit("{L:/%-18s}{V:immediateData/%s}\n", >+ "ImmediateData:", state->iss_immediate_data ? "Yes" : "No"); >+ xo_emit("{L:/%-18s}{V:iSER/%s}\n", >+ "iSER (RDMA):", conf->isc_iser ? "Yes" : "No"); >+ >+ xo_emit("{L:/%-18s}{V:offloadDriver/%s}\n", >+ "Offload driver:", state->iss_offload); >+ xo_emit("{L:/%-18s}", >+ "Device nodes:"); > print_periphs(state->iss_id); >- printf("\n\n"); >+ xo_emit("\n\n"); >+ xo_close_instance("target"); > } >+ xo_close_list("target"); > } else { >- printf("%-36s %-16s %s\n", >- "Target name", "Target portal", "State"); >+ xo_emit("{T:/%-36s} {T:/%-16s} {T:/%s}\n", >+ "Target name", "Target portal", "State"); >+ > for (i = 0; i < isl.isl_nentries; i++) { >+ if (i == 0) { >+ xo_open_list("target"); >+ } >+ > state = &states[i]; > conf = &state->iss_conf; > >- printf("%-36s %-16s ", >- conf->isc_target, conf->isc_target_addr); >- >+ xo_open_instance("target"); >+ xo_emit("{V:name/%-36s} {V:portal/%-16s} ", >+ conf->isc_target, conf->isc_target_addr); >+ > if (state->iss_reason[0] != '\0') { >- printf("%s\n", state->iss_reason); >+ xo_emit("{V:state/%s", state->iss_reason); > } else { > if (conf->isc_discovery) { >- printf("Discovery\n"); >+ xo_emit("{V:state}\n", "Discovery"); > } else if (state->iss_connected) { >- printf("Connected: "); >+ xo_emit("{V:state}: ", "Connected"); > print_periphs(state->iss_id); >- printf("\n"); >+ xo_emit("\n"); > } else { >- printf("Disconnected\n"); >+ xo_emit("{V:state}\n", "Disconnected"); > } > } >+ xo_close_instance("target"); >+ } >+ if (isl.isl_nentries != 0) { >+ xo_close_list("target"); > } > } > >@@ -582,7 +645,7 @@ > > c = strdup(s); > if (c == NULL) >- err(1, "strdup"); >+ xo_err(1, "strdup"); > return (c); > } > >@@ -599,7 +662,10 @@ > int failed = 0; > struct conf *conf; > struct target *targ; >- >+ >+ argc = xo_parse_args(argc, argv); >+ xo_open_container("iscsi-information"); >+ > while ((ch = getopt(argc, argv, "AMRLac:d:i:n:p:t:u:s:v")) != -1) { > switch (ch) { > case 'A': >@@ -626,11 +692,11 @@ > case 'i': > session_id = strtol(optarg, &end, 10); > if ((size_t)(end - optarg) != strlen(optarg)) >- errx(1, "trailing characters after session-id"); >+ xo_errx(1, "trailing characters after session-id"); > if (session_id < 0) >- errx(1, "session-id cannot be negative"); >+ xo_errx(1, "session-id cannot be negative"); > if (session_id > UINT_MAX) >- errx(1, "session-id cannot be greater than %u", >+ xo_errx(1, "session-id cannot be greater than %u", > UINT_MAX); > break; > case 'n': >@@ -663,7 +729,7 @@ > if (Aflag + Mflag + Rflag + Lflag == 0) > Lflag = 1; > if (Aflag + Mflag + Rflag + Lflag > 1) >- errx(1, "at most one of -A, -M, -R, or -L may be specified"); >+ xo_errx(1, "at most one of -A, -M, -R, or -L may be specified"); > > /* > * Note that we ignore unneccessary/inapplicable "-c" flag; so that >@@ -673,122 +739,122 @@ > if (Aflag != 0) { > if (aflag != 0) { > if (portal != NULL) >- errx(1, "-a and -p and mutually exclusive"); >+ xo_errx(1, "-a and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-a and -t and mutually exclusive"); >+ xo_errx(1, "-a and -t and mutually exclusive"); > if (user != NULL) >- errx(1, "-a and -u and mutually exclusive"); >+ xo_errx(1, "-a and -u and mutually exclusive"); > if (secret != NULL) >- errx(1, "-a and -s and mutually exclusive"); >+ xo_errx(1, "-a and -s and mutually exclusive"); > if (nickname != NULL) >- errx(1, "-a and -n and mutually exclusive"); >+ xo_errx(1, "-a and -n and mutually exclusive"); > if (discovery_host != NULL) >- errx(1, "-a and -d and mutually exclusive"); >+ xo_errx(1, "-a and -d and mutually exclusive"); > } else if (nickname != NULL) { > if (portal != NULL) >- errx(1, "-n and -p and mutually exclusive"); >+ xo_errx(1, "-n and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-n and -t and mutually exclusive"); >+ xo_errx(1, "-n and -t and mutually exclusive"); > if (user != NULL) >- errx(1, "-n and -u and mutually exclusive"); >+ xo_errx(1, "-n and -u and mutually exclusive"); > if (secret != NULL) >- errx(1, "-n and -s and mutually exclusive"); >+ xo_errx(1, "-n and -s and mutually exclusive"); > if (discovery_host != NULL) >- errx(1, "-n and -d and mutually exclusive"); >+ xo_errx(1, "-n and -d and mutually exclusive"); > } else if (discovery_host != NULL) { > if (portal != NULL) >- errx(1, "-d and -p and mutually exclusive"); >+ xo_errx(1, "-d and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-d and -t and mutually exclusive"); >+ xo_errx(1, "-d and -t and mutually exclusive"); > } else { > if (target == NULL && portal == NULL) >- errx(1, "must specify -a, -n or -t/-p"); >+ xo_errx(1, "must specify -a, -n or -t/-p"); > > if (target != NULL && portal == NULL) >- errx(1, "-t must always be used with -p"); >+ xo_errx(1, "-t must always be used with -p"); > if (portal != NULL && target == NULL) >- errx(1, "-p must always be used with -t"); >+ xo_errx(1, "-p must always be used with -t"); > } > > if (user != NULL && secret == NULL) >- errx(1, "-u must always be used with -s"); >+ xo_errx(1, "-u must always be used with -s"); > if (secret != NULL && user == NULL) >- errx(1, "-s must always be used with -u"); >+ xo_errx(1, "-s must always be used with -u"); > > if (session_id != -1) >- errx(1, "-i cannot be used with -A"); >+ xo_errx(1, "-i cannot be used with -A"); > if (vflag != 0) >- errx(1, "-v cannot be used with -A"); >+ xo_errx(1, "-v cannot be used with -A"); > > } else if (Mflag != 0) { > if (session_id == -1) >- errx(1, "-M requires -i"); >+ xo_errx(1, "-M requires -i"); > > if (discovery_host != NULL) >- errx(1, "-M and -d are mutually exclusive"); >+ xo_errx(1, "-M and -d are mutually exclusive"); > if (aflag != 0) >- errx(1, "-M and -a are mutually exclusive"); >+ xo_errx(1, "-M and -a are mutually exclusive"); > if (nickname != NULL) { > if (portal != NULL) >- errx(1, "-n and -p and mutually exclusive"); >+ xo_errx(1, "-n and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-n and -t and mutually exclusive"); >+ xo_errx(1, "-n and -t and mutually exclusive"); > if (user != NULL) >- errx(1, "-n and -u and mutually exclusive"); >+ xo_errx(1, "-n and -u and mutually exclusive"); > if (secret != NULL) >- errx(1, "-n and -s and mutually exclusive"); >+ xo_errx(1, "-n and -s and mutually exclusive"); > } > > if (vflag != 0) >- errx(1, "-v cannot be used with -M"); >+ xo_errx(1, "-v cannot be used with -M"); > > } else if (Rflag != 0) { > if (user != NULL) >- errx(1, "-R and -u are mutually exclusive"); >+ xo_errx(1, "-R and -u are mutually exclusive"); > if (secret != NULL) >- errx(1, "-R and -s are mutually exclusive"); >+ xo_errx(1, "-R and -s are mutually exclusive"); > if (discovery_host != NULL) >- errx(1, "-R and -d are mutually exclusive"); >+ xo_errx(1, "-R and -d are mutually exclusive"); > > if (aflag != 0) { > if (portal != NULL) >- errx(1, "-a and -p and mutually exclusive"); >+ xo_errx(1, "-a and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-a and -t and mutually exclusive"); >+ xo_errx(1, "-a and -t and mutually exclusive"); > if (nickname != NULL) >- errx(1, "-a and -n and mutually exclusive"); >+ xo_errx(1, "-a and -n and mutually exclusive"); > } else if (nickname != NULL) { > if (portal != NULL) >- errx(1, "-n and -p and mutually exclusive"); >+ xo_errx(1, "-n and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-n and -t and mutually exclusive"); >+ xo_errx(1, "-n and -t and mutually exclusive"); > } else if (target == NULL && portal == NULL) { >- errx(1, "must specify either -a, -n, -t, or -p"); >+ xo_errx(1, "must specify either -a, -n, -t, or -p"); > } > > if (session_id != -1) >- errx(1, "-i cannot be used with -R"); >+ xo_errx(1, "-i cannot be used with -R"); > if (vflag != 0) >- errx(1, "-v cannot be used with -R"); >+ xo_errx(1, "-v cannot be used with -R"); > > } else { > assert(Lflag != 0); >- >+ > if (portal != NULL) >- errx(1, "-L and -p and mutually exclusive"); >+ xo_errx(1, "-L and -p and mutually exclusive"); > if (target != NULL) >- errx(1, "-L and -t and mutually exclusive"); >+ xo_errx(1, "-L and -t and mutually exclusive"); > if (user != NULL) >- errx(1, "-L and -u and mutually exclusive"); >+ xo_errx(1, "-L and -u and mutually exclusive"); > if (secret != NULL) >- errx(1, "-L and -s and mutually exclusive"); >+ xo_errx(1, "-L and -s and mutually exclusive"); > if (nickname != NULL) >- errx(1, "-L and -n and mutually exclusive"); >+ xo_errx(1, "-L and -n and mutually exclusive"); > if (discovery_host != NULL) >- errx(1, "-L and -d and mutually exclusive"); >+ xo_errx(1, "-L and -d and mutually exclusive"); > > if (session_id != -1) >- errx(1, "-i cannot be used with -L"); >+ xo_errx(1, "-i cannot be used with -L"); > } > > iscsi_fd = open(ISCSI_PATH, O_RDWR); >@@ -801,7 +867,7 @@ > errno = saved_errno; > } > if (iscsi_fd < 0) >- err(1, "failed to open %s", ISCSI_PATH); >+ xo_err(1, "failed to open %s", ISCSI_PATH); > > if (Aflag != 0 && aflag != 0) { > conf = conf_new_from_file(conf_path); >@@ -812,7 +878,7 @@ > conf = conf_new_from_file(conf_path); > targ = target_find(conf, nickname); > if (targ == NULL) >- errx(1, "target %s not found in %s", >+ xo_errx(1, "target %s not found in %s", > nickname, conf_path); > > if (Aflag != 0) >@@ -829,7 +895,7 @@ > } else { > if (Aflag != 0 && target != NULL) { > if (valid_iscsi_name(target) == false) >- errx(1, "invalid target name \"%s\"", target); >+ xo_errx(1, "invalid target name \"%s\"", target); > } > conf = conf_new(); > targ = target_new(conf); >@@ -854,12 +920,15 @@ > else > failed += kernel_list(iscsi_fd, targ, vflag); > } >- >+ > error = close(iscsi_fd); > if (error != 0) >- err(1, "close"); >- >+ xo_err(1, "close"); >+ > if (failed > 0) > return (1); >+ >+ xo_close_container("iscsi-information"); >+ xo_finish(); > return (0); > } >diff -dur /usr/src/usr.bin/iscsictl/periphs.c ./periphs.c >--- /usr/src/usr.bin/iscsictl/periphs.c 2015-03-06 08:54:51.814319000 +0100 >+++ ./periphs.c 2015-03-07 20:38:42.000000000 +0100 >@@ -58,6 +58,7 @@ > #include <cam/scsi/smp_all.h> > #include <cam/ata/ata_all.h> > #include <camlib.h> >+#include <libxo/xo.h> > > #include "iscsictl.h" > >@@ -70,10 +71,10 @@ > int skip_bus, skip_device; > > if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) { >- warn("couldn't open %s", XPT_DEVICE); >+ xo_warn("couldn't open %s", XPT_DEVICE); > return; > } >- >+ > /* > * First, iterate over the whole list to find the bus. > */ >@@ -89,7 +90,7 @@ > ccb.cdm.match_buf_len = bufsize; > ccb.cdm.matches = (struct dev_match_result *)malloc(bufsize); > if (ccb.cdm.matches == NULL) { >- warnx("can't malloc memory for matches"); >+ xo_warnx("can't malloc memory for matches"); > close(fd); > return; > } >@@ -105,23 +106,26 @@ > skip_bus = 1; > skip_device = 1; > >+ xo_open_list("lun"); > /* > * We do the ioctl multiple times if necessary, in case there are > * more than 100 nodes in the EDT. > */ > do { > if (ioctl(fd, CAMIOCOMMAND, &ccb) == -1) { >- warn("error sending CAMIOCOMMAND ioctl"); >+ xo_warn("error sending CAMIOCOMMAND ioctl"); > break; > } > > if ((ccb.ccb_h.status != CAM_REQ_CMP) > || ((ccb.cdm.status != CAM_DEV_MATCH_LAST) > && (ccb.cdm.status != CAM_DEV_MATCH_MORE))) { >- warnx("got CAM error %#x, CDM error %d\n", >+ xo_warnx("got CAM error %#x, CDM error %d\n", > ccb.ccb_h.status, ccb.cdm.status); > break; > } >+ >+ int lunNo=0; > > for (i = 0; i < ccb.cdm.num_matches; i++) { > switch (ccb.cdm.matches[i].type) { >@@ -166,9 +170,13 @@ > if (strcmp(periph_result->periph_name, "pass") == 0) > continue; > >- fprintf(stdout, "%s%d ", >+ xo_open_instance("lun"); >+ xo_emit("{e:id/%d}", lunNo); >+ xo_emit("{Vq:device/%s%d} ", > periph_result->periph_name, > periph_result->unit_number); >+ xo_close_instance("lun"); >+ lunNo++; > > break; > } >@@ -180,7 +188,8 @@ > > } while ((ccb.ccb_h.status == CAM_REQ_CMP) > && (ccb.cdm.status == CAM_DEV_MATCH_MORE)); >- >+ >+ xo_close_list("lun"); > close(fd); > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 198396
:
153967
|
153993
|
154027
|
154087
|
154090
|
154227