/** @file
  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
  IPMI Intelligent Chassis Management Bus Bridge Specification Version 1.0,
  Revision 1.3.

  See IPMI specification, Appendix G, Command Assignments
  and Appendix H, Sub-function Assignments.

  Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef _IPMI_NET_FN_BRIDGE_H_
#define _IPMI_NET_FN_BRIDGE_H_

//
// Net function definition for Bridge command
//
#define IPMI_NETFN_BRIDGE  0x02

//
//  Definitions for Get Bridge State command
//
#define IPMI_BRIDGE_GET_STATE  0x00

//
//  Constants and Structure definitions for "Get Bridge State" command to follow here
//

//
//  Definitions for Set Bridge State command
//
#define IPMI_BRIDGE_SET_STATE  0x01

//
//  Constants and Structure definitions for "Set Bridge State" command to follow here
//

//
//  Definitions for Get ICMB Address command
//
#define IPMI_BRIDGE_GET_ICMB_ADDRESS  0x02

//
//  Constants and Structure definitions for "Get ICMB Address" command to follow here
//

//
//  Definitions for Set ICMB Address command
//
#define IPMI_BRIDGE_SET_ICMB_ADDRESS  0x03

//
//  Constants and Structure definitions for "Set ICMB Address" command to follow here
//

//
//  Definitions for Set Bridge Proxy Address command
//
#define IPMI_BRIDGE_SET_PROXY_ADDRESS  0x04

//
//  Constants and Structure definitions for "Set Bridge Proxy Address" command to follow here
//

//
//  Definitions for Get Bridge Statistics command
//
#define IPMI_BRIDGE_GET_BRIDGE_STATISTICS  0x05

//
//  Constants and Structure definitions for "Get Bridge Statistics" command to follow here
//

//
//  Definitions for Get ICMB Capabilities command
//
#define IPMI_BRIDGE_GET_ICMB_CAPABILITIES  0x06

//
//  Constants and Structure definitions for "Get ICMB Capabilities" command to follow here
//

//
//  Definitions for Clear Bridge Statistics command
//
#define IPMI_BRIDGE_CLEAR_STATISTICS  0x08

//
//  Constants and Structure definitions for "Clear Bridge Statistics" command to follow here
//

//
//  Definitions for Get Bridge Proxy Address command
//
#define IPMI_BRIDGE_GET_PROXY_ADDRESS  0x09

//
//  Constants and Structure definitions for "Get Bridge Proxy Address" command to follow here
//

//
//  Definitions for Get ICMB Connector Info command
//
#define IPMI_BRIDGE_GET_ICMB_CONNECTOR_INFO  0x0A

//
//  Constants and Structure definitions for "Get ICMB Connector Info " command to follow here
//

//
//  Definitions for Get ICMB Connection ID command
//
#define IPMI_BRIDGE_GET_ICMB_CONNECTION_ID  0x0B

//
//  Constants and Structure definitions for "Get ICMB Connection ID" command to follow here
//

//
//  Definitions for Get ICMB Connection ID command
//
#define IPMI_BRIDGE_SEND_ICMB_CONNECTION_ID  0x0C

//
//  Constants and Structure definitions for "Send ICMB Connection ID" command to follow here
//

//
//  Definitions for Prepare for Discovery command
//
#define IPMI_BRIDGE_PREPARE_FOR_DISCOVERY  0x10

//
//  Constants and Structure definitions for "Prepare for Discovery" command to follow here
//

//
//  Definitions for Get Addresses command
//
#define IPMI_BRIDGE_GET_ADDRESSES  0x11

//
//  Constants and Structure definitions for "Get Addresses" command to follow here
//

//
//  Definitions for Set Discovered command
//
#define IPMI_BRIDGE_SET_DISCOVERED  0x12

//
//  Constants and Structure definitions for "Set Discovered" command to follow here
//

//
//  Definitions for Get Chassis Device ID command
//
#define IPMI_BRIDGE_GET_CHASSIS_DEVICEID  0x13

//
//  Constants and Structure definitions for "Get Chassis Device ID" command to follow here
//

//
//  Definitions for Set Chassis Device ID command
//
#define IPMI_BRIDGE_SET_CHASSIS_DEVICEID  0x14

//
//  Constants and Structure definitions for "Set Chassis Device ID" command to follow here
//

//
//  Definitions for Bridge Request command
//
#define IPMI_BRIDGE_REQUEST  0x20

//
//  Constants and Structure definitions for "Bridge Request" command to follow here
//

//
//  Definitions for Bridge Message command
//
#define IPMI_BRIDGE_MESSAGE  0x21

//
//  Constants and Structure definitions for "Bridge Message" command to follow here
//

//
//  Definitions for Get Event Count command
//
#define IPMI_BRIDGE_GET_EVENT_COUNT  0x30

//
//  Constants and Structure definitions for "Get Event Count" command to follow here
//

//
//  Definitions for Set Event Destination command
//
#define IPMI_BRIDGE_SET_EVENT_DESTINATION  0x31

//
//  Constants and Structure definitions for "Set Event Destination" command to follow here
//

//
//  Definitions for Set Event Reception State command
//
#define IPMI_BRIDGE_SET_EVENT_RECEPTION_STATE  0x32

//
//  Constants and Structure definitions for "Set Event Reception State" command to follow here
//

//
//  Definitions for Set Event Reception State command
//
#define IPMI_BRIDGE_SET_EVENT_RECEPTION_STATE  0x32

//
//  Constants and Structure definitions for "Set Event Reception State" command to follow here
//

//
//  Definitions for Send ICMB Event Message command
//
#define IPMI_BRIDGE_SEND_ICMB_EVENT_MESSAGE  0x33

//
//  Constants and Structure definitions for "Send ICMB Event Message" command to follow here
//

#endif
