|
|
A class that handles raw link I/O communication for a specific protocol.
It also allows arbitrary filters to receive the raw link-level data for that protocol.
InputFilter (class) | InputFilter |
JoinedMulticastGroup (class) | JoinedMulticastGroup |
IoLinkComm (IoLinkManager& io_link_manager, const IfTree& iftree,
const string& if_name, const string& vif_name,
uint16_t ether_type, const string& filter_program)
| IoLinkComm |
Constructor for IoLinkComm.
Parameters:
io_link_manager | the corresponding I/O Link manager (IoLinkManager). |
iftree | the interface tree to use. |
if_name | the interface name. |
vif_name | the vif name. |
ether_type | the EtherType protocol number. |
filter_program | the optional filter program to be applied on the received packets. |
~IoLinkComm ()
| ~IoLinkComm |
[virtual]
void allocate_io_link_plugins ()
| allocate_io_link_plugins |
Allocate the I/O Link plugins (one per data plane manager).
void deallocate_io_link_plugins ()
| deallocate_io_link_plugins |
Deallocate the I/O Link plugins (one per data plane manager).
void allocate_io_link_plugin (FeaDataPlaneManager* fea_data_plane_manager)
| allocate_io_link_plugin |
Allocate an I/O Link plugin for a given data plane manager.
Parameters:
fea_data_plane_manager | the data plane manager. |
void deallocate_io_link_plugin (FeaDataPlaneManager* fea_data_plane_manager)
| deallocate_io_link_plugin |
Deallocate the I/O Link plugin for a given data plane manager.
Parameters:
fea_data_plane_manager | the data plane manager. |
void start_io_link_plugins ()
| start_io_link_plugins |
void stop_io_link_plugins ()
| stop_io_link_plugins |
int add_filter (InputFilter* filter)
| add_filter |
Add a filter to list of input filters.
The IoLinkComm class assumes that the callee will be responsible for managing the memory associated with the filter and will call remove_filter() if the filter is deleted or goes out of scope.
Parameters:
filter | the filter to add. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int remove_filter (InputFilter* filter)
| remove_filter |
Remove filter from list of input filters.
Parameters:
filter | the filter to remove. |
Returns: XORP_OK on success, otherwise XORP_ERROR.
bool no_input_filters ()
| no_input_filters |
[const]
Returns: true if there are no filters associated with this instance.
int send_packet (const Mac& src_address,
const Mac& dst_address,
uint16_t ether_type,
const vector<uint8_t>& payload,
string& error_msg)
| send_packet |
Send a raw link-level packet.
Parameters:
src_address | the MAC source address. |
dst_address | the MAC destination address. |
ether_type | the EtherType protocol number. |
payload | the payload, everything after the MAC header. |
error_msg | the error message (if error). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
void recv_packet (const Mac& src_address,
const Mac& dst_address,
uint16_t ether_type,
const vector<uint8_t>& payload)
| recv_packet |
[virtual]
Received a raw link-level packet.
Parameters:
src_address | the MAC source address. |
dst_address | the MAC destination address. |
ether_type | the EtherType protocol number. |
packet | the payload, everything after the MAC header. |
Reimplemented from IoLinkReceiver.
int join_multicast_group (const Mac& group_address,
const string& receiver_name,
string& error_msg)
| join_multicast_group |
Join a MAC multicast group.
Parameters:
group_address | the multicast group address to join. |
receiver_name | the name of the receiver. |
error_msg | the error message (if error). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
int leave_multicast_group (const Mac& group_address,
const string& receiver_name,
string& error_msg)
| leave_multicast_group |
Leave a MAC multicast group.
Parameters:
group_address | the multicast group address to leave. |
receiver_name | the name of the receiver. |
error_msg | the error message (if error). |
Returns: XORP_OK on success, otherwise XORP_ERROR.
const string& if_name ()
| if_name |
[const]
Get the interface name.
Returns: the interface name.
const string& vif_name ()
| vif_name |
[const]
Get the vif name.
Returns: the vif name.
uint16_t ether_type ()
| ether_type |
[const]
Get the EtherType protocol number.
Returns: the EtherType protocol number.
const string& filter_program ()
| filter_program |
[const]
Get the filter program.
Returns: the filter program.