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