# Building a Bearer Control Message

To build a bearer control message:

1. Initialize the Bearer Control Event structure.

2. Build the Bearer Control message.

This topic provides instructions for completing these tasks.

## Initialize the Bearer Control Event structure

The following structure defines the information elements that are required in the Bearer Control message to be formatted:

typedef struct _siBearerControlEvnt
{
SiActionIndicator actionIndicator;
SiCodecs codecsList.
SiBearerNetworkCharacteristics networkCharacteristics;
SiBearerControlInformation bearerControlInfo;
SiBearerControlTunnelling bearerTunnelling;
SiBearerControlUnitIdentifier bearerUnitId;
SiCodecs singleCodec;
SiBackboneNetworkIdentifier backboneNetworkId;
SiInterworkingFunctionAddress iwfAddress;
} SiBearerControlEvnt;

### Information Elements

Name | Description
actionIndicator | Action indicator. Specifies the action associated with the message, and in particular, the bearer setup direction (forward, backward).
codecsList | Codecs list offered for codec negotiation.
networkCharacteristics | Bearer network connection characteristics. Supports IP/RTP only.
bearerControlInfo | Bearer control information. Contains the bearer control tunneling protocol (IPBCP) data unit.
bearerTunnelling | Bearer control tunneling indicator. Specifies that tunneling is to be used.
bearerUnitId | Bearer control unit identifier. Consists of the Network ID field (not currently supported) and the local BCU-ID field.
singleCodec | Single codec selected for codec negotiation.
backboneNetworkId | Backbone network connection identifier. Bearer specific and is specified in the relevant Supplement 23 to Q-Series Recommendations.
iwfAddress | Interworking function address. In NSAP format according to Annex A/X.213 | ISO/IEC 8348 and its Amendment 1.

For more information, refer to BCF Library Structures.

### Init Functions

Several init functions are offered to initialize Bearer Control event structures with default values, specifically to support the Bearer Control reference call flows supported by vmsamp_ip324m_bicc:

Init functions for... | Prototypes
Fast Forward Bearer Setup Request and Answer | DWORD bcfInitFastForwardBearerSetupRequest (SiBearerControlEvnt *bearerControlEvnt, IPBCP_PARAM *ipbcpParam); DWORD bcfInitFastForwardBearerSetupAnswer (SiBearerControlEvnt *bearerControlEvnt, IPBCP_PARAM *ipbcpParam);
Delayed Forward Bearer Info Request and Answer | DWORD bcfInitDelayedForwardBearerInfoRequest (SiBearerControlEvnt *bearerControlEvnt, U8 codecList) DWORD bcfInitDelayedForwardBearerInfoAnswer (SiBearerControlEvnt *bearerControlEvnt, U8 codecList, U8 selectedCodec)
Delayed Forward Bearer Setup Request and Answer | DWORD bcfInitDelayedForwardBearerSetupRequest (SiBearerControlEvnt *bearerControlEvnt, IPBCP_PARAM *ipbcpParam); DWORD bcfInitDelayedForwardBearerSetupAnswer (SiBearerControlEvnt *bearerControlEvnt, IPBCP_PARAM *ipbcpParam);

After calling init functions, any SiBearerControlEvnt structure field can be customized by the application implementing the bearer control logic.

## Build the Bearer Control Message

After initializing the Bearer Control Event structure, use the following function to build the Bearer Control Message:

DWORD bcfBuildBearerControlMessage (U8 *outBuf, U32 outBufSize, SiBearerControlEvnt *inBearerControl, U32 *actualBcfSize)