/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _ISNS_MGMT_H #define _ISNS_MGMT_H #ifdef __cplusplus extern "C" { #endif #include #include #define ISNS_DOOR_NAME "/var/run/isns_server_door" #define ISNS_ADMIN_WRITE_AUTH "solaris.isnsmgr.write" #define ISNS_MAX_LABEL_LEN 50 #define ISNS_MAX_NAME_LEN 256 #define DOOR_DEFAULT_BUF_SIZE 4096 #define MAX_DATA_COUNT 100 /* macro */ #define XMLNCMP(x, y) (xmlStrncasecmp(xmlTextReaderConstName(x), \ (const xmlChar *)y, xmlStrlen(xmlTextReaderConstName(x)))) #define XMLNCMPVAL(x, y) (xmlStrncasecmp(xmlTextReaderConstValue(x), \ (const xmlChar *)y, xmlStrlen(xmlTextReaderConstName(x)))) /* operation element names */ #define ISNSREQUEST "isnsRequest" #define ISNSRESPONSE "isnsResponse" #define RESULT "result" #define GET "get" #define ENUMERATE "enumerate" #define GETASSOCIATED "getAssociated" #define CREATEMODIFY "createModify" #define DELETE "delete" /* object element names */ #define ISNSOBJECT "isnsObject" #define ASSOCIATION "Association" #define ISNSSERVER "isnsServer" #define NODEOBJECT "Node" #define DDOBJECT "DiscoveryDomain" #define DDSETOBJECT "DiscoveryDomainSet" #define DDOBJECTMEMBER "DiscoveryDomainMember" #define DDSETOBJECTMEMBER "DiscoveryDomainSetMember" /* iSNS NODE attribute element names - Network Entity */ #define XMLNSATTR "xmlns" #define XMLNSATTRVAL "http://www.sun.com/schema/isnsmanagement" /* iSNS NODE attribute element names - Network Entity */ #define NETWORKENTITY "Network_Entity" #define ENTITYID "Entity_ID" #define ENTITYPROTOCOL "Entity_Protocol" #define MANAGEMENTIPADDR "Management_IP_Addr" #define ENTITYREGTIMESTAMP "Entity_Reg_Timestamp" #define PROTOCOLVERSIONRANGE "Protocol_Version_Range" #define PROTOCOLMINVERSION "minVersion" #define PROTOCOLMAXVERSION "maxVersion" #define REGISTRATIONPERIOD "Registration_Period" /* iSNS NODE attribute element names - Portal element names */ #define SCNSUBSCRIPTION "SCN_Subscription" #define SCNINITSELFONLY "Initiator and Self information only" #define SCNTARGETSELFONLY "Target and Self information only" #define SCNMGMTREG "Management Registration/SCN" #define SCNOBJECTREMOVED "Object Removed" #define SCNOBJECTADDED "Object Added" #define SCNOBJECTUPDATED "Object Updated" #define SCNMEMBERREMOVED "DD/DD-Set Member Removed" #define SCNMEMBERADDED "DD/DD-Set Member Added" #define PORTAL "Portal" #define REGISTRATIONPERIOD "Registration_Period" #define IPADDR "IP_Addr" #define UDPTCPPORT "UDP_TCP_port" #define PORTTYPE "Port_Type" #define UDPPORT "UDP" #define TCPPORT "TCP" #define PORTNUMBER "Port_Number" #define GROUPTAG "Group_Tag" #define SYMBOLICNAME "Symbolic_Name" #define ESIINTERVAL "ESI_Interval" #define ESIPORT "ESI_Port" #define SCNPORT "SCN_Port" /* iSNS DD set state element */ #define ENABLEDELEM "Enabled" /* iSNS DD Boot List element */ #define BOOTLISTENABLEDELEM "BootList_Enabled" /* iSNS server config elements */ #define DATASTORELOCATION "datastoreLocation" #define ESIRETRYTHRESHOLD "esiRetryThreshold" #define DEFAULTDDDDSETENABLED "defaultDD_DDsetEnabled" #define MANAGEMENTSCNENABLED "managementSCNEnabled" #define CANCONTROLNODEMODIFYDDDDSET "canControlNodeModifyDD_DDset" #define CANINTIATORNODEMODIFYDDDDSET "canIntiatorNodeModifyDD_DDset" #define CANTARGETNODEMODIFYDDDDSET "canTargetNodeModifyDD_DDset" #define CONTROLNODENAME "controlNodeName" /* object element type names */ #define ISNSOBJECTTYPE "isnsObjectType" #define ASSOCIATIONTYPE "AssociationType" /* attribute names */ #define NAMEATTR "name" #define IDATTR "id" #define TYPEATTR "type" #define ALIASATTR "alias" #define NODENAMEATTR "NodeName" #define DDNAMEATTR "DDName" #define DDSETNAMEATTR "DDsetName" #define EMPTYSTR "" /* Node type value names */ #define INITIATORTYPE "Initiator" #define TARGETTYPE "Target" #define CONTROLNODETYPE "Control" #define CONTROLNODETARGETTYPE "Control/Target" #define CONTROLNODEINITIATORTYPE "Control/Initiator" #define UNKNOWNTYPE "Unknown" /* response related element names. */ #define RESULTELEMENT "result" #define STATUSELEMENT "status" #define MESSAGEELEMENT "message" /* response related element names. */ #define XMLTRUE "true" #define XMLFALSE "false" typedef enum { get_op = 100, enumerate_op, getAssociated_op, createModify_op, delete_op } request_op; typedef enum { member_to_container, container_to_member } association_req_t; typedef struct { char *op_str; request_op op_id; } op_table_entry_t; typedef enum { Node = 100, DiscoveryDomain, DiscoveryDomainSet, DiscoveryDomainMember, DiscoveryDomainSetMember, ServerConfig } object_type; typedef struct { char *obj_str; object_type obj_id; } obj_table_entry_t; typedef struct thr_elem { pthread_t thr_id; xmlChar *doc; struct thr_elem *next; } thr_elem_t; /* * request entry with interger and string value */ typedef struct { request_op op; object_type obj; } operation_t; typedef struct { xmlChar *container; xmlChar *member; } assoc_pair_t; typedef struct { xmlChar *name; uint32_t *id; boolean_t *enabled; } object_attrlist_t; typedef union { xmlChar **data; assoc_pair_t **pair; object_attrlist_t **attrlist; } req_data_ut; typedef struct { operation_t op_info; association_req_t assoc_req; uint_t count; req_data_ut req_data; } request_t; #ifdef __cplusplus } #endif #endif /* _ISNS_MGMT_H */