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] opcode  - NCSI Send Command sub-operation
24  * @param[in] payload - OEM data to send.
25  * @returns 0 on success and negative value for failure.
26  */
27 int sendOemCommand(int ifindex, int package, int channel, int opcode,
28                    std::span<const unsigned char> payload);
29 
30 /* @brief  This function will ask underlying NCSI driver
31  *         to set a specific  package or package/channel
32  *         combination as the preferred choice.
33  *         This function talks with the NCSI driver over
34  *         netlink messages.
35  * @param[in] ifindex - Interface Index.
36  * @param[in] package - NCSI Package.
37  * @param[in] channel - Channel number with in the package.
38  * @returns 0 on success and negative value for failure.
39  */
40 int setChannel(int ifindex, int package, int channel);
41 
42 /* @brief  This function will ask underlying NCSI driver
43  *         to clear any preferred setting from the given
44  *         interface.
45  *         This function talks with the NCSI driver over
46  *         netlink messages.
47  * @param[in] ifindex - Interface Index.
48  * @returns 0 on success and negative value for failure.
49  */
50 int clearInterface(int ifindex);
51 
52 /* @brief  This function is used to dump all the info
53  *         of the package and the channels underlying
54  *         the package.
55  * @param[in] ifindex - Interface Index.
56  * @param[in] package - NCSI Package.
57  * @returns 0 on success and negative value for failure.
58  */
59 int getInfo(int ifindex, int package);
60 
61 } // namespace ncsi
62 } // namespace network
63 } // namespace phosphor
64