1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21/* 22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26/* 27 * 28 * Description 29 * imaPlugin.h: interface for the iScsiPlugin class. 30 * 31 * License: 32 * The contents of this file are subject to the SNIA Public License 33 * Version 1.0 (the "License"); you may not use this file except in 34 * compliance with the License. You may obtain a copy of the License at 35 * 36 * /http://www.snia.org/English/Resources/Code/OpenSource.html 37 * 38 * Software distributed under the License is distributed on an "AS IS" 39 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 40 * the License for the specific language governing rights and limitations 41 * under the License. 42 * 43 * The Original Code is SNIA HBA API and IMA general header file 44 * 45 * The Initial Developer of the Original Code is: 46 * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com) 47 * David Dillard VERITAS Software david.dillard@veritas.com 48 * 49 * Contributor(s): 50 * Jeff Ding, Adaptec, Inc. (jding@corp.adaptec.com) 51 * 52 ******************************************************************************* 53 * 54 * Changes: 55 * 09/24/2003 Initial Draft 56 * (for other changes... see the CVS logs) 57 * 12/15/2003 corrected the defined parameter in IMA_SetPhbaIsnsDiscovery(). 58 * lower case the computer name as iscsi name in IMA_GenerateNodeName(). 59 ******************************************************************************/ 60 61#ifdef __cplusplus 62extern "C" { 63#endif 64 65#ifndef IMAPLUGIN_H 66#define IMAPLUGIN_H 67 68typedef IMA_STATUS (* Initialize)( 69 IMA_UINT32 pluginOid 70 ); 71 72typedef void (* TerminateFn)(); 73 74 75typedef IMA_STATUS (* IMA_GetPluginPropertiesFn)( 76 IMA_OID pluginOid, 77 IMA_PLUGIN_PROPERTIES *pProps 78); 79 80 81typedef IMA_STATUS (* IMA_GetSharedNodeOidFn)( 82 IMA_OID *pSharedNodeId 83); 84 85 86typedef IMA_STATUS (* IMA_GetNodePropertiesFn)( 87 IMA_OID nodeOid, 88 IMA_NODE_PROPERTIES *pProps 89); 90 91 92typedef IMA_STATUS (* IMA_SetNodeNameFn)( 93 IMA_OID nodeOid, 94 const IMA_NODE_NAME newName 95); 96 97 98typedef IMA_STATUS (* IMA_GenerateNodeNameFn)( 99 IMA_NODE_NAME generatedname 100); 101 102 103typedef IMA_STATUS (* IMA_SetNodeAliasFn)( 104 IMA_OID nodeOid, 105 const IMA_NODE_ALIAS newAlias 106); 107 108 109typedef IMA_STATUS (* IMA_GetLhbaOidListFn)( 110 IMA_OID_LIST **ppList 111); 112 113typedef IMA_STATUS (* IMA_GetLhbaPropertiesFn)( 114 IMA_OID lhbaId, 115 IMA_LHBA_PROPERTIES *pProps 116); 117 118 119typedef IMA_STATUS (* IMA_GetPhbaOidListFn)( 120 IMA_OID_LIST **ppList 121); 122 123 124typedef IMA_STATUS (* IMA_GetPhbaPropertiesFn)( 125 IMA_OID phbaId, 126 IMA_PHBA_PROPERTIES *pProps 127); 128 129 130typedef IMA_STATUS (* IMA_GetNonSharedNodeOidListFn)( 131 IMA_OID_LIST **ppList 132 ); 133 134 135typedef IMA_STATUS (* IMA_GetFirstBurstLengthPropertiesFn)( 136 IMA_OID Oid, 137 IMA_MIN_MAX_VALUE *pProps 138 ); 139 140 141typedef IMA_STATUS (* IMA_GetMaxBurstLengthPropertiesFn)( 142 IMA_OID Oid, 143 IMA_MIN_MAX_VALUE *pProps 144 ); 145 146 147typedef IMA_STATUS (* IMA_GetMaxRecvDataSegmentLengthPropertiesFn)( 148 IMA_OID Oid, 149 IMA_MIN_MAX_VALUE *pProps 150 ); 151 152 153/*---------------------------------------------*/ 154typedef IMA_STATUS (* IMA_PluginIOCtlFn)( 155 IMA_OID pluginOid, 156 IMA_UINT command, 157 const void *pInputBuffer, 158 IMA_UINT inputBufferLength, 159 void *pOutputBuffer, 160 IMA_UINT *pOutputBufferLength 161); 162 163 164typedef IMA_STATUS (* IMA_GetNetworkPortalOidListFn)( 165 IMA_OID lhbaId, 166 IMA_OID_LIST **ppList 167); 168 169 170typedef IMA_STATUS (* IMA_SetFirstBurstLengthFn)( 171 IMA_OID lhbaId, 172 IMA_UINT firstBurstLength 173); 174 175typedef IMA_STATUS (* IMA_SetMaxBurstLengthFn)( 176 IMA_OID lhbaId, 177 IMA_UINT maxBurstLength 178); 179 180typedef IMA_STATUS (* IMA_SetMaxRecvDataSegmentLengthFn)( 181 IMA_OID lhbaId, 182 IMA_UINT maxRecvDataSegmentLength 183); 184 185typedef IMA_STATUS (* IMA_GetMaxConnectionsPropertiesFn)( 186 IMA_OID Oid, 187 IMA_MIN_MAX_VALUE *pProps 188); 189 190typedef IMA_STATUS (* IMA_SetMaxConnectionsFn)( 191 IMA_OID lhbaId, 192 IMA_UINT maxConnections 193); 194 195typedef IMA_STATUS (* IMA_GetDefaultTime2RetainPropertiesFn)( 196 IMA_OID lhbaId, 197 IMA_MIN_MAX_VALUE *pProps 198); 199 200typedef IMA_STATUS (* IMA_SetDefaultTime2RetainFn)( 201 IMA_OID lhbaId, 202 IMA_UINT defaultTime2Retain 203); 204 205typedef IMA_STATUS (* IMA_GetDefaultTime2WaitPropertiesFn)( 206 IMA_OID lhbaId, 207 IMA_MIN_MAX_VALUE *pProps 208); 209 210typedef IMA_STATUS (* IMA_SetDefaultTime2WaitFn)( 211 IMA_OID lhbaId, 212 IMA_UINT defaultTime2Wait 213); 214 215typedef IMA_STATUS (* IMA_GetMaxOutstandingR2TPropertiesFn)( 216 IMA_OID Oid, 217 IMA_MIN_MAX_VALUE *pProps 218); 219 220typedef IMA_STATUS (* IMA_SetMaxOutstandingR2TFn)( 221 IMA_OID lhbaId, 222 IMA_UINT maxOutstandingR2T 223); 224 225typedef IMA_STATUS (* IMA_GetErrorRecoveryLevelPropertiesFn)( 226 IMA_OID Oid, 227 IMA_MIN_MAX_VALUE *pProps 228); 229 230typedef IMA_STATUS (* IMA_SetErrorRecoveryLevelFn)( 231 IMA_OID Oid, 232 IMA_UINT errorRecoveryLevel 233); 234 235typedef IMA_STATUS (* IMA_GetInitialR2TPropertiesFn)( 236 IMA_OID Oid, 237 IMA_BOOL_VALUE *pProps 238); 239 240typedef IMA_STATUS (* IMA_SetInitialR2TFn)( 241 IMA_OID Oid, 242 IMA_BOOL initialR2T 243); 244 245typedef IMA_STATUS (* IMA_GetImmediateDataPropertiesFn)( 246 IMA_OID Oid, 247 IMA_BOOL_VALUE *pProps 248); 249 250typedef IMA_STATUS (* IMA_SetImmediateDataFn)( 251 IMA_OID Oid, 252 IMA_BOOL immediateData 253); 254 255typedef IMA_STATUS (* IMA_GetDataPduInOrderPropertiesFn)( 256 IMA_OID Oid, 257 IMA_BOOL_VALUE *pProps 258); 259 260typedef IMA_STATUS (* IMA_SetDataPduInOrderFn)( 261 IMA_OID Oid, 262 IMA_BOOL dataPduInOrder 263); 264 265typedef IMA_STATUS (* IMA_GetDataSequenceInOrderPropertiesFn)( 266 IMA_OID Oid, 267 IMA_BOOL_VALUE *pProps 268); 269 270typedef IMA_STATUS (* IMA_SetDataSequenceInOrderFn)( 271 IMA_OID Oid, 272 IMA_BOOL dataSequenceInOrder 273); 274 275typedef IMA_STATUS (* IMA_SetStatisticsCollectionFn)( 276 IMA_OID Oid, 277 IMA_BOOL enableStatisticsCollection 278); 279 280typedef IMA_STATUS (* IMA_GetNetworkPortStatusFn)( 281 IMA_OID portOid, 282 IMA_NETWORK_PORT_STATUS *pStatus 283); 284 285typedef IMA_STATUS (* IMA_GetTargetOidListFn)( 286 IMA_OID Oid, 287 IMA_OID_LIST **ppList 288); 289 290typedef IMA_STATUS (* IMA_RemoveStaleDataFn)( 291 IMA_OID lhbaId 292); 293 294typedef IMA_STATUS (* IMA_SetIsnsDiscoveryFn)( 295 IMA_OID phbaId, 296 IMA_BOOL enableIsnsDiscovery, 297 IMA_ISNS_DISCOVERY_METHOD discoveryMethod, 298 const IMA_HOST_ID *iSnsHost 299); 300 301typedef IMA_STATUS (* IMA_SetSlpDiscoveryFn)( 302 IMA_OID phbaId, 303 IMA_BOOL enableSlpDiscovery 304); 305 306typedef IMA_STATUS (* IMA_SetStaticDiscoveryFn)( 307 IMA_OID phbaId, 308 IMA_BOOL enableStaticDiscovery 309); 310 311typedef IMA_STATUS (* IMA_SetSendTargetsDiscoveryFn)( 312 IMA_OID phbaId, 313 IMA_BOOL enableSendTargetsDiscovery 314); 315 316typedef IMA_STATUS (* IMA_AddPhbaStaticDiscoveryTargetFn)( 317 IMA_OID phbaOid, 318 const IMA_TARGET_ADDRESS targetAddress, 319 IMA_OID_LIST **pTargetOidList 320); 321 322typedef IMA_STATUS (* IMA_RemovePhbaStaticDiscoveryTargetFn)( 323 IMA_OID phbaOid, 324 IMA_OID targetOid 325); 326 327typedef IMA_STATUS (* IMA_GetPnpOidListFn)( 328 IMA_OID Oid, 329 IMA_OID_LIST **ppList 330); 331 332typedef IMA_STATUS (* IMA_GetPhbaDownloadPropertiesFn)( 333 IMA_OID phbaId, 334 IMA_PHBA_DOWNLOAD_PROPERTIES *pProps 335); 336 337typedef IMA_STATUS (* IMA_IsPhbaDownloadFileFn)( 338 IMA_OID phbaId, 339 const IMA_WCHAR *pFileName, 340 IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES *pProps 341); 342 343typedef IMA_STATUS (* IMA_PhbaDownloadFn)( 344 IMA_OID phbaId, 345 IMA_PHBA_DOWNLOAD_IMAGE_TYPE imageType, 346 const IMA_WCHAR *pFileName 347); 348 349typedef IMA_STATUS (* IMA_GetNetworkPortalPropertiesFn)( 350 IMA_OID networkPortalId, 351 IMA_NETWORK_PORTAL_PROPERTIES *pProps 352); 353 354typedef IMA_STATUS (* IMA_SetNetworkPortalIpAddressFn)( 355 IMA_OID networkPortalId, 356 const IMA_IP_ADDRESS NewIpAddress 357); 358 359typedef IMA_STATUS (* IMA_GetLnpOidListFn)( 360 IMA_OID_LIST **ppList 361); 362 363typedef IMA_STATUS (* IMA_GetLnpPropertiesFn)( 364 IMA_OID lnpId, 365 IMA_LNP_PROPERTIES *pProps 366); 367 368typedef IMA_STATUS (* IMA_GetPnpPropertiesFn)( 369 IMA_OID pnpId, 370 IMA_PNP_PROPERTIES *pProps 371); 372 373typedef IMA_STATUS (* IMA_GetPnpStatisticsFn)( 374 IMA_OID pnpId, 375 IMA_PNP_STATISTICS *pStats 376); 377 378typedef IMA_STATUS (* IMA_GetConnectionPropertiesFn)( 379 IMA_OID connectionId, 380 IMA_CONNECTION_PROPERTIES *pProps 381); 382 383typedef IMA_STATUS (* IMA_GetTargetPropertiesFn)( 384 IMA_OID targetId, 385 IMA_TARGET_PROPERTIES *pProps 386); 387 388typedef IMA_STATUS (* IMA_GetSessionPropertiesFn)( 389 IMA_OID sessionId, 390 IMA_SESSION_PROPERTIES *pProps 391); 392 393typedef IMA_STATUS (* IMA_GetTargetErrorStatisticsFn)( 394 IMA_OID targetId, 395 IMA_TARGET_ERROR_STATISTICS *pStats 396); 397 398typedef IMA_STATUS (* IMA_GetLuOidListFn)( 399 IMA_OID Oid, 400 IMA_OID_LIST **ppList 401); 402 403typedef IMA_STATUS (* IMA_GetLuOidFn)( 404 IMA_OID targetId, 405 IMA_UINT64 lun, 406 IMA_OID *pluId 407); 408 409typedef IMA_STATUS (* IMA_GetLuPropertiesFn)( 410 IMA_OID luId, 411 IMA_LU_PROPERTIES *pProps 412); 413 414typedef IMA_STATUS (* IMA_GetStatisticsPropertiesFn)( 415 IMA_OID oid, 416 IMA_STATISTICS_PROPERTIES *pProps 417); 418 419typedef IMA_STATUS (* IMA_GetDeviceStatisticsFn)( 420 IMA_OID luId, 421 IMA_DEVICE_STATISTICS *pStats 422); 423 424typedef IMA_STATUS (* IMA_LuInquiryFn)( 425 IMA_OID deviceId, 426 IMA_BOOL evpd, 427 IMA_BOOL cmddt, 428 IMA_BYTE pageCode, 429 430 IMA_BYTE *pOutputBuffer, 431 IMA_UINT *pOutputBufferLength, 432 433 IMA_BYTE *pSenseBuffer, 434 IMA_UINT *pSenseBufferLength 435); 436 437typedef IMA_STATUS (* IMA_LuReadCapacityFn)( 438 IMA_OID deviceId, 439 IMA_UINT cdbLength, 440 IMA_BYTE *pOutputBuffer, 441 IMA_UINT *pOutputBufferLength, 442 443 IMA_BYTE *pSenseBuffer, 444 IMA_UINT *pSenseBufferLength 445); 446 447typedef IMA_STATUS (* IMA_LuReportLunsFn)( 448 IMA_OID deviceId, 449 IMA_BOOL sendToWellKnownLun, 450 IMA_BYTE selectReport, 451 452 IMA_BYTE *pOutputBuffer, 453 IMA_UINT *pOutputBufferLength, 454 455 IMA_BYTE *pSenseBuffer, 456 IMA_UINT *pSenseBufferLength 457); 458 459typedef IMA_STATUS (* IMA_ExposeLuFn)( 460 IMA_OID luId 461); 462 463typedef IMA_STATUS (* IMA_UnexposeLuFn)( 464 IMA_OID luId 465); 466 467typedef IMA_STATUS (* IMA_GetPhbaStatusFn)( 468 IMA_OID hbaId, 469 IMA_PHBA_STATUS *pStatus 470); 471 472typedef IMA_STATUS (* IMA_RegisterForObjectVisibilityChangesFn) ( 473 IMA_OBJECT_VISIBILITY_FN pClientFn 474); 475 476typedef IMA_STATUS (* IMA_DeregisterForObjectVisibilityChangesFn) ( 477 IMA_OBJECT_VISIBILITY_FN pClientFn 478); 479 480typedef IMA_STATUS (* IMA_RegisterForObjectPropertyChangesFn) ( 481 IMA_OBJECT_PROPERTY_FN pClientFn 482); 483 484typedef IMA_STATUS (* IMA_DeregisterForObjectPropertyChangesFn) ( 485 IMA_OBJECT_PROPERTY_FN pClientFn 486); 487 488 489typedef IMA_STATUS (* IMA_GetAddressKeyPropertiesFn)( 490 IMA_OID targetOid, 491 IMA_ADDRESS_KEY_PROPERTIES **ppProps 492); 493 494typedef IMA_STATUS (* IMA_GetIpPropertiesFn)( 495 IMA_OID oid, 496 IMA_IP_PROPERTIES *pProps 497); 498 499typedef IMA_STATUS (* IMA_SetIpConfigMethodFn)( 500 IMA_OID oid, 501 IMA_BOOL enableDhcpIpConfiguration 502); 503 504typedef IMA_STATUS (* IMA_SetSubnetMaskFn)( 505 IMA_OID oid, 506 IMA_IP_ADDRESS subnetMask 507); 508 509typedef IMA_STATUS (* IMA_SetDnsServerAddressFn)( 510 IMA_OID oid, 511 const IMA_IP_ADDRESS *primaryDnsServerAddress, 512 const IMA_IP_ADDRESS *alternateDnsServerAddress 513); 514 515typedef IMA_STATUS (* IMA_SetDefaultGatewayFn)( 516 IMA_OID oid, 517 IMA_IP_ADDRESS defaultGateway 518); 519 520typedef IMA_STATUS (* IMA_GetSupportedAuthMethodsFn)( 521 IMA_OID lhbaOid, 522 IMA_BOOL getSettableMethods, 523 IMA_UINT *pMethodCount, 524 IMA_AUTHMETHOD *pMethodList 525); 526 527typedef IMA_STATUS (* IMA_GetInUseInitiatorAuthMethodsFn)( 528 IMA_OID lhbaOid, 529 IMA_UINT *pMethodCount, 530 IMA_AUTHMETHOD *pMethodList 531); 532 533typedef IMA_STATUS (* IMA_GetInitiatorAuthParmsFn)( 534 IMA_OID lhbaOid, 535 IMA_AUTHMETHOD method, 536 IMA_INITIATOR_AUTHPARMS *pParms 537); 538 539typedef IMA_STATUS (* IMA_SetInitiatorAuthMethodsFn)( 540 IMA_OID lhbaOid, 541 IMA_UINT methodCount, 542 const IMA_AUTHMETHOD *pMethodList 543); 544 545typedef IMA_STATUS (* IMA_SetInitiatorAuthParmsFn)( 546 IMA_OID lhbaOid, 547 IMA_AUTHMETHOD method, 548 const IMA_INITIATOR_AUTHPARMS *pParms 549); 550 551typedef IMA_STATUS (* IMA_FreeMemoryFn)( 552 void *pMemory 553); 554 555typedef IMA_STATUS (* IMA_GetStaticDiscoveryTargetOidListFn)( 556 IMA_OID oid, 557 IMA_OID_LIST **ppList 558); 559 560typedef IMA_STATUS (* IMA_GetDiscoveryPropertiesFn)( 561 IMA_OID oid, 562 IMA_DISCOVERY_PROPERTIES *pProps 563); 564 565typedef IMA_STATUS (* IMA_AddDiscoveryAddressFn)( 566 IMA_OID oid, 567 const IMA_TARGET_ADDRESS discoveryAddress, 568 IMA_OID *pDiscoveryAddressOid 569); 570 571typedef IMA_STATUS (* IMA_AddStaticDiscoveryTargetFn)( 572 IMA_OID oid, 573 const IMA_STATIC_DISCOVERY_TARGET staticDiscoveryTarget, 574 IMA_OID *pStaticDiscoveryTargetOid 575); 576 577typedef IMA_STATUS (* IMA_RemoveStaticDiscoveryTargetFn)( 578 IMA_OID oid 579); 580 581typedef IMA_STATUS (* IMA_GetStaticDiscoveryTargetPropertiesFn)( 582 IMA_OID staticDiscoveryTargetOid, 583 IMA_STATIC_DISCOVERY_TARGET_PROPERTIES *pProps 584); 585 586typedef IMA_STATUS (* IMA_GetDiscoveryAddressOidListFn) ( 587 IMA_OID Oid, 588 IMA_OID_LIST **ppList 589); 590 591typedef IMA_STATUS (* IMA_GetSessionOidListFn) ( 592 IMA_OID Oid, 593 IMA_OID_LIST **ppList 594); 595 596typedef IMA_STATUS (* IMA_GetConnectionOidListFn) ( 597 IMA_OID Oid, 598 IMA_OID_LIST **ppList 599); 600 601typedef IMA_STATUS (* IMA_GetDiscoveryAddressPropertiesFn) ( 602 IMA_OID discoveryAddressOid, 603 IMA_DISCOVERY_ADDRESS_PROPERTIES *pProps 604); 605 606typedef IMA_STATUS (* IMA_RemoveDiscoveryAddressFn) ( 607 IMA_OID discoveryAddressOid 608); 609 610typedef IMA_STATUS (* IMA_GetIpsecPropertiesFn) ( 611 IMA_OID oid, 612 IMA_IPSEC_PROPERTIES *pProps 613); 614 615typedef IMA_STATUS (* IMA_GetAddressKeysFn) ( 616 IMA_OID targetOid, 617 IMA_ADDRESS_KEYS **ppKeys 618); 619 620typedef IMA_STATUS (* QIMA_SetUpdateIntervalFn)( 621 IMA_OID pluginOid, 622 time_t interval 623); 624 625typedef IMA_STATUS (* IMA_CommitHbaParametersFn)( 626 IMA_OID oid, IMA_COMMIT_LEVEL commitLevel 627); 628 629typedef IMA_STATUS (* SUN_IMA_GetTunablePropertiesFn) ( 630 IMA_OID oid, 631 ISCSI_TUNABLE_PARAM *param 632); 633 634typedef IMA_STATUS (* SUN_IMA_SetTunablePropertiesFn) ( 635 IMA_OID oid, 636 ISCSI_TUNABLE_PARAM *param 637); 638 639#endif 640 641#ifdef __cplusplus 642} 643#endif 644 645