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