xref: /openbmc/phosphor-host-ipmid/user_channel/channel_layer.cpp (revision 1318a5ed36cfd41335e687b54db1c17c0dde8f45)
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 
17071f3f2fSAppaRao Puli #include "channel_layer.hpp"
18071f3f2fSAppaRao Puli 
19071f3f2fSAppaRao Puli #include "channel_mgmt.hpp"
20e4e633eaSSumanth Bhat #include "cipher_mgmt.hpp"
21071f3f2fSAppaRao Puli 
2282844ef6SGeorge Liu #include <phosphor-logging/lg2.hpp>
23071f3f2fSAppaRao Puli 
24071f3f2fSAppaRao Puli namespace ipmi
25071f3f2fSAppaRao Puli {
26071f3f2fSAppaRao Puli 
doesDeviceExist(const uint8_t chNum)27a45cb34fSRichard Marian Thomaiyar bool doesDeviceExist(const uint8_t chNum)
28071f3f2fSAppaRao Puli {
29071f3f2fSAppaRao Puli     // TODO: This is not the reliable way to find the device
30071f3f2fSAppaRao Puli     // associated with ethernet interface as the channel number to
31071f3f2fSAppaRao Puli     // eth association is not done. Need to revisit later
3211d68897SWilly Tu     struct stat fileStat = {};
3374a2102eSJohnathan Mantey     std::string devName("/sys/class/net/" + getChannelName(chNum));
34071f3f2fSAppaRao Puli 
35071f3f2fSAppaRao Puli     if (stat(devName.data(), &fileStat) != 0)
36071f3f2fSAppaRao Puli     {
3782844ef6SGeorge Liu         lg2::debug("Ethernet device not found");
38071f3f2fSAppaRao Puli         return false;
39071f3f2fSAppaRao Puli     }
40071f3f2fSAppaRao Puli 
41071f3f2fSAppaRao Puli     return true;
42071f3f2fSAppaRao Puli }
43071f3f2fSAppaRao Puli 
isValidPrivLimit(const uint8_t privLimit)44a45cb34fSRichard Marian Thomaiyar bool isValidPrivLimit(const uint8_t privLimit)
45071f3f2fSAppaRao Puli {
460e2dbee2Sjayaprakash Mutyala     // Callback privilege is deprecated in OpenBMC
47785223a6Ssrikanta mondal     // At present, "OEM Privilege" is not used in OpenBMC
48785223a6Ssrikanta mondal     return ((privLimit > PRIVILEGE_CALLBACK) && (privLimit < PRIVILEGE_OEM));
49071f3f2fSAppaRao Puli }
50071f3f2fSAppaRao Puli 
isValidAccessMode(const uint8_t accessMode)51a45cb34fSRichard Marian Thomaiyar bool isValidAccessMode(const uint8_t accessMode)
52071f3f2fSAppaRao Puli {
533771f5f2SPavanKumarIntel     return (accessMode <= static_cast<uint8_t>(EChannelAccessMode::shared));
54071f3f2fSAppaRao Puli }
55071f3f2fSAppaRao Puli 
isValidChannel(const uint8_t chNum)56a45cb34fSRichard Marian Thomaiyar bool isValidChannel(const uint8_t chNum)
57071f3f2fSAppaRao Puli {
58071f3f2fSAppaRao Puli     return getChannelConfigObject().isValidChannel(chNum);
59071f3f2fSAppaRao Puli }
60071f3f2fSAppaRao Puli 
isValidAuthType(const uint8_t chNum,const EAuthType & authType)61a45cb34fSRichard Marian Thomaiyar bool isValidAuthType(const uint8_t chNum, const EAuthType& authType)
62071f3f2fSAppaRao Puli {
63071f3f2fSAppaRao Puli     return getChannelConfigObject().isValidAuthType(chNum, authType);
64071f3f2fSAppaRao Puli }
65071f3f2fSAppaRao Puli 
getChannelSessionSupport(const uint8_t chNum)66a45cb34fSRichard Marian Thomaiyar EChannelSessSupported getChannelSessionSupport(const uint8_t chNum)
67071f3f2fSAppaRao Puli {
68071f3f2fSAppaRao Puli     return getChannelConfigObject().getChannelSessionSupport(chNum);
69071f3f2fSAppaRao Puli }
70071f3f2fSAppaRao Puli 
getChannelActiveSessions(const uint8_t chNum)71a45cb34fSRichard Marian Thomaiyar int getChannelActiveSessions(const uint8_t chNum)
72071f3f2fSAppaRao Puli {
73071f3f2fSAppaRao Puli     return getChannelConfigObject().getChannelActiveSessions(chNum);
74071f3f2fSAppaRao Puli }
75071f3f2fSAppaRao Puli 
getChannelMaxTransferSize(uint8_t chNum)7658317120SVernon Mauery size_t getChannelMaxTransferSize(uint8_t chNum)
7758317120SVernon Mauery {
7858317120SVernon Mauery     return getChannelConfigObject().getChannelMaxTransferSize(chNum);
7958317120SVernon Mauery }
8058317120SVernon Mauery 
ipmiChannelInit()81b541a5a5SNITIN SHARMA Cc ipmiChannelInit()
82071f3f2fSAppaRao Puli {
83071f3f2fSAppaRao Puli     getChannelConfigObject();
84e4e633eaSSumanth Bhat     getCipherConfigObject(csPrivFileName, csPrivDefaultFileName);
85b541a5a5SNITIN SHARMA     return ccSuccess;
86071f3f2fSAppaRao Puli }
87071f3f2fSAppaRao Puli 
getChannelInfo(const uint8_t chNum,ChannelInfo & chInfo)88b541a5a5SNITIN SHARMA Cc getChannelInfo(const uint8_t chNum, ChannelInfo& chInfo)
89071f3f2fSAppaRao Puli {
90071f3f2fSAppaRao Puli     return getChannelConfigObject().getChannelInfo(chNum, chInfo);
91071f3f2fSAppaRao Puli }
92071f3f2fSAppaRao Puli 
getChannelAccessData(const uint8_t chNum,ChannelAccess & chAccessData)93b541a5a5SNITIN SHARMA Cc getChannelAccessData(const uint8_t chNum, ChannelAccess& chAccessData)
94071f3f2fSAppaRao Puli {
95071f3f2fSAppaRao Puli     return getChannelConfigObject().getChannelAccessData(chNum, chAccessData);
96071f3f2fSAppaRao Puli }
97071f3f2fSAppaRao Puli 
setChannelAccessData(const uint8_t chNum,const ChannelAccess & chAccessData,const uint8_t setFlag)98b541a5a5SNITIN SHARMA Cc setChannelAccessData(const uint8_t chNum, const ChannelAccess& chAccessData,
99a45cb34fSRichard Marian Thomaiyar                         const uint8_t setFlag)
100071f3f2fSAppaRao Puli {
101071f3f2fSAppaRao Puli     return getChannelConfigObject().setChannelAccessData(chNum, chAccessData,
102071f3f2fSAppaRao Puli                                                          setFlag);
103071f3f2fSAppaRao Puli }
104071f3f2fSAppaRao Puli 
getChannelAccessPersistData(const uint8_t chNum,ChannelAccess & chAccessData)105b541a5a5SNITIN SHARMA Cc getChannelAccessPersistData(const uint8_t chNum, ChannelAccess& chAccessData)
106071f3f2fSAppaRao Puli {
107*1318a5edSPatrick Williams     return getChannelConfigObject().getChannelAccessPersistData(
108*1318a5edSPatrick Williams         chNum, chAccessData);
109071f3f2fSAppaRao Puli }
110071f3f2fSAppaRao Puli 
setChannelAccessPersistData(const uint8_t chNum,const ChannelAccess & chAccessData,const uint8_t setFlag)111b541a5a5SNITIN SHARMA Cc setChannelAccessPersistData(const uint8_t chNum,
112071f3f2fSAppaRao Puli                                const ChannelAccess& chAccessData,
113a45cb34fSRichard Marian Thomaiyar                                const uint8_t setFlag)
114071f3f2fSAppaRao Puli {
115071f3f2fSAppaRao Puli     return getChannelConfigObject().setChannelAccessPersistData(
116071f3f2fSAppaRao Puli         chNum, chAccessData, setFlag);
117071f3f2fSAppaRao Puli }
118071f3f2fSAppaRao Puli 
getChannelAuthTypeSupported(const uint8_t chNum,uint8_t & authTypeSupported)119b541a5a5SNITIN SHARMA Cc getChannelAuthTypeSupported(const uint8_t chNum, uint8_t& authTypeSupported)
120071f3f2fSAppaRao Puli {
121071f3f2fSAppaRao Puli     return getChannelConfigObject().getChannelAuthTypeSupported(
122071f3f2fSAppaRao Puli         chNum, authTypeSupported);
123071f3f2fSAppaRao Puli }
124071f3f2fSAppaRao Puli 
getChannelEnabledAuthType(const uint8_t chNum,const uint8_t priv,EAuthType & authType)125b541a5a5SNITIN SHARMA Cc getChannelEnabledAuthType(const uint8_t chNum, const uint8_t priv,
126071f3f2fSAppaRao Puli                              EAuthType& authType)
127071f3f2fSAppaRao Puli {
128*1318a5edSPatrick Williams     return getChannelConfigObject().getChannelEnabledAuthType(
129*1318a5edSPatrick Williams         chNum, priv, authType);
130071f3f2fSAppaRao Puli }
131071f3f2fSAppaRao Puli 
getChannelName(const uint8_t chNum)13255768e35SRichard Marian Thomaiyar std::string getChannelName(const uint8_t chNum)
13374a2102eSJohnathan Mantey {
13474a2102eSJohnathan Mantey     return getChannelConfigObject().getChannelName(chNum);
13574a2102eSJohnathan Mantey }
13674a2102eSJohnathan Mantey 
getChannelByName(const std::string & chName)137735ee953SVernon Mauery uint8_t getChannelByName(const std::string& chName)
138735ee953SVernon Mauery {
139735ee953SVernon Mauery     return getChannelConfigObject().getChannelByName(chName);
140735ee953SVernon Mauery }
1416fd812d1SAyushi Smriti 
isValidPayloadType(const PayloadType payloadType)1426fd812d1SAyushi Smriti bool isValidPayloadType(const PayloadType payloadType)
1436fd812d1SAyushi Smriti {
1446fd812d1SAyushi Smriti     return (
1456fd812d1SAyushi Smriti         payloadType == PayloadType::IPMI || payloadType == PayloadType::SOL ||
1466fd812d1SAyushi Smriti         payloadType == PayloadType::OPEN_SESSION_REQUEST ||
1476fd812d1SAyushi Smriti         payloadType == PayloadType::OPEN_SESSION_RESPONSE ||
1486fd812d1SAyushi Smriti         payloadType == PayloadType::RAKP1 ||
1496fd812d1SAyushi Smriti         payloadType == PayloadType::RAKP2 ||
1506fd812d1SAyushi Smriti         payloadType == PayloadType::RAKP3 || payloadType == PayloadType::RAKP4);
1516fd812d1SAyushi Smriti }
152071f3f2fSAppaRao Puli } // namespace ipmi
153