1 #pragma once
2 
3 #include <span>
4 
5 namespace phosphor
6 {
7 namespace network
8 {
9 namespace ncsi
10 {
11 
12 constexpr auto DEFAULT_VALUE = -1;
13 constexpr auto NONE = 0;
14 
15 /* @brief  This function will ask underlying NCSI driver
16  *         to send an OEM command (command type 0x50) with
17  *         the specified payload as the OEM data.
18  *         This function talks with the NCSI driver over
19  *         netlink messages.
20  * @param[in] ifindex - Interface Index.
21  * @param[in] package - NCSI Package.
22  * @param[in] channel - Channel number with in the package.
23  * @param[in] payload - OEM data to send.
24  * @returns 0 on success and negative value for failure.
25  */
26 int sendOemCommand(int ifindex, int package, int channel,
27                    std::span<const unsigned char> payload);
28 
29 /* @brief  This function will ask underlying NCSI driver
30  *         to set a specific  package or package/channel
31  *         combination as the preferred choice.
32  *         This function talks with the NCSI driver over
33  *         netlink messages.
34  * @param[in] ifindex - Interface Index.
35  * @param[in] package - NCSI Package.
36  * @param[in] channel - Channel number with in the package.
37  * @returns 0 on success and negative value for failure.
38  */
39 int setChannel(int ifindex, int package, int channel);
40 
41 /* @brief  This function will ask underlying NCSI driver
42  *         to clear any preferred setting from the given
43  *         interface.
44  *         This function talks with the NCSI driver over
45  *         netlink messages.
46  * @param[in] ifindex - Interface Index.
47  * @returns 0 on success and negative value for failure.
48  */
49 int clearInterface(int ifindex);
50 
51 /* @brief  This function is used to dump all the info
52  *         of the package and the channels underlying
53  *         the package.
54  * @param[in] ifindex - Interface Index.
55  * @param[in] package - NCSI Package.
56  * @returns 0 on success and negative value for failure.
57  */
58 int getInfo(int ifindex, int package);
59 
60 } // namespace ncsi
61 } // namespace network
62 } // namespace phosphor
63