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