Config service manager implementation.

Added new service for managing the service(RMCP+, ssh, web)
properties like state, port, channel etc. This is common
service supports both systemctl and iptables.

Example usage: Blocking specific service port and restricting
network traffic on specific channels etc.

Unit Test:
 - Changed port of RMCP+ service and validated.
 - Restricted network traffic on specific channel(eth0)
    and cross validated functionality.

Change-Id: I835a4723bc5d5a65efb6ec329f74f3932e841522
Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..ffb0e11
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,45 @@
+/*

+// Copyright (c) 2018 Intel Corporation

+//

+// Licensed under the Apache License, Version 2.0 (the "License");

+// you may not use this file except in compliance with the License.

+// You may obtain a copy of the License at

+//

+//      http://www.apache.org/licenses/LICENSE-2.0

+//

+// Unless required by applicable law or agreed to in writing, software

+// distributed under the License is distributed on an "AS IS" BASIS,

+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+// See the License for the specific language governing permissions and

+// limitations under the License.

+*/

+#include "srvcfg_manager.hpp"

+

+std::shared_ptr<boost::asio::deadline_timer> timer = nullptr;

+std::map<std::string, std::shared_ptr<phosphor::service::ServiceConfig>>

+    srvMgrObjects;

+

+static std::map<std::string, std::string> serviceList = {

+    {"netipmid", "phosphor-ipmi-net"}, {"web", "bmcweb"}, {"ssh", "dropbear"}};

+

+int main()

+{

+    // setup connection to dbus

+    boost::asio::io_service io;

+    auto conn = std::make_shared<sdbusplus::asio::connection>(io);

+    timer = std::make_shared<boost::asio::deadline_timer>(io);

+    conn->request_name(phosphor::service::serviceConfigSrvName);

+    auto server = sdbusplus::asio::object_server(conn);

+    for (const auto &service : serviceList)

+    {

+        std::string objPath("/xyz/openbmc_project/control/service/" +

+                            service.first);

+        auto srvCfgObj = std::make_unique<phosphor::service::ServiceConfig>(

+            server, conn, objPath, service.second);

+        srvMgrObjects.emplace(

+            std::make_pair(std::move(service.first), std::move(srvCfgObj)));

+    }

+    io.run();

+

+    return 0;

+}