1/* 2 * Copyright (c) 2004-2007 Voltaire Inc. All rights reserved. 3 * Copyright (c) 2007 Xsigo Systems Inc. All rights reserved. 4 * 5 * This software is available to you under a choice of one of two 6 * licenses. You may choose to be licensed under the terms of the GNU 7 * General Public License (GPL) Version 2, available from the file 8 * COPYING in the main directory of this source tree, or the 9 * OpenIB.org BSD license below: 10 * 11 * Redistribution and use in source and binary forms, with or 12 * without modification, are permitted provided that the following 13 * conditions are met: 14 * 15 * - Redistributions of source code must retain the above 16 * copyright notice, this list of conditions and the following 17 * disclaimer. 18 * 19 * - Redistributions in binary form must reproduce the above 20 * copyright notice, this list of conditions and the following 21 * disclaimer in the documentation and/or other materials 22 * provided with the distribution. 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 * SOFTWARE. 32 * 33 */ 34 35#ifndef _IBNETDISCOVER_H_ 36#define _IBNETDISCOVER_H_ 37 38#define MAXHOPS 63 39 40#define CA_NODE 1 41#define SWITCH_NODE 2 42#define ROUTER_NODE 3 43 44#define LIST_CA_NODE (1 << CA_NODE) 45#define LIST_SWITCH_NODE (1 << SWITCH_NODE) 46#define LIST_ROUTER_NODE (1 << ROUTER_NODE) 47 48/* Vendor IDs (for chassis based systems) */ 49#define VTR_VENDOR_ID 0x8f1 /* Voltaire */ 50#define TS_VENDOR_ID 0x5ad /* Cisco */ 51#define SS_VENDOR_ID 0x66a /* InfiniCon */ 52#define XS_VENDOR_ID 0x1397 /* Xsigo */ 53 54 55typedef struct Port Port; 56typedef struct Node Node; 57typedef struct ChassisRecord ChassisRecord; 58 59struct ChassisRecord { 60 ChassisRecord *next; 61 62 unsigned char chassisnum; 63 unsigned char anafanum; 64 unsigned char slotnum; 65 unsigned char chassistype; 66 unsigned char chassisslot; 67}; 68 69struct Port { 70 Port *next; 71 uint64_t portguid; 72 int portnum; 73 int lid; 74 int lmc; 75 int state; 76 int physstate; 77 int linkwidth; 78 int linkspeed; 79 80 Node *node; 81 Port *remoteport; /* null if SMA */ 82}; 83 84struct Node { 85 Node *htnext; 86 Node *dnext; 87 Port *ports; 88 ib_portid_t path; 89 int type; 90 int dist; 91 int numports; 92 int localport; 93 int smalid; 94 int smalmc; 95 int smaenhsp0; 96 uint32_t devid; 97 uint32_t vendid; 98 uint64_t sysimgguid; 99 uint64_t nodeguid; 100 uint64_t portguid; 101 char nodedesc[64]; 102 uint8_t nodeinfo[64]; 103 104 ChassisRecord *chrecord; 105}; 106 107#endif /* _IBNETDISCOVER_H_ */ 108