Wireshark  4.3.0
The Wireshark network protocol analyzer
packet-infiniband.h
1 /* packet-infiniband.h
2  * Routines for Infiniband/ERF Dissection
3  * Copyright 2008 Endace Technology Limited
4  *
5  * Wireshark - Network traffic analyzer
6  * By Gerald Combs <gerald@wireshark.org>
7  * Copyright 1998 Gerald Combs
8  *
9  * Modified 2010 by Mellanox Technologies Ltd.
10  *
11  * SPDX-License-Identifier: GPL-2.0-or-later
12  */
13 #ifndef __PACKET_INFINIBAND_H_
14 #define __PACKET_INFINIBAND_H_
15 
16 #define MAD_DATA_SIZE 232 /* size of data field a MAD payload carries */
17 #define GID_SIZE 16 /* size of GID = 128bit (same as IPv6) */
18 
19 /* infiniband-specific information for conversations */
20 typedef struct {
21  guint64 service_id; /* service id specified when the (RC) channel was set-up */
22  gboolean client_to_server; /* message direction */
23  guint32 src_qp; /* originator src qp as this is not present in RC packets */
24 
25  /* store mad data so that it can be parsed for private data by ULP */
26  guint8 mad_private_data[MAD_DATA_SIZE];
28 
29 /* OpCodeValues
30 * Code Bits [7-5] Connection Type
31 * [4-0] Message Type
32 
33 * Reliable Connection (RC)
34 * [7-5] = 000 */
35 #define RC_SEND_FIRST 0 /*0b00000000 */
36 #define RC_SEND_MIDDLE 1 /*0b00000001 */
37 #define RC_SEND_LAST 2 /*0b00000010 */
38 #define RC_SEND_LAST_IMM 3 /*0b00000011 */
39 #define RC_SEND_ONLY 4 /*0b00000100 */
40 #define RC_SEND_ONLY_IMM 5 /*0b00000101 */
41 #define RC_RDMA_WRITE_FIRST 6 /*0b00000110 */
42 #define RC_RDMA_WRITE_MIDDLE 7 /*0b00000111 */
43 #define RC_RDMA_WRITE_LAST 8 /*0b00001000 */
44 #define RC_RDMA_WRITE_LAST_IMM 9 /*0b00001001 */
45 #define RC_RDMA_WRITE_ONLY 10 /*0b00001010 */
46 #define RC_RDMA_WRITE_ONLY_IMM 11 /*0b00001011 */
47 #define RC_RDMA_READ_REQUEST 12 /*0b00001100 */
48 #define RC_RDMA_READ_RESPONSE_FIRST 13 /*0b00001101 */
49 #define RC_RDMA_READ_RESPONSE_MIDDLE 14 /*0b00001110 */
50 #define RC_RDMA_READ_RESPONSE_LAST 15 /*0b00001111 */
51 #define RC_RDMA_READ_RESPONSE_ONLY 16 /*0b00010000 */
52 #define RC_ACKNOWLEDGE 17 /*0b00010001 */
53 #define RC_ATOMIC_ACKNOWLEDGE 18 /*0b00010010 */
54 #define RC_CMP_SWAP 19 /*0b00010011 */
55 #define RC_FETCH_ADD 20 /*0b00010100 */
56 #define RC_SEND_LAST_INVAL 22 /*0b00010110 */
57 #define RC_SEND_ONLY_INVAL 23 /*0b00010111 */
58 #define RC_FLUSH 28 /*0b00011100 */
59 #define RC_ATOMIC_WRITE 29 /*0b00011101 */
60 
61 /* Reliable Datagram (RD)
62 * [7-5] = 010 */
63 #define RD_SEND_FIRST 64 /*0b01000000 */
64 #define RD_SEND_MIDDLE 65 /*0b01000001 */
65 #define RD_SEND_LAST 66 /*0b01000010 */
66 #define RD_SEND_LAST_IMM 67 /*0b01000011 */
67 #define RD_SEND_ONLY 68 /*0b01000100 */
68 #define RD_SEND_ONLY_IMM 69 /*0b01000101 */
69 #define RD_RDMA_WRITE_FIRST 70 /*0b01000110 */
70 #define RD_RDMA_WRITE_MIDDLE 71 /*0b01000111 */
71 #define RD_RDMA_WRITE_LAST 72 /*0b01001000 */
72 #define RD_RDMA_WRITE_LAST_IMM 73 /*0b01001001 */
73 #define RD_RDMA_WRITE_ONLY 74 /*0b01001010 */
74 #define RD_RDMA_WRITE_ONLY_IMM 75 /*0b01001011 */
75 #define RD_RDMA_READ_REQUEST 76 /*0b01001100 */
76 #define RD_RDMA_READ_RESPONSE_FIRST 77 /*0b01001101 */
77 #define RD_RDMA_READ_RESPONSE_MIDDLE 78 /*0b01001110 */
78 #define RD_RDMA_READ_RESPONSE_LAST 79 /*0b01001111 */
79 #define RD_RDMA_READ_RESPONSE_ONLY 80 /*0b01010000 */
80 #define RD_ACKNOWLEDGE 81 /*0b01010001 */
81 #define RD_ATOMIC_ACKNOWLEDGE 82 /*0b01010010 */
82 #define RD_CMP_SWAP 83 /*0b01010011 */
83 #define RD_FETCH_ADD 84 /*0b01010100 */
84 #define RD_RESYNC 85 /*0b01010101 */
85 #define RD_FLUSH 92 /*0b01011100 */
86 #define RD_ATOMIC_WRITE 93 /*0b01011101 */
87 
88 /* Unreliable Datagram (UD)
89 * [7-5] = 011 */
90 #define UD_SEND_ONLY 100 /*0b01100100 */
91 #define UD_SEND_ONLY_IMM 101 /*0b01100101 */
92 
93 /* Unreliable Connection (UC)
94 * [7-5] = 001 */
95 #define UC_SEND_FIRST 32 /*0b00100000 */
96 #define UC_SEND_MIDDLE 33 /*0b00100001 */
97 #define UC_SEND_LAST 34 /*0b00100010 */
98 #define UC_SEND_LAST_IMM 35 /*0b00100011 */
99 #define UC_SEND_ONLY 36 /*0b00100100 */
100 #define UC_SEND_ONLY_IMM 37 /*0b00100101 */
101 #define UC_RDMA_WRITE_FIRST 38 /*0b00100110 */
102 #define UC_RDMA_WRITE_MIDDLE 39 /*0b00100111 */
103 #define UC_RDMA_WRITE_LAST 40 /*0b00101000 */
104 #define UC_RDMA_WRITE_LAST_IMM 41 /*0b00101001 */
105 #define UC_RDMA_WRITE_ONLY 42 /*0b00101010 */
106 #define UC_RDMA_WRITE_ONLY_IMM 43 /*0b00101011 */
107 
108 /* ComMgt class Attributes */
109 #define ATTR_CM_REQ 0x0010
110 #define ATTR_CM_REJ 0x0012
111 #define ATTR_CM_REP 0x0013
112 #define ATTR_CM_RTU 0x0014
113 #define ATTR_CM_DREQ 0x0015
114 #define ATTR_CM_DRSP 0x0016
115 
116 /*
117  * Private data passed from the infiniband dissector to payload subdissectors.
118  */
120  proto_tree* payload_tree;
121  guint8 opCode; /* OpCode from BTH header. */
122  guint8 pad_count; /* PadCount from BTH header. */
123  guint16 cm_attribute_id; /* attribute id for CM messages */
124  guint32 reth_remote_key; /* Remote Key from RETH header */
125  guint64 reth_remote_address;/* Remote address from RETH header */
126  guint32 reth_dma_length; /* DMA Length from RETH header */
127  guint32 packet_seq_num; /* Packet sequence number */
128  gboolean dctConnect; /* indicator for DCT connect/disconnect */
129 };
130 
131 #endif
132 
133 /*
134  * Editor modelines - https://www.wireshark.org/tools/modelines.html
135  *
136  * Local variables:
137  * c-basic-offset: 4
138  * tab-width: 8
139  * indent-tabs-mode: nil
140  * End:
141  *
142  * vi: set shiftwidth=4 tabstop=8 expandtab:
143  * :indentSize=4:tabSize=8:noTabs=true:
144  */
Definition: proto.h:904
Definition: packet-infiniband.h:20
Definition: packet-infiniband.h:119