| 
 | 
 | ||||||||||||||||
The IoLinkManager has two containers: a container for link-level handlers (IoLinkComm) indexed by the protocol associated with the handler, and a container for the filters associated with each receiver_name. When a receiver registers for interest in a particular type of raw packet a handler (IoLinkComm) is created if necessary, then the relevent filter is created and associated with the IoLinkComm.
| typedef XorpCallback2<int, const uint8_t*, size_t>::RefPtr UpcallReceiverCb | UpcallReceiverCb | 
| IoLinkManager (FeaNode& fea_node, const IfTree& iftree) | IoLinkManager | 
Constructor for IoLinkManager.
| ~IoLinkManager () | ~IoLinkManager | 
[virtual]
| int  send (const string&	if_name,
	     const string&	vif_name,
	     const Mac&		src_address,
	     const Mac&		dst_address,
	     uint16_t		ether_type,
	     const vector<uint8_t>&	payload,
	     string&		error_msg) | send | 
Send a raw link-level packet on an interface.
Parameters:
| if_name | the interface to send the packet on. | 
| vif_name | the vif to send the packet on. | 
| src_address | the MAC source address. | 
| dst_address | the MAC destination address. | 
| ether_type | the EtherType protocol type or the Destination SAP. It must be between 1536 and 65535 to specify the EtherType, or between 1 and 255 to specify the Destination SAP IEEE 802.2 LLC frames. | 
| payload | the payload, everything after the MAC header. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  register_receiver (const string&	receiver_name,
			  const string&	if_name,
			  const string&	vif_name,
			  uint16_t	ether_type,
			  const string&	filter_program,
			  bool		enable_multicast_loopback,
			  string&	error_msg) | register_receiver | 
Register to receive raw link-level packets.
Parameters:
| receiver_name | the name of the receiver. | 
| if_name | the interface through which packets should be accepted. | 
| vif_name | the vif through which packets should be accepted. | 
| ether_type | the EtherType protocol number or the Destination SAP that the receiver is interested in. It must be between 1536 and 65535 to specify the EtherType, or between 1 and 255 to specify the Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. | 
| filter_program | the optional filter program to be applied on the received packets. The program uses tcpdump(1) style expression. | 
| enable_multicast_loopback | if true then enable delivering of multicast datagrams back to this host (assuming the host is a member of the same multicast group. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  unregister_receiver (const string&	receiver_name,
			    const string&	if_name,
			    const string&	vif_name,
			    uint16_t		ether_type,
			    const string&	filter_program,
			    string&		error_msg) | unregister_receiver | 
Unregister to receive raw link-level packets.
Parameters:
| receiver_name | the name of the receiver. | 
| if_name | the interface through which packets should not be accepted. | 
| vif_name | the vif through which packets should not be accepted. | 
| ether_type | the EtherType protocol number or the Destination SAP that the receiver is not interested in anymore. It must be between 1536 and 65535 to specify the EtherType, or between 1 and 255 to specify the Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. | 
| filter_program | the filter program that was applied on the received packets. The program uses tcpdump(1) style expression. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  join_multicast_group (const string&	receiver_name,
			     const string&	if_name,
			     const string&	vif_name,
			     uint16_t		ether_type,
			     const string&	filter_program,
			     const Mac&		group_address,
			     string&		error_msg) | join_multicast_group | 
Join a MAC multicast group.
Parameters:
| receiver_name | the name of the receiver. | 
| if_name | the interface through which packets should be accepted. | 
| vif_name | the vif through which packets should be accepted. | 
| ether_type | the EtherType protocol number or the Destination SAP that the receiver is interested in. It must be between 1536 and 65535 to specify the EtherType, or between 1 and 255 to specify the Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. | 
| filter_program | the optional filter program to be applied on the received packets. The program uses tcpdump(1) style expression. | 
| group_address | the multicast group address to join. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  leave_multicast_group (const string&	receiver_name,
			      const string&	if_name,
			      const string&	vif_name,
			      uint16_t		ether_type,
			      const string&	filter_program,
			      const Mac&	group_address,
			      string&		error_msg) | leave_multicast_group | 
Leave a MAC multicast group.
Parameters:
| receiver_name | the name of the receiver. | 
| if_name | the interface through which packets should not be accepted. | 
| vif_name | the vif through which packets should not be accepted. | 
| ether_type | the EtherType protocol number or the Destination SAP that the receiver is not interested in anymore. It must be between 1536 and 65535 to specify the EtherType, or between 1 and 255 to specify the Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. | 
| filter_program | the filter program that was applied on the received packets. The program uses tcpdump(1) style expression. | 
| group_address | the multicast group address to leave. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| void  recv_event (const string&		receiver_name,
		    const struct MacHeaderInfo&	header,
		    const vector<uint8_t>&	payload) | recv_event | 
Data received event.
Parameters:
| receiver_name | the name of the receiver to send the raw link-level packet to. | 
| header | the MAC header information. | 
| payload | the payload, everything after the MAC header. | 
Reimplemented from IoLinkManagerReceiver.
| void  instance_birth (const string& instance_name) | instance_birth | 
Inform the watcher that a component instance is alive.
Parameters:
| instance_name | the name of the instance that is alive. | 
Reimplemented from InstanceWatcher.
| void  instance_death (const string& instance_name) | instance_death | 
Inform the watcher that a component instance is dead.
Parameters:
| instance_name | the name of the instance that is dead. | 
Reimplemented from InstanceWatcher.
| void  set_io_link_manager_receiver (IoLinkManagerReceiver* v) | set_io_link_manager_receiver | 
Set the instance that is responsible for sending raw link-level packets to a receiver.
| const IfTree&	 iftree () | iftree | 
[const]
Get a reference to the interface tree.
Returns: a reference to the interface tree (IfTree).
| int  register_data_plane_manager (FeaDataPlaneManager* fea_data_plane_manager,
				    bool is_exclusive) | register_data_plane_manager | 
Register FeaDataPlaneManager data plane manager.
Parameters:
| fea_data_plane_manager | the data plane manager to register. | 
| is_exclusive | if true, the manager is registered as the exclusive manager, otherwise is added to the list of managers. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  unregister_data_plane_manager (FeaDataPlaneManager* fea_data_plane_manager) | unregister_data_plane_manager | 
Unregister FeaDataPlaneManager data plane manager.
Parameters:
| fea_data_plane_manager | the data plane manager to unregister. | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| list<FeaDataPlaneManager*>&  fea_data_plane_managers () | fea_data_plane_managers | 
Get the list of registered data plane managers.
Returns: the list of registered data plane managers.
| int  add_multicast_mac (const string& if_name, const Mac& mac,
			  string& error_msg) | add_multicast_mac | 
Add a multicast MAC address to an interface.
Parameters:
| if_name | the interface name. | 
| mac | the MAC address to add. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.
| int  remove_multicast_mac (const string& if_name, const Mac& mac,
			     string& error_msg) | remove_multicast_mac | 
Remove a multicast MAC address from an interface.
Parameters:
| if_name | the interface name. | 
| mac | the MAC address to remove. | 
| error_msg | the error message (if error). | 
Returns: XORP_OK on success, otherwise XORP_ERROR.