netipmid: Manage and expose session object

Session (RMCP+) is managed by net-ipmid directly, but
session commands has to be supported in both LAN & other
session-less interfaces. In order to make session commands
to work in other interfaces, session objects must be
exposed as D-Bus objects, so that ipmi-providers can
query the same.

Tested:
 1. Verified that RMCP+ session are perfectly working
 2. Verified RMCP+ session establishment fails for wrong
    password
 3. Verified that session privilege level are maintained
    and access are restricted accordingly
 4. Verified session timeout and sessions are destroyed
    accordingly after timeout
 5. verified max session count working behavior
 6. verified ipmi-providers responding with proper response for this
    (or D-Bus objects are exposed correctly during session creation,
    session deletion,session update,
    (like privilege, - say even set session privilege level command)
 7.Session objects are created dynamically.

Change-Id: I78a8449359877ef6cc4cd8161d8c67e6e54eb52b
Signed-off-by: Suryakanth Sekar <suryakanth.sekar@linux.intel.com>
diff --git a/command/rakp12.cpp b/command/rakp12.cpp
index 172c83e..01355d1 100644
--- a/command/rakp12.cpp
+++ b/command/rakp12.cpp
@@ -26,7 +26,7 @@
 
     // Session ID zero is reserved for Session Setup
     if (endian::from_ipmi(request->managedSystemSessionID) ==
-        session::SESSION_ZERO)
+        session::sessionZero)
     {
         log<level::INFO>("RAKP12: BMC invalid Session ID");
         response->rmcpStatusCode =
@@ -127,12 +127,14 @@
     // established with CALLBACK privilege if requested for callback. All other
     // sessions are initialy set to USER privilege, regardless of the requested
     // maximum privilege.
-    session->curPrivLevel = session::Privilege::CALLBACK;
+    session->currentPrivilege(
+        static_cast<uint8_t>(session::Privilege::CALLBACK));
     if (static_cast<session::Privilege>(request->req_max_privilege_level &
                                         session::reqMaxPrivMask) >
         session::Privilege::CALLBACK)
     {
-        session->curPrivLevel = session::Privilege::USER;
+        session->currentPrivilege(
+            static_cast<uint8_t>(session::Privilege::USER));
     }
     session->reqMaxPrivLevel =
         static_cast<session::Privilege>(request->req_max_privilege_level);
@@ -201,7 +203,8 @@
             static_cast<uint8_t>(RAKP_ReturnCode::INACTIVE_ROLE);
         return outPayload;
     }
-    session->chNum = chNum;
+    session->channelNum(chNum);
+    session->userID(userId);
     // minimum privilege of Channel / User / session::privilege::USER/CALLBACK /
     // has to be used as session current privilege level
     uint8_t minPriv = 0;
@@ -214,9 +217,9 @@
     {
         minPriv = session->sessionUserPrivAccess.privilege;
     }
-    if (session->curPrivLevel > static_cast<session::Privilege>(minPriv))
+    if (session->currentPrivilege() > minPriv)
     {
-        session->curPrivLevel = static_cast<session::Privilege>(minPriv);
+        session->currentPrivilege(static_cast<uint8_t>(minPriv));
     }
     // For username / privilege lookup, fail with UNAUTH_NAME, if requested
     // max privilege does not match user privilege