|
Packit |
857059 |
/* BEGIN_ICS_COPYRIGHT2 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Copyright (c) 2015-2018, Intel Corporation
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Redistribution and use in source and binary forms, with or without
|
|
Packit |
857059 |
modification, are permitted provided that the following conditions are met:
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* Redistributions of source code must retain the above copyright notice,
|
|
Packit |
857059 |
this list of conditions and the following disclaimer.
|
|
Packit |
857059 |
* Redistributions in binary form must reproduce the above copyright
|
|
Packit |
857059 |
notice, this list of conditions and the following disclaimer in the
|
|
Packit |
857059 |
documentation and/or other materials provided with the distribution.
|
|
Packit |
857059 |
* Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
857059 |
may be used to endorse or promote products derived from this software
|
|
Packit |
857059 |
without specific prior written permission.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
857059 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
857059 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit |
857059 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit |
857059 |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
857059 |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit |
857059 |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit |
857059 |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit |
857059 |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit |
857059 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* ** END_ICS_COPYRIGHT2 ****************************************/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
//===========================================================================//
|
|
Packit |
857059 |
//
|
|
Packit |
857059 |
// FILE NAME
|
|
Packit |
857059 |
// fm_xml.h
|
|
Packit |
857059 |
//
|
|
Packit |
857059 |
// DESCRIPTION
|
|
Packit |
857059 |
// This file contains structures used for parsing the fm_config.xml
|
|
Packit |
857059 |
// file for configuring SM
|
|
Packit |
857059 |
//
|
|
Packit |
857059 |
//===========================================================================//
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifndef _FM_XML_H_
|
|
Packit |
857059 |
#define _FM_XML_H_
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include <stdio.h>
|
|
Packit |
857059 |
#include <signal.h>
|
|
Packit |
857059 |
#include <ixml.h>
|
|
Packit |
857059 |
#include "cs_log.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
#include "regexp.h"
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
#include "regex.h"
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifndef __VXWORKS__
|
|
Packit |
857059 |
#define MAX_SUBNET_SIZE 64000 // HSM has no realistic max
|
|
Packit |
857059 |
#define DEFAULT_SUBNET_SIZE 2560 // XML default subnet size
|
|
Packit |
857059 |
#else // __VXWORKS__
|
|
Packit |
857059 |
#define MAX_SUBNET_SIZE 288 // ESM has a max subnet size of 288
|
|
Packit |
857059 |
#define DEFAULT_SUBNET_SIZE 100 // XML default subnet size
|
|
Packit |
857059 |
#endif // __VXWORKS__
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Key PM config parameter defaults and ranges
|
|
Packit |
857059 |
#define PM_DEFAULT_TOTAL_IMAGES 10 // for Image[] and history[]
|
|
Packit |
857059 |
#define PM_MIN_TOTAL_IMAGES 3 // for Image[] and history[]
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
// keep vxWorks limited to save memory and also because pm_compute_pool_size
|
|
Packit |
857059 |
// is called before reading config file
|
|
Packit |
857059 |
#define PM_MAX_TOTAL_IMAGES 10 // for Image[] and history[]
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
#define PM_MAX_TOTAL_IMAGES 100000 // for Image[] and history[]
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define PM_DEFAULT_FF_IMAGES 5 // for freezeFrame[]
|
|
Packit |
857059 |
#define PM_MIN_FF_IMAGES 2 // for freezeFrame[]
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
#define PM_MAX_FF_IMAGES (PM_MAX_TOTAL_IMAGES-2) // for freezeFrame[]
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
// due to some linear searches, we limit number of FF. 2-3 per client is enough
|
|
Packit |
857059 |
// and only a handful of clients are expected, 100 should be plenty
|
|
Packit |
857059 |
#define PM_MAX_FF_IMAGES 100 // for freezeFrame[]
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define PM_DEFAULT_PA_MAX_CLIENTS 3
|
|
Packit |
857059 |
#define PM_MIN_MAX_CLIENTS 3
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
// keep vxWorks limited to save memory and also because pm_compute_pool_size
|
|
Packit |
857059 |
// is called before reading config file
|
|
Packit |
857059 |
#define PM_MAX_MAX_CLIENTS 4
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
#define PM_MAX_MAX_CLIENTS 20
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define PM_DEFAULT_FF_LEASE 60 // in seconds
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define PM_DEFAULT_MAX_ATTEMPTS 3
|
|
Packit |
857059 |
#define PM_DEFAULT_RESP_TIMEOUT 250
|
|
Packit |
857059 |
#define PM_DEFAULT_MIN_RESP_TIMEOUT 35
|
|
Packit |
857059 |
#define PM_DEFAULT_SWEEP_ERRORS_LOG_THRESHOLD 10
|
|
Packit |
857059 |
#define PM_DEFAULT_MAX_PARALLEL_NODES 10
|
|
Packit |
857059 |
#define PM_DEFAULT_PMA_BATCH_SIZE 2
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_PM_MAX_DG_PER_PMPG 5 //Maximum number of Monitors allowed in a PmPortGroup
|
|
Packit |
857059 |
#define STL_PM_GROUPNAMELEN 64
|
|
Packit |
857059 |
#define STL_PM_MAX_CUSTOM_PORT_GROUPS 8 // HFIs and SWs take the first 2 slots.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define FE_LISTEN_PORT 3245 // FAB_EXEC listen port
|
|
Packit |
857059 |
#define FE_WIN_SIZE 1 // Default Window Size for Reliable
|
|
Packit |
857059 |
#define FE_MAX_WIN_SIZE 16 // Maximum window size
|
|
Packit |
857059 |
#define FE_MIN_WIN_SIZE 1 // Minimum window size
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define FE_MAX_TRAP_SUBS 20 // Maximum number of TrapSubs
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// max number of times to fail to check on master
|
|
Packit |
857059 |
#define SM_CHECK_MASTER_INTERVAL 5
|
|
Packit |
857059 |
#define SM_CHECK_MASTER_MAX_COUNT 3
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_TRAP_THRESHOLD_MIN 10
|
|
Packit |
857059 |
#define SM_TRAP_THRESHOLD_MAX 100
|
|
Packit |
857059 |
#define SM_TRAP_THRESHOLD_DEFAULT 0 // off
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_TRAP_THRESHOLD_COUNT_DEFAULT 10
|
|
Packit |
857059 |
#define SM_TRAP_THRESHOLD_COUNT_MIN 2
|
|
Packit |
857059 |
#define SM_TRAP_THRESHOLD_COUNT_MAX 100
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define STL_CONFIGURABLE_SLS 16
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define NONRESP_TIMEOUT 600ull
|
|
Packit |
857059 |
#define NONRESP_MAXRETRY 3
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Cable Info Policy
|
|
Packit |
857059 |
#define CIP_NONE 0
|
|
Packit |
857059 |
#define CIP_LINK 1
|
|
Packit |
857059 |
#define CIP_PORT 2
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SwitchCascadeActivateEnable setting
|
|
Packit |
857059 |
#define SCAE_DISABLED 0
|
|
Packit |
857059 |
#define SCAE_SW_ONLY 1
|
|
Packit |
857059 |
#define SCAE_ALL 2
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// PortBounceLogLimit no limit setting
|
|
Packit |
857059 |
#define PORT_BOUNCE_LOG_NO_LIMIT 0
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// While logging of traps from a port is suppressed, summary trap information
|
|
Packit |
857059 |
// will be logged for that port after accumulating a certain number of traps.
|
|
Packit |
857059 |
// This number starts with SM_TRAP_LOG_SUMMARY_THRESHOLD_START.
|
|
Packit |
857059 |
// Once that number is reached and sa_TrapNeedsLogging() is called, the count
|
|
Packit |
857059 |
// of traps is reset to zero and the threshold is increased by
|
|
Packit |
857059 |
// SM_TRAP_LOG_SUMMARY_THRESHOLD_INCREMENT, with the maximum value of the
|
|
Packit |
857059 |
// threshold being capped off by SM_TRAP_LOG_SUMMARY_THRESHOLD_MAX
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_TRAP_LOG_SUMMARY_THRESHOLD_START 5
|
|
Packit |
857059 |
#define SM_TRAP_LOG_SUMMARY_THRESHOLD_INCREMENT 5
|
|
Packit |
857059 |
/* Should not be greater than 250 - logSuppressTrapCount is an 8 bit field*/
|
|
Packit |
857059 |
#define SM_TRAP_LOG_SUMMARY_THRESHOLD_MAX 250
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Below constants are for suppressing trap logging information to reduce
|
|
Packit |
857059 |
// too much noise in the log
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// If two traps are received from the same port with in
|
|
Packit |
857059 |
// SM_TRAP_LOG_SUPPRESS_TRIGGER_INTERVAL, logging of trap information from
|
|
Packit |
857059 |
// that port will be suppressed
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_TRAP_LOG_SUPPRESS_TRIGGER_INTERVAL 30 /*in seconds*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Preemption Default Values
|
|
Packit |
857059 |
#define SM_PREEMPT_SMALL_PACKET_MIN 32
|
|
Packit |
857059 |
#define SM_PREEMPT_SMALL_PACKET_MAX 8192
|
|
Packit |
857059 |
#define SM_PREEMPT_SMALL_PACKET_DEF 256
|
|
Packit |
857059 |
#define SM_PREEMPT_SMALL_PACKET_INC 32
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_PREEMPT_LARGE_PACKET_MIN 512
|
|
Packit |
857059 |
#define SM_PREEMPT_LARGE_PACKET_MAX 8192
|
|
Packit |
857059 |
#define SM_PREEMPT_LARGE_PACKET_DEF 4096
|
|
Packit |
857059 |
#define SM_PREEMPT_LARGE_PACKET_INC 512
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_PREEMPT_LIMIT_MIN 256 // Note 0 is a valid value, but effectively turns off preemption
|
|
Packit |
857059 |
#define SM_PREEMPT_LIMIT_MAX 65024 // This is the max without being infinite
|
|
Packit |
857059 |
#define SM_PREEMPT_LIMIT_INF 65280 // This is the magical infinite value. SM_PREEMPT_LIMIT_INF / SM_PREEMPT_LIMIT_INC = 0xff.
|
|
Packit |
857059 |
#define SM_PREEMPT_LIMIT_DEF 4096
|
|
Packit |
857059 |
#define SM_PREEMPT_LIMIT_INC 256
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_PREEMPT_TAIL_MIN 80
|
|
Packit |
857059 |
#define SM_PREEMPT_TAIL_DEF 80
|
|
Packit |
857059 |
#define SM_PREEMPT_TAIL_INC 8
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_PREEMPT_HEAD_MIN 80
|
|
Packit |
857059 |
#define SM_PREEMPT_HEAD_DEF 80
|
|
Packit |
857059 |
#define SM_PREEMPT_HEAD_INC 8
|
|
Packit |
857059 |
#define SM_DEFAULT_MAX_LID 0xBFFF
|
|
Packit |
857059 |
#define SM_MAX_LID_LIMIT 0xBFFF
|
|
Packit |
857059 |
#define SM_MAX_9B_LID 0xBFFF
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Note: Multicast and Collective masks are currently
|
|
Packit |
857059 |
// not configurable.
|
|
Packit |
857059 |
#define SM_DEFAULT_MULTICAST_MASK 4
|
|
Packit |
857059 |
#define SM_DEFAULT_COLLECTIVE_MASK 1
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Constants related to our multicast lid collescing scheme
|
|
Packit |
857059 |
#define MAX_SUPPORTED_MCAST_GRP_CLASSES 32
|
|
Packit |
857059 |
#define DEFAULT_SW_MLID_TABLE_CAP 1024
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define XML_PARSE_MEMORY_LIMIT 10000000 // limit to 10M per instance of FM
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// this define will turn on a series of debug statements for XML parsing
|
|
Packit |
857059 |
//#define XML_DEBUG
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// this define will turn on memory debugging for XML and VF parsing
|
|
Packit |
857059 |
//#define XML_MEMORY
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Max number on FM instances - ESM only requires one instance and will be
|
|
Packit |
857059 |
// adjusted for in the parser
|
|
Packit |
857059 |
#define MAX_INSTANCES 8
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// VF definitions - note that the number of devices is unlimited and has been
|
|
Packit |
857059 |
// tested to 20,000
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
#define MAX_CONFIGURED_VFABRICS 64
|
|
Packit |
857059 |
#define MAX_ENABLED_VFABRICS 32
|
|
Packit |
857059 |
#else /* __VXWORKS__ */
|
|
Packit |
857059 |
#define MAX_CONFIGURED_VFABRICS 1000
|
|
Packit |
857059 |
#define MAX_ENABLED_VFABRICS 1000
|
|
Packit |
857059 |
#endif /* __VXWORKS__ */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_VFABRIC_APPS 64
|
|
Packit |
857059 |
#define MAX_VFABRIC_GROUPS 1024
|
|
Packit |
857059 |
#define MAX_VFABRIC_MEMBERS_PER_VF 1024
|
|
Packit |
857059 |
#define MAX_VFABRIC_APPS_PER_VF 64
|
|
Packit |
857059 |
#define MAX_VFABRIC_APP_SIDS 64
|
|
Packit |
857059 |
#define MAX_VFABRIC_APP_MGIDS 64
|
|
Packit |
857059 |
#define MAX_QOS_GROUPS 32
|
|
Packit |
857059 |
#define MAX_INCLUDED_GROUPS 32
|
|
Packit |
857059 |
#define MAX_INCLUDED_APPS 32
|
|
Packit |
857059 |
#define MAX_DEFAULT_GROUPS 64
|
|
Packit |
857059 |
#define MAX_VFABRIC_DG_MGIDS 32
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Length of VirtualFabric, Group, Application, Fm instance Names
|
|
Packit |
857059 |
#define MAX_VFABRIC_NAME 64
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Length of longest compound string in App - typically MGID
|
|
Packit |
857059 |
#define MAX_VFABRIC_APP_ELEMENT 96
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// same quantity as MAX_SUPPORTED_MCAST_GRP_CLASSES in sm_l.h
|
|
Packit |
857059 |
#define MAX_SUPPORTED_MCAST_GRP_CLASSES_XML 32
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// priority range
|
|
Packit |
857059 |
#define MAX_PRIORITY 15
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// VL15CreditRate range
|
|
Packit |
857059 |
#define MAX_VL15_CREDIT_RATE 21
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Max ports per switch, used in config definitions
|
|
Packit |
857059 |
#define MAX_SWITCH_PORTS 255
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// out of memory error
|
|
Packit |
857059 |
#define OUT_OF_MEMORY "Memory limit has been exceeded parsing the XML configuration"
|
|
Packit |
857059 |
#define OUT_OF_MEMORY_RETURN "Memory limit has been exceeded parsing the XML configuration\n"
|
|
Packit |
857059 |
#define PRINT_MEMORY_ERROR IXmlParserPrintError(state, OUT_OF_MEMORY);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// undefined XML values - used to see if XML config provided value after parsing
|
|
Packit |
857059 |
#define UNDEFINED_XML8 0xff
|
|
Packit |
857059 |
#define UNDEFINED_XML16 0xffff
|
|
Packit |
857059 |
#define UNDEFINED_XML32 0xffffffff
|
|
Packit |
857059 |
#define UNDEFINED_XML64 0xffffffffffffffffull
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// array sizes
|
|
Packit |
857059 |
#define FILENAME_SIZE 256
|
|
Packit |
857059 |
#define LOGFILE_SIZE 100
|
|
Packit |
857059 |
#define STRING_SIZE 32
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// config consistency check levels
|
|
Packit |
857059 |
#define NO_CHECK_CCC_LEVEL 0
|
|
Packit |
857059 |
#define CHECK_NO_ACTION_CCC_LEVEL 1
|
|
Packit |
857059 |
#define CHECK_ACTION_CCC_LEVEL 2
|
|
Packit |
857059 |
#define DEFAULT_CCC_LEVEL CHECK_ACTION_CCC_LEVEL
|
|
Packit |
857059 |
#define DEFAULT_CCC_METHOD MD5_CHECKSUM_METHOD
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// values for Sm.PathSelection parameter
|
|
Packit |
857059 |
#define PATH_MODE_MINIMAL 0 // no more than 1 path per lid
|
|
Packit |
857059 |
#define PATH_MODE_PAIRWISE 1 // cover every lid on "bigger side" exactly once
|
|
Packit |
857059 |
#define PATH_MODE_ORDERALL 2 // PAIRWISE, then all src, all dst (skip dups)
|
|
Packit |
857059 |
#define PATH_MODE_SRCDSTALL 3 // all src, all dst
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Bitmask definitions for [Debug] SM Skip Write
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_PORTINFO 0x00000001 // Includes Port Info
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_SMINFO 0x00000002 // Includes Sm Info
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_GUID 0x00000004 // Includes GUID Info
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_SWITCHINFO 0x00000008 // Includes Switch Info
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_VLARB 0x00000020 // Includes VLArb Tables (High / Low / Preempt Matrix)
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_MAPS 0x00000040 // Includes SL::SC, SC::SL, SC::VL
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_LFT 0x00000080 // Includes LFT and MFT
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_AR 0x00000100 // Includes port group table, portgroup FDB
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_PKEY 0x00000200
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_CONG 0x00000400 // Includes HFI congestion / Switch congestion
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_BFRCTRL 0x00000800
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_NOTICE 0x00001000
|
|
Packit |
857059 |
#define SM_SKIP_WRITE_PORTSTATEINFO 0x00002000 // Includes PortStateInfo sets for cascade activation
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// This can be used for values such as LogMask's where it is necessary
|
|
Packit |
857059 |
// to know if a value was supplied.
|
|
Packit |
857059 |
typedef struct _FmParamU32 {
|
|
Packit |
857059 |
uint32_t value;
|
|
Packit |
857059 |
uint8_t valid; // is value valid
|
|
Packit |
857059 |
} FmParamU32_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Structures for parsing of Virtual Fabric XML tags
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XmlGuid {
|
|
Packit |
857059 |
uint64_t guid;
|
|
Packit |
857059 |
struct _XmlGuid *next;
|
|
Packit |
857059 |
} XmlGuid_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XmlNode {
|
|
Packit |
857059 |
char node[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
struct _XmlNode *next;
|
|
Packit |
857059 |
} XmlNode_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XmlIncGroup {
|
|
Packit |
857059 |
char group[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
int dg_index; // Index into dg_config
|
|
Packit |
857059 |
struct _XmlIncGroup *next;
|
|
Packit |
857059 |
} XmlIncGroup_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_BRACKETS_SUPPORTED 10
|
|
Packit |
857059 |
#define MAX_DIGITS_TO_PROCESS 5
|
|
Packit |
857059 |
#define MAX_NODE_DESC_REG_EXPR 1500
|
|
Packit |
857059 |
typedef struct _RegexBracketParseInfo{
|
|
Packit |
857059 |
int totalGroups;
|
|
Packit |
857059 |
boolean portRangeDefined;
|
|
Packit |
857059 |
int portNum1;
|
|
Packit |
857059 |
int portNum2;
|
|
Packit |
857059 |
int lead0sPort1;
|
|
Packit |
857059 |
int lead0sPort2;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int numBracketRangesDefined;
|
|
Packit |
857059 |
int number1[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
int numDigitsNum1[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
int number2[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
int numDigitsNum2[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
int leading0sNum1[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
int leading0sNum2[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
int bracketGroupNum[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
} RegexBracketParseInfo_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _RegExp {
|
|
Packit |
857059 |
char regexString[MAX_NODE_DESC_REG_EXPR];
|
|
Packit |
857059 |
boolean isSyntaxValid;
|
|
Packit |
857059 |
RegexBracketParseInfo_t regexInfo;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
regexp *regexpCompiled;
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
regmatch_t groupArray[MAX_BRACKETS_SUPPORTED];
|
|
Packit |
857059 |
regex_t regexCompiled;
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
struct _RegExp *next;
|
|
Packit |
857059 |
} RegExp_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Virtual Fabric Group configuration
|
|
Packit |
857059 |
typedef struct _DGConfig {
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
int dg_index; // index into dg_config
|
|
Packit |
857059 |
uint32_t number_of_system_image_guids;
|
|
Packit |
857059 |
cl_qmap_t system_image_guid;
|
|
Packit |
857059 |
uint32_t number_of_node_guids;
|
|
Packit |
857059 |
cl_qmap_t node_guid;
|
|
Packit |
857059 |
uint32_t number_of_port_guids;
|
|
Packit |
857059 |
cl_qmap_t port_guid;
|
|
Packit |
857059 |
uint32_t number_of_node_descriptions;
|
|
Packit |
857059 |
XmlNode_t *node_description;
|
|
Packit |
857059 |
RegExp_t *reg_expr; // setup by SM
|
|
Packit |
857059 |
uint32_t number_of_included_groups;
|
|
Packit |
857059 |
XmlIncGroup_t *included_group;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Select
|
|
Packit |
857059 |
uint8_t select_all;
|
|
Packit |
857059 |
uint8_t select_self;
|
|
Packit |
857059 |
uint8_t select_swe0;
|
|
Packit |
857059 |
uint8_t select_all_mgmt_allowed;
|
|
Packit |
857059 |
uint8_t select_hfi_direct_connect;
|
|
Packit |
857059 |
uint8_t select_all_tfis;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// NodeType
|
|
Packit |
857059 |
uint8_t node_type_fi;
|
|
Packit |
857059 |
uint8_t node_type_sw;
|
|
Packit |
857059 |
} DGConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XmlAppMgid {
|
|
Packit |
857059 |
char mgid[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
} XmlAppMgid_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XmlAppMgidRng {
|
|
Packit |
857059 |
char range[MAX_VFABRIC_APP_ELEMENT];
|
|
Packit |
857059 |
} XmlAppMgidRng_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XmlAppMgidMsk {
|
|
Packit |
857059 |
char masked[MAX_VFABRIC_APP_ELEMENT];
|
|
Packit |
857059 |
} XmlAppMgidMsk_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Virtual Fabric Application configuration
|
|
Packit |
857059 |
typedef struct _AppConfig {
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME]; /* MUST BE FIRST FIELD FOR MAP */
|
|
Packit |
857059 |
uint32_t serviceIdMapSize;
|
|
Packit |
857059 |
cl_qmap_t serviceIdMap;
|
|
Packit |
857059 |
uint32_t serviceIdRangeMapSize;
|
|
Packit |
857059 |
cl_qmap_t serviceIdRangeMap;
|
|
Packit |
857059 |
uint32_t serviceIdMaskedMapSize;
|
|
Packit |
857059 |
cl_qmap_t serviceIdMaskedMap;
|
|
Packit |
857059 |
uint32_t number_of_mgids;
|
|
Packit |
857059 |
XmlAppMgid_t mgid[MAX_VFABRIC_APP_MGIDS];
|
|
Packit |
857059 |
uint32_t number_of_mgid_ranges;
|
|
Packit |
857059 |
XmlAppMgidRng_t mgid_range[MAX_VFABRIC_APP_MGIDS];
|
|
Packit |
857059 |
uint32_t number_of_mgid_maskeds;
|
|
Packit |
857059 |
XmlAppMgidMsk_t mgid_masked[MAX_VFABRIC_APP_MGIDS];
|
|
Packit |
857059 |
uint32_t number_of_included_apps;
|
|
Packit |
857059 |
XmlNode_t included_app[MAX_INCLUDED_APPS];
|
|
Packit |
857059 |
uint8_t select_sa;
|
|
Packit |
857059 |
uint8_t select_unmatched_sid;
|
|
Packit |
857059 |
uint8_t select_unmatched_mgid;
|
|
Packit |
857059 |
uint8_t select_pm;
|
|
Packit |
857059 |
} AppConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Virtual Fabric QOS Group configuration
|
|
Packit |
857059 |
typedef struct _QosConfig {
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint8_t enable;
|
|
Packit |
857059 |
uint8_t qos_enable; /* For legacy support of VFs with QOS=0 */
|
|
Packit |
857059 |
uint8_t private_group; /* For legacy support of VFs with QOS=0 */
|
|
Packit |
857059 |
uint8_t base_sl;
|
|
Packit |
857059 |
uint8_t base_sl_specified;
|
|
Packit |
857059 |
uint8_t resp_sl;
|
|
Packit |
857059 |
uint8_t resp_sl_specified;
|
|
Packit |
857059 |
uint8_t requires_resp_sl;
|
|
Packit |
857059 |
uint8_t mcast_sl;
|
|
Packit |
857059 |
uint8_t mcast_sl_specified;
|
|
Packit |
857059 |
uint8_t contains_mcast;
|
|
Packit |
857059 |
uint8_t flowControlDisable;
|
|
Packit |
857059 |
uint8_t percent_bandwidth;
|
|
Packit |
857059 |
uint8_t priority;
|
|
Packit |
857059 |
uint8_t pkt_lifetime_mult; /* Converted to power of 2 */
|
|
Packit |
857059 |
uint32_t hoqlife_qos;
|
|
Packit |
857059 |
uint8_t preempt_rank;
|
|
Packit |
857059 |
uint32_t num_implicit_vfs;
|
|
Packit |
857059 |
uint32_t num_vfs;
|
|
Packit |
857059 |
uint8_t pkt_lifetime_specified;
|
|
Packit |
857059 |
uint8_t hoqlife_specified;
|
|
Packit |
857059 |
} QosConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Application configuration
|
|
Packit |
857059 |
typedef struct _XMLApp {
|
|
Packit |
857059 |
char application[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
} XMLApp_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XMLMember {
|
|
Packit |
857059 |
char member[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
int dg_index; // Index into dg_config;
|
|
Packit |
857059 |
} XMLMember_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Virtual Fabric configuration
|
|
Packit |
857059 |
typedef struct _VFConfig {
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME]; /* MUST BE FIRST FIELD FOR MAP */
|
|
Packit |
857059 |
uint32_t enable;
|
|
Packit |
857059 |
uint32_t standby;
|
|
Packit |
857059 |
uint32_t pkey;
|
|
Packit |
857059 |
uint32_t security;
|
|
Packit |
857059 |
uint32_t qos_index;
|
|
Packit |
857059 |
char qos_group[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint32_t number_of_full_members;
|
|
Packit |
857059 |
XMLMember_t full_member[MAX_VFABRIC_MEMBERS_PER_VF];
|
|
Packit |
857059 |
uint32_t number_of_limited_members;
|
|
Packit |
857059 |
XMLMember_t limited_member[MAX_VFABRIC_MEMBERS_PER_VF];
|
|
Packit |
857059 |
uint32_t number_of_applications;
|
|
Packit |
857059 |
XMLApp_t application[MAX_VFABRIC_APPS_PER_VF];
|
|
Packit |
857059 |
uint8_t max_mtu_int;
|
|
Packit |
857059 |
uint8_t max_rate_int;
|
|
Packit |
857059 |
uint8_t qos_implicit;
|
|
Packit |
857059 |
// Deprecated configuration items (see QOSConfig_t for new fields)
|
|
Packit |
857059 |
uint8_t qos_enable;
|
|
Packit |
857059 |
uint8_t base_sl;
|
|
Packit |
857059 |
uint8_t resp_sl;
|
|
Packit |
857059 |
uint8_t mcast_sl;
|
|
Packit |
857059 |
uint8_t flowControlDisable;
|
|
Packit |
857059 |
uint8_t percent_bandwidth;
|
|
Packit |
857059 |
uint8_t priority;
|
|
Packit |
857059 |
uint8_t pkt_lifetime_mult;
|
|
Packit |
857059 |
uint8_t preempt_rank;
|
|
Packit |
857059 |
uint32_t hoqlife_vf;
|
|
Packit |
857059 |
} VFConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Application Database Composite per FM
|
|
Packit |
857059 |
typedef struct _AppXmlConfig {
|
|
Packit |
857059 |
uint32_t appMapSize;
|
|
Packit |
857059 |
cl_qmap_t appMap; // binary tree of apps by name
|
|
Packit |
857059 |
} AppXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// DeviceGroup Database Composite per FM
|
|
Packit |
857059 |
typedef struct _DGXmlConfig {
|
|
Packit |
857059 |
uint32_t number_of_dgs;
|
|
Packit |
857059 |
DGConfig_t *dg[MAX_VFABRIC_GROUPS];
|
|
Packit |
857059 |
} DGXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// QOSGroup Database Composite per FM
|
|
Packit |
857059 |
typedef struct _QosXmlConfig {
|
|
Packit |
857059 |
uint32_t number_of_qosgroups;
|
|
Packit |
857059 |
QosConfig_t *qosgroups[MAX_QOS_GROUPS];
|
|
Packit |
857059 |
} QosXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// VirtualFabrics Database Composite per FM
|
|
Packit |
857059 |
typedef struct _VFXmlConfig {
|
|
Packit |
857059 |
uint32_t number_of_vfs;
|
|
Packit |
857059 |
VFConfig_t *vf[MAX_CONFIGURED_VFABRICS];
|
|
Packit |
857059 |
uint8_t securityEnabled; // Composite of all vf's
|
|
Packit |
857059 |
uint8_t qosEnabled; // Composite of all vf's
|
|
Packit |
857059 |
} VFXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal structures for internal application use for Virtual Fabric Configuration
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal Service ID's
|
|
Packit |
857059 |
typedef struct VFAppSid_t {
|
|
Packit |
857059 |
uint64_t service_id; // service_id or first service_id in range
|
|
Packit |
857059 |
// if 0xfffffffffffffff then all apps
|
|
Packit |
857059 |
uint64_t service_id_last; // if 0 then then no range
|
|
Packit |
857059 |
uint64_t service_id_mask; // if 0xfffffffffffffff then no mask
|
|
Packit |
857059 |
} VFAppSid_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal Multicast Group ID's
|
|
Packit |
857059 |
typedef struct _VFAppMgid {
|
|
Packit |
857059 |
uint64_t mgid[2]; // 128 bit MGID - upper word at index 0
|
|
Packit |
857059 |
uint64_t mgid_last[2]; // 128 bit MGID upper range - if 0 then
|
|
Packit |
857059 |
// no range
|
|
Packit |
857059 |
uint64_t mgid_mask[2]; // 128 bit MGID mask
|
|
Packit |
857059 |
// if 0xffffffffffffffffffffffffffffff
|
|
Packit |
857059 |
// then no mask
|
|
Packit |
857059 |
} VFAppMgid_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal Virtual Fabric Applications
|
|
Packit |
857059 |
typedef struct _VFApp {
|
|
Packit |
857059 |
// Service ID list
|
|
Packit |
857059 |
uint32_t sidMapSize;
|
|
Packit |
857059 |
cl_qmap_t sidMap; // Map of VFAppSid_t
|
|
Packit |
857059 |
// Multicast Group list
|
|
Packit |
857059 |
uint32_t mgidMapSize;
|
|
Packit |
857059 |
cl_qmap_t mgidMap; // Map of VFAppMgid_t
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// aggregate settings from application and included applications
|
|
Packit |
857059 |
uint8_t select_sa; // boolean select SA - defaults to 0
|
|
Packit |
857059 |
uint8_t select_unmatched_sid; // boolean select unmatched service id
|
|
Packit |
857059 |
// defaults to 0
|
|
Packit |
857059 |
uint8_t select_unmatched_mgid; // boolean select unmatched MGID
|
|
Packit |
857059 |
uint8_t select_pm; // boolean select PM - defaults to 0
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} VFApp_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal rendering of Virtual Fabric Members
|
|
Packit |
857059 |
typedef struct _VFMem {
|
|
Packit |
857059 |
// System Image GUID's
|
|
Packit |
857059 |
uint32_t sysGuidMapSize; // number of System Image GUID entries
|
|
Packit |
857059 |
cl_qmap_t sysGuidMap; // binary tree of System Image GUID's
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Node GUID entries
|
|
Packit |
857059 |
uint32_t nodeGuidMapSize; // number of Node GUID entries
|
|
Packit |
857059 |
cl_qmap_t nodeGuidMap; // binary tree of Node GUID's
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Port GUID entries
|
|
Packit |
857059 |
uint32_t portGuidMapSize; // number of Port GUID entries
|
|
Packit |
857059 |
cl_qmap_t portGuidMap; // binary tree of Port GUID's
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Node Description entries
|
|
Packit |
857059 |
uint32_t nodeDescMapSize; // number of Node descriptions
|
|
Packit |
857059 |
cl_qmap_t nodeDescMap; // binary tree of Node Description pointers
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// aggregate settings from group and included groups
|
|
Packit |
857059 |
uint8_t select_all; // boolean select all - defaults to 0
|
|
Packit |
857059 |
uint8_t select_self; // boolean select self - defaults to 0
|
|
Packit |
857059 |
uint8_t select_hfi_direct_connect; // boolean select all nodes in b2b (hfi direct connect)
|
|
Packit |
857059 |
uint8_t select_swe0; // boolean select SWE0 - defaults to 0
|
|
Packit |
857059 |
uint8_t select_all_mgmt_allowed; // boolean select all mgmt allowed - defaults to 0
|
|
Packit |
857059 |
uint8_t select_all_tfis; // boolean select all TFIs - defaults to 0
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// aggregate settings from group and included groups
|
|
Packit |
857059 |
uint8_t node_type_fi; // boolean FI type - defaults to 0
|
|
Packit |
857059 |
uint8_t node_type_sw; // boolean SW type - defaults to 0
|
|
Packit |
857059 |
} VFMem_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal rendering of Default Groups
|
|
Packit |
857059 |
typedef struct _VFDg {
|
|
Packit |
857059 |
uint8_t def_mc_create; // if undefined will default to 1
|
|
Packit |
857059 |
uint32_t def_mc_mlid; // if undefined will default to 0x0
|
|
Packit |
857059 |
uint32_t def_mc_pkey; // if undefined will default to
|
|
Packit |
857059 |
// STL_DEFAULT_APP_PKEY
|
|
Packit |
857059 |
uint8_t def_mc_mtu_int; // if undefined will default to 0xff
|
|
Packit |
857059 |
uint8_t def_mc_rate_int; // if undefined will default to 0xff
|
|
Packit |
857059 |
uint8_t def_mc_sl; // if undefined will default to 0xff
|
|
Packit |
857059 |
uint32_t def_mc_qkey; // if undefined will default to 0x0
|
|
Packit |
857059 |
uint32_t def_mc_fl; // if undefined will default to 0x0
|
|
Packit |
857059 |
uint32_t def_mc_tc; // if undefined will default to 0x0
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t mgidMapSize;
|
|
Packit |
857059 |
cl_qmap_t mgidMap; // Map of VFAppMgid_t
|
|
Packit |
857059 |
struct _VFDg *next_default_group; // pointer to next group
|
|
Packit |
857059 |
} VFDg_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal rendering of Virtual Fabric configuration - if no Vitual Fabrics
|
|
Packit |
857059 |
// are configured or all Virtual Fabrics are Disabled, a default single
|
|
Packit |
857059 |
// Virtual Fabric will be created. Disabled Virtual Fabrics will not show
|
|
Packit |
857059 |
// up as a defined VirtualFabric within this structure.
|
|
Packit |
857059 |
typedef struct _VFabric {
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME]; // defaults to "Default"
|
|
Packit |
857059 |
uint32_t index; // one will be uniquely assigned
|
|
Packit |
857059 |
uint32_t pkey; // if 0xffffffff use default pkey
|
|
Packit |
857059 |
uint32_t qos_index;
|
|
Packit |
857059 |
uint8_t qos_implicit;
|
|
Packit |
857059 |
union { // Index in old/new vf array
|
|
Packit |
857059 |
uint32_t old_index; // if 0xFFFFFFFF (-1) then it is a new VF (added)
|
|
Packit |
857059 |
uint32_t new_index; // if 0xFFFFFFFF (-1) then it is a deleted VF (removed)
|
|
Packit |
857059 |
} reconf_idx;
|
|
Packit |
857059 |
uint8_t standby;
|
|
Packit |
857059 |
uint8_t security; // defaults to 0 or false
|
|
Packit |
857059 |
uint8_t max_mtu_int; // if 0xff then unlimited
|
|
Packit |
857059 |
uint8_t max_mtu_specified;
|
|
Packit |
857059 |
uint8_t max_rate_int; // if 0xff then unlimited
|
|
Packit |
857059 |
uint8_t max_rate_specified; // set by SM for use in queries
|
|
Packit |
857059 |
VFApp_t apps; // application SID's and MGID's etc...
|
|
Packit |
857059 |
uint32_t number_of_full_members;
|
|
Packit |
857059 |
XMLMember_t full_member[MAX_VFABRIC_MEMBERS_PER_VF];
|
|
Packit |
857059 |
uint32_t number_of_limited_members;
|
|
Packit |
857059 |
XMLMember_t limited_member[MAX_VFABRIC_MEMBERS_PER_VF];
|
|
Packit |
857059 |
uint32_t number_of_default_groups; // number of default multicast groups
|
|
Packit |
857059 |
VFDg_t *default_group; // default group configuration linked list
|
|
Packit |
857059 |
uint32_t consistency_checksum;
|
|
Packit |
857059 |
uint32_t disruptive_checksum;
|
|
Packit |
857059 |
uint32_t overall_checksum;
|
|
Packit |
857059 |
} VF_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Internal rendering of Composite Virtual Fabric configuration
|
|
Packit |
857059 |
typedef struct _SMVirtualFabricsInternal {
|
|
Packit |
857059 |
uint32_t number_of_vfs_all;
|
|
Packit |
857059 |
uint32_t number_of_qos_all;
|
|
Packit |
857059 |
uint8_t securityEnabled; // setup by SM
|
|
Packit |
857059 |
uint8_t qosEnabled; // setup by SM
|
|
Packit |
857059 |
VF_t v_fabric_all[MAX_ENABLED_VFABRICS];
|
|
Packit |
857059 |
QosConfig_t qos_all[MAX_QOS_GROUPS];
|
|
Packit |
857059 |
DGXmlConfig_t dg_config;
|
|
Packit |
857059 |
uint32_t consistency_checksum;
|
|
Packit |
857059 |
uint32_t disruptive_checksum;
|
|
Packit |
857059 |
uint32_t overall_checksum;
|
|
Packit |
857059 |
} VirtualFabrics_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM Dynamic Packet Lifetime configuration
|
|
Packit |
857059 |
typedef struct _SMDPLXmlConfig {
|
|
Packit |
857059 |
uint32_t dp_lifetime[10];
|
|
Packit |
857059 |
} SMDPLXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM Multicast DefaultGroup configuration
|
|
Packit |
857059 |
typedef struct _SMMcastDefGrp {
|
|
Packit |
857059 |
uint32_t def_mc_create;
|
|
Packit |
857059 |
uint32_t def_mc_mlid;
|
|
Packit |
857059 |
char virtual_fabric[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint32_t def_mc_pkey;
|
|
Packit |
857059 |
uint8_t def_mc_mtu_int;
|
|
Packit |
857059 |
uint8_t def_mc_rate_int;
|
|
Packit |
857059 |
uint8_t def_mc_sl;
|
|
Packit |
857059 |
uint32_t def_mc_qkey;
|
|
Packit |
857059 |
uint32_t def_mc_fl;
|
|
Packit |
857059 |
uint32_t def_mc_tc;
|
|
Packit |
857059 |
uint32_t number_of_mgids;
|
|
Packit |
857059 |
XmlAppMgid_t mgid[MAX_VFABRIC_DG_MGIDS];
|
|
Packit |
857059 |
uint32_t number_of_mgid_ranges;
|
|
Packit |
857059 |
XmlAppMgidRng_t mgid_range[MAX_VFABRIC_DG_MGIDS]; // May implement in future
|
|
Packit |
857059 |
uint32_t number_of_mgid_maskeds;
|
|
Packit |
857059 |
XmlAppMgidMsk_t mgid_masked[MAX_VFABRIC_DG_MGIDS]; // May implement in future
|
|
Packit |
857059 |
} SMMcastDefGrp_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM Multicast DefaultGroups
|
|
Packit |
857059 |
typedef struct _SMMcastDefGrpCfg {
|
|
Packit |
857059 |
uint32_t number_of_groups;
|
|
Packit |
857059 |
SMMcastDefGrp_t group[MAX_DEFAULT_GROUPS]; // list of default groups
|
|
Packit |
857059 |
} SMMcastDefGrpCfg_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration for McastGrpMGidLimitMask
|
|
Packit |
857059 |
typedef struct _mcastGrpMGidLimitMask {
|
|
Packit |
857059 |
char value[40];
|
|
Packit |
857059 |
} mcastGrpMGidLimitMask_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration for McastGrpMGidLimitValue
|
|
Packit |
857059 |
typedef struct _mcastGrpMGidLimitValue {
|
|
Packit |
857059 |
char value[40];
|
|
Packit |
857059 |
} mcastGrpMGidLimitValue_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration of MLIDShared
|
|
Packit |
857059 |
typedef struct _SmMcastMlidShared {
|
|
Packit |
857059 |
uint32_t enable;
|
|
Packit |
857059 |
mcastGrpMGidLimitMask_t mcastGrpMGidLimitMaskConvert;
|
|
Packit |
857059 |
mcastGrpMGidLimitValue_t mcastGrpMGidLimitValueConvert;
|
|
Packit |
857059 |
uint32_t mcastGrpMGidLimitMax;
|
|
Packit |
857059 |
uint32_t mcastGrpMGidperPkeyMax;
|
|
Packit |
857059 |
} SmMcastMlidShared_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM MLIDShared Instances
|
|
Packit |
857059 |
typedef struct _SmMcastMlidShare {
|
|
Packit |
857059 |
uint32_t number_of_shared;
|
|
Packit |
857059 |
SmMcastMlidShared_t mcastMlid[MAX_SUPPORTED_MCAST_GRP_CLASSES_XML];
|
|
Packit |
857059 |
} SmMcastMlidShare_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration for Multicast configuration
|
|
Packit |
857059 |
typedef struct _SMMcastConfig {
|
|
Packit |
857059 |
uint32_t disable_mcast_check;
|
|
Packit |
857059 |
uint32_t enable_pruning;
|
|
Packit |
857059 |
uint32_t mcast_mlid_table_cap;
|
|
Packit |
857059 |
char mcroot_select_algorithm[STRING_SIZE];
|
|
Packit |
857059 |
char mcroot_min_cost_improvement[STRING_SIZE];
|
|
Packit |
857059 |
} SMMcastConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration for Link Policy
|
|
Packit |
857059 |
typedef struct _SMPolicyConfig {
|
|
Packit |
857059 |
uint8_t enabled;
|
|
Packit |
857059 |
uint16_t policy;
|
|
Packit |
857059 |
} SMPolicyConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SMLinkPolicyXmlConfig {
|
|
Packit |
857059 |
uint16_t link_max_downgrade;
|
|
Packit |
857059 |
SMPolicyConfig_t width_policy;
|
|
Packit |
857059 |
SMPolicyConfig_t speed_policy;
|
|
Packit |
857059 |
} SMLinkPolicyXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SMFlappingXmlConfig{
|
|
Packit |
857059 |
uint32_t window_size; //Size in minutes of sliding window over which bounce events are counted
|
|
Packit |
857059 |
uint32_t high_thresh; // Threshold of bounce events used to trigger quarantine state for port
|
|
Packit |
857059 |
uint32_t low_thresh; // threshold of bounce events to trigger unquarantine or unmonitor of port
|
|
Packit |
857059 |
} SMFlappingXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SMPortQuarantineXmlConfig {
|
|
Packit |
857059 |
uint8_t enabled;
|
|
Packit |
857059 |
SMFlappingXmlConfig_t flapping;
|
|
Packit |
857059 |
} SMPortQuarantineXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration for Preemption
|
|
Packit |
857059 |
typedef struct _SMPreemptionXmlConfig {
|
|
Packit |
857059 |
uint32_t small_packet;
|
|
Packit |
857059 |
uint32_t large_packet;
|
|
Packit |
857059 |
uint32_t preempt_limit;
|
|
Packit |
857059 |
} SMPreemptionXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// uniform switch congestion control settings
|
|
Packit |
857059 |
typedef struct _SmSwCongestionXmlConfig {
|
|
Packit |
857059 |
uint8_t victim_marking_enable;
|
|
Packit |
857059 |
uint8_t threshold;
|
|
Packit |
857059 |
uint8_t packet_size;
|
|
Packit |
857059 |
uint8_t cs_threshold;
|
|
Packit |
857059 |
uint16_t cs_return_delay;
|
|
Packit |
857059 |
uint32_t marking_rate;
|
|
Packit |
857059 |
} SmSwCongestionXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// uniform congestion control settings
|
|
Packit |
857059 |
typedef struct _SmCaCongestionXmlConfig {
|
|
Packit |
857059 |
uint8_t sl_based;
|
|
Packit |
857059 |
uint8_t increase;
|
|
Packit |
857059 |
uint16_t timer;
|
|
Packit |
857059 |
uint8_t threshold;
|
|
Packit |
857059 |
uint8_t min;
|
|
Packit |
857059 |
uint16_t limit;
|
|
Packit |
857059 |
uint32_t desired_max_delay;
|
|
Packit |
857059 |
} SmCaCongestionXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// uniform congestion control settings
|
|
Packit |
857059 |
typedef struct _SmCongestionXmlConfig {
|
|
Packit |
857059 |
uint8_t enable;
|
|
Packit |
857059 |
uint8_t debug;
|
|
Packit |
857059 |
SmSwCongestionXmlConfig_t sw;
|
|
Packit |
857059 |
SmCaCongestionXmlConfig_t ca;
|
|
Packit |
857059 |
} SmCongestionXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Adaptive Routing control settings
|
|
Packit |
857059 |
typedef struct _SmAdaptiveRoutingXmlConfig {
|
|
Packit |
857059 |
uint8_t enable;
|
|
Packit |
857059 |
uint8_t debug;
|
|
Packit |
857059 |
uint8_t lostRouteOnly;
|
|
Packit |
857059 |
uint8_t algorithm;
|
|
Packit |
857059 |
uint8_t arFrequency;
|
|
Packit |
857059 |
uint8_t threshold;
|
|
Packit |
857059 |
} SmAdaptiveRoutingXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_TIER 10
|
|
Packit |
857059 |
typedef struct _SmFtreeRouting_t {
|
|
Packit |
857059 |
uint8_t debug;
|
|
Packit |
857059 |
uint8_t passthru;
|
|
Packit |
857059 |
uint8_t converge;
|
|
Packit |
857059 |
uint8_t tierCount; // height of the fat tree. edges are rank 0.
|
|
Packit |
857059 |
uint8_t fis_on_same_tier; // indicates that all end nodes are at the bottom of the tree.
|
|
Packit |
857059 |
XMLMember_t coreSwitches; // device group indicating core switches
|
|
Packit |
857059 |
XMLMember_t routeLast; // device group indicating HFIs that should be routed last.
|
|
Packit |
857059 |
} SmFtreeRouting_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Structure for Device Group Min Hop routing.
|
|
Packit |
857059 |
*
|
|
Packit |
857059 |
* MAX_DGROUTING_ORDER is arbitrarily capped at 8. This could be higher,
|
|
Packit |
857059 |
* but raising it might cause a performance hit.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
#define MAX_DGROUTING_ORDER 8
|
|
Packit |
857059 |
typedef struct _SmDGRouting_t {
|
|
Packit |
857059 |
uint8_t dgCount;
|
|
Packit |
857059 |
XMLMember_t dg[MAX_DGROUTING_ORDER];
|
|
Packit |
857059 |
} SmDGRouting_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
* Structures for Enhanced Routing Control for Hypercube Routing, per switch.
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
typedef uint32_t portMap_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline__ void portMapSet(portMap_t *portMap, int port)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
portMap[port/(sizeof(portMap_t)*8)] |= (1u << port%(sizeof(portMap_t)*8));
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
static __inline__ portMap_t portMapTest(portMap_t *portMap, int port)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
return portMap[port/(sizeof(portMap_t)*8)] & (1u << port%(sizeof(portMap_t)*8));
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmSPRoutingPort {
|
|
Packit |
857059 |
uint8_t pport;
|
|
Packit |
857059 |
uint8_t vport;
|
|
Packit |
857059 |
uint16_t cost;
|
|
Packit |
857059 |
} SmSPRoutingPort_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmSPRoutingCtrl {
|
|
Packit |
857059 |
struct _SmSPRoutingCtrl *next;
|
|
Packit |
857059 |
XMLMember_t switches; // one or more switches
|
|
Packit |
857059 |
portMap_t pportMap[MAX_SWITCH_PORTS/(sizeof(portMap_t)*8) + 1];
|
|
Packit |
857059 |
portMap_t vportMap[MAX_SWITCH_PORTS/(sizeof(portMap_t)*8) + 1];
|
|
Packit |
857059 |
SmSPRoutingPort_t *ports;
|
|
Packit |
857059 |
uint16_t portCount;
|
|
Packit |
857059 |
} SmSPRoutingCtrl_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmHypercubeRouting_t {
|
|
Packit |
857059 |
uint8_t debug;
|
|
Packit |
857059 |
XMLMember_t routeLast; // device group indicating HFIs that should be routed last.
|
|
Packit |
857059 |
SmSPRoutingCtrl_t *enhancedRoutingCtrl;
|
|
Packit |
857059 |
} SmHypercubeRouting_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_TOROIDAL_DIMENSIONS 6
|
|
Packit |
857059 |
#define MAX_DOR_DIMENSIONS 20
|
|
Packit |
857059 |
#define DEFAULT_DOR_PORT_PAIR_WARN_THRESHOLD 5
|
|
Packit |
857059 |
#define DEFAULT_UPDN_MC_SAME_SPANNING_TREE 1
|
|
Packit |
857059 |
#define DEFAULT_ESCAPE_VLS_IN_USE 1
|
|
Packit |
857059 |
#define DEFAULT_FAULT_REGIONS_IN_USE 1
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef enum {
|
|
Packit |
857059 |
DOR_MESH,
|
|
Packit |
857059 |
DOR_TORUS,
|
|
Packit |
857059 |
DOR_PARTIAL_TORUS,
|
|
Packit |
857059 |
} DorTop_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmPortPair {
|
|
Packit |
857059 |
uint8_t port1;
|
|
Packit |
857059 |
uint8_t port2;
|
|
Packit |
857059 |
} SmPortPair_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmDimension {
|
|
Packit |
857059 |
uint8_t toroidal;
|
|
Packit |
857059 |
uint8_t length;
|
|
Packit |
857059 |
uint8_t portCount;
|
|
Packit |
857059 |
uint8_t created;
|
|
Packit |
857059 |
SmPortPair_t portPair[MAX_SWITCH_PORTS];
|
|
Packit |
857059 |
} SmDimension_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmDorRouting {
|
|
Packit |
857059 |
uint8_t debug;
|
|
Packit |
857059 |
uint8_t overlayMCast;
|
|
Packit |
857059 |
uint8_t dimensionCount;
|
|
Packit |
857059 |
uint8_t numToroidal;
|
|
Packit |
857059 |
uint8_t routingSCs;
|
|
Packit |
857059 |
uint32_t warn_threshold;
|
|
Packit |
857059 |
SmDimension_t dimension[MAX_DOR_DIMENSIONS];
|
|
Packit |
857059 |
DorTop_t topology;
|
|
Packit |
857059 |
uint8_t escapeVLs;
|
|
Packit |
857059 |
uint8_t faultRegions;
|
|
Packit |
857059 |
XMLMember_t routeLast; // device group indicating HFIs that should be routed last.
|
|
Packit |
857059 |
} SmDorRouting_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define MAX_SM_APPLIANCES 5
|
|
Packit |
857059 |
typedef struct _SmAppliancesXmlConfig {
|
|
Packit |
857059 |
uint8_t enable;
|
|
Packit |
857059 |
uint64_t guids[MAX_SM_APPLIANCES];
|
|
Packit |
857059 |
} SmAppliancesXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef enum {
|
|
Packit |
857059 |
FIELD_ENF_LEVEL_DISABLED = 0,
|
|
Packit |
857059 |
FIELD_ENF_LEVEL_WARN = 1,
|
|
Packit |
857059 |
FIELD_ENF_LEVEL_ENABLED = 2,
|
|
Packit |
857059 |
} FieldEnforcementLevel_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmPreDefTopoFieldEnfXmlConfig{
|
|
Packit |
857059 |
FieldEnforcementLevel_t nodeGuid;
|
|
Packit |
857059 |
FieldEnforcementLevel_t nodeDesc;
|
|
Packit |
857059 |
FieldEnforcementLevel_t portGuid;
|
|
Packit |
857059 |
FieldEnforcementLevel_t undefinedLink;
|
|
Packit |
857059 |
} SmPreDefTopoFieldEnfXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _SmPreDefTopoXmlConfig {
|
|
Packit |
857059 |
uint8_t enabled;
|
|
Packit |
857059 |
char topologyFilename[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t logMessageThreshold;
|
|
Packit |
857059 |
SmPreDefTopoFieldEnfXmlConfig_t fieldEnforcement;
|
|
Packit |
857059 |
} SmPreDefTopoXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
extern const char* SmPreDefFieldEnfToText(FieldEnforcementLevel_t fieldEnfLevel);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef enum {
|
|
Packit |
857059 |
LID_STRATEGY_SERIAL,
|
|
Packit |
857059 |
LID_STRATEGY_TOPOLOGY
|
|
Packit |
857059 |
} LidStrategy_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// SM configuration
|
|
Packit |
857059 |
typedef struct _SMXmlConfig {
|
|
Packit |
857059 |
uint64_t subnet_prefix;
|
|
Packit |
857059 |
uint32_t subnet_size;
|
|
Packit |
857059 |
uint32_t config_consistency_check_level;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t startup_retries;
|
|
Packit |
857059 |
uint32_t startup_stable_wait;
|
|
Packit |
857059 |
uint64_t sm_key;
|
|
Packit |
857059 |
uint64_t mkey;
|
|
Packit |
857059 |
uint64_t timer;
|
|
Packit |
857059 |
uint32_t IgnoreTraps;
|
|
Packit |
857059 |
uint32_t trap_hold_down;
|
|
Packit |
857059 |
uint32_t max_retries;
|
|
Packit |
857059 |
uint32_t rcv_wait_msec;
|
|
Packit |
857059 |
uint32_t min_rcv_wait_msec;
|
|
Packit |
857059 |
uint32_t master_ping_interval;
|
|
Packit |
857059 |
uint32_t master_ping_max_fail;
|
|
Packit |
857059 |
uint32_t topo_errors_threshold;
|
|
Packit |
857059 |
uint32_t topo_abandon_threshold;
|
|
Packit |
857059 |
uint32_t switch_lifetime_n2;
|
|
Packit |
857059 |
uint32_t hoqlife_n2;
|
|
Packit |
857059 |
uint32_t vl15FlowControlDisable;
|
|
Packit |
857059 |
uint32_t vl15_credit_rate;
|
|
Packit |
857059 |
uint32_t sa_resp_time_n2;
|
|
Packit |
857059 |
uint32_t sa_packet_lifetime_n2;
|
|
Packit |
857059 |
uint32_t vlstall;
|
|
Packit |
857059 |
uint32_t db_sync_interval;
|
|
Packit |
857059 |
uint32_t mc_dos_threshold;
|
|
Packit |
857059 |
uint32_t mc_dos_action;
|
|
Packit |
857059 |
uint32_t mc_dos_interval;
|
|
Packit |
857059 |
uint32_t trap_threshold;
|
|
Packit |
857059 |
uint32_t trap_threshold_min_count;
|
|
Packit |
857059 |
uint32_t node_appearance_msg_thresh;
|
|
Packit |
857059 |
uint32_t spine_first_routing;
|
|
Packit |
857059 |
uint32_t shortestPathBalanced;
|
|
Packit |
857059 |
uint32_t lmc;
|
|
Packit |
857059 |
uint32_t lmc_e0;
|
|
Packit |
857059 |
char routing_algorithm[STRING_SIZE];
|
|
Packit |
857059 |
uint32_t path_selection;
|
|
Packit |
857059 |
uint32_t queryValidation;
|
|
Packit |
857059 |
uint32_t enforceVFPathRecs; // Default to Enable to limit pathrecord scope to VFs
|
|
Packit |
857059 |
// otherwise, use PKEY as scope limit.
|
|
Packit |
857059 |
uint32_t sma_batch_size;
|
|
Packit |
857059 |
uint32_t max_parallel_reqs;
|
|
Packit |
857059 |
uint32_t check_mft_responses;
|
|
Packit |
857059 |
uint32_t min_supported_vls;
|
|
Packit |
857059 |
uint64_t cumulative_timeout_limit;
|
|
Packit |
857059 |
uint32_t max_fixed_vls;
|
|
Packit |
857059 |
uint32_t allow_mixed_vls; // Don't quarantine nodes that can't support all VLs.
|
|
Packit |
857059 |
uint64_t non_resp_tsec;
|
|
Packit |
857059 |
uint32_t non_resp_max_count;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t monitor_standby_enable;
|
|
Packit |
857059 |
uint32_t loopback_mode; // disable duplicate portguid checking, allowing loopback fabrics
|
|
Packit |
857059 |
uint32_t max_supported_lid;
|
|
Packit |
857059 |
uint32_t force_rebalance;
|
|
Packit |
857059 |
uint32_t use_cached_node_data;
|
|
Packit |
857059 |
uint32_t use_cached_hfi_node_data;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
SMLinkPolicyXmlConfig_t hfi_link_policy;
|
|
Packit |
857059 |
SMLinkPolicyXmlConfig_t isl_link_policy;
|
|
Packit |
857059 |
SMPortQuarantineXmlConfig_t port_quarantine;
|
|
Packit |
857059 |
SMPreemptionXmlConfig_t preemption;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
SmCongestionXmlConfig_t congestion;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
SmDorRouting_t smDorRouting;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
SmAdaptiveRoutingXmlConfig_t adaptiveRouting;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t sma_spoofing_check; // used to enable/disable usage of SMA security checking
|
|
Packit |
857059 |
uint32_t NoReplyIfBusy; // Normally when an SA query cannot be processed because
|
|
Packit |
857059 |
// a context is temporarily not available or an error is
|
|
Packit |
857059 |
// detected which may be resolved when an im progress sweep
|
|
Packit |
857059 |
// finishes, a busy status will be returned to the requester.
|
|
Packit |
857059 |
//
|
|
Packit |
857059 |
// If the new configuration option NoReplyIfBusy is set to 1,
|
|
Packit |
857059 |
// rather than returning the busy status, no status will
|
|
Packit |
857059 |
// be returned. The behaviour will be as if the MAD request
|
|
Packit |
857059 |
// were lost.
|
|
Packit |
857059 |
//
|
|
Packit |
857059 |
// If NoReplyIfBusy is set to 0 or is not in the configuration
|
|
Packit |
857059 |
// file, the behavior of SM will be the same as if this change
|
|
Packit |
857059 |
// had not been made.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* STL EXTENSIONS */
|
|
Packit |
857059 |
uint32_t lft_multi_block; // # of LFT blocks per MAD. Valid range is 1-31.
|
|
Packit |
857059 |
uint32_t use_aggregates; // 0/1 - if true, combine MADs where possible.
|
|
Packit |
857059 |
uint32_t optimized_buffer_control; // 0/1 - if true, use multi-port and uniform buffer ctrl
|
|
Packit |
857059 |
// MADs to program switch ports.
|
|
Packit |
857059 |
SmAppliancesXmlConfig_t appliances; // List of node GUIDs associated with appliance nodes
|
|
Packit |
857059 |
SmPreDefTopoXmlConfig_t preDefTopo; // Pre-defined topology verification options and field enforcement
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t minSharedVLMem; // A specification (percentage) for minimum VL shared memory.
|
|
Packit |
857059 |
uint32_t dedicatedVLMemMulti; // A multiplier increasing the dedicated memory per VL
|
|
Packit |
857059 |
int32_t wireDepthOverride; // Value (bytes) to override the wire depth,
|
|
Packit |
857059 |
// -1 means use from Portinfo, 0 means no wire depth
|
|
Packit |
857059 |
int32_t replayDepthOverride; // Value (bytes) to override the replay buffer depth, -1 means use from Portinfo
|
|
Packit |
857059 |
// -1 means use from Portinfo, 0 means no replay depth
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint8_t cableInfoPolicy; // 0 means no CI cache, 1 means assume CI is identical for both ends of a cable,
|
|
Packit |
857059 |
// 2 means do not assume CI is identical for both ends.
|
|
Packit |
857059 |
uint32_t forceAttributeRewrite; // Used to force the SM to rewrite all attributes upon resweep
|
|
Packit |
857059 |
// 0 is disabled (default), 1 is enabled
|
|
Packit |
857059 |
uint32_t timerScalingEnable; // 0 is disabled (default), when enabled - HOQ and SLL are potentially modified.
|
|
Packit |
857059 |
uint32_t defaultPortErrorAction; // Bitfield representing default PortInfo PortErrorAction(s) to set for each port
|
|
Packit |
857059 |
uint32_t skipAttributeWrite; // Bitfield indicating attributes to be skipped for updating (debug)
|
|
Packit |
857059 |
uint32_t switchCascadeActivateEnable;// 0 - Disabled, 1 - Enable cascade activation using IsActiveOptimizeEnable
|
|
Packit |
857059 |
uint32_t neighborNormalRetries; // Number of retries when a port fails to go ACTIVE based on neighbor state (NeighborNormal flag)
|
|
Packit |
857059 |
uint8_t terminateAfter; // Undocumented setting. 0 - Disabled, #>0 - Terminate after # sweeps.
|
|
Packit |
857059 |
uint8_t psThreads; // Undocumented setting. The # of threads to use for parallel SM programming.
|
|
Packit |
857059 |
uint32_t portBounceLogLimit; // Number of port bounce log messages to show before suppressing the rest.
|
|
Packit |
857059 |
uint32_t neighborFWAuthenEnable; // used to enable/disable usage of NeighborFWAuthenBypass checking
|
|
Packit |
857059 |
uint32_t SslSecurityEnabled;
|
|
Packit |
857059 |
char SslSecurityDir[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmPrivateKey[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCaCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCertChainDepth;
|
|
Packit |
857059 |
char SslSecurityFmDHParameters[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCaCRLEnabled;
|
|
Packit |
857059 |
char SslSecurityFmCaCRL[FILENAME_SIZE];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t consistency_checksum; // used for checking SM consistency in fabric
|
|
Packit |
857059 |
uint32_t overall_checksum; // used to determine if SM config needs to be re-read
|
|
Packit |
857059 |
uint32_t disruptive_checksum; // checksum of parameters that are disruptive to change
|
|
Packit |
857059 |
|
|
Packit |
857059 |
SmFtreeRouting_t ftreeRouting;
|
|
Packit |
857059 |
SmDGRouting_t dgRouting;
|
|
Packit |
857059 |
SmHypercubeRouting_t hypercubeRouting;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint32_t start;
|
|
Packit |
857059 |
uint32_t hca;
|
|
Packit |
857059 |
uint32_t port;
|
|
Packit |
857059 |
uint64_t port_guid;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t lid;
|
|
Packit |
857059 |
uint32_t sa_rmpp_checksum;
|
|
Packit |
857059 |
uint32_t dynamic_port_alloc;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t sm_debug_perf;
|
|
Packit |
857059 |
uint32_t sa_debug_perf;
|
|
Packit |
857059 |
uint32_t sm_debug_vf;
|
|
Packit |
857059 |
uint32_t sm_debug_routing;
|
|
Packit |
857059 |
uint32_t sm_debug_lid_assign;
|
|
Packit |
857059 |
uint32_t trap_log_suppress_trigger_interval;
|
|
Packit |
857059 |
uint32_t debug_jm;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t priority;
|
|
Packit |
857059 |
uint32_t elevated_priority;
|
|
Packit |
857059 |
char CoreDumpLimit[STRING_SIZE]; // inherited from Common FM setting
|
|
Packit |
857059 |
char CoreDumpDir[FILENAME_SIZE]; // inherited from Common FM setting
|
|
Packit |
857059 |
uint32_t debug;
|
|
Packit |
857059 |
uint32_t debug_rmpp;
|
|
Packit |
857059 |
uint32_t log_level;
|
|
Packit |
857059 |
char log_file[LOGFILE_SIZE];
|
|
Packit |
857059 |
uint32_t syslog_mode;
|
|
Packit |
857059 |
char syslog_facility[STRING_SIZE];
|
|
Packit |
857059 |
FmParamU32_t log_masks[VIEO_LAST_MOD_ID+1];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t loop_test_on;
|
|
Packit |
857059 |
uint32_t loop_test_fast_mode;
|
|
Packit |
857059 |
uint32_t loop_test_packets;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
char dumpCounters[LOGFILE_SIZE]; // Undocumented setting. Null - Disabled. Not Null - dump performance counters after each sweep.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t multicast_mask;
|
|
Packit |
857059 |
uint32_t lid_strategy;
|
|
Packit |
857059 |
uint32_t sm_dsap_enabled;
|
|
Packit |
857059 |
uint32_t P_Key_8B;
|
|
Packit |
857059 |
uint32_t P_Key_10B;
|
|
Packit |
857059 |
} SMXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _XMLMonitor {
|
|
Packit |
857059 |
char monitor[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint16_t dg_Index;
|
|
Packit |
857059 |
} XMLMonitor_t;
|
|
Packit |
857059 |
//Pm PortGroups
|
|
Packit |
857059 |
typedef struct PmPortGroupXmlConfig {
|
|
Packit |
857059 |
uint8_t Enabled;
|
|
Packit |
857059 |
char Name[STL_PM_GROUPNAMELEN+1];
|
|
Packit |
857059 |
XMLMonitor_t Monitors[STL_PM_MAX_DG_PER_PMPG];
|
|
Packit |
857059 |
} PmPortGroupXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Pm Thresholds
|
|
Packit |
857059 |
typedef struct _PmThresholdsXmlConfig {
|
|
Packit |
857059 |
uint32_t Integrity;
|
|
Packit |
857059 |
uint32_t Congestion;
|
|
Packit |
857059 |
uint32_t SmaCongestion;
|
|
Packit |
857059 |
uint32_t Bubble;
|
|
Packit |
857059 |
uint32_t Security;
|
|
Packit |
857059 |
uint32_t Routing;
|
|
Packit |
857059 |
} PmThresholdsXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Pm ThresholdsExceededMsgLimit
|
|
Packit |
857059 |
typedef struct _PmThresholdsExceededMsgLimitXmlConfig {
|
|
Packit |
857059 |
uint32_t Integrity;
|
|
Packit |
857059 |
uint32_t Congestion;
|
|
Packit |
857059 |
uint32_t SmaCongestion;
|
|
Packit |
857059 |
uint32_t Bubble;
|
|
Packit |
857059 |
uint32_t Security;
|
|
Packit |
857059 |
uint32_t Routing;
|
|
Packit |
857059 |
} PmThresholdsExceededMsgLimitXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _PmSweepErrorInfoThresholds {
|
|
Packit |
857059 |
uint32_t Integrity;
|
|
Packit |
857059 |
uint32_t Security;
|
|
Packit |
857059 |
uint32_t Routing;
|
|
Packit |
857059 |
} PmSweepErrorInfoThresholds_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Pm IntegrityWeights
|
|
Packit |
857059 |
typedef struct _PmIntegrityWeightsXmlConfig {
|
|
Packit |
857059 |
uint8_t LocalLinkIntegrityErrors;
|
|
Packit |
857059 |
uint8_t PortRcvErrors;
|
|
Packit |
857059 |
uint8_t ExcessiveBufferOverruns;
|
|
Packit |
857059 |
uint8_t LinkErrorRecovery;
|
|
Packit |
857059 |
uint8_t LinkDowned;
|
|
Packit |
857059 |
uint8_t UncorrectableErrors;
|
|
Packit |
857059 |
uint8_t FMConfigErrors;
|
|
Packit |
857059 |
uint8_t LinkQualityIndicator;
|
|
Packit |
857059 |
uint8_t LinkWidthDowngrade;
|
|
Packit |
857059 |
} PmIntegrityWeightsXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Pm CongestionWeights
|
|
Packit |
857059 |
typedef struct _PmCongestionWeightsConfig {
|
|
Packit |
857059 |
uint8_t PortXmitWait;
|
|
Packit |
857059 |
uint8_t SwPortCongestion;
|
|
Packit |
857059 |
uint8_t PortRcvFECN;
|
|
Packit |
857059 |
uint8_t PortRcvBECN;
|
|
Packit |
857059 |
uint8_t PortXmitTimeCong;
|
|
Packit |
857059 |
uint8_t PortMarkFECN;
|
|
Packit |
857059 |
} PmCongestionWeightsXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _PmResolutionXmlConfig {
|
|
Packit |
857059 |
uint64_t LocalLinkIntegrity;
|
|
Packit |
857059 |
uint32_t LinkErrorRecovery;
|
|
Packit |
857059 |
} PmResolutionXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct _PmShortTermHistoryXmlConfig {
|
|
Packit |
857059 |
uint8_t enable;
|
|
Packit |
857059 |
char StorageLocation[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t totalHistory;
|
|
Packit |
857059 |
uint32_t imagesPerComposite;
|
|
Packit |
857059 |
uint64_t maxDiskSpace;
|
|
Packit |
857059 |
uint8_t compressionDivisions;
|
|
Packit |
857059 |
} PmShortTermHistoryXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// PM configuration
|
|
Packit |
857059 |
typedef struct _PMXmlConfig {
|
|
Packit |
857059 |
uint32_t subnet_size;
|
|
Packit |
857059 |
uint32_t config_consistency_check_level;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint16_t sweep_interval;
|
|
Packit |
857059 |
uint32_t timer;
|
|
Packit |
857059 |
uint8_t ErrorClear;
|
|
Packit |
857059 |
uint8_t ClearDataXfer;
|
|
Packit |
857059 |
uint8_t Clear64bit;
|
|
Packit |
857059 |
uint8_t Clear32bit;
|
|
Packit |
857059 |
uint8_t Clear8bit;
|
|
Packit |
857059 |
uint8_t process_hfi_counters;
|
|
Packit |
857059 |
uint8_t process_vl_counters;
|
|
Packit |
857059 |
uint8_t process_errorinfo;
|
|
Packit |
857059 |
uint32_t MaxRetries;
|
|
Packit |
857059 |
uint32_t RcvWaitInterval;
|
|
Packit |
857059 |
uint32_t MinRcvWaitInterval;
|
|
Packit |
857059 |
uint32_t SweepErrorsLogThreshold;
|
|
Packit |
857059 |
uint32_t MaxParallelNodes;
|
|
Packit |
857059 |
uint32_t PmaBatchSize;
|
|
Packit |
857059 |
uint32_t freeze_frame_lease;
|
|
Packit |
857059 |
uint32_t total_images;
|
|
Packit |
857059 |
uint32_t freeze_frame_images;
|
|
Packit |
857059 |
uint32_t max_clients;
|
|
Packit |
857059 |
uint32_t history_file_update_rate;
|
|
Packit |
857059 |
uint16_t image_update_interval;
|
|
Packit |
857059 |
PmThresholdsXmlConfig_t thresholds;
|
|
Packit |
857059 |
PmIntegrityWeightsXmlConfig_t integrityWeights;
|
|
Packit |
857059 |
PmCongestionWeightsXmlConfig_t congestionWeights;
|
|
Packit |
857059 |
PmResolutionXmlConfig_t resolution;
|
|
Packit |
857059 |
uint8_t number_of_pm_groups;
|
|
Packit |
857059 |
PmPortGroupXmlConfig_t pm_portgroups[STL_PM_MAX_CUSTOM_PORT_GROUPS];
|
|
Packit |
857059 |
PmShortTermHistoryXmlConfig_t shortTermHistory;
|
|
Packit |
857059 |
uint32_t SslSecurityEnabled;
|
|
Packit |
857059 |
char SslSecurityDir[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmPrivateKey[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCaCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCertChainDepth;
|
|
Packit |
857059 |
char SslSecurityFmDHParameters[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCaCRLEnabled;
|
|
Packit |
857059 |
char SslSecurityFmCaCRL[FILENAME_SIZE];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t consistency_checksum;
|
|
Packit |
857059 |
uint32_t overall_checksum;
|
|
Packit |
857059 |
uint32_t disruptive_checksum; // checksum of parameters that are disruptive to change
|
|
Packit |
857059 |
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint32_t start;
|
|
Packit |
857059 |
uint32_t hca;
|
|
Packit |
857059 |
uint32_t port;
|
|
Packit |
857059 |
uint64_t port_guid;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t priority;
|
|
Packit |
857059 |
uint32_t elevated_priority;
|
|
Packit |
857059 |
uint32_t debug;
|
|
Packit |
857059 |
uint32_t debug_rmpp;
|
|
Packit |
857059 |
uint32_t pm_debug_perf;
|
|
Packit |
857059 |
uint32_t log_level;
|
|
Packit |
857059 |
char log_file[LOGFILE_SIZE];
|
|
Packit |
857059 |
uint32_t syslog_mode;
|
|
Packit |
857059 |
char syslog_facility[STRING_SIZE];
|
|
Packit |
857059 |
FmParamU32_t log_masks[VIEO_LAST_MOD_ID+1];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
PmThresholdsExceededMsgLimitXmlConfig_t thresholdsExceededMsgLimit;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
PmSweepErrorInfoThresholds_t errorinfo_thresholds;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} PMXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// FE configuration
|
|
Packit |
857059 |
typedef struct _FEXmlConfig {
|
|
Packit |
857059 |
uint32_t subnet_size;
|
|
Packit |
857059 |
uint32_t startup_retries;
|
|
Packit |
857059 |
uint32_t startup_stable_wait;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t manager_check_rate;
|
|
Packit |
857059 |
uint32_t login;
|
|
Packit |
857059 |
uint32_t window;
|
|
Packit |
857059 |
uint32_t SslSecurityEnabled;
|
|
Packit |
857059 |
char SslSecurityDir[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmPrivateKey[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCaCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCertChainDepth;
|
|
Packit |
857059 |
char SslSecurityFmDHParameters[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCaCRLEnabled;
|
|
Packit |
857059 |
char SslSecurityFmCaCRL[FILENAME_SIZE];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
char name[MAX_VFABRIC_NAME + 4]; // Padded for the "_fe" suffix.
|
|
Packit |
857059 |
uint32_t start;
|
|
Packit |
857059 |
uint32_t hca;
|
|
Packit |
857059 |
uint32_t port;
|
|
Packit |
857059 |
uint64_t port_guid;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t listen;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
char CoreDumpLimit[STRING_SIZE];
|
|
Packit |
857059 |
char CoreDumpDir[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t debug;
|
|
Packit |
857059 |
uint32_t debug_rmpp;
|
|
Packit |
857059 |
uint32_t log_level;
|
|
Packit |
857059 |
char log_file[LOGFILE_SIZE];
|
|
Packit |
857059 |
uint32_t syslog_mode;
|
|
Packit |
857059 |
char syslog_facility[STRING_SIZE];
|
|
Packit |
857059 |
FmParamU32_t log_masks[VIEO_LAST_MOD_ID+1];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t trap_count;
|
|
Packit |
857059 |
uint16_t trap_nums[FE_MAX_TRAP_SUBS];
|
|
Packit |
857059 |
} FEXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// FM configuration (Shared)
|
|
Packit |
857059 |
typedef struct _FMXmlConfig {
|
|
Packit |
857059 |
uint64_t subnet_prefix;
|
|
Packit |
857059 |
uint32_t subnet_size;
|
|
Packit |
857059 |
uint32_t startup_retries;
|
|
Packit |
857059 |
uint32_t startup_stable_wait;
|
|
Packit |
857059 |
uint32_t config_consistency_check_level;
|
|
Packit |
857059 |
uint32_t SslSecurityEnabled;
|
|
Packit |
857059 |
char SslSecurityDir[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmPrivateKey[FILENAME_SIZE];
|
|
Packit |
857059 |
char SslSecurityFmCaCertificate[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCertChainDepth;
|
|
Packit |
857059 |
char SslSecurityFmDHParameters[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t SslSecurityFmCaCRLEnabled;
|
|
Packit |
857059 |
char SslSecurityFmCaCRL[FILENAME_SIZE];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
char fm_name[MAX_VFABRIC_NAME];
|
|
Packit |
857059 |
uint32_t start;
|
|
Packit |
857059 |
uint32_t hca;
|
|
Packit |
857059 |
uint32_t port;
|
|
Packit |
857059 |
uint64_t port_guid;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
uint32_t priority;
|
|
Packit |
857059 |
uint32_t elevated_priority;
|
|
Packit |
857059 |
char CoreDumpLimit[STRING_SIZE];
|
|
Packit |
857059 |
char CoreDumpDir[FILENAME_SIZE];
|
|
Packit |
857059 |
uint32_t debug;
|
|
Packit |
857059 |
uint32_t debug_rmpp;
|
|
Packit |
857059 |
uint32_t log_level;
|
|
Packit |
857059 |
char log_file[LOGFILE_SIZE];
|
|
Packit |
857059 |
uint32_t syslog_mode;
|
|
Packit |
857059 |
char syslog_facility[STRING_SIZE];
|
|
Packit |
857059 |
FmParamU32_t log_masks[VIEO_LAST_MOD_ID+1];
|
|
Packit |
857059 |
// FM config doesn't have checksums because all the data is contained in SM, PM, or FE configs
|
|
Packit |
857059 |
} FMXmlConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// FM instance
|
|
Packit |
857059 |
typedef struct _FMXmlInstance {
|
|
Packit |
857059 |
FMXmlConfig_t fm_config;
|
|
Packit |
857059 |
SMXmlConfig_t sm_config;
|
|
Packit |
857059 |
SMDPLXmlConfig_t sm_dpl_config;
|
|
Packit |
857059 |
SMMcastConfig_t sm_mc_config;
|
|
Packit |
857059 |
SmMcastMlidShare_t sm_mls_config;
|
|
Packit |
857059 |
SMMcastDefGrpCfg_t sm_mdg_config;
|
|
Packit |
857059 |
VFXmlConfig_t vf_config;
|
|
Packit |
857059 |
QosXmlConfig_t qos_config;
|
|
Packit |
857059 |
DGXmlConfig_t dg_config;
|
|
Packit |
857059 |
AppXmlConfig_t app_config;
|
|
Packit |
857059 |
PMXmlConfig_t pm_config;
|
|
Packit |
857059 |
FEXmlConfig_t fe_config;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} FMXmlInstance_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// XML debug
|
|
Packit |
857059 |
typedef struct _XmlDebug {
|
|
Packit |
857059 |
uint32_t xml_all_debug;
|
|
Packit |
857059 |
uint32_t xml_vf_debug;
|
|
Packit |
857059 |
uint32_t xml_sm_debug;
|
|
Packit |
857059 |
uint32_t xml_fe_debug;
|
|
Packit |
857059 |
uint32_t xml_pm_debug;
|
|
Packit |
857059 |
uint32_t xml_parse_debug;
|
|
Packit |
857059 |
} XmlDebug_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Composite FM configuration
|
|
Packit |
857059 |
typedef struct _FMXmlCompositeConfig {
|
|
Packit |
857059 |
FMXmlInstance_t *fm_instance_common;
|
|
Packit |
857059 |
FMXmlInstance_t *fm_instance[MAX_INSTANCES];
|
|
Packit |
857059 |
int num_instances;
|
|
Packit |
857059 |
XmlDebug_t xmlDebug;
|
|
Packit |
857059 |
} FMXmlCompositeConfig_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// parseFmConfig:
|
|
Packit |
857059 |
// fm - instance to parse
|
|
Packit |
857059 |
// full - Parse all the instances in the config file (ignore the fm parameter)
|
|
Packit |
857059 |
// preverify - run renderVirtualFabics on config to verify VFs
|
|
Packit |
857059 |
// (not necessary if renderVirtualFabrics will be called)
|
|
Packit |
857059 |
extern FMXmlCompositeConfig_t* parseFmConfig(char *filename, uint32_t flags, uint32_t fm, uint32_t full, uint32_t preverify, uint32_t embedded);
|
|
Packit |
857059 |
extern void releaseXmlConfig(FMXmlCompositeConfig_t *config, uint32_t full);
|
|
Packit |
857059 |
extern VirtualFabrics_t* renderVirtualFabricsConfig(uint32_t fm, FMXmlCompositeConfig_t *config,
|
|
Packit |
857059 |
IXmlParserPrintMessage printError, IXmlParserPrintMessage printWarning);
|
|
Packit |
857059 |
extern VirtualFabrics_t* reRenderVirtualFabricsConfig(uint32_t fm, VirtualFabrics_t *oldVfsip, FMXmlCompositeConfig_t *config,
|
|
Packit |
857059 |
IXmlParserPrintMessage printError, IXmlParserPrintMessage printWarning);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
extern void releaseVirtualFabricsConfig(VirtualFabrics_t *vfsip);
|
|
Packit |
857059 |
extern void initXmlPoolGetCallback(void *function);
|
|
Packit |
857059 |
extern void initXmlPoolFreeCallback(void *function);
|
|
Packit |
857059 |
extern uint32_t xml_compute_pool_size(uint8_t full);
|
|
Packit |
857059 |
extern uint8_t verifyFmConfig(char* filename, uint32_t flags);
|
|
Packit |
857059 |
int generateDefaultXmlConfig(uint8_t cli);
|
|
Packit |
857059 |
extern VF_t* findVfPointer(VirtualFabrics_t*, char*);
|
|
Packit |
857059 |
extern void fmClearConfig(FMXmlConfig_t *fmp);
|
|
Packit |
857059 |
extern void pmClearConfig(PMXmlConfig_t *pmp);
|
|
Packit |
857059 |
extern void feClearConfig(FEXmlConfig_t *fep);
|
|
Packit |
857059 |
extern void smScrubConfig(SMXmlConfig_t *smp);
|
|
Packit |
857059 |
extern boolean smCopyConfig(SMXmlConfig_t *dst,SMXmlConfig_t *src);
|
|
Packit |
857059 |
extern void smClearConfig(SMXmlConfig_t *smp);
|
|
Packit |
857059 |
#ifndef __VXWORKS__
|
|
Packit |
857059 |
extern int getFacility(char* name, uint8_t test);
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
extern void smShowConfig(SMXmlConfig_t *smp, SMDPLXmlConfig_t *dplp, SMMcastConfig_t *mcp, SmMcastMlidShare_t *mlsp);
|
|
Packit |
857059 |
extern void pmShowConfig(PMXmlConfig_t *pmp);
|
|
Packit |
857059 |
extern void feShowConfig(FEXmlConfig_t *fep);
|
|
Packit |
857059 |
extern int getXMLConfigData(uint8_t *buffer, uint32_t bufflen, uint32_t *filelen);
|
|
Packit |
857059 |
extern int putXMLConfigData(uint8_t *buffer, uint32_t filelen);
|
|
Packit |
857059 |
extern int copyCompressXMLConfigFile(char *src, char *dst);
|
|
Packit |
857059 |
extern void freeDgInfo(DGXmlConfig_t *dg);
|
|
Packit |
857059 |
extern FSTATUS MatchImplicitMGIDtoVF(SMMcastDefGrp_t *mdgp, VirtualFabrics_t *vf_config);
|
|
Packit |
857059 |
extern FSTATUS MatchExplicitMGIDtoVF(SMMcastDefGrp_t *mdgp, VirtualFabrics_t *vf_config, boolean update_active_vfabrics, int enforceVFPathRecs);
|
|
Packit |
857059 |
int verifyAndConvertMGidString(char *mgidString, VFAppMgid_t *mgidMapping);
|
|
Packit |
857059 |
// Export XML Memory mapping functions for the SM to use with the Topology lib on ESM
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
extern void* getParserMemory(size_t size);
|
|
Packit |
857059 |
extern void* reallocParserMemory(void* ptr, size_t size);
|
|
Packit |
857059 |
extern void freeParserMemory(void* ptr);
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
// Macro for proper typecasting of pointers into the cl_map_item key
|
|
Packit |
857059 |
#ifdef __VXWORKS__
|
|
Packit |
857059 |
#define XML_QMAP_CHAR_CAST (char*)(uint32)
|
|
Packit |
857059 |
#define XML_QMAP_U64_CAST (uint64)(uint32)
|
|
Packit |
857059 |
#define XML_QMAP_VOID_CAST (void*)(uint32)
|
|
Packit |
857059 |
#define XML_QMAP_U8_CAST (uint8_t*)(uint32)
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
#define XML_QMAP_CHAR_CAST (char*)
|
|
Packit |
857059 |
#define XML_QMAP_U64_CAST (uint64)
|
|
Packit |
857059 |
#define XML_QMAP_VOID_CAST (void*)
|
|
Packit |
857059 |
#define XML_QMAP_U8_CAST (uint8_t*)
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define for_all_qmap_item(map, item) \
|
|
Packit |
857059 |
for(item = cl_qmap_head(map); \
|
|
Packit |
857059 |
item != cl_qmap_end(map); \
|
|
Packit |
857059 |
item = cl_qmap_next(item))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define for_all_qmap_type(map, item, obj, type) \
|
|
Packit |
857059 |
for(item = cl_qmap_head(map), obj = type cl_qmap_key(item); \
|
|
Packit |
857059 |
item != cl_qmap_end(map); \
|
|
Packit |
857059 |
item = cl_qmap_next(item), obj = type cl_qmap_key(item))
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define for_all_qmap_u64(map, item, obj) for_all_qmap_type(map, item, obj, XML_QMAP_U64_CAST)
|
|
Packit |
857059 |
#define for_all_qmap_ptr(map, item, obj) for_all_qmap_type(map, item, obj, XML_QMAP_VOID_CAST)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#endif // _FM_XML_H_
|