VMware_ESXi/ESXi7.0/readme.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
 
                    ============================
                    R E A D M E N O T E S
                    ============================
        Marvell- QLogic FastLinQ PowerKit for Windows, Linux and ESXi
            Marvell Semiconductor Inc, Copyright (c) 2021,
                        All rights reserved.
 
 
 
 
 
 
                         
==================
Table of Contents
==================
 
    [1]. Introduction
    [2]. Prerequisites
    [3]. Scope
    [4]. Limitation
    [5]. Installation
    [6]. UnInstallation
    [7]. Executing Cmdlets
     
        7.(a) Executing Cmdlets on Local and Remote Host through RPC and CIM Session:
        -----------------------------------------------------------------------------
            [1]. Executing Cmdlets on [Local Host System]:
            ----------------------------------------------
                a] [Local Windows Host System]
             
            [2]. Executing Cmdlets on [Remote Host System]:
            ----------------------------------------------
                i) Connecting Remote Host System through RPC (Connect-QLGCHost):
                ----------------------------------------------------------------
             
                    a] [Local Windows Host System] --> [Remote Windows Host System]
                    b] [Local Windows Host System] --> [Remote Linux Host System]
                     
                ii) Connecting Remote Host System through CIM Session:
                -----------------------------------------------------
             
                    a] [Local Windows Host System] --> [Remote Windows Host System]
                    b] [Local Windows Host System] --> [Remote Linux Host System]
                    c] [Local Windows Host System] --> [Remote ESXi Host System]
             
        7.(b) Firmware Upgrade Operation:
        ---------------------------------
         
    [8]. Steps to use PowerShell Cmdlets with ansible
    [9]. Available Cmdlets and Description
    [10]. Known Issues
    [11]. Third Party Software License
 
 
 
     
================
1. Introduction:
================
 
QLogic/Marvell FastLinQ PowerKit is a PowerShell kit for managing QLogic/Marvell 34xx/84xx/45xxx family of adapters using PowerShell Cmdlets.
 
The QLogic FastLinQ PowerKit consists of the following two components.
 
    a] WMIv2, OMI provider and qlgcfastlinq ESXi Provider for Windows, Linux and ESXi respectively.
    b] PowerShell Cmdlets for managing QLogic FastLinQ 34xx/84xx/45xxx adapter family.
     
 
     
================
2. Prerequisites:
================
     
    a] WMIv2/OMI/qlgcfastlinq ESXi provider or QLNX-Agent for Windows/Linux/ESXi is installed
        properly on the host system with QLogic FastLinQ 34xx/84xx/45xxx adapter family that is to be managed by the FastLinQ Cmdlets.
         
    b] QLogic FastLinQ PowerKit be installed properly on the Windows system from which you plan to manage the local/remote
        Windows, Linux and ESXi host system with QLogic FastLinQ 34xx/84xx/45xxx adapter family.
         
    c] Appropriate device driver for the QLogic NIC is to be installed on the host system that is to be managed by the QLogic FastLinQ PowerKit.
         
    d] OmiServer must be installed prior to installing the OMI provider on host Linux systems.
         
    e] For managing iSCSI on Linux hosts, open-iscsi and sg utilities are required to be installed on the Linux host.
         
    f] Microsoft iSCSI initiator be installed on the Windows host server.
         
    g] On the Windows machine where the PowerKit is getting installed, the QLNX-Agent version MUST be versioned 4.111.1000.79 or higher.
 
 
     
=========
3. Scope:
=========
 
        a] Windows:
        -----------
        -> Supported Operating Systems for the WMIv2 provider or the QLogic FastLinQ PowerKit as follows.
 
            # Windows Server 2012
            # Windows Server 2012 R2
            # Windows Server 2016
            # Windows Server 2019 [Standard/Data center]
             
            # Windows Server Core 2016
            # Windows Server Core 2019
     
                 
        b] Linux:
        ---------
        -> Supported Operating Systems for the OMI provider and OMI server/CIMOM as follows.
 
            # All Linux distributions that OMI server/CIMOM is supported.
            # Please refer to the following link for further details on OMI server/CIMOM:
            https://github.com/Microsoft/omi
            (or)
            https://collaboration.opengroup.org/omi/
         
         
        c] VMware-ESXi:
        ---------------
        -> Supported Operating Systems for qlgcfastlinq VMware ESXi provider and SFCB server/CIMOM as follows.
         
            # VMware ESXi_5.5
            # VMware ESXi_6.0
            # VMware ESXi_6.5
            # VMware ESXi_6.7
            # VMware ESXi_7.0
 
 
             
==============
4. Limitation:
==============
 
    1]. Firewall exceptions need to be made for remote host system management using Cmdlets.
 
 
     
================
5. Installation:
================
 
    1. Windows:
    -----------
 
    Off-line installation through Installer files:
    ---------------------------------------------
    You can install the QCC PowerKit on a Windows OS either offline using the
    installer files, or online using the PowerShell Gallery. Both methods are described
    in the following sections.
             
        If you have a previous version of the QCC PowerKit, uninstall it before installing
        the latest version.
         
            -> To see if you have a previous version installed, issue the PowerShell
            Get-QLGCAdapter command.
             
            -> To view the currently installed version of QCC PowerKit (on the local
            Windows system), issue the PowerShell Get-AppxPackage -Name
            “QLGCProvider” command (see the output's Version line) or the
            Get-QLGCManagedLocalHost command (see the output's ProviderVersion
            line).
             
            -> If you are connecting to a remote server (where QCC PowerKit is installed),
            issue the Get-QLGCManagedLocalHost -CimSession $Session command
            (see the output's ProviderVersion line) to see the version of QCC PowerKit
            installed on that remote server.
     
     
    To install the QCC PowerKit in a Windows OS:
     
    a]. Copy the QCC PowerKit files to the Windows host.
    b]. Open a PowerShell prompt as an administrator.
    c]. Navigate to the directory where you copied the PowerKit files.
    d]. Issue one of the following commands in a New Power-shell prompt session:
 
    Method 1: install the cmdlets, WMIv2 Provider and WinRM/Posh_SSH/REST server with user prompts:
    ------------------------------------------------------------------------------------------------
    -> Issue the following command:
     
    # .\InstallFastLinqPowerKit.ps1
     
    -> You are prompted to install the following configuration/modules.
    Select Y (yes) or N (no). The default is Y (Yes).
        - WinRM configuration
        - Posh_SSH module
        - REST server
             
    Method 2: install only the cmdlets and the WMIv2 Provider in silentmode (without user prompts):
    -----------------------------------------------------------------------------------------------
    -> Issue the following command:
         
    # .\InstallFastLinqPowerKit.ps1 -ConfigureWinRM:$false -InstallPoshSSHModule:$false -InstallRESTServer:$false
     
    For Method-1, you are prompted to install the REST server. This server
    allows you to issue PowerShell cmdlets through REST requests.
        To install the REST server:
        -> At the prompt, enter either http or https.
        -> At the prompt, enter the HTTP or HTTPs port you want to user for the REST server (the default is 7777).
 
    -> Start typing Get-QLGC, and then press the TAB key.
    The Get-QLGCAdapter cmdlet should auto-populate.
    -> Issue the following command to confirm that the cmdlets are working properly: Get-QLGCAdapter
     
    -> (if required) Load the new WMI Provider by one of the following methods:
      From the Services Window Panel, restart WMI.
     From the Task Manager Window, end all the old processes named WMI Provider Host.
 
             
        On-line installation through PowerShell Gallery:
        -----------------------------------------------
         
        -> The user can install the QLogicFastLinQPowerKit through online from the following PowerShell Gallery website.
         
            https://www.powershellgallery.com/packages/QLogicFastLinQPowerKit
         
        -> Please make sure that "Install-Module" Cmdlet is available in PowerShell otherwise update PowerShell by using following link.
         
            https://gallery.technet.microsoft.com/office/PowerShell-Install-Module-388e47a1
     
     
        Steps for Installation:
        -----------------------
         
            Step-1: Open the PowerShell prompt as "Administrator" and
                    execute following command to download the latest available version of PowerKit from PowerShell Gallery website.
             
                    # Install-Module -Name QLogicFastLinQPowerKit
                     
                (or) User can also install desired version by using following command.
                 
                    # Install-Module -Name QLogicFastLinQPowerKit -RequiredVersion "1.0.67.0"
                 
            Step-2: Execute following command to check if Modules/Functions of QLogicFastLinQPowerKit are imported or not.
             
                    # Get-Command -Module QLogicFastLinQPowerKit
             
            Step-3: Execute following command to install QLogicFastLinQPowerKit.
             
                Method 1: install the cmdlets, WMIv2 Provider and WinRM/Posh_SSH/REST server with user prompts:
                -----------------------------------------------------------------------------------------------
                 
                        # Install-QLogicFastLinqPowerKit
                         
                Method 2: install only the cmdlets and the WMIv2 Provider in silentmode (without user prompts):
                ------------------------------------------------------------------------------------------------
                 
                        # Install-QLogicFastLinqPowerKit -ConfigureWinRM:$true -InstallPoshSSHModule:$true -InstallRESTServer:$true
 
                 
    Notes:
    ------
        i]. Please make sure that uninstall the old Powerkit (provider and Cmdlets) if the user installed earlier,
              before installation of new PowerKit (provider and Cmdlets).
        ii]. Please restart the WMI (Windows Management Instrumentation) from "Services Window Panel" after installation of PowerKit if required.
        iii]. Please close or end all the old tasks named as "WMI Provider Host" in processes from "Task Manager Window" after installation of PowerKit if required.
 
 
         
    2. Linux:
    ---------
         
    a] Download and install the appropriate latest OMI server package for your Linux machine from the following websites.
     
        https://github.com/Microsoft/omi
        (or)
        https://collaboration.opengroup.org/omi/
         
        RPM packages are provided for the installation of OMI on most enterprise Linux distributions.
        Choose the package based upon architecture, OpenSSL version and Package format as follows.
         
            -> 32-bit (x86) or 64-bit (x64) architecture.
            -> OpenSSL version 0.9.8, 1.0.x or 1.1.x (to determine your OpenSSL version, run: openssl version).
            -> RPM or Debian package format.
             
        Example:
            # rpm -ivh omi-1.4.2-5.ssl_100.ulinux.x64.rpm
         
    b] Make sure omiserver is running on the Linux host system and use the below commands to set httpport and httpsport ports to listen on.
         
        # /opt/omi/bin/omiserver --> To see the status of OMI Server.
        # /opt/omi/bin/omiserver --httpport 5985 --httpsport 5986 -s --> To stop OMI Server on Linux host system.
        # /opt/omi/bin/omiserver --httpport 5985 --httpsport 5986 -d --> To start OMI Server and set the http port.
         
    c] Copy the appropriate QLogic OMI provider rpm package:
        QLGC_OMIProvider-X.X.XX-0.i386.rpm (For x86 Linux)
        QLGC_OMIProvider-X.X.XX-0.x86_64.rpm (For x64 Linux)
                 
    d] Install the appropriate QLogic OMI provider rpm package.
         
    Example:
        # rpm -ivh QLGC_OMIProvider-X.X.XX-0.x86_64.rpm
         
    e] Restart the omiserver if necessary.
         
    f] Add firewall exceptions to open up the omiserver ports
        for remote cmdlets to talk to the OMI server/provider.
             
        Note:
        1] Please make sure that unInstall the old provider if you installed earlier, before installation of new provider.
 
 
         
    3. ESXi:
    --------
        Follow the below commands to install QLogic qlgcfastlinq VMware ESXi provider VIB on ESXi Host System.
             
        # esxcli software vib install -f -d vmware-esx-provider-qlgcfastlinq.zip
 
        Note:
            1] Please make sure that unInstall the old OMI-Provider if you installed earlier, before installation of new OMI-Provider.
            2] The user must reboot the server after successful installation/unInstallation of provider.
 
 
 
             
==================
6. UnInstallation:
==================
 
    1. Windows:
    -----------
     
        Off-line unInstallation through UnInstaller files:
        ------------------------------------------------
        -> Please follow the below commands to unInstall the QLogic FastLinQ PowerKit:
 
            a] Open a powerShell prompt as administrator and navigate to the directory containing the installer files.
 
            b] Run the following command to unInstall the Cmdlets:
 
            # .\UninstallFastLinqPowerKit.ps1
 
            (or)
 
            Run as below on new powerShell prompt session.
            # Import-Module .\UninstallFastLinqPowerKit.ps1 -Force
 
            c] Confirm unInstallation by attempting to run Get-QLGCAdapter
                and having it fail. Cmdlets that you have already used in the
                current PowerShell session may still auto-populate, but will not work if they are ran.
 
             
        On-line unInstallation through PowerShell Gallery:
        --------------------------------------------------
         
        -> Please use the following command to unInstall the QLogicFastLinQPowerKit if user installed it only through online PowerShell Gallery earlier.
         
            # Uninstall-QLogicFastLinqPowerKit
 
         
    2. Linux:
    ---------
         
        -> Please follow the below to unInstall the QLogic OMI provider rpm package which was installed earlier:
             
            # rpm -qa | grep -i QLGC_OMIProvider --> Just to check if the OMI Provider installed or not.
            # rpm -e QLGC_OMIProvider --> To unInstall OMI Provider.
             
         
    3. ESXi:
    --------
         
        -> Please follow the below commands to unInstall QLogic qlgcfastlinq VMware ESXi provider VIB on ESXi Host System.
             
            # esxcli software vib list | grep -i qlgcfastlinq --> Just to check if the qlgcfastlinq ESXi Provider installed or not on Server.
            # esxcli software vib remove -n qlgcfastlinq --> To unInstall qlgcfastlinq ESXi Provider.
         
        Note:
            1] The user must reboot the server after successful installation/unInstallation of provider.
 
 
 
             
=========================================================================
7.Executing Cmdlets
=========================================================================
 
Notes:
======
 
    a] Windows or Linux or ESXi host systems with QLogic FastLinQ 34xx/84xx/45xxx
    adapter family can be managed by QLogic FastLinQ PowerKit Cmdlets.
         
    b] You need to have the QLogic FastLinQ PowerKit installed on a
    Windows system from which you plan to manage locally or remotely the
    Windows/Linux/ESXi host system with QLogic FastLinQ 34xx/84xx/45xxx adapter family.
             
    c] For managing Windows host systems with QLogic FastLinQ 34xx/84xx/45xxx
    adapter family, you need to either have the QLogic FastLinQ
    PowerKit installed with WMIv2 provider or alternatively have QLNX-Agent
    installed.
         
    d] For managing Linux host systems with QLogic FastLinQ 34xx/84xx/45xxx
    adapter family, you need to either have the OMI server/CIMOM installed
    along with the OMI provider or alternatively have QLNX-Agent installed.
         
    e] Use the "Connect-QLGCHost" Cmdlet for connecting to remote Linux/Windows
    host system (that has QLogic FastLinQ 34xx/84xx/45xxxadapter family)
    which has QLNX-Agent installed. Do "Get-Help Connect-QLGCHost"
    to get more help on how to use the "Connect-QLGCHost" Cmdlet.
         
    Note:
        "Connect-QLGCHost" Cmdlet is not supported ESXi host System as RPC is not supported on ESXi.
 
 
 
         
7.(a) Executing Cmdlets on Local and Remote Host through RPC and CIM Session:
-----------------------------------------------------------------------------
 
         
    The user can execute Cmdlets on Local and Remote Host systems through RPC (Connect-QLGCHost) and CIM Session and as following.
 
     
    [1]. Executing Cmdlets on [Local Host System]:
    ----------------------------------------------
     
        a] [Local Windows Host System]
     
     
    [2]. Executing Cmdlets on [Remote Host System]:
    ----------------------------------------------
     
        i) Connecting Remote Host System through RPC (Connect-QLGCHost):
        ----------------------------------------------------------------
     
            a] [Local Windows Host System] --> [Remote Windows Host System]
            b] [Local Windows Host System] --> [Remote Linux Host System]
             
        ii) Connecting Remote Host System through CIM Session:
        -----------------------------------------------------
     
            a] [Local Windows Host System] --> [Remote Windows Host System]
            b] [Local Windows Host System] --> [Remote Linux Host System]
            c] [Local Windows Host System] --> [Remote ESXi Host System]
     
     
     
     
    [1]. Executing Cmdlets on [Local Host System]:
    ----------------------------------------------
     
        a] [Local Windows Host System]:
        -----------------------------
             
        - Use the following procedure to connect to a local Windows host system
        with QLogic FastLinQ 34xx/84xx/45xxx adapter family which has the WMIv2
        provider already installed:
             
            step 1 - Install the latest QLogic FastLinQ PowerKit on Local Windows Host System.
            Step 2 - Run desired Cmdlets on Local Windows Host System.
             
                # Get-QLGCAdapter
                # Get-QLGCFunction
                     
            -> Just invoke the desired QLogic FastLinQ PowerKit cmdlet to
            managed QLogic FastLinQ 34xx/84xx/45xxx adapters on the local Windows host system.
                 
            Note: You can get the usage/Help of Cmdlet as follows.
                             
                    # Get-Help <Cmdlet_Name> [-Examples | -Detailed | -Full ]
                     
            Example:
                    # Get-Help Get-QLGCAdapter
                    # Get-Help Get-QLGCAdapter -Examples
                    # Get-Help Get-QLGCAdapter -Full
                    # Get-Help Get-QLGCAdapter -Detailed
 
 
 
                     
    [2]. Executing Cmdlets on [Remote Host System]:
    ----------------------------------------------
 
     
    i) Connecting Remote Host System through RPC (Connect-QLGCHost):
    ----------------------------------------------------------------
     
        a] [Local Windows Host System] --> [Remote Windows Host System]
        ----------------------------------------------------------------
         
        - Use the following procedure to connect to a remote Windows host system
        with QLogic FastLinQ 34xx/84xx/45xxx adapter family which has the WMIv2
        provider already installed and have QLNX-Agent installed.
         
            Step 1 -> Install the latest QLogic FastLinQ PowerKit on Local Windows Host System.
            Step 2 -> Install the latest QLNX-Agent and QLogic FastLinQ PowerKit on Remote Windows Host System.
            Step 3 -> Run the following Cmdlet to connect Remote Host though RPC on Local Windows Host System..
             
            Syntax:
                    # Connect-QLGCHost -RemoteHost <Remote_Host_IP_Address> -LoginUserName <User_Name> -Password <Remote_Agent_Password>
                 
            Example:
                    # Connect-QLGCHost -RemoteHost 172.28.25.110 -LoginUserName Administrator -Password config
 
                        ResultMessage ReturnValue
                        ------------- -----------
                        Operation is successful. The host is connected successfully. 0
                     
            Step 4 -> Run following Cmdlet to check if the Remote host added or not.
                 
                    # Get-QLGCManagedRemoteHost
                     
                    -> Run the desired Cmdlets on both windows local and remote host systems simultaneously.
                    -> User can disconnect the remote host by using following Cmdlet.
                     
                    # Disconnect-QLGCHost -HostHandle 713990966 -RemoteHost 172.28.25.110
                     
            Notes:
            1] If the operation fails and return 0x70000001, it may be because of the system password entered during ConnectHost instead of agent password.
            2] The parameter "HostHandle" is host Handle of Local Host system and user can get it by executing the Cmdlet "Get-QLGCManagedLocalHost".
            3] This Cmdlet is not supported on ESXi Host system.
 
 
        b] [Local Windows Host System] --> [Remote Linux Host System]:
        --------------------------------------------------------------
         
        -> Use the following procedure to connect to a remote Linux host system
        with QLogic FastLinQ 34xx/84xx/45xxx adapter family which has both OMI
        server/CIMOM, OMI provider and QLNX-Agent installed:
             
            Step 1 -> Install OMI server on Remote Linux Host System if not installed earlier.
            Step 2 -> Install latest OMI Provider and QLNX-Agent on Remote Linux Host System.
            Step 3 -> If you are installing the OMI server 1st time follow the below steps.
     
                # /opt/omi/bin/omiserver -s --> To stop OMI Server on remote Linux host machine.
                # /opt/omi/bin/omiserver --httpport 5985 --httpsport 5986 -d --> To start OMI Server and set the http port.
                # /opt/omi/bin/omiserver --> To see status of OMI Server on remote Linux machine.
                     
            Note:
                -> Add firewall exceptions to open up the omiserver ports for remote Cmdlets to talk to the OMI server/OMI provider.
                     
            Step 4 -> Install the latest QLogic FastLinQ PowerKit on Local Windows Host System.
     
            Step 5 -> Run the following Cmdlet to connect Remote Host though RPC on Local Windows Host System..
             
            Syntax:
                    # Connect-QLGCHost -RemoteHost <Remote_Host_IP_Address> -LoginUserName <User_Name> -Password <Remote_Agent_Password>
                 
            Example:
                    # Connect-QLGCHost -RemoteHost 172.28.35.150 -LoginUserName root -Password config
 
                        ResultMessage ReturnValue
                        ------------- -----------
                        Operation is successful. The host is connected successfully. 0
                     
            Step 6 -> Run following Cmdlet to check if the Remote host added or not.
                 
                    # Get-QLGCManagedRemoteHost
                     
                    -> Run the desired Cmdlets on both windows local and remote Linux host systems simultaneously.
                    -> User can disconnect the remote host by using following Cmdlet.
                     
                    # Disconnect-QLGCHost -HostHandle 713990872 -RemoteHost 172.28.35.150
                     
            Notes:
            1] If the operation fails and return 0x70000001, it may be because of the system password entered during ConnectHost instead of agent password.
            2] The parameter "HostHandle" is host Handle of Local Host system and user can get it by executing the Cmdlet "Get-QLGCManagedLocalHost".
            3] This Cmdlet is not supported on ESXi Host system.
     
 
 
     
    ii) Connecting Remote Host System through CIM Session:
    ------------------------------------------------------
 
         
        a] [Local Windows Host System] --> [Remote Windows Host System]:
        ----------------------------------------------------------------
 
        - Use the following procedure to connect to a remote Windows host system
        with QLogic FastLinQ 34xx/84xx/45xxx adapter family which has the WMIv2
        provider already installed or alternatively have QLNX-Agent installed.
         
            Step 1 -> Install the latest QLogic FastLinQ PowerKit on Local Windows Host System.
            Step 2 -> Add the Remote Windows Host System to trusted host on Local Windows Host System.
            Example:
                    # winrm set winrm/config/client @{TrustedHosts="172.28.35.225"} --> Run on local Windows machine [in cmd prompt run as admin]
                     
            Step 3 -> Install the latest QLNX-Agent or QLogic FastLinQ PowerKit on Remote Windows Host System.
            Step 4 -> Create the cim session on Local Windows Host System..
             
            Syntax:
                    # $Cred = Get-Credential <UserName with sudo privileges>
                    # $Session = New-CimSession -ComputerName <Host IP address> -Authentication Negotiate -Credential $Cred -OperationTimeoutSec 1200000
                    # Get-CimSession
                 
            Example:
                    # $Cred = Get-Credential Administrator
                    # $Session = New-CimSession -ComputerName 172.28.35.225 -Authentication Negotiate -Credential $Cred -OperationTimeoutSec 1200000
                    # Get-CimSession
                     
            Step 5 -> Run desired Cmdlet using CimSession on Local Windows Host System.
             
            -> Invoke the desired Cmdlet with "-CimSession $Session" option
                 
                    # Get-QLGCAdapter -CimSession $Session
                 
                 
         
        b] [Local Windows Host System] --> [Remote Linux Host System]:
        --------------------------------------------------------------
         
        -> Use the following procedure to connect to a remote Linux host system
        with QLogic FastLinQ 34xx/84xx/45xxx adapter family which has both OMI
        server/CIMOM and OMI provider installed:
             
            Step 1 -> Install OMI server on Remote Linux Host System if not installed earlier.
            Step 2 -> Install latest OMI Provider on Remote Linux Host System.
            Step 3 -> If you are installing the OMI server 1st time follow the below steps.
     
                # /opt/omi/bin/omiserver -s --> To stop OMI Server on remote Linux host machine.
                # /opt/omi/bin/omiserver --httpport 5985 --httpsport 5986 -d --> To start OMI Server and set the http port.
                # /opt/omi/bin/omiserver --> To see status of OMI Server on remote Linux machine.
                     
            Note:
                -> Add firewall exceptions to open up the omiserver ports for remote Cmdlets to talk to the OMI server/OMI provider.
                     
            Step 4 -> Install the latest QLogic FastLinQ PowerKit on Local Windows Host System.
            Step 5 -> Add the Remote Linux Host System to trusted host on Local Windows Host System.
             
            Example:
                    # winrm set winrm/config/client @{TrustedHosts="172.28.35.285"} --> Run on local Windows machine [in cmd prompt run as admin]
 
            Step 6 -> Create the cim session Local Windows Host System.
             
            Syntax:
                    # $Cred = Get-Credential <UserName with sudo privileges>
                    # $Session = New-CimSession -ComputerName <Host IP address> -Authentication Basic -Credential $Cred -OperationTimeoutSec 1200000
                    # Get-CimSession
                 
            Example:
                    # $Cred = Get-Credential root
                    # $Session = New-CimSession -ComputerName 172.28.35.285 -Authentication Basic -Credential $Cred -OperationTimeoutSec 1200000
                    # Get-CimSession
                     
            Step 7 -> Run desired Cmdlet using CimSession on Local Windows Host System..
             
            -> Invoke the desired Cmdlet with "-CimSession $Session" option.
            Examples:
                # Get-QLGCAdapter -CimSession $Session
                 
                 
        c] [Local Windows Host System] --> [Remote ESXi Host System]:
        -------------------------------------------------------------
         
        -> Use the following procedure to connect to a remote ESXi host system
        with QLogic FastLinQ 34xx/84xx/45xxx adapter family which has both SFCB
        server/CIMOM and qlgcfastlinq VMware ESXi provider installed:
                 
            Step 1 -> Install latest qlgcfastlinq VMware-ESXi Provider VIB on Remote ESXi Host System.
            Step 2 -> Reboot the server after installation of Provider VIB.
             
            Other Commands:
                # /etc/init.d/sfcbd-watchdog restart --> To restart SFCB server on remote ESXi machine.
                # /etc/init.d/sfcbd-watchdog stop --> To stop SFCB server on remote ESXi host machine.
                # /etc/init.d/sfcbd-watchdog start --> To start SFCB server.
                     
            Note:
                -> Add firewall exceptions to open up the SFCB ports for remote cmdlets to talk to the SFCB server/provider.
                     
            Step 3 -> Install the latest QLogic FastLinQ PowerKit on Local Windows Host System.
            Step 4 -> Add the Remote ESXi Host System to trusted host on Local Windows Host System.
             
                Example:
                    winrm set winrm/config/client @{TrustedHosts="172.28.35.285"} --> Run on local Windows machine [in cmd propmt run as admin]
 
            Step 5 -> Create the CIM Session as follows on Local Windows Host System.
             
                # $Cred = Get-Credential <UserName with sudo privileges>
                # $CIMOpt = New-CimSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck -Usessl
                # $Session = New-CimSession -ComputerName <Host IP address> -Authentication Basic -Credential $Cred $CIMOpt -port 443 -OperationTimeoutSec 1200000
                # Get-CimSession
                 
                Example:
                # $Cred = Get-Credential root
                # $CIMOpt = New-CimSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck -Usessl
                # $Session = New-CimSession -Authentication Basic -Credential $Cred -ComputerName "172.28.3.190" -Sessionoption $CIMOpt -port 443 -OperationTimeoutSec 1200000
 
            Step 6 -> Run desired Cmdlet using CimSession on Local Windows Host System..
             
            Examples:
                # Get-QLGCAdapter -CimSession $Session
                -> Invoke the desired Cmdlet with "-CimSession $Session" option.
 
 
 
 
7.(b) Firmware Upgrade Operation:
---------------------------------
 
 
The following is the usage of the Cmdlet "Update-QLGCFirmware" to perform firmware upgrade operation.
 
 
    Update-QLGCFirmware Cmdlet Usage:
    ---------------------------------
     
 
        NAME
        Update-QLGCFirmware
 
        SYNOPSIS
        Update firmware of adapters installed on the system.
 
 
        -------------------------- EXAMPLE 1 --------------------------
 
        PS C:\> Update-QLGCFirmware -UniqueId 2094907635 -FirmwareType MBI -Reset 0 -Force 1 -ImageFile "C:\Users\Administrator\Desktop\ql_mbi_8107.bin"
 
        WARNING: FW Upgrade Successful - Reboot is Required !!
 
        Example Description:
        ====================
 
        The above command takes the following inputs.
 
            UniqueId : Unique Id of Function object. Please get this Unique Id from the Cmdlet "Get-QLGCFunction".
            FirmwareType : Passed value as MBI as Type of firmware to update. User can pass either firmware type value (23) or name (MBI).
            Reset : Passed value as 0 with no device reset.
            Force : Passed value as 1 to do force firmware update.
            ImageFile : The Location of firmware file with absolute path. Please specify this in double quotes.
 
        Notes:
        1] This Cmdlet supports only MBI firmware update.
        2] Please provide the Unique Id of Function object to update firmware on the specific function of adapter.
        The user can get this Unique Id from the Cmdlet "Get-QLGCFunction".
        3] The Firmware update is only supported on Nic/Ethernet function of adapter but not on storage function of adapter.
 
 
 
 
                 
=====================================
8. Available Cmdlets and Description:
=====================================
 
     
    i) The following table consists of list of available Cmdlets.
    ii) User can get the usage/Help of each Cmdlet as follows.
                             
        # Get-Help <Cmdlet_Name> [-Examples | -Detailed | -Full ]
        Example:
                # Get-Help Get-QLGCAdapter
                # Get-Help Get-QLGCAdapter -Examples
                # Get-Help Get-QLGCAdapter -Full
                # Get-Help Get-QLGCAdapter -Detailed
                     
    iii)The user can run the following command on PowerShell Prompt to see list of all available cmdlets after PowerKit installation.
     
        # Get-Module -ListAvailable | Where-Object {$_.Name.StartsWith('QLGC_') } | select name,exportedcommands | Format-Table -Wrap
         
    iv)Please check the Powerkit User guide document for more information.
 
     
     
#---------------------------------------------------------------------------------------------------------------------------#
# S.No #Cmdlet #Description #
#---------------------------------------------------------------------------------------------------------------------------#
 
a]. Generic Adapter Cmdlets:
----------------------------
    1]. Get-QLGCAdapter Retrieves information about one or more Marvell adapters on the system.
    2]. Get-QLGCFunction Retrieves function information about one or more Marvell adapters on the system.
     
    3]. Get-QLGCManagedLocalHost Retrieves Local Host managed information.
     
    4]. Reset-QLGCHost Refreshes the Host by providing the Host IP address.
    5]. Reset-QLGCHandle Refreshes the Host by providing the HostHandle.
 
     
b]. "Connect/Disconnect Remote Host Systems through RPC" Cmdlets:
------------------------------------------------------------------
    6]. Connect-QLGCHost Connects the Remote Windows or Linux Host System.
     
    7]. Disconnect-QLGCHost Disconnects the Remote Windows or Linux host System by providing the Host IP address.
    8]. Disconnect-QLGCHostHandle Disconnects the Remote Windows or Linux host System by providing the HostHandle.
     
    9]. Get-QLGCManagedRemoteHost Retrieves remote host managed information.
    10].Set-QLGCRemoteAgentPassword Sets the password for the remote agent on Remote Host System.
 
    Note:
        "Connect-QLGCHost" Cmdlet is not supported on ESXi host System as RPC is not supported on ESXi.
         
c]. NicPartition (NPAR) - Configuration Cmdlets:
-------------------------------------------------
    11]. Get-QLGCNicPartConfig Retrieves NPAR configuration information of all NPAR-capable Marvell adapters at the adapter level.
    12]. Get-QLGCNicPartPortConfig Retrieves NPAR configuration information at the port level.
    13]. Get-QLGCNicPartFunctionConfig Retrieves NPAR configuration information at the function level.
     
    14]. Save-QLGCNicPartConfigToXML Saves the NPAR configuration for the Adapter at the XML file path mentioned in the input parameter.
    15]. Set-QLGCNicPartConfigFromXML Reads and Sets the NPAR configuration for the Adapter from the XML file path mentioned in the input parameter.
     
 
d]. Firmware and VPD Information and Firmware Update Cmdlets:
-------------------------------------------------------------
 
    i). Firmware Information:
    -------------------------
    12]. Get-QLGCFirmwareInfo Retrieves firmware information about one or more Marvell adapters on the system.
 
    ii). VPD Information:
    ---------------------
    13]. Get-QLGCVPDInfo Retrieves VPD information about one or more Marvell adapters on the system.
     
    iii). Firmware Update:
    ----------------------
    14]. Update-QLGCFirmware Updates the designated firmware component of Marvell adapters installed on the system.
    15]. Update-QLGCAllUsingMBI Updates the monolithic binary image (MBI) across all connected hosts.
 
     
e]. Diagnostic tests Cmdlets:
-----------------------------
    16]. Start-QLGCFuncDiagnostic Runs diagnostic tests at the function level.
                                            NOTE:
                                            Available Tests: CONTROL_REGISTERS_TEST, INTERNAL_MEMORY_TEST, EEPROM_TEST, INTERRUPT_TEST, LOOPBACK_PHYSICAL_TEST, CPU_TEST and LED_TEST.
                                             
f]. SR-IOV Cmdlets:
-------------------
    17]. Get-QLGCSRIOVSwitchInfo Retrieves SR-IOV switch information for all the functions of the valid Marvell adapters.
    18]. Get-QLGCSRIOVSwitchStats Retrieves the SR-IOV switch statistics for all valid NetXtreme II switches.
    19]. Get-QLGCSriovVFInfo Retrieves the SR-IOV virtual functions that are present for supported functions.
     
    20]. Save-QLGCSRIOVConfigToXML Saves the function-wise SRIOV configuration data for given Adapter at the XML file path location specified in the input parameter.
    21]. Set-QLGCSRIOVConfigFromXML Reads and sets the function-wise SRIOV configuration data for given Adapter from the XML file path location specified in the input parameter.
 
     
g]. MBA, FCoE and iSCSI Boot Configuration Cmdlets:
----------------------------------------------------
 
    i). MBA Boot Configuration:
    ---------------------------
    22]. Get-QLGCPhyPortMBACfg Retrieves pre-execution environment (PXE)parameters from NVRAM; for example,OptionRom, wake on LAN (WOL), HotKey, VLanId, and so on
    23]. Save-QLGCMBABootConfigToXML Saves the MBA Boot configuration data for given Port at the XML file path location specified in the input parameter.
    24]. Set-QLGCMBABootConfigFromXML Reads and sets the MBA Boot configuration data for given Port from the XML file path location specified in the input parameter.
     
    ii). FCoE Boot Configuration:
    -----------------------------
    25]. Get-QLGCFCoEBootConfigInfo Retrieves the FCoE boot from SAN configuration(CFG) block from the NVRAM for Marvell adapters.
    26]. Save-QLGCFCoEBootConfigToXML Saves the FCoE Boot configuration data for given FCoE Function at the XML file path location specified in the input parameter.
    27]. Set-QLGCFCoEBootConfigFromXML Reads and Sets the FCoE Boot configuration data for given FCoE Function from the XML file path location specified in the input parameter.
                                            NOTE:-> The input parameter PhyPortHandle must be to a physical NIC/VBD.
    iii). iSCSI Boot Configuration:
    -------------------------------
    28]. Get-QLGCiSCSIBootCfg Retrieves iSCSI boot from SAN configuration from NVRAM for Marvell adapters
    29]. Save-QLGCiSCSIBootConfigToXML Saves the iSCSI Boot configuration data for given iSCSI function at the XML file path location specified in the input parameter.
    30]. Set-QLGCiSCSIBootConfigFromXML Reads and sets the iSCSI Boot configuration data for given iSCSI function from the XML file path location specified in the input parameter.
 
     
h]. QinQ (VLAN Configuration)Cmdlets:
-------------------------------------
    31]. Save-QLGCVLANConfigToXML Saves the VLAN config Data for the given Adapter at the XML file path mentioned in the input parameter.
    32]. Set-QLGCVLANConfigFromXML Reads and Sets the VLAN config Data for the given Adapter from the XML file path mentioned in the input parameter.
                                            NOTE: -> Supported for E3 family only.
 
                                             
i]. PortMode, SmartAN and NDIS AdvancedParameters Cmdlets:
----------------------------------------------------------
 
    i). PortMode Conversion Option:
    -------------------------------
    33]. Get-QLGCAdapterAdvancedParameter Retrieves the adapter parameters of the Marvell adapters on the system
    34]. Save-QLGCAdapterAdvancedParametersToXML Saves the PortMode data for given Adapter at the XML file path location specified in the input parameter.
    35]. Set-QLGCAdapterAdvancedParametersFromXML Reads and sets the PortMode data for given Adapter from the XML file path location specified in the input parameter.
                                                    NOTE: -> Supported only on Few E4 Family Adapters.
                                                            -> The XML contains the Valid supported values
                                                            -> Supported only on Few E4 family Adapters.
    ii). SmartAN Advanced Parameters:
    ---------------------------------
    36]. Get-QLGCPortAdvancedParameter Retrieves link setting information for the specified port.
    37]. Save-QLGCPortAdvancedConfigParamsToXML Saves the Port Level Advanced Parameter data (SmartAN) for given Physical Port at the XML file path location specified in the input parameter.
    38]. Set-QLGCPortAdvancedConfigParamsFromXML Reads and sets the Port Level Advanced Parameter data (SmartAN) for given Physical
                                                    NOTE: -> Port from the XML file path location specified in the input parameter.
                                                            -> Supported for E4 family only [ 25G and Above]
                                                            -> The XML file contains the list of supported value-sets for each parameter.
    iii). NDIS Advanced Parameters:
    -------------------------------
    39]. Get-QLGCNdisAdvancedParameter Retrieves NIC parameter information.
    40]. Save-QLGCNdisAdvancedParametersToXML Saves the Ndis Advanced Parameters data along with the supported values for given Ndis Function at the XML file path location specified in the input parameter.
    41]. Set-QLGCNdisAdvancedParametersFromXML Reads and Sets the Ndis Advanced Parameters data along with the supported values for given Ndis Function from the XML file path location specified in the input parameter.
                                                    NOTE: -> The XML file contains the list of supported value-sets for each parameter.
 
j]. Resource Configuration Cmdlets:
-----------------------------------
    42]. Get-QLGCTransceiverInfo Retrieves information about the transceiver used for the physical port.
 
 
k]. Resource configuration Cmdlets:
-------------------------------------
    43]. Get-QLGCResCfg Retrieves resource configuration parameters of the specified adapter.
    44]. Set-QLGCResCfg Sets the resource configuration parameters of the specific NIC.
                                                NOTE:
                                                    -> The parameters are related to iSCSI, FCoE, RDMA, TCP/IP offload engine (TOE), and so on.
                                                    -> This Cmdlet is supported only on Windows host systems.
                                                    -> TOE, iSCSI, and FCoE can only be configured on certain adapters and require a license key. License keys are preprogrammed in the hardware.
 
l]. FCoE Cmdlets:
------------------
    45]. Get-QLGCFCoE Retrieves information about one or more FCoE functions of the Marvell adapters installed on the system
     
    46]. New-QLGCVNPort Creates a new virtual port
    47]. Get-QLGCVNPort Retrieves information about all the FCoE virtual ports (VPs) present on the system.
    48]. Remove-QLGCVNPort Deletes an existing virtual port.
     
    49]. Get-QLGCFCoEGeneralConfig Retrieves general time-out configuration information about one or more FCoE functions of Marvell adapters installed on the system
    50]. Save-QLGCFCoEGeneralConfigToXML Saves the FCoE General Configuration data for given FCoE Function at the XML file path location specified in the input parameter.
    51]. Set-QLGCFCoEGeneralConfigFromXML Read and Sets the FCoE General Configuration data for given FCoE Function from the XML file path location specified in the input parameter.
                                                NOTE: -> This Cmdlet is supported only on Windows systems.
     
    52]. Get-QLGCFCoELun Retrieves LUN information about one or more FCoE LUNs configured on the system.
    53]. Get-QLGCFCoEStats Retrieves run-time statistics for the FCoE protocol.
    54]. Get-QLGCFCoETarget FCoE targets configured on the QLogic/Marvell adapters installed on the system.
     
     
 
l]. iSCSI Cmdlets:
-------------------
    55]. Get-QLGCiSCSI Retrieves information about one or more iSCSI devices of Marvell adapters installed on the system.
     
    56]. Save-QLGCiSCSIConfigParamsToXML Saves the iSCSI General Configuration data (like MTU,IPAddress) for given iSCSI Function at the XML file path location specified in the input parameter.
    57]. Set-QLGCiSCSIConfigParamsFromXML Reads and Sets the iSCSI General Configuration data for given iSCSI Function from the XML file path location specified in the input parameter.
                                                Note: -> Supported only on Windows.
                                                 
    58]. Get-QLGCIfaceFileInfo Retrieves information about one or more iface files configured on the system.
    59]. Start-QLGCCreateOrModifyifaceFile Creates a new iface file or modifies an existing iface file.
                                                NOTE: -> This Cmdlet is supported only on Linux systems.
                                                 
    60]. Start-QLGCiSCSIDiagnostic Checks connectivity from the iSCSI device to an iSCSI target.
     
    61]. Get-QLGCiSCSITarget Retrieves information about one or more iSCSI targets configured on Marvell adapters installed on the system
    62]. Start-QLGCiSCSILoginToTarget Logs into an iSCSI target.
    63]. Start-QLGCiSCSILogout Logs out of an iSCSI target.
     
    64]. Get-QLGCiSCSIConnection Retrieves connection information about one or more iSCSI devices of Marvell adapters installed on the system.
    65]. Get-QLGCiSCSIIpv4Addresses Retrieves information about one or more iSCSI IPv4 addresses of iSCSI devices found on the system.
    66]. Get-QLGCiSCSIIpV6Addresses Retrieves information about one or more iSCSI IPv6 addresses of iSCSI devices found on the system.
    67]. Get-QLGCiSCSILun Retrieves information about one or more iSCSI LUNs configured on one or more iSCSI targets connected to Marvell adapters installed on the system.
    68]. Get-QLGCiSCSINegotiationInfo Retrieves negotiation information about one or more iSCSI devices of Marvell adapters installed on the system.
    69]. Get-QLGCiSCSISession Retrieves information about one or more iSCSI sessions of Marvell adapters installed on the system connecting to one or more iSCSI targets.
     
    70]. Get-QLGCLicenseInfo Retrieves specific license information for the adapter.
     
    71]. Get-QLGCiSCSIPortal Retrieves information about iSCSI portals. The list includes target portals and initiator portals.
    72]. Add-QLGCDiscoveryPortal Adds a discovery portal.
    73]. Remove-QLGCDiscoveryPortal Removes a discovered portal.
     
    74]. Add-QLGCiSCSIStaticTarget Adds a static target.
    75]. Remove-QLGCiSCSIStaticTarget Removes a static target.
     
    76]. Add-QLGCiSNSServer Adds an iSNS server.
    77]. Reset-QLGCiSNSServer Refreshes/Resets the iSNS serverThis Cmdlet is supported only on Windows systems.
    78]. Get-QLGCiSNSServers Retrieves information about one or more iSNS servers.
    79]. Remove-QLGCiSNSServer Removes/Disables an iSNS server connection.
 
m]. Nic Cmdlets:
-----------------
    80]. Get-QLGCNic Retrieves information about one or more NIC functions of Marvell adapters installed on the system.
     
    81]. Get-QLGCNicParameter Retrieves information about VBD advanced parameters of Marvell adapters installed on the system.
    82]. Save-QLGCNicParametersToXML Saves the NIC[VBD] Function Level Advanced Parameter data for given Function at the XML file path location specified in the input parameter.
    83]. Set-QLGCNicParametersFromXML Reads and sets the NIC Function Level [VBD] Advanced Parameter data for given Function from the XML file path location specified in the input parameter.
                                                Notes: -> Applicable to Windows Only.
                                                 
    84]. Start-QLGCNicDiagnostic Pings an IP address.
    85]. Get-QLGCNdisStatsInfo Retrieves the NIC statistics of Marvell adapters installed on system.
    86]. Get-QLGCParamValueDesc Retrieves the NIC statistics of Marvell adapters installed on system.
     
     
n]. Phy Port and LLDP Cmdlets:
------------------------------
    87]. Get-QLGCPhyPort Retrieves information about one or more physical ports of Marvell adapters installed on the system.
    86]. Get-QLGCPhyPortDCBXInfo Retrieves DCBX information about one or more physical ports of Marvell adapters installed on the system.
    89]. Get-QLGCPhyPortLLDPConfig Retrieves LLDP configuration parameters of the specified NIC port.
    90]. Set-QLGCPhyPortLLDPConfig Sets the LLDP configuration parameters of the specific NIC port,
                                                for example, MsgTx-Interval, MsgFastTx, TxCreditMax, TxFast,MsgTxHold, and OverwriteSettings.
    91]. Get-QLGCPhyPortStats Retrieves DCBX statistics.
    92]. Get-QLGCPortLLDPInfo Retrieve LLDP parameters of the NIC Port.
 
     
n]. Local and Remote Host Adapter Multiple Configurations Cmdlets:
------------------------------------------------------------------
     
    93]. Save-QLGCRemoteHostAdapterConfigsToXML Helps user to save configurations in XML file such as MBA Boot cfg, FCoE Boot cfg, iSCSI Boot cfg,
                                                    NPAR cfg, Ndis advanced parameters and SRIOV on specified adapter of desired remote host systems.
    94]. Set-QLGCRemoteHostAdapterConfigsFromXML Helps user to set configurations from given XML file such as MBA Boot cfg, FCoE Boot cfg, iSCSI Boot cfg,
                                                    NPAR cfg, Ndis parameters and SRIOV on specified adapter remote host systems.
                                                     
    95]. Save-QLGCMultipleConfigDataXMLs Helps user to save NPAR, SmartAN(TM), MBA Boot Config, NDIS advance params at user provided location for Local Host for all applicable instances(Adapters, Ports and Functions).
     
o]. Link and MFW Crash Dump Cmdlets:
-------------------------------------
     
    96]. Get-QLGCLinkDumpInfo Helps user to get information of Link Dump of QLogic/Marvell adapters installed on the system.
                                                    NOTE: This Cmdlet is supported only for E4 family of adapters.
    97]. Save-QLGCMFWCrashDumpToFile Helps user to retrieve MFW crash dump for only Windows OS.
 
o]. Event data Cmdlet:
----------------------
     
    98]. Get-QLGCEventData Provides Event data when the user performs set config operations by using Powerkit (or) other Marvell/QLogic tools which requires "Refresh" to get latest data.
                                                    Displays blank if no data is available.
     
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Notes:
------
 
The following Cmdlets are deprecated and replaced with new equivalent Cmdlets.
 
#===================================================================================#
# Deprecated Old Cmdlets Equivalent New Cmdlet #
#===================================================================================#
#1. Set-QLGCFCoEGeneralConfig Set-QLGCFCoEGeneralConfigFromXML #
#2. Set-QLGCFunction Set-QLGCSRIOVConfigFromXML #
#3. Set-QLGCiSCSI Set-QLGCiSCSIConfigParamsFromXML #
#4. Set-QLGCNdisAdvancedParameter Set-QLGCNdisAdvancedParametersFromXML #
#5. Set-QLGCNicParameter Set-QLGCNicParametersFromXML #
#6. Set-QLGCPortAdvancedParameter Set-QLGCPortAdvancedConfigParamsFromXML #
#7. Set-QLGCAdapterAdvancedParameter Set-QLGCAdapterAdvancedParametersFromXML #
#8. Set-QLGCNicPartPortConfig Set-QLGCNicPartConfigFromXML #
#9. Set-QLGCNicPartFunctionConfig Set-QLGCNicPartConfigFromXML #
#10.Set-QLGCNPARConfiguration Set-QLGCNicPartConfigFromXML #
#11.Set-QLGCiSCSIBootConfiguration Set-QLGCiSCSIBootConfigFromXML #
#12.Set-QLGCMBAConfiguration Set-QLGCMBABootConfigFromXML #
#13.Set-QLGCFCoEBootConfiguration Set-QLGCFCoEBootConfigfromXML #
#14.Set-QLGCFCoEBootConfigInfo Set-QLGCFCoEBootConfigfromXML #
#15.Set-QLGCPhyPortMBACfg Set-QLGCMBABootConfigFromXML #
#16.Set-QLGCiSCSIBootCfg Set-QLGCiSCSIBootConfigFromXML #
#17.Set-NicPartConfig Set-QLGCNicPartConfigFromXML #
#18.Start-CreateOrModifyifaceFile Start-QLGCCreateOrModifyifaceFile #
#===================================================================================#
 
 
 
===============================================
9. Steps to use PowerShell Cmdlets with ansible
===============================================
 
Steps to use PowerShell Cmdlets with ansible on Linux , Windows and VMware Host.
 
a] Prerequisites :
------------------
 
    1. Make sure on Linux Server (In my case Centos 7.5), ansible and related rpms/installer are there.
 
    2. Check that on Windows host , port 5885 (for HTTP) and 5886 ( for HTTPS) are in listening mode.
        Please refer link https://docs.ansible.com/ansible/2.5/user_guide/windows_setup.html for setting up Windows host with winrm.
 
    3. QLogic FastLinQ PowerKit be installed properly on the Windows system from which you plan to manage the local/remote
        Windows, Linux and ESXi host system with QLogic FastLinQ 34xx/84xx/45xxx adapter family.
         
    4. Appropriate device driver for the QLogic NIC is to be installed on the host system that is to be managed by
        the QLogic FastLinQ PowerKit.
         
    5. OmiServer must be installed prior to installing the OMI provider on host Linux systems.
         
    6. For managing iscsi on Linux hosts, open-iscsi and sg utilities are required to be installed on the Linux host.
         
    7. Microsoft iSCSI initiator be installed on the Windows host server.
 
 
b] Cmdlets usage on Windows Host/Client:
----------------------------------------
 
Topology :
--------
 
- Windows Host/Client : User will save mba configuration file on Marvell Adapter.
- Linux Server : Centos -7.5 - Ansible installer / Initiate ansible-playbook
 
 
Setup Windows Host/Client :
---------------------------
 
1. Make sure on Windows Host , where you would like to connect from ansible server ( Linux - Centos 7.5), having installed with
OMI-Provider (InstallFastLinqPowerKit.ps1) provided by Marvell
 
2. Run Get-QLGCPhyPortMBACfg" on powerShell command to get UniqueID Handle to save mba boot config.
 
 
Setup Linux Server:
-------------------
 
    1. Create directory ansible_usage
 
$ mkdir -p ansible_usage
 
    2. create hosts file with below contents :
 
$ cd ansible_usage
$ cat hosts
 
[win]
<Windows HOST IP Address>
 
[win:vars]
ansible_user=<Windows Host User>
ansible_password=<Windows Host Password>
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
 
    3. create scripts folder, where user is keeping powerShell script to run on Windows machine
 
        $ mkdir -p scripts
 
    4. create XML folder, where user is keeping xml files, which would like to set on Marvell Adapters on Windows machine.
 
$ mkdir -p xml
 
    5. Below is example powerShell script, to change mba boot configuration of Marvell Adapter on Windows machine.
 
 
        5.1. Save mba.xml file in xml folder as shown below
 
    $ cat xml/mba.xml file
         
        <MBAConfiguration>
        <OptionROM>Enabled</OptionROM>
        <BootProtocol>None</BootProtocol>
        <HideSetupPrompt>Disabled</HideSetupPrompt>
        <SetupKeyStroke>Ctrl-S</SetupKeyStroke>
        <BannerMessageTimeout>15</BannerMessageTimeout>
        <LinkSpeed>SmartAN</LinkSpeed>
        <Pre-bootWakeonLAN>Disabled</Pre-bootWakeonLAN>
        <VLANmode>Enabled</VLANmode>
        <VLANID>0</VLANID>
        <BootRetryCount>0</BootRetryCount>
        </MBAConfiguration>
 
    5.2. Write PowerShell script to Save MBA file on Marvell Adapter on Windows HOST.
 
    $ cat scripts/mba-save-windows.ps1
         
        Set-QLGCMBABootConfigFromXML -UniqueId <UNIQUEID> -MBABootConfigXMLFile C:\scratch\mba.xml
 
        where you can use UNIQUE-ID number got it from Windows Host using "Get-QLGCPhyPortMBACfg"
         
         
    5.3. Write YAML file which would like to run from Linux Host to copy xml file on Windows host and
            run mba-save-windows.ps1
 
    $ cat powershell.yaml
 
        - name: Copy files
        hosts: win
        tasks:
        - name: copy xml file to Windows host
            copy:
            src: /root/ansible_ps/xml/mba.xml
            dest: C:\scratch\
 
        - name: Run PowerShell script
        hosts: win
        tasks:
        - name: run powershell script to update xml
            script: scripts/mba-save-windows.ps1
            register: out
        - debug: var=out
 
 
    6. Run ansible script from Linux Server with below command
 
        ansible-playbook -i hosts powershell.yaml
 
 
Cmdlets usage on Linux or VMware Host:
======================================
 
Topology :
 
- Linux Host/Client or VMware : User will save mba configuration file on Marvell Adapter.
- Windows Host : From where CIM session will be establish on Linux Client
- Linux Server : Centos -7.5 - Ansible installer / Initiate ansible-playbook
 
 
Setup Linux/VMware Client :
---------------------------
 
    1. if Linux Host/Client OS, Make sure OMI server/CIMOM is installed :
 
    Follow below link for further details on OMI server/CIMOM:
    https://collaboration.opengroup.org/omi/
 
    2. Install "QLGC_OMIProvider-x.y.zz.x86_64.rpm" on Linux Client OS
 
    3. Run OMI server with below steps for Linux
        - If you are installing the OMI server 1st time follow the below steps.
                /opt/omi/bin/omiserver -s --> Stop OMI Server (on Linux machine)
                /opt/omi/bin/omiserver --httpport 5985 --httpsport 5986 -d --> Start OMI Server and set the http port.
 
        (Above commands to be executed if we are doing it for the first time, next time use only below command to execute omi server)
                /opt/omi/bin/omiserver
 
 
    or
 
 
    1. If Client is VMware, then install "vmware-esx-provider-qlgcfastlinq" on VMware Host/Client.
 
 
Setup Windows Host:
-------------------
 
1. Make sure on Windows Host , where you would like to connect from ansible server ( Linux - Centos 7.5), having installed with
OMI-Provider (InstallFastLinqPowerKit.ps1) provided by Marvell
 
2. Add Linux Client IP address as Trusted host from Windows Host:
 
winrm set winrm/config/client @{TrustedHosts="<Linux Client IP address>"}
 
3. Run Get-QLGCPhyPortMBACfg" on powerShell command to get UniqueID Handle to save mba boot config on Linux / VMware Client with below commands.
 
$secpasswd = ConvertTo-SecureString "<Linux or VMware Client Password>" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("<Linux or VMware Client User name>", $secpasswd)
$session = New-CimSession -Authentication Basic -Credential $mycreds -ComputerName "<Linux or VMware Client IP address>" -OperationTimeoutSec 1200000
Get-QLGCPhyPortMBACfg -CimSession $session
 
     
Setup Linux Server:
-------------------
 
    1. Create directory ansible_usage
 
    $ mkdir -p ansible_usage
 
    2. create hosts file with below contents ( Here we Need to connect to Window Machine) :
 
    $ cd ansible_usage
    $ cat hosts
     
        [win]
        <Windows HOST IP Address>
 
        [win:vars]
        ansible_user=<Windows Host User>
        ansible_password=<Windows Host Password>
        ansible_connection=winrm
        ansible_winrm_server_cert_validation=ignore
 
        [lin]
        <Linux HOST IP Address>
 
        [lin:vars]
        ansible_user=<Linux Host User>
        ansible_password=<Linux Host Password>
        ansible_connection=ssh
        ansible_winrm_server_cert_validation=ignore
 
 
        [esx]
        <VMware HOST IP Address>
 
        [esx:vars]
        ansible_user=<VMware Host User>
        ansible_password=<VMware Host Password>
        ansible_connection=ssh
        ansible_winrm_server_cert_validation=ignore
 
    3. create scripts folder, where user is keeping powershell script to run on Windows Host.
 
    $ mkdir -p scripts
     
    4. create XML folder, where user is keeping xml files, which would like to set on Marvell Adapters on Linux/VMware Client.
 
    $ mkdir -p xml
 
    5. Below is example powerShell script, to change mba boot configuration of Marvell Adapter on Linux/VMware Client.
 
    5.1. Save mba.xml file in xml folder as shown below
 
    $ cat xml/mba.xml file
         
        <MBAConfiguration>
        <OptionROM>Enabled</OptionROM>
        <BootProtocol>None</BootProtocol>
        <HideSetupPrompt>Disabled</HideSetupPrompt>
        <SetupKeyStroke>Ctrl-S</SetupKeyStroke>
        <BannerMessageTimeout>15</BannerMessageTimeout>
        <LinkSpeed>SmartAN</LinkSpeed>
        <Pre-bootWakeonLAN>Disabled</Pre-bootWakeonLAN>
        <VLANmode>Enabled</VLANmode>
        <VLANID>0</VLANID>
        <BootRetryCount>0</BootRetryCount>
        </MBAConfiguration>
 
    5.2. Write PowerShell script to Save MBA file on Marvell Adapter on Linux/VMware HOST.
 
    $ cat scripts/mba-save-Linux.ps1
         
        $secpasswd = ConvertTo-SecureString "<Linux or VMware Client Password>" -AsPlainText -Force
        $mycreds = New-Object System.Management.Automation.PSCredential ("<Linux or VMware Client User name>", $secpasswd)
        $session = New-CimSession -Authentication Basic -Credential $mycreds -ComputerName "<Linux or VMware Client IP address>" -OperationTimeoutSec 1200000
        Set-QLGCMBABootConfigFromXML -CimSession $session -UniqueId <UNIQUEID> -MBABootConfigXMLFile /root/scratch/mba.xml
         
    5.3. Write YAML file which would like to run from Linux Server to copy xml file on Linux host/Client and
            run mba-save-Linux.ps1
 
    $ cat powerShell.yaml
 
        - name: Copy files
        hosts: lin --> If host is VMware then provide "esx" here.
        tasks:
        - name: copy xml file to Linux/VMware host
            copy:
            src: /root/ansible_ps/xml/mba.xml
            dest: /root/scratch/
 
        - name: Run PowerShell script
        hosts: win
        tasks:
        - name: run powerShell script to update xml
            script: scripts/mba-save-Linux.ps1
            register: out
        - debug: var=out
 
 
    6. Run ansible script from Linux Server with below command
 
    $ ansible-playbook -i hosts powershell.yaml
 
 
 
 
================
10. Known Issues:
================
 
         
    a]. Unable to add iSNS server to Windows 2016 Nano server.
         
    b]. Unable to login to targets with iSCSI CHAP on Linux.
         
    c]. Diagnostics fails on Windows 2016 Nano server.
         
    d]. The Following Set-Operations (modify Instance) are not supported on ESXi Host system.
        1] Set-QLGCResCfg
        2] Set-QLGCPhyPortLLDPConfig
 
 
 
 
==================================
11. Third Party Software License:
==================================
 
Portions of this software contain third party code subject to the following conditions:
 
 
-------------------------------------------------------------------------------------------------------------
libxml2 - Copyright License Terms
-------------------------------------------------------------------------------------------------------------
Except where otherwise noted in the source code (e.g. the files hash.c,
list.c and the trio files, which are covered by a similar licence but
with different Copyright notices) all the files are:
 
 Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
 
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is fur-
nished to do so, subject to the following conditions:
 
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
 
 
 
-------------------------------------------------------------------------------------------------------------
Tcl/Tk - Copyright License Terms
-------------------------------------------------------------------------------------------------------------
/* This software is copyrighted by the Regents of the University of California,
 * Sun Microsystems, Inc., Scriptics Corporation, and other parties. The following
 * terms apply to all files associated with the software unless explicitly disclaimed
 * in individual files.
 *
 * The authors hereby grant permission to use, copy, modify, distribute, and license
 * this software and its documentation for any purpose, provided that existing copyright
 * notices are retained in all copies and that this notice is included verbatim in any
 * distributions. No written agreement, license, or royalty fee is required for any of
 * the authorized uses. Modifications to this software may be copyrighted by their authors
 * and need not follow the licensing terms described here, provided that the new terms
 * are clearly indicated on the first page of each file where they apply.
 *
 * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT,
 * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
 * THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS
 * HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS"
 * BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE,
 * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 *
 * GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government,
 * the Government shall have only "Restricted Rights" in the software and related
 * documentation as defined in the Federal Acquisition Regulations (FARs) in Clause
 * 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense,
 * the software shall be classified as "Commercial Computer Software" and the Government
 * shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs.
 * Notwithstanding the foregoing, the authors grant the U.S. Government and others acting
 * in its behalf permission to use and distribute the software in accordance with the terms
 * specified in this license.
 */
  
  
  
-------------------------------------------------------------------------------------------------------------
SHA256 HASH - Copyright License Terms
-------------------------------------------------------------------------------------------------------------
/*
 * Updated to C++, zedwood.com 2012
 * Based on Olivier Gay's version
 * See Modified BSD License below:
 *
 * FIPS 180-2 SHA-224/256/384/512 implementation
 * Issue date: 04/30/2005
 * http://www.ouah.org/ogay/sha2/
 *
 * Copyright (C) 2005, 2007 Olivier Gay <olivier.gay@a3.epfl.ch>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the project nor the names of its contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */