RTPS网卡白名单的一个BUG

news/2024/11/14 12:35:20 标签: bug, 网络, 服务器

        当我们创建RTPSParticipantImpl的时候,有时候会指定通信使用的网卡,将可以用于RTPS通信的网卡的IP添加到白名单中,这样,RTPS就只会在IP所在的网卡上进行PDP,EDP以及业务数据交互。

        如果我们的DDS应用在启动的时候,传递了网卡白名单给RTPSParticipantImpl,但是此时,白名单IP所在的网卡有没有被创建出来,那么会触发UDPv4Transport中的一个BUG

TCPv4Transport::TCPv4Transport(
        const TCPv4TransportDescriptor& descriptor)
    : TCPTransportInterface(LOCATOR_KIND_TCPv4)
    , configuration_(descriptor)
{
    if (!descriptor.interfaceWhiteList.empty())
    {
        const auto white_begin = descriptor.interfaceWhiteList.begin();
        const auto white_end = descriptor.interfaceWhiteList.end();

        std::vector<IPFinder::info_IP> local_interfaces;
        get_ipv4s(local_interfaces, true);
        for (const IPFinder::info_IP& infoIP : local_interfaces)
        {
            if (std::find_if(white_begin, white_end, [infoIP](const std::string& white_list_element)
                    {
                        return white_list_element == infoIP.dev || white_list_element == infoIP.name;
                    }) != white_end )
            {
                interface_whitelist_.emplace_back(ip::address_v4::from_string(infoIP.name));
            }
        }

        if (interface_whitelist_.empty())
        {
            EPROSIMA_LOG_ERROR(TRANSPORT, "All whitelist interfaces were filtered out");
            interface_whitelist_.emplace_back(ip::address_v4::from_string("192.0.2.0"));
        }
    }
    ...
}

       问题就在上面这段TCPv4Transport的构造函数中,轮询了白名单中的IP,根据IP找对应的网卡,如果没有找到网卡,则将IP从白名单中移除。最后,如果此时白名单中没有IP了(所有对应网卡都没有起来),那么会增加一条固定的IP("192.0.2.0“),也就是说后面只有当某一个网卡配置了"192.0.2.0“这个IP,才能让RTPS正常收发数据了。


http://www.niftyadmin.cn/n/5751908.html

相关文章

Mock.js生成随机数据,拦截 Ajax 请求

Mock.js 是一个用于模拟数据的 JavaScript 库&#xff0c;特别适合用于前端开发过程中生成假数据进行接口测试。它可以拦截 Ajax 请求并生成随机数据&#xff0c;还可以模拟服务器的响应来加速前端开发。 一、安装 Mock.js 可以通过以下几种方式引入 Mock.js&#xff1a; CDN…

ESP-IDF运行export.sh时遇到“${ZSH_VERSION}“附近有错误

在Ubuntu18.04环境下。 一开始我以为是有这个变量没值&#xff0c;于是我下载之后配置。发现不行。 以为是从主机到虚拟机有隐藏字符&#xff0c;删掉重打&#xff1b;以为有语法问题&#xff0c;手动赋值、改内容。 结果&#xff0c;是因为我是直接下载的GitHub zip导致的&…

小程序服务商常见问题

1: 服务器域名和开发域名都不带https前缀, 业务域名每个都需要校验文件 2: 手机开了调试可以请求, 关闭调试无法请求, 体验版接口请求不同 答: 服务商还需要通过接口给小程序设置业务域名; 但不需要校验文件; 注意: 体验版通过快速配置小程序服务器域名接口会不生效, 用普通的 …

❤React-JSX语法认识和使用

1、JSX基本使用​ JSX是React的核心 JSX是ES的扩展 jsx语法 -> 普通的JavaScript代码 -> babel React可以使用JSX的前提和原因&#xff1a; React生态系统支持&#xff1a; 脚手架通常用于构建React应用程序&#xff0c;而JSX是React框架的核心语法之一。因此&#xf…

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

FU-PEG-OH可以作为一种有效的稳定剂和连接剂,提高纳米颗粒的稳定性和功能性

一、基本信息 英文名称&#xff1a;FU-PEG-OH&#xff0c;Furan-PEG-OH&#xff0c;Furan-PEG-Hydroxyl 中文名称&#xff1a;羟基PEG呋喃 纯度&#xff1a;95&#xff05; 供应商&#xff1a;西安凯新生物科技 分子量&#xff1a;0.4k、0.6k、1k、2k、3.4k、5k、10k、20k…

Spring-boot 后端java配置接口返回jsp页面

Spring-boot 后端java配置接口返回jsp页面 spring boot 基于spring MVC的基础上进行了改进&#xff0c; 将Controller 与ResponseBody 进行了合并成一个新的注解 RestController。 当用户请求时&#xff0c;需要有视图渲染的&#xff0c;与请求数据的请求分别使用 1.在appli…

宏景人力资源信息管理系统 uploadLogo 任意文件上传漏洞复现

0x01 产品描述&#xff1a; ‌宏景人力资源信息管理系统‌&#xff08;HJ-eHR&#xff09;是一款全面覆盖人力资源管理各模块的软件&#xff0c;旨在帮助企事业单位构建高绩效组织&#xff0c;推动组织健康成长&#xff0c;提升组织软实力。该系统适用于复杂单组织或多组织客户…