diff options
| author | Ratan Gupta <ratagupt@in.ibm.com> | 2017-08-10 09:02:08 +0530 |
|---|---|---|
| committer | Patrick Williams <patrick@stwcx.xyz> | 2017-08-13 11:32:24 +0000 |
| commit | 255d514ef2a61125670ed6a5cdf942a287315749 (patch) | |
| tree | 677a73d5b9ec1b3250984a869845c0f2d2267a8e | |
| parent | 584df83a0398ee645bb6d0357933b37f7651d0d5 (diff) | |
| download | phosphor-networkd-255d514ef2a61125670ed6a5cdf942a287315749.tar.gz phosphor-networkd-255d514ef2a61125670ed6a5cdf942a287315749.zip | |
Pass the network conf dir to network manager constructor
when the network manager comes up,it should have its
conf dir path which caller wants,instead of calling one
more function to set the desired conf dir.
Change-Id: I282c1d5e1c6edb2b6e77d16518d2204a6ac41a45
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
| -rw-r--r-- | network_manager.cpp | 17 | ||||
| -rw-r--r-- | network_manager.hpp | 8 | ||||
| -rw-r--r-- | network_manager_main.cpp | 2 | ||||
| -rw-r--r-- | test/test_ethernet_interface.cpp | 24 | ||||
| -rw-r--r-- | test/test_network_manager.cpp | 24 |
5 files changed, 67 insertions, 8 deletions
diff --git a/network_manager.cpp b/network_manager.cpp index bce6731..cdbaf45 100644 --- a/network_manager.cpp +++ b/network_manager.cpp @@ -27,17 +27,30 @@ namespace network using namespace phosphor::logging; using namespace sdbusplus::xyz::openbmc_project::Common::Error; -Manager::Manager(sdbusplus::bus::bus& bus, const char* objPath): +Manager::Manager(sdbusplus::bus::bus& bus, const char* objPath, + const std::string& path): details::VLANCreateIface(bus, objPath, true), bus(bus), objectPath(objPath) { - confDir = NETWORK_CONF_DIR; + fs::path confDir(path); + setConfDir(confDir); } void Manager::setConfDir(const fs::path& dir) { confDir = dir; + + if (!fs::exists(confDir)) + { + if (!fs::create_directories(confDir)) + { + log<level::ERR>("Unable to create the network conf dir", + entry("DIR=%s", confDir.c_str())); + elog<InternalFailure>(); + } + } + } void Manager::createInterfaces() diff --git a/network_manager.hpp b/network_manager.hpp index 9324aec..db4db0f 100644 --- a/network_manager.hpp +++ b/network_manager.hpp @@ -49,8 +49,10 @@ class Manager : public details::VLANCreateIface /** @brief Constructor to put object onto bus at a dbus path. * @param[in] bus - Bus to attach to. * @param[in] objPath - Path to attach at. + * @param[in] dir - Network Configuration directory path. */ - Manager(sdbusplus::bus::bus& bus, const char* objPath); + Manager(sdbusplus::bus::bus& bus, const char* objPath, + const std::string& dir); void vLAN(IntfName interfaceName, uint32_t id) override; @@ -73,6 +75,10 @@ class Manager : public details::VLANCreateIface */ void setConfDir(const fs::path& dir); + /** @brief gets the network conf directory. + */ + fs::path getConfDir() { return confDir; } + private: /** @brief write the dhcp section **/ diff --git a/network_manager_main.cpp b/network_manager_main.cpp index d98ab0d..47d38a5 100644 --- a/network_manager_main.cpp +++ b/network_manager_main.cpp @@ -10,7 +10,7 @@ int main(int argc, char *argv[]) // Add sdbusplus Object Manager for the 'root' path of the network manager. sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK); - phosphor::network::Manager manager(bus, OBJ_NETWORK); + phosphor::network::Manager manager(bus, OBJ_NETWORK, NETWORK_CONF_DIR); manager.createChildObjects(); diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp index beaa0d4..67a25df 100644 --- a/test/test_ethernet_interface.cpp +++ b/test/test_ethernet_interface.cpp @@ -4,9 +4,11 @@ #include <gtest/gtest.h> #include <sdbusplus/bus.hpp> +#include <arpa/inet.h> #include <net/if.h> #include <netinet/in.h> -#include <arpa/inet.h> +#include <stdlib.h> + #include <exception> namespace phosphor @@ -21,15 +23,33 @@ class TestEthernetInterface : public testing::Test sdbusplus::bus::bus bus; Manager manager; EthernetInterface interface; + std::string confDir; TestEthernetInterface() : bus(sdbusplus::bus::new_default()), - manager(bus, "/xyz/openbmc_test/network"), + manager(bus, "/xyz/openbmc_test/network", "/tmp/"), interface(bus, "/xyz/openbmc_test/network/test0", false, manager) { + setConfDir(); + + } + + void setConfDir() + { + char tmp[] = "/tmp/EthernetInterface.XXXXXX"; + confDir = mkdtemp(tmp); + manager.setConfDir(confDir); + } + ~TestEthernetInterface() + { + if(confDir != "") + { + fs::remove_all(confDir); + } } + int countIPObjects() { return interface.getAddresses().size(); diff --git a/test/test_network_manager.cpp b/test/test_network_manager.cpp index 3382e38..3e1f0e3 100644 --- a/test/test_network_manager.cpp +++ b/test/test_network_manager.cpp @@ -10,25 +10,45 @@ #include <net/if.h> #include <netinet/in.h> #include <arpa/inet.h> +#include <stdlib.h> + #include <exception> +#include <experimental/filesystem> namespace phosphor { namespace network { +namespace fs = std::experimental::filesystem; + class TestNetworkManager : public testing::Test { public: sdbusplus::bus::bus bus; Manager manager; - + std::string confDir; TestNetworkManager() : bus(sdbusplus::bus::new_default()), - manager(bus, "xyz/openbmc_test/abc") + manager(bus, "/xyz/openbmc_test/abc", "/tmp") + { + setConfDir(); + } + + ~TestNetworkManager() { + if(confDir != "") + { + fs::remove_all(confDir); + } + } + void setConfDir() + { + char tmp[] = "/tmp/NetworkManager.XXXXXX"; + confDir = mkdtemp(tmp); + manager.setConfDir(confDir); } void createInterfaces() |

