xref: /openbmc/phosphor-host-ipmid/user_channel/channel_layer.hpp (revision 69b4c2811a262094addab680c925e63dd3468440)
1071f3f2fSAppaRao Puli /*
2071f3f2fSAppaRao Puli // Copyright (c) 2018 Intel Corporation
3071f3f2fSAppaRao Puli //
4071f3f2fSAppaRao Puli // Licensed under the Apache License, Version 2.0 (the "License");
5071f3f2fSAppaRao Puli // you may not use this file except in compliance with the License.
6071f3f2fSAppaRao Puli // You may obtain a copy of the License at
7071f3f2fSAppaRao Puli //
8071f3f2fSAppaRao Puli //      http://www.apache.org/licenses/LICENSE-2.0
9071f3f2fSAppaRao Puli //
10071f3f2fSAppaRao Puli // Unless required by applicable law or agreed to in writing, software
11071f3f2fSAppaRao Puli // distributed under the License is distributed on an "AS IS" BASIS,
12071f3f2fSAppaRao Puli // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13071f3f2fSAppaRao Puli // See the License for the specific language governing permissions and
14071f3f2fSAppaRao Puli // limitations under the License.
15071f3f2fSAppaRao Puli */
16071f3f2fSAppaRao Puli #pragma once
1770bd0635SJayaprakash Mutyala #include <openssl/crypto.h>
1870bd0635SJayaprakash Mutyala 
19b541a5a5SNITIN SHARMA #include <ipmid/api.hpp>
20fbc6c9d7SPatrick Williams 
21fbc6c9d7SPatrick Williams #include <array>
22071f3f2fSAppaRao Puli #include <string>
23071f3f2fSAppaRao Puli 
24071f3f2fSAppaRao Puli namespace ipmi
25071f3f2fSAppaRao Puli {
26071f3f2fSAppaRao Puli 
27071f3f2fSAppaRao Puli static constexpr uint8_t maxIpmiChannels = 16;
28a39208e0SRichard Marian Thomaiyar static constexpr uint8_t currentChNum = 0xE;
29735ee953SVernon Mauery static constexpr uint8_t invalidChannel = 0xff;
300e2dbee2Sjayaprakash Mutyala static constexpr const uint8_t ccActionNotSupportedForChannel = 0x82;
310e2dbee2Sjayaprakash Mutyala static constexpr const uint8_t ccAccessModeNotSupportedForChannel = 0x83;
32071f3f2fSAppaRao Puli 
336e1ba9efSRichard Marian Thomaiyar /**
34e4e633eaSSumanth Bhat  * @array of privilege levels
35e4e633eaSSumanth Bhat  */
36e4e633eaSSumanth Bhat extern const std::array<std::string, PRIVILEGE_OEM + 1> privList;
37e4e633eaSSumanth Bhat 
38e4e633eaSSumanth Bhat /**
396e1ba9efSRichard Marian Thomaiyar  * @enum Channel Protocol Type (refer spec sec 6.4)
406e1ba9efSRichard Marian Thomaiyar  */
41071f3f2fSAppaRao Puli enum class EChannelProtocolType : uint8_t
42071f3f2fSAppaRao Puli {
43071f3f2fSAppaRao Puli     na = 0x00,
44071f3f2fSAppaRao Puli     ipmbV10 = 0x01,
45071f3f2fSAppaRao Puli     icmbV11 = 0x02,
46071f3f2fSAppaRao Puli     reserved = 0x03,
47071f3f2fSAppaRao Puli     ipmiSmbus = 0x04,
48071f3f2fSAppaRao Puli     kcs = 0x05,
49071f3f2fSAppaRao Puli     smic = 0x06,
50071f3f2fSAppaRao Puli     bt10 = 0x07,
51071f3f2fSAppaRao Puli     bt15 = 0x08,
52071f3f2fSAppaRao Puli     tMode = 0x09,
53071f3f2fSAppaRao Puli     oem = 0x1C,
54071f3f2fSAppaRao Puli };
55071f3f2fSAppaRao Puli 
566e1ba9efSRichard Marian Thomaiyar /**
576e1ba9efSRichard Marian Thomaiyar  * @enum Channel Medium Type (refer spec sec 6.5)
586e1ba9efSRichard Marian Thomaiyar  */
59071f3f2fSAppaRao Puli enum class EChannelMediumType : uint8_t
60071f3f2fSAppaRao Puli {
61071f3f2fSAppaRao Puli     reserved = 0x00,
62071f3f2fSAppaRao Puli     ipmb = 0x01,
63071f3f2fSAppaRao Puli     icmbV10 = 0x02,
64071f3f2fSAppaRao Puli     icmbV09 = 0x03,
65071f3f2fSAppaRao Puli     lan8032 = 0x04,
66071f3f2fSAppaRao Puli     serial = 0x05,
67071f3f2fSAppaRao Puli     otherLan = 0x06,
68071f3f2fSAppaRao Puli     pciSmbus = 0x07,
69071f3f2fSAppaRao Puli     smbusV11 = 0x08,
70071f3f2fSAppaRao Puli     smbusV20 = 0x09,
71071f3f2fSAppaRao Puli     usbV1x = 0x0A,
72071f3f2fSAppaRao Puli     usbV2x = 0x0B,
73071f3f2fSAppaRao Puli     systemInterface = 0x0C,
74071f3f2fSAppaRao Puli     oem = 0x60,
75071f3f2fSAppaRao Puli     unknown = 0x82,
76071f3f2fSAppaRao Puli };
77071f3f2fSAppaRao Puli 
786e1ba9efSRichard Marian Thomaiyar /**
796e1ba9efSRichard Marian Thomaiyar  * @enum Channel Session Type (refer spec sec 22.24 -
806e1ba9efSRichard Marian Thomaiyar  * response data byte 5)
816e1ba9efSRichard Marian Thomaiyar  */
82071f3f2fSAppaRao Puli enum class EChannelSessSupported : uint8_t
83071f3f2fSAppaRao Puli {
84071f3f2fSAppaRao Puli     none = 0,
85071f3f2fSAppaRao Puli     single = 1,
86071f3f2fSAppaRao Puli     multi = 2,
87071f3f2fSAppaRao Puli     any = 3,
88071f3f2fSAppaRao Puli };
89071f3f2fSAppaRao Puli 
906e1ba9efSRichard Marian Thomaiyar /**
916e1ba9efSRichard Marian Thomaiyar  * @enum Channel Access Mode (refer spec sec 6.6)
926e1ba9efSRichard Marian Thomaiyar  */
93071f3f2fSAppaRao Puli enum class EChannelAccessMode : uint8_t
94071f3f2fSAppaRao Puli {
95071f3f2fSAppaRao Puli     disabled = 0,
96071f3f2fSAppaRao Puli     preboot = 1,
97071f3f2fSAppaRao Puli     alwaysAvail = 2,
98071f3f2fSAppaRao Puli     shared = 3,
99071f3f2fSAppaRao Puli };
100071f3f2fSAppaRao Puli 
1016e1ba9efSRichard Marian Thomaiyar /**
1026e1ba9efSRichard Marian Thomaiyar  * @enum Authentication Types (refer spec sec 13.6 - IPMI
1036e1ba9efSRichard Marian Thomaiyar  * Session Header)
1046e1ba9efSRichard Marian Thomaiyar  */
105071f3f2fSAppaRao Puli enum class EAuthType : uint8_t
106071f3f2fSAppaRao Puli {
107071f3f2fSAppaRao Puli     none = (1 << 0x0),
108071f3f2fSAppaRao Puli     md2 = (1 << 0x1),
109071f3f2fSAppaRao Puli     md5 = (1 << 0x2),
110071f3f2fSAppaRao Puli     reserved = (1 << 0x3),
111071f3f2fSAppaRao Puli     straightPasswd = (1 << 0x4),
112071f3f2fSAppaRao Puli     oem = (1 << 0x5),
113071f3f2fSAppaRao Puli };
114071f3f2fSAppaRao Puli 
115b5a0f16dSSaravanan Palanisamy // TODO: Remove duplicate 'PayloadType' definition from netipmid's message.hpp
116b5a0f16dSSaravanan Palanisamy // to phosphor-ipmi-host/include
117b5a0f16dSSaravanan Palanisamy /**
118b5a0f16dSSaravanan Palanisamy  * @enum Payload Types (refer spec sec 13.27.3)
119b5a0f16dSSaravanan Palanisamy  */
120b5a0f16dSSaravanan Palanisamy enum class PayloadType : uint8_t
121b5a0f16dSSaravanan Palanisamy {
122b5a0f16dSSaravanan Palanisamy     IPMI = 0x00,
123b5a0f16dSSaravanan Palanisamy     SOL = 0x01,
124b5a0f16dSSaravanan Palanisamy     OPEN_SESSION_REQUEST = 0x10,
125b5a0f16dSSaravanan Palanisamy     OPEN_SESSION_RESPONSE = 0x11,
126b5a0f16dSSaravanan Palanisamy     RAKP1 = 0x12,
127b5a0f16dSSaravanan Palanisamy     RAKP2 = 0x13,
128b5a0f16dSSaravanan Palanisamy     RAKP3 = 0x14,
129b5a0f16dSSaravanan Palanisamy     RAKP4 = 0x15,
130b5a0f16dSSaravanan Palanisamy     INVALID = 0xFF,
131b5a0f16dSSaravanan Palanisamy };
132b5a0f16dSSaravanan Palanisamy 
1336e1ba9efSRichard Marian Thomaiyar /**
1346e1ba9efSRichard Marian Thomaiyar  * @enum Access mode for channel access set/get (refer spec
1356e1ba9efSRichard Marian Thomaiyar  * sec 22.22 - request byte 2[7:6])
1366e1ba9efSRichard Marian Thomaiyar  */
137071f3f2fSAppaRao Puli typedef enum
138071f3f2fSAppaRao Puli {
139071f3f2fSAppaRao Puli     doNotSet = 0x00,
140071f3f2fSAppaRao Puli     nvData = 0x01,
141071f3f2fSAppaRao Puli     activeData = 0x02,
142071f3f2fSAppaRao Puli     reserved = 0x03,
143071f3f2fSAppaRao Puli } EChannelActionType;
144071f3f2fSAppaRao Puli 
1456e1ba9efSRichard Marian Thomaiyar /**
1466e1ba9efSRichard Marian Thomaiyar  * @enum Access set flag to determine changes that has to be updated
1476e1ba9efSRichard Marian Thomaiyar  * in channel access data configuration.
1486e1ba9efSRichard Marian Thomaiyar  */
149071f3f2fSAppaRao Puli enum AccessSetFlag
150071f3f2fSAppaRao Puli {
151071f3f2fSAppaRao Puli     setAccessMode = (1 << 0),
152071f3f2fSAppaRao Puli     setUserAuthEnabled = (1 << 1),
153071f3f2fSAppaRao Puli     setMsgAuthEnabled = (1 << 2),
154071f3f2fSAppaRao Puli     setAlertingEnabled = (1 << 3),
155071f3f2fSAppaRao Puli     setPrivLimit = (1 << 4),
156071f3f2fSAppaRao Puli };
157071f3f2fSAppaRao Puli 
1586e1ba9efSRichard Marian Thomaiyar /** @struct ChannelAccess
1596e1ba9efSRichard Marian Thomaiyar  *
1606e1ba9efSRichard Marian Thomaiyar  *  Structure to store channel access related information, defined in IPMI
1616e1ba9efSRichard Marian Thomaiyar  * specification and used in Get / Set channel access (refer spec sec 22.22
1626e1ba9efSRichard Marian Thomaiyar  * & 22.23)
1636e1ba9efSRichard Marian Thomaiyar  */
164071f3f2fSAppaRao Puli struct ChannelAccess
165071f3f2fSAppaRao Puli {
166071f3f2fSAppaRao Puli     uint8_t accessMode;
167071f3f2fSAppaRao Puli     bool userAuthDisabled;
168071f3f2fSAppaRao Puli     bool perMsgAuthDisabled;
169071f3f2fSAppaRao Puli     bool alertingDisabled;
170071f3f2fSAppaRao Puli     uint8_t privLimit;
171071f3f2fSAppaRao Puli };
172071f3f2fSAppaRao Puli 
1736e1ba9efSRichard Marian Thomaiyar /** @struct ChannelInfo
1746e1ba9efSRichard Marian Thomaiyar  *
1756e1ba9efSRichard Marian Thomaiyar  *  Structure to store data about channel information, which identifies each
1766e1ba9efSRichard Marian Thomaiyar  *  channel type and information as defined in IPMI specification. (refer spec
1776e1ba9efSRichard Marian Thomaiyar  * sec 22.22 & 22.23)
1786e1ba9efSRichard Marian Thomaiyar  */
179071f3f2fSAppaRao Puli struct ChannelInfo
180071f3f2fSAppaRao Puli {
181071f3f2fSAppaRao Puli     uint8_t mediumType;
182071f3f2fSAppaRao Puli     uint8_t protocolType;
183071f3f2fSAppaRao Puli     uint8_t sessionSupported;
184071f3f2fSAppaRao Puli     bool isIpmi; // Is session IPMI
185071f3f2fSAppaRao Puli     // This is used in Get LAN Configuration parameter.
186071f3f2fSAppaRao Puli     // This holds the supported AuthTypes for a given channel.
187071f3f2fSAppaRao Puli     uint8_t authTypeSupported;
188071f3f2fSAppaRao Puli };
189071f3f2fSAppaRao Puli 
190071f3f2fSAppaRao Puli /** @brief determines valid channel
191071f3f2fSAppaRao Puli  *
192071f3f2fSAppaRao Puli  *  @param[in] chNum- channel number
193071f3f2fSAppaRao Puli  *
194071f3f2fSAppaRao Puli  *  @return true if valid, false otherwise
195071f3f2fSAppaRao Puli  */
196a45cb34fSRichard Marian Thomaiyar bool isValidChannel(const uint8_t chNum);
197071f3f2fSAppaRao Puli 
198071f3f2fSAppaRao Puli /** @brief determines whether channel device exist
199071f3f2fSAppaRao Puli  *
200071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
201071f3f2fSAppaRao Puli  *
202071f3f2fSAppaRao Puli  *  @return true if valid, false otherwise
203071f3f2fSAppaRao Puli  */
204a45cb34fSRichard Marian Thomaiyar bool doesDeviceExist(const uint8_t chNum);
205071f3f2fSAppaRao Puli 
206071f3f2fSAppaRao Puli /** @brief determines whether privilege limit is valid
207071f3f2fSAppaRao Puli  *
208071f3f2fSAppaRao Puli  *  @param[in] privLimit - Privilege limit
209071f3f2fSAppaRao Puli  *
210071f3f2fSAppaRao Puli  *  @return true if valid, false otherwise
211071f3f2fSAppaRao Puli  */
212a45cb34fSRichard Marian Thomaiyar bool isValidPrivLimit(const uint8_t privLimit);
213071f3f2fSAppaRao Puli 
214071f3f2fSAppaRao Puli /** @brief determines whether access mode  is valid
215071f3f2fSAppaRao Puli  *
216071f3f2fSAppaRao Puli  *  @param[in] accessMode - Access mode
217071f3f2fSAppaRao Puli  *
218071f3f2fSAppaRao Puli  *  @return true if valid, false otherwise
219071f3f2fSAppaRao Puli  */
220a45cb34fSRichard Marian Thomaiyar bool isValidAccessMode(const uint8_t accessMode);
221071f3f2fSAppaRao Puli 
222071f3f2fSAppaRao Puli /** @brief determines valid authentication type based on channel number
223071f3f2fSAppaRao Puli  *
224071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
225071f3f2fSAppaRao Puli  *  @param[in] authType - authentication type
226071f3f2fSAppaRao Puli  *
227071f3f2fSAppaRao Puli  *  @return true if valid, false otherwise
228071f3f2fSAppaRao Puli  */
229a45cb34fSRichard Marian Thomaiyar bool isValidAuthType(const uint8_t chNum, const EAuthType& authType);
230071f3f2fSAppaRao Puli 
231071f3f2fSAppaRao Puli /** @brief determines supported session type of a channel
232071f3f2fSAppaRao Puli  *
233071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
234071f3f2fSAppaRao Puli  *
235071f3f2fSAppaRao Puli  *  @return EChannelSessSupported - supported session type
236071f3f2fSAppaRao Puli  */
237a45cb34fSRichard Marian Thomaiyar EChannelSessSupported getChannelSessionSupport(const uint8_t chNum);
238071f3f2fSAppaRao Puli 
239071f3f2fSAppaRao Puli /** @brief determines number of active sessions on a channel
240071f3f2fSAppaRao Puli  *
241071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
242071f3f2fSAppaRao Puli  *
243071f3f2fSAppaRao Puli  *  @return numer of active sessions
244071f3f2fSAppaRao Puli  */
245a45cb34fSRichard Marian Thomaiyar int getChannelActiveSessions(const uint8_t chNum);
246071f3f2fSAppaRao Puli 
24758317120SVernon Mauery /** @brief determines maximum transfer size for a channel
24858317120SVernon Mauery  *
24958317120SVernon Mauery  *  @param[in] chNum - channel number
25058317120SVernon Mauery  *
25158317120SVernon Mauery  *  @return maximum bytes that can be transferred on this channel
25258317120SVernon Mauery  */
25358317120SVernon Mauery size_t getChannelMaxTransferSize(uint8_t chNum);
25458317120SVernon Mauery 
255071f3f2fSAppaRao Puli /** @brief initializes channel management
256071f3f2fSAppaRao Puli  *
257b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
258071f3f2fSAppaRao Puli  */
259b541a5a5SNITIN SHARMA Cc ipmiChannelInit();
260071f3f2fSAppaRao Puli 
261071f3f2fSAppaRao Puli /** @brief provides channel info details
262071f3f2fSAppaRao Puli  *
263071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
264071f3f2fSAppaRao Puli  *  @param[out] chInfo - channel info details
265071f3f2fSAppaRao Puli  *
266b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
267071f3f2fSAppaRao Puli  */
268b541a5a5SNITIN SHARMA Cc getChannelInfo(const uint8_t chNum, ChannelInfo& chInfo);
269071f3f2fSAppaRao Puli 
270071f3f2fSAppaRao Puli /** @brief provides channel access data
271071f3f2fSAppaRao Puli  *
272071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
273071f3f2fSAppaRao Puli  *  @param[out] chAccessData -channel access data
274071f3f2fSAppaRao Puli  *
275b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
276071f3f2fSAppaRao Puli  */
277b541a5a5SNITIN SHARMA Cc getChannelAccessData(const uint8_t chNum, ChannelAccess& chAccessData);
278071f3f2fSAppaRao Puli 
279a39208e0SRichard Marian Thomaiyar /** @brief provides function to convert current channel number (0xE)
280a39208e0SRichard Marian Thomaiyar  *
281a39208e0SRichard Marian Thomaiyar  *  @param[in] chNum - channel number as requested in commands.
2825ed39595SVernon Mauery  *  @param[in] devChannel - channel number as provided by device (not 0xE)
28330b01124SRichard Marian Thomaiyar  *
28430b01124SRichard Marian Thomaiyar  *  @return same channel number or proper channel number for current channel
28530b01124SRichard Marian Thomaiyar  * number (0xE).
28630b01124SRichard Marian Thomaiyar  */
convertCurrentChannelNum(const uint8_t chNum,const uint8_t devChannel)287*69b4c281SPatrick Williams static inline uint8_t convertCurrentChannelNum(const uint8_t chNum,
288*69b4c281SPatrick Williams                                                const uint8_t devChannel)
28930b01124SRichard Marian Thomaiyar {
29030b01124SRichard Marian Thomaiyar     if (chNum == currentChNum)
29130b01124SRichard Marian Thomaiyar     {
2925ed39595SVernon Mauery         return devChannel;
29330b01124SRichard Marian Thomaiyar     }
29430b01124SRichard Marian Thomaiyar     return chNum;
29530b01124SRichard Marian Thomaiyar }
29630b01124SRichard Marian Thomaiyar 
297071f3f2fSAppaRao Puli /** @brief to set channel access data
298071f3f2fSAppaRao Puli  *
299071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
300071f3f2fSAppaRao Puli  *  @param[in] chAccessData - channel access data
301071f3f2fSAppaRao Puli  *  @param[in] setFlag - flag to indicate updatable fields
302071f3f2fSAppaRao Puli  *
303b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
304071f3f2fSAppaRao Puli  */
305b541a5a5SNITIN SHARMA Cc setChannelAccessData(const uint8_t chNum, const ChannelAccess& chAccessData,
306a45cb34fSRichard Marian Thomaiyar                         const uint8_t setFlag);
307071f3f2fSAppaRao Puli 
308071f3f2fSAppaRao Puli /** @brief to get channel access data persistent data
309071f3f2fSAppaRao Puli  *
310071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
311071f3f2fSAppaRao Puli  *  @param[out] chAccessData - channel access data
312071f3f2fSAppaRao Puli  *
313b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
314071f3f2fSAppaRao Puli  */
315b541a5a5SNITIN SHARMA Cc getChannelAccessPersistData(const uint8_t chNum,
316071f3f2fSAppaRao Puli                                ChannelAccess& chAccessData);
317071f3f2fSAppaRao Puli 
318071f3f2fSAppaRao Puli /** @brief to set channel access data persistent data
319071f3f2fSAppaRao Puli  *
320071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
321071f3f2fSAppaRao Puli  *  @param[in] chAccessData - channel access data
322071f3f2fSAppaRao Puli  *  @param[in] setFlag - flag to indicate updatable fields
323071f3f2fSAppaRao Puli  *
324b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
325071f3f2fSAppaRao Puli  */
326b541a5a5SNITIN SHARMA Cc setChannelAccessPersistData(const uint8_t chNum,
327071f3f2fSAppaRao Puli                                const ChannelAccess& chAccessData,
328a45cb34fSRichard Marian Thomaiyar                                const uint8_t setFlag);
329071f3f2fSAppaRao Puli 
330071f3f2fSAppaRao Puli /** @brief provides supported authentication type for the channel
331071f3f2fSAppaRao Puli  *
332071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
333071f3f2fSAppaRao Puli  *  @param[out] authTypeSupported - supported authentication type
334071f3f2fSAppaRao Puli  *
335b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
336071f3f2fSAppaRao Puli  */
337b541a5a5SNITIN SHARMA Cc getChannelAuthTypeSupported(const uint8_t chNum, uint8_t& authTypeSupported);
338071f3f2fSAppaRao Puli 
339071f3f2fSAppaRao Puli /** @brief provides enabled authentication type for the channel
340071f3f2fSAppaRao Puli  *
341071f3f2fSAppaRao Puli  *  @param[in] chNum - channel number
342071f3f2fSAppaRao Puli  *  @param[in] priv - privilege
343071f3f2fSAppaRao Puli  *  @param[out] authType - enabled authentication type
344071f3f2fSAppaRao Puli  *
345b541a5a5SNITIN SHARMA  *  @return ccSuccess for success, others for failure.
346071f3f2fSAppaRao Puli  */
347b541a5a5SNITIN SHARMA Cc getChannelEnabledAuthType(const uint8_t chNum, const uint8_t priv,
348071f3f2fSAppaRao Puli                              EAuthType& authType);
349071f3f2fSAppaRao Puli 
35074a2102eSJohnathan Mantey /** @brief Retrieves the LAN channel name from the IPMI channel number
35174a2102eSJohnathan Mantey  *
35274a2102eSJohnathan Mantey  *  @param[in] chNum - IPMI channel number
35374a2102eSJohnathan Mantey  *
35474a2102eSJohnathan Mantey  *  @return the LAN channel name (i.e. eth0)
35574a2102eSJohnathan Mantey  */
35655768e35SRichard Marian Thomaiyar std::string getChannelName(const uint8_t chNum);
35774a2102eSJohnathan Mantey 
358735ee953SVernon Mauery /** @brief Retrieves the LAN channel number from the IPMI channel name
359735ee953SVernon Mauery  *
360735ee953SVernon Mauery  *  @param[in] chName - IPMI channel name (i.e. eth0)
361735ee953SVernon Mauery  *
362735ee953SVernon Mauery  *  @return the LAN channel number
363735ee953SVernon Mauery  */
364735ee953SVernon Mauery uint8_t getChannelByName(const std::string& chName);
365735ee953SVernon Mauery 
3666fd812d1SAyushi Smriti /** @brief determines whether payload type is valid
3676fd812d1SAyushi Smriti  *
3686fd812d1SAyushi Smriti  *	@param[in] payload type - Payload Type
3696fd812d1SAyushi Smriti  *
3706fd812d1SAyushi Smriti  *	@return true if valid, false otherwise
3716fd812d1SAyushi Smriti  */
3726fd812d1SAyushi Smriti bool isValidPayloadType(const PayloadType payloadType);
3736fd812d1SAyushi Smriti 
374071f3f2fSAppaRao Puli } // namespace ipmi
375