diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/iscsi/iscsitadm/main.c | 4 | ||||
-rw-r--r-- | usr/src/cmd/iscsi/iscsitgtd/isns_client.c | 10 | ||||
-rw-r--r-- | usr/src/cmd/iscsi/iscsitgtd/mgmt_modify.c | 13 | ||||
-rw-r--r-- | usr/src/cmd/iscsi/iscsitgtd/mgmt_remove.c | 14 | ||||
-rw-r--r-- | usr/src/lib/libiscsitgt/common/iscsitgt_impl.h | 3 |
5 files changed, 31 insertions, 13 deletions
diff --git a/usr/src/cmd/iscsi/iscsitadm/main.c b/usr/src/cmd/iscsi/iscsitadm/main.c index f279a0a1ea..a9fde81567 100644 --- a/usr/src/cmd/iscsi/iscsitadm/main.c +++ b/usr/src/cmd/iscsi/iscsitadm/main.c @@ -24,8 +24,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <stdlib.h> #include <stdio.h> #include <sys/types.h> @@ -1332,7 +1330,7 @@ listTpgt(int operandLen, char *operand[], cmdOptions_t *options) (void) printf("%s: %s\n", gettext("TPGT"), n1->x_value); n2 = NULL; addrs = 0; - while (n2 = tgt_node_next_child(n1, XML_ELEMENT_IPADDR, n2)) { + while (n2 = tgt_node_next(n1, XML_ELEMENT_IPADDR, n2)) { if (verbose == True) (void) printf("%s%s: %s\n", dospace(1), gettext("IP Address"), diff --git a/usr/src/cmd/iscsi/iscsitgtd/isns_client.c b/usr/src/cmd/iscsi/iscsitgtd/isns_client.c index 6be8ff4074..1e5e3c6596 100644 --- a/usr/src/cmd/iscsi/iscsitgtd/isns_client.c +++ b/usr/src/cmd/iscsi/iscsitgtd/isns_client.c @@ -144,7 +144,7 @@ append_tpgt(tgt_node_t *tgt, isns_pdu_t *cmd) { tgt_node_t *t, *x; tgt_node_t *pgt = NULL; - tgt_node_t *ip = NULL; + tgt_node_t *iplist = NULL; tgt_node_t *tpgt = NULL; ip_t eid; @@ -172,11 +172,11 @@ append_tpgt(tgt_node_t *tgt, isns_pdu_t *cmd) XML_ELEMENT_TPGT, tpgt)) != NULL) { if (strcmp(pgt->x_value, tpgt->x_value) != 0) continue; - if ((ip = tgt_node_next(tpgt, - XML_ELEMENT_IPADDR, NULL)) != NULL) + if ((iplist = tgt_node_next(tpgt, + XML_ELEMENT_IPADDRLIST, NULL)) != NULL) break; } - if (tpgt == NULL || ip == NULL) + if (tpgt == NULL || iplist == NULL) continue; if (isns_append_attr(cmd, ISNS_PG_TAG_ATTR_ID, ISNS_PG_TAG_SZ, NULL, @@ -185,7 +185,7 @@ append_tpgt(tgt_node_t *tgt, isns_pdu_t *cmd) } /* get ip-addr & port */ - for (x = tpgt->x_child; x; x = x->x_sibling) { + for (x = iplist->x_child; x; x = x->x_sibling) { if (get_ip_addr(x->x_value, &eid) < 0) continue; if (isns_append_attr(cmd, diff --git a/usr/src/cmd/iscsi/iscsitgtd/mgmt_modify.c b/usr/src/cmd/iscsi/iscsitgtd/mgmt_modify.c index c2d4bb6edb..13705daba9 100644 --- a/usr/src/cmd/iscsi/iscsitgtd/mgmt_modify.c +++ b/usr/src/cmd/iscsi/iscsitgtd/mgmt_modify.c @@ -679,6 +679,7 @@ modify_tpgt(tgt_node_t *x) char *name = NULL; char *ip_str = NULL; tgt_node_t *tnode = NULL; + tgt_node_t *list = NULL; (void) pthread_rwlock_wrlock(&targ_config_mutex); if (tgt_find_value_str(x, XML_ELEMENT_NAME, &name) == False) { @@ -702,7 +703,17 @@ modify_tpgt(tgt_node_t *x) xml_rtn_msg(&msg, ERR_TPGT_NOT_FOUND); goto error; } - if (modify_element(XML_ELEMENT_IPADDR, ip_str, tnode, MatchBoth) == + + if ((list = tgt_node_next(tnode, XML_ELEMENT_IPADDRLIST, NULL)) + == NULL) { + list = tgt_node_alloc(XML_ELEMENT_IPADDRLIST, String, ""); + if (list == NULL) { + xml_rtn_msg(&msg, ERR_NO_MEM); + goto error; + } + tgt_node_add(tnode, list); + } + if (modify_element(XML_ELEMENT_IPADDR, ip_str, list, MatchBoth) == False) { xml_rtn_msg(&msg, ERR_NO_MEM); goto error; diff --git a/usr/src/cmd/iscsi/iscsitgtd/mgmt_remove.c b/usr/src/cmd/iscsi/iscsitgtd/mgmt_remove.c index 6454e91581..4f223ae00d 100644 --- a/usr/src/cmd/iscsi/iscsitgtd/mgmt_remove.c +++ b/usr/src/cmd/iscsi/iscsitgtd/mgmt_remove.c @@ -332,7 +332,7 @@ remove_target(tgt_node_t *x, ucred_t *cred) } if ((list = tgt_node_next(targ, XML_ELEMENT_TPGTLIST, NULL)) == NULL) { - xml_rtn_msg(&msg, ERR_ACL_NOT_FOUND); + xml_rtn_msg(&msg, ERR_TPGT_NOT_FOUND); goto error; } c = tgt_node_alloc(XML_ELEMENT_TPGT, String, prop); @@ -448,6 +448,7 @@ remove_initiator(tgt_node_t *x) xml_rtn_msg(&msg, ERR_INTERNAL_ERROR); } + free(name); (void) pthread_rwlock_unlock(&targ_config_mutex); return (msg); } @@ -462,6 +463,7 @@ remove_tpgt(tgt_node_t *x) tgt_node_t *lnp = NULL; tgt_node_t *node = NULL; tgt_node_t *c = NULL; + tgt_node_t *list = NULL; Boolean_t change_made = False; (void) pthread_rwlock_wrlock(&targ_config_mutex); @@ -504,19 +506,27 @@ remove_tpgt(tgt_node_t *x) (void) pthread_rwlock_unlock(&targ_config_mutex); return (msg); } + if ((list = tgt_node_next(node, XML_ELEMENT_IPADDRLIST, NULL)) + == NULL) { + xml_rtn_msg(&msg, ERR_TPGT_NO_IPADDR); + goto error; + } c = tgt_node_alloc(XML_ELEMENT_IPADDR, String, prop); - if (tgt_node_remove(node, c, MatchBoth) == False) { + if (tgt_node_remove(list, c, MatchBoth) == False) { xml_rtn_msg(&msg, ERR_INVALID_IP); goto error; } tgt_node_free(c); free(prop); + if (list->x_child == NULL) + (void) tgt_node_remove(node, list, MatchName); change_made = True; } if ((change_made != True) && (tgt_find_value_str(x, XML_ELEMENT_ALL, &prop) == True)) { tgt_node_remove(main_config, node, MatchBoth); change_made = True; + free(prop); } if (change_made == True) { diff --git a/usr/src/lib/libiscsitgt/common/iscsitgt_impl.h b/usr/src/lib/libiscsitgt/common/iscsitgt_impl.h index 8c221b8a9e..32ac928189 100644 --- a/usr/src/lib/libiscsitgt/common/iscsitgt_impl.h +++ b/usr/src/lib/libiscsitgt/common/iscsitgt_impl.h @@ -27,8 +27,6 @@ #ifndef _ISCSITGT_IMPL_H #define _ISCSITGT_IMPL_H -#pragma ident "%Z%%M% %I% %E% SMI" - /* * Block comment which describes the contents of this file. */ @@ -106,6 +104,7 @@ typedef enum { #define XML_ELEMENT_INAME "iscsi-name" #define XML_ELEMENT_MAXRECV "maxrecv" #define XML_ELEMENT_IPADDR "ip-address" +#define XML_ELEMENT_IPADDRLIST "ip-address-list" #define XML_ELEMENT_ALL "all" #define XML_ELEMENT_VERBOSE "verbose" #define XML_ELEMENT_LIST "list" |