<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <b>Design and Implement Framework for IPMI backend</b><br>
------------------------------------------------------------------------------<br>
    The purpose of this is to come up with a mechanism to share
    providers between the host-ipmid and the rmcp-ipmid.<br>
    Also, update existing providers and host-ipmid to fit this
    framework. Demo of this story should be to use an existing <br>
    host-ipmid provider via the rmcp path.<br>
    <br>
    <br>
    <b>Registering Callback Routines:-</b><br>
    -----------------------------------------------<br>
    1) Open the IPMI library path(/usr/lib/phosphor-host-ipmid)<br>
    2) Scan for libraries that end with .so<br>
    3) Do a dlopen that would register the handlers for the callback
    routines.<br>
    The data that is currently registered for each command: Net
    Function, Command and Functor.<br>
    <br>
    <b>Additional Metadata needed per command:-</b><br>
    -----------------------------------------------------------------<br>
    <br>
    <b>SessionLess Commands :-<br>
    </b>-------------------------------------<b><br>
    </b><br>
    This would mention whether the command can be executed without a
    session. For example<br>
    Get Channel Capabilities can be executed without a session.<br>
    <br>
    <b>Minimum Privilege Required to Execute the command :-<br>
    </b>---------------------------------------------------------------------------------<b><br>
      <br>
    </b>This field would mention the minimum privilege of the session
    required to execute the<br>
    command. Before executing any command on a session, the command
    would be executed<br>
    only if the command privilege level is less than or equal to session
    privilege level.<br>
    The privilege levels are Administrator, Operator, User and Callback
    and OEM<br>
    <br>
    <b>Firmware Firewalling :-<br>
    </b>--------------------------------<b><br>
      <br>
    </b><b>Channel Restriction :-<br>
    </b>------------------------------<b><br>
      <br>
    </b>The channel restriction can be applied if certain command needs
    to be restricted on System<br>
    Interface or LAN Interface.<br>
    <br>
    The Get NetFn/ Command support can be used to get a list of commands
    that are supported<br>
    on a given channel. Implementation of these commands is not in the
    scope of this story.<br>
    <br>
    <b>Command Firewalling:-<br>
    </b>--------------------------------<b><br>
      <br>
    </b>Configuration of Firmware Firewall capabilities is supported by
    commands that allow software to enable/disable individual commands.<br>
    The Firmware Firewall capability does not affect the operation of
    user and channel privileges. <br>
    That is, if a command requires Admin privilege level to be executed,
    it will still require Admin privilege if enabled by Firmware
    Firewall.<br>
    <br>
    The different values that are supported for this field is:<br>
    a) Command is supported by default(can be configured(enabled or
    disabled)<br>
    b) Supported and cannot be configured( enable/disable is restricted)<br>
    c) Disabled by default but can be configured.<br>
    <br>
    The firmware firewalling commands once supported would support the
    above operations.<br>
    <br>
    <br>
    Regards,<br>
    Tom<br>
  </body>
</html>