diff options
author | Patrick Venture <venture@google.com> | 2017-11-15 14:29:18 -0800 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-12-12 05:31:12 +0000 |
commit | c7c1c3c2ff37a0e3d500e7eecd749595e8da7337 (patch) | |
tree | 39c7124d80eca76d316ea9a16793007bbd062848 /net.cpp | |
parent | ef7773ccd644cc2356f9a53295d3e58439329f3c (diff) | |
download | phosphor-host-ipmid-c7c1c3c2ff37a0e3d500e7eecd749595e8da7337.tar.gz phosphor-host-ipmid-c7c1c3c2ff37a0e3d500e7eecd749595e8da7337.zip |
multiple channel configuration support
Previously, the ipmi daemon only supported eth0 and hard-coded it
to channel 1. This allows one to map via a configuration. The
channel number provided is checked against a configuration to retrieve
the ethernet device identifier, e.g. eth0.
Tested: Ran on a quanta-q71l and was able to properly set MAC, IP,
Netmask, Gateway IP, and then verified the data was set for the eth1
via `ip addr show eth1`.
Change-Id: I92f63188297304e9454fd0d6fe32bc6cf84bb181
Signed-off-by: Patrick Venture <venture@google.com>
Diffstat (limited to 'net.cpp')
-rw-r--r-- | net.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -0,0 +1,41 @@ +#include <map> +#include <string> + +// Not sure if this should live in utils. Because it's really a per-system +// configuration, instead of just hard-coding channel 1 to be eth0, one could +// conceivably configure it however they pleased. +// +// In this design, channel 0 is the in-band host channel. + +namespace ipmi +{ +namespace network +{ + +// This map should come from a configuration yaml. +// Also, no need to really be a map, could be just an array +// we index into by channel. :D +std::map<int, std::string> ethDeviceMap = { + {1, "eth0"}, + {2, "eth1"}, +}; + + +// Given a channel number, return a matching ethernet device, or empty string +// if there is no match. +// TODO provide this from a configuration: +// https://github.com/openbmc/openbmc/issues/2667 +std::string ChanneltoEthernet(int channel) +{ + auto dev = ethDeviceMap.find(channel); + if (dev == ethDeviceMap.end()) + { + return ""; + } + + return dev->second; +} + +} // namespace network +} // namespace ipmi + |