blob: da9c613ae552055ec5af85db69427c54fea19520 [file] [log] [blame]
AppaRao Puli071f3f22018-05-24 16:45:30 +05301/*
2// Copyright (c) 2018 Intel Corporation
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15*/
16
17#include "channel_layer.hpp"
18
19#include "channel_mgmt.hpp"
20
21#include <phosphor-logging/log.hpp>
22
23namespace ipmi
24{
25
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053026bool doesDeviceExist(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053027{
28 // TODO: This is not the reliable way to find the device
29 // associated with ethernet interface as the channel number to
30 // eth association is not done. Need to revisit later
Richard Marian Thomaiyar73906b92019-01-04 23:48:02 +053031 struct stat fileStat = {0};
Johnathan Mantey74a21022018-12-13 13:17:56 -080032 std::string devName("/sys/class/net/" + getChannelName(chNum));
AppaRao Puli071f3f22018-05-24 16:45:30 +053033
34 if (stat(devName.data(), &fileStat) != 0)
35 {
36 phosphor::logging::log<phosphor::logging::level::DEBUG>(
37 "Ethernet device not found");
38 return false;
39 }
40
41 return true;
42}
43
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053044bool isValidPrivLimit(const uint8_t privLimit)
AppaRao Puli071f3f22018-05-24 16:45:30 +053045{
46 return ((privLimit >= PRIVILEGE_CALLBACK) && (privLimit <= PRIVILEGE_OEM));
47}
48
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053049bool isValidAccessMode(const uint8_t accessMode)
AppaRao Puli071f3f22018-05-24 16:45:30 +053050{
51 return (
52 (accessMode >= static_cast<uint8_t>(EChannelAccessMode::disabled)) &&
53 (accessMode <= static_cast<uint8_t>(EChannelAccessMode::shared)));
54}
55
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053056bool isValidChannel(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053057{
58 return getChannelConfigObject().isValidChannel(chNum);
59}
60
Richard Marian Thomaiyara39208e2018-12-08 17:27:11 +053061uint8_t convertCurrentChannelNum(const uint8_t chNum)
62{
63 return getChannelConfigObject().convertToChannelIndexNumber(chNum);
64}
65
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053066bool isValidAuthType(const uint8_t chNum, const EAuthType& authType)
AppaRao Puli071f3f22018-05-24 16:45:30 +053067{
68 return getChannelConfigObject().isValidAuthType(chNum, authType);
69}
70
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053071EChannelSessSupported getChannelSessionSupport(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053072{
73 return getChannelConfigObject().getChannelSessionSupport(chNum);
74}
75
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053076int getChannelActiveSessions(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053077{
78 return getChannelConfigObject().getChannelActiveSessions(chNum);
79}
80
Vernon Mauery58317122018-11-28 11:02:43 -080081size_t getChannelMaxTransferSize(uint8_t chNum)
82{
83 return getChannelConfigObject().getChannelMaxTransferSize(chNum);
84}
85
AppaRao Puli071f3f22018-05-24 16:45:30 +053086ipmi_ret_t ipmiChannelInit()
87{
88 getChannelConfigObject();
89 return IPMI_CC_OK;
90}
91
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053092ipmi_ret_t getChannelInfo(const uint8_t chNum, ChannelInfo& chInfo)
AppaRao Puli071f3f22018-05-24 16:45:30 +053093{
94 return getChannelConfigObject().getChannelInfo(chNum, chInfo);
95}
96
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053097ipmi_ret_t getChannelAccessData(const uint8_t chNum,
AppaRao Puli071f3f22018-05-24 16:45:30 +053098 ChannelAccess& chAccessData)
99{
100 return getChannelConfigObject().getChannelAccessData(chNum, chAccessData);
101}
102
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530103ipmi_ret_t setChannelAccessData(const uint8_t chNum,
AppaRao Puli071f3f22018-05-24 16:45:30 +0530104 const ChannelAccess& chAccessData,
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530105 const uint8_t setFlag)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530106{
107 return getChannelConfigObject().setChannelAccessData(chNum, chAccessData,
108 setFlag);
109}
110
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530111ipmi_ret_t getChannelAccessPersistData(const uint8_t chNum,
AppaRao Puli071f3f22018-05-24 16:45:30 +0530112 ChannelAccess& chAccessData)
113{
114 return getChannelConfigObject().getChannelAccessPersistData(chNum,
115 chAccessData);
116}
117
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530118ipmi_ret_t setChannelAccessPersistData(const uint8_t chNum,
AppaRao Puli071f3f22018-05-24 16:45:30 +0530119 const ChannelAccess& chAccessData,
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530120 const uint8_t setFlag)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530121{
122 return getChannelConfigObject().setChannelAccessPersistData(
123 chNum, chAccessData, setFlag);
124}
125
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530126ipmi_ret_t getChannelAuthTypeSupported(const uint8_t chNum,
AppaRao Puli071f3f22018-05-24 16:45:30 +0530127 uint8_t& authTypeSupported)
128{
129 return getChannelConfigObject().getChannelAuthTypeSupported(
130 chNum, authTypeSupported);
131}
132
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +0530133ipmi_ret_t getChannelEnabledAuthType(const uint8_t chNum, const uint8_t priv,
AppaRao Puli071f3f22018-05-24 16:45:30 +0530134 EAuthType& authType)
135{
136 return getChannelConfigObject().getChannelEnabledAuthType(chNum, priv,
137 authType);
138}
139
Richard Marian Thomaiyar55768e32019-03-02 22:54:37 +0530140std::string getChannelName(const uint8_t chNum)
Johnathan Mantey74a21022018-12-13 13:17:56 -0800141{
142 return getChannelConfigObject().getChannelName(chNum);
143}
144
Vernon Mauery735ee952019-02-15 13:38:52 -0800145uint8_t getChannelByName(const std::string& chName)
146{
147 return getChannelConfigObject().getChannelByName(chName);
148}
AppaRao Puli071f3f22018-05-24 16:45:30 +0530149} // namespace ipmi