|
| ||||||||||||||||
The XrlRawSocket6Manager has two containers: a container for raw sockets indexed by the protocol associated with the raw socket, and a container for the filters associated with each xrl_target. When an Xrl Target registers for interest in a particular type of raw packet a raw socket (FilterRawSocket6) is created if necessary, then the relevent filter is created and associated with the RawSocket.
| XrlRawSocket6Manager (EventLoop& eventloop, const IfTree& iftree,
XrlRouter& xr)
| XrlRawSocket6Manager |
Constructor for XrlRawSocket6Manager instances.
| ~XrlRawSocket6Manager ()
| ~XrlRawSocket6Manager |
| XrlCmdError send (
const string& if_name,
const string& vif_name,
const IPv6& src_address,
const IPv6& dst_address,
uint32_t ip_protocol,
int32_t ip_ttl,
int32_t ip_tos,
bool ip_router_alert,
const vector<uint8_t>& payload)
| send |
Send an IPv6 packet on a raw socket.
Parameters:
| if_name | the interface to send the packet on. It is essential for multicast. In the unicast case this field may be empty. |
| vif_name | the vif to send the packet on. It is essential for multicast. In the unicast case this field may be empty. |
| src_address | the IP source address. |
| dst_address | the IP destination address. |
| ip_protocol | the IP protocol number. It must be between 1 and 255. |
| ip_ttl | the IP TTL (hop-limit). If it has a negative value, the TTL will be set internally before transmission. |
| ip_tos | the Type Of Service (IP traffic class for IPv6). If it has a negative value, the TOS will be set internally before transmission. |
| ip_router_alert | if true, then add the IP Router Alert option to the IP packet. |
| payload | the payload, everything after the IP header and options. |
| XrlCmdError register_receiver (
const string& xrl_target_name,
const string& if_name,
const string& vif_name,
uint32_t ip_protocol,
bool enable_multicast_loopback)
| register_receiver |
Register to receive IPv6 packets. The receiver is expected to support raw_packet6_client/0.1 interface.
Parameters:
| xrl_target_name | the receiver's XRL target name. |
| if_name | the interface through which packets should be accepted. |
| vif_name | the vif through which packets should be accepted. |
| ip_protocol | the IP protocol number that the receiver is interested in. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols. |
| 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. |
| XrlCmdError unregister_receiver (
const string& xrl_target_name,
const string& if_name,
const string& vif_name,
uint32_t ip_protocol)
| unregister_receiver |
Unregister to receive IPv6 packets.
Parameters:
| xrl_target_name | the receiver's XRL target name. |
| if_name | the interface through which packets should not be accepted. |
| vif_name | the vif through which packets should not be accepted. |
| ip_protocol | the IP Protocol number that the receiver is not interested in anymore. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols. |
| XrlCmdError join_multicast_group (
const string& xrl_target_name,
const string& if_name,
const string& vif_name,
uint32_t ip_protocol,
const IPv6& group_address)
| join_multicast_group |
Join an IPv6 multicast group.
Parameters:
| xrl_target_name | the receiver's XRL target name. |
| if_name | the interface through which packets should be accepted. |
| vif_name | the vif through which packets should be accepted. |
| ip_protocol | the IP protocol number that the receiver is interested in. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols. |
| group_address | the multicast group address to join. |
| XrlCmdError leave_multicast_group (
const string& xrl_target_name,
const string& if_name,
const string& vif_name,
uint32_t ip_protocol,
const IPv6& group_address)
| leave_multicast_group |
Leave an IPv6 multicast group.
Parameters:
| xrl_target_name | the receiver's XRL target name. |
| if_name | the interface through which packets should not be accepted. |
| vif_name | the vif through which packets should not be accepted. |
| ip_protocol | the IP protocol number that the receiver is not interested in anymore. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols. |
| group_address | the multicast group address to leave. |
| XrlRouter& router ()
| router |
| const IfTree& iftree ()
| iftree |
[const]
| void xrl_send_recv_cb (const XrlError& e, string xrl_target_name)
| xrl_send_recv_cb |
Method to be called by Xrl sending filter invoker
| EventLoop& _eventloop | _eventloop |
[protected]
| const IfTree& _iftree | _iftree |
[protected]
| XrlRouter& _xrlrouter | _xrlrouter |
[protected]
| typedef map<uint8_t, FilterRawSocket6*> SocketTable6 | SocketTable6 |
[protected]
| SocketTable6 _sockets | _sockets |
[protected]
| typedef multimap<string, XrlFilterRawSocket6*> FilterBag6 | FilterBag6 |
[protected]
| FilterBag6 _filters | _filters |
[protected]
| void erase_filters (const FilterBag6::iterator& begin,
const FilterBag6::iterator& end)
| erase_filters |
[protected]