ndn-lite
Functions
Forwarder Core

The forwarder core. More...

Collaboration diagram for Forwarder Core:

Functions

void ndn_forwarder_init (void)
 Initialize all components of the forwarder. More...
 
void ndn_forwarder_process (void)
 Process event messages. More...
 
int ndn_forwarder_register_face (ndn_face_intf_t *face)
 Register a new face. More...
 
int ndn_forwarder_unregister_face (ndn_face_intf_t *face)
 Unregister a face. More...
 
int ndn_forwarder_add_route (ndn_face_intf_t *face, uint8_t *prefix, size_t length)
 Add a route into FIB. More...
 
int ndn_forwarder_remove_route (ndn_face_intf_t *face, uint8_t *prefix, size_t length)
 Remove a route from FIB. More...
 
int ndn_forwarder_remove_all_routes (uint8_t *prefix, size_t length)
 Remove all routes of a prefix from FIB. More...
 
int ndn_forwarder_receive (ndn_face_intf_t *face, uint8_t *packet, size_t length)
 Receive a packet from a face. More...
 
int ndn_forwarder_register_prefix (uint8_t *prefix, size_t length, ndn_on_interest_func on_interest, void *userdata)
 Register a prefix. More...
 
int ndn_forwarder_unregister_prefix (uint8_t *prefix, size_t length)
 Unregister a prefix. More...
 
int ndn_forwarder_express_interest (uint8_t *interest, size_t length, ndn_on_data_func on_data, ndn_on_timeout_func on_timeout, void *userdata)
 Express an interest. More...
 
int ndn_forwarder_put_data (uint8_t *data, size_t length)
 Produce a data packet. More...
 

Detailed Description

The forwarder core.

Function Documentation

◆ ndn_forwarder_add_route()

int ndn_forwarder_add_route ( ndn_face_intf_t face,
uint8_t *  prefix,
size_t  length 
)

Add a route into FIB.

Parameters
[in]faceThe face to forward.
[in]prefixThe prefix of the route.
[in]lengthThe length of prefix.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_FIB_FULLFIB or NameTree is full. See also NDN_FIB_MAX_SIZE, NDN_NAMETREE_MAX_SIZE.

◆ ndn_forwarder_express_interest()

int ndn_forwarder_express_interest ( uint8_t *  interest,
size_t  length,
ndn_on_data_func  on_data,
ndn_on_timeout_func  on_timeout,
void *  userdata 
)

Express an interest.

A repeated expression cancels the former expression with the same name. Either on_data or on_timeout will be called only once.

Parameters
[in]interestThe interest to express.
[in]lengthThe length of interest.
[in]on_dataThe callback function when a data comes.
[in]on_timeout[Optional] The callback function when times out.
[in]userdata[Optional] User-defined data, copied to on_data and on_timeout.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_PIT_FULLPIT or NameTree is full. See also NDN_PIT_MAX_SIZE, NDN_NAMETREE_MAX_SIZE.

◆ ndn_forwarder_init()

void ndn_forwarder_init ( void  )

Initialize all components of the forwarder.

◆ ndn_forwarder_process()

void ndn_forwarder_process ( void  )

Process event messages.

This should be called at a fixed interval.

◆ ndn_forwarder_put_data()

int ndn_forwarder_put_data ( uint8_t *  data,
size_t  length 
)

Produce a data packet.

Parameters
[in]dataThe data to produce.
[in]lengthThe length of data.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.

◆ ndn_forwarder_receive()

int ndn_forwarder_receive ( ndn_face_intf_t face,
uint8_t *  packet,
size_t  length 
)

Receive a packet from a face.

◆ ndn_forwarder_register_face()

int ndn_forwarder_register_face ( ndn_face_intf_t face)

Register a new face.

The face should call this to get a face id during creation.

Parameters
[in,out]faceThe face to register.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_NO_EFFECTface already has an ID.
NDN_FWD_FACE_TABLE_FULLFaceTable is full. See also NDN_FACE_TABLE_MAX_SIZE.
Note
The application doesn't need to register faces manually.
Precondition
face->face_id == NDN_INVALID_ID

◆ ndn_forwarder_register_prefix()

int ndn_forwarder_register_prefix ( uint8_t *  prefix,
size_t  length,
ndn_on_interest_func  on_interest,
void *  userdata 
)

Register a prefix.

A latter registration cancels the former one.

Parameters
[in]prefixThe prefix to register.
[in]lengthThe length of prefix .
[in]on_interestThe callback function when an interest comes.
[in]userdata[Optional] User-defined data, copied to on_interest.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_FIB_FULLFIB or NameTree is full. See also NDN_FIB_MAX_SIZE, NDN_NAMETREE_MAX_SIZE.

◆ ndn_forwarder_remove_all_routes()

int ndn_forwarder_remove_all_routes ( uint8_t *  prefix,
size_t  length 
)

Remove all routes of a prefix from FIB.

Removing all routes and the FIB entry for a prefix.

Parameters
[in]prefixThe prefix.
[in]lengthThe length of prefix.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_NO_EFFECTCurrently prefix has no route.

◆ ndn_forwarder_remove_route()

int ndn_forwarder_remove_route ( ndn_face_intf_t face,
uint8_t *  prefix,
size_t  length 
)

Remove a route from FIB.

Removing the last route of a not registered FIB entry will delete the entry.

Parameters
[in]faceThe face of the route.
[in]prefixThe prefix of the route.
[in]lengthThe length of prefix .
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_NO_EFFECTCurrently prefix has no route.

◆ ndn_forwarder_unregister_face()

int ndn_forwarder_unregister_face ( ndn_face_intf_t face)

Unregister a face.

Remove face from FIB, PIT and face table. The face should unregister itself during destruction. Delete FIB or PIT entries if necessary.

Parameters
[in,out]faceThe face to unregister.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_NO_EFFECTface is not in FaceTable now.
Note
The application doesn't need to unregister faces manually.
Postcondition
face->face_id == NDN_INVALID_ID

◆ ndn_forwarder_unregister_prefix()

int ndn_forwarder_unregister_prefix ( uint8_t *  prefix,
size_t  length 
)

Unregister a prefix.

Parameters
[in]prefixThe prefix to register.
[in]lengthThe length of prefix.
Returns
NDN_SUCCESS if the call succeeded. The error code otherwise.
Return values
NDN_FWD_NO_EFFECTCurrently prefix is not registered.