blob: faca91ec9883458f7f19b66eb010d1ab438b4701 [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"
Sumanth Bhate4e633e2019-05-14 12:13:57 +000020#include "cipher_mgmt.hpp"
AppaRao Puli071f3f22018-05-24 16:45:30 +053021
22#include <phosphor-logging/log.hpp>
23
24namespace ipmi
25{
26
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053027bool doesDeviceExist(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053028{
29 // TODO: This is not the reliable way to find the device
30 // associated with ethernet interface as the channel number to
31 // eth association is not done. Need to revisit later
Richard Marian Thomaiyar73906b92019-01-04 23:48:02 +053032 struct stat fileStat = {0};
Johnathan Mantey74a21022018-12-13 13:17:56 -080033 std::string devName("/sys/class/net/" + getChannelName(chNum));
AppaRao Puli071f3f22018-05-24 16:45:30 +053034
35 if (stat(devName.data(), &fileStat) != 0)
36 {
37 phosphor::logging::log<phosphor::logging::level::DEBUG>(
38 "Ethernet device not found");
39 return false;
40 }
41
42 return true;
43}
44
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053045bool isValidPrivLimit(const uint8_t privLimit)
AppaRao Puli071f3f22018-05-24 16:45:30 +053046{
47 return ((privLimit >= PRIVILEGE_CALLBACK) && (privLimit <= PRIVILEGE_OEM));
48}
49
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053050bool isValidAccessMode(const uint8_t accessMode)
AppaRao Puli071f3f22018-05-24 16:45:30 +053051{
52 return (
53 (accessMode >= static_cast<uint8_t>(EChannelAccessMode::disabled)) &&
54 (accessMode <= static_cast<uint8_t>(EChannelAccessMode::shared)));
55}
56
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053057bool isValidChannel(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053058{
59 return getChannelConfigObject().isValidChannel(chNum);
60}
61
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053062bool isValidAuthType(const uint8_t chNum, const EAuthType& authType)
AppaRao Puli071f3f22018-05-24 16:45:30 +053063{
64 return getChannelConfigObject().isValidAuthType(chNum, authType);
65}
66
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053067EChannelSessSupported getChannelSessionSupport(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053068{
69 return getChannelConfigObject().getChannelSessionSupport(chNum);
70}
71
Richard Marian Thomaiyara45cb342018-12-03 15:08:59 +053072int getChannelActiveSessions(const uint8_t chNum)
AppaRao Puli071f3f22018-05-24 16:45:30 +053073{
74 return getChannelConfigObject().getChannelActiveSessions(chNum);
75}
76
Vernon Mauery58317122018-11-28 11:02:43 -080077size_t getChannelMaxTransferSize(uint8_t chNum)
78{
79 return getChannelConfigObject().getChannelMaxTransferSize(chNum);
80}
81
NITIN SHARMAb541a5a2019-07-18 12:46:59 +000082Cc ipmiChannelInit()
AppaRao Puli071f3f22018-05-24 16:45:30 +053083{
84 getChannelConfigObject();
Sumanth Bhate4e633e2019-05-14 12:13:57 +000085 getCipherConfigObject(csPrivFileName, csPrivDefaultFileName);
NITIN SHARMAb541a5a2019-07-18 12:46:59 +000086 return ccSuccess;
AppaRao Puli071f3f22018-05-24 16:45:30 +053087}
88
NITIN SHARMAb541a5a2019-07-18 12:46:59 +000089Cc getChannelInfo(const uint8_t chNum, ChannelInfo& chInfo)
AppaRao Puli071f3f22018-05-24 16:45:30 +053090{
91 return getChannelConfigObject().getChannelInfo(chNum, chInfo);
92}
93
NITIN SHARMAb541a5a2019-07-18 12:46:59 +000094Cc getChannelAccessData(const uint8_t chNum, ChannelAccess& chAccessData)
AppaRao Puli071f3f22018-05-24 16:45:30 +053095{
96 return getChannelConfigObject().getChannelAccessData(chNum, chAccessData);
97}
98
NITIN SHARMAb541a5a2019-07-18 12:46:59 +000099Cc setChannelAccessData(const uint8_t chNum, const ChannelAccess& chAccessData,
100 const uint8_t setFlag)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530101{
102 return getChannelConfigObject().setChannelAccessData(chNum, chAccessData,
103 setFlag);
104}
105
NITIN SHARMAb541a5a2019-07-18 12:46:59 +0000106Cc getChannelAccessPersistData(const uint8_t chNum, ChannelAccess& chAccessData)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530107{
108 return getChannelConfigObject().getChannelAccessPersistData(chNum,
109 chAccessData);
110}
111
NITIN SHARMAb541a5a2019-07-18 12:46:59 +0000112Cc setChannelAccessPersistData(const uint8_t chNum,
113 const ChannelAccess& chAccessData,
114 const uint8_t setFlag)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530115{
116 return getChannelConfigObject().setChannelAccessPersistData(
117 chNum, chAccessData, setFlag);
118}
119
NITIN SHARMAb541a5a2019-07-18 12:46:59 +0000120Cc getChannelAuthTypeSupported(const uint8_t chNum, uint8_t& authTypeSupported)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530121{
122 return getChannelConfigObject().getChannelAuthTypeSupported(
123 chNum, authTypeSupported);
124}
125
NITIN SHARMAb541a5a2019-07-18 12:46:59 +0000126Cc getChannelEnabledAuthType(const uint8_t chNum, const uint8_t priv,
127 EAuthType& authType)
AppaRao Puli071f3f22018-05-24 16:45:30 +0530128{
129 return getChannelConfigObject().getChannelEnabledAuthType(chNum, priv,
130 authType);
131}
132
Richard Marian Thomaiyar55768e32019-03-02 22:54:37 +0530133std::string getChannelName(const uint8_t chNum)
Johnathan Mantey74a21022018-12-13 13:17:56 -0800134{
135 return getChannelConfigObject().getChannelName(chNum);
136}
137
Vernon Mauery735ee952019-02-15 13:38:52 -0800138uint8_t getChannelByName(const std::string& chName)
139{
140 return getChannelConfigObject().getChannelByName(chName);
141}
Ayushi Smriti6fd812d2019-04-12 18:51:31 +0000142
143bool isValidPayloadType(const PayloadType payloadType)
144{
145 return (
146 payloadType == PayloadType::IPMI || payloadType == PayloadType::SOL ||
147 payloadType == PayloadType::OPEN_SESSION_REQUEST ||
148 payloadType == PayloadType::OPEN_SESSION_RESPONSE ||
149 payloadType == PayloadType::RAKP1 ||
150 payloadType == PayloadType::RAKP2 ||
151 payloadType == PayloadType::RAKP3 || payloadType == PayloadType::RAKP4);
152}
AppaRao Puli071f3f22018-05-24 16:45:30 +0530153} // namespace ipmi