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