6.10. Interface Whitelist¶
Using Fast DDS, it is possible to limit the network interfaces used by TCP Transport and
UDP Transport.
This is achieved by adding the interfaces’ IP addresses to the interfaceWhiteList
field in the TCPTransportDescriptor or UDPTransportDescriptor.
Thus, the communication interfaces used by the DomainParticipants whose TransportDescriptorInterface
defines an
interfaceWhiteList
is limited to the interfaces’ IP addresses defined in that list,
therefore avoiding the use of the rest of the network interfaces available in the system.
The values on this list should match the IPs of your machine in that networks.
For example:
DomainParticipantQos qos;
// Create a descriptor for the new transport.
auto tcp_transport = std::make_shared<TCPv4TransportDescriptor>();
// Add loopback to the whitelist
tcp_transport->interfaceWhiteList.emplace_back("127.0.0.1");
// Link the Transport Layer to the Participant.
qos.transport().user_transports.push_back(tcp_transport);
// Avoid using the builtin transports
qos.transport().use_builtin_transports = false;
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<transport_descriptors>
<transport_descriptor>
<transport_id>CustomTcpTransport</transport_id>
<type>TCPv4</type>
<interfaceWhiteList>
<address>127.0.0.1</address>
</interfaceWhiteList>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="CustomTcpTransportParticipant">
<rtps>
<useBuiltinTransports>false</useBuiltinTransports>
<userTransports>
<transport_id>CustomTcpTransport</transport_id>
</userTransports>
</rtps>
</participant>
</profiles>
Warning
The interface whitelist feature applies to network interfaces. Therefore, it is only available on TCP Transport and UDP Transport.