mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-21 01:12:11 +00:00
microRTPS: allow communications only in the localhost network when ROS_LOCALHOST_ONLY env variable is set
This commit is contained in:
@@ -25,7 +25,7 @@ except AttributeError:
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
* Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
||||||
* Copyright (c) 2018-2019 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2018-2021 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
@@ -67,6 +67,7 @@ except AttributeError:
|
|||||||
#include <fastrtps/attributes/ParticipantAttributes.h>
|
#include <fastrtps/attributes/ParticipantAttributes.h>
|
||||||
#include <fastrtps/publisher/Publisher.h>
|
#include <fastrtps/publisher/Publisher.h>
|
||||||
#include <fastrtps/attributes/PublisherAttributes.h>
|
#include <fastrtps/attributes/PublisherAttributes.h>
|
||||||
|
#include <fastrtps/transport/UDPv4TransportDescriptor.h>
|
||||||
|
|
||||||
#include <fastrtps/Domain.h>
|
#include <fastrtps/Domain.h>
|
||||||
|
|
||||||
@@ -99,6 +100,22 @@ bool @(topic)_Publisher::init(const std::string& ns)
|
|||||||
std::string nodeName = ns;
|
std::string nodeName = ns;
|
||||||
nodeName.append("@(topic)_publisher");
|
nodeName.append("@(topic)_publisher");
|
||||||
PParam.rtps.setName(nodeName.c_str());
|
PParam.rtps.setName(nodeName.c_str());
|
||||||
|
|
||||||
|
// Check if ROS_LOCALHOST_ONLY is set. This means that one wants to use
|
||||||
|
// only the localhost network for data sharing
|
||||||
|
const char* localhost_only = std::getenv("ROS_LOCALHOST_ONLY");
|
||||||
|
if (localhost_only && strcmp(localhost_only, "1") == 0) {
|
||||||
|
// Create a custom network transport descriptor to whitelist the localhost
|
||||||
|
auto localhostDescriptor = std::make_shared<UDPv4TransportDescriptor>();
|
||||||
|
localhostDescriptor->interfaceWhiteList.emplace_back("127.0.0.1");
|
||||||
|
|
||||||
|
// Disable the built-in Transport Layer
|
||||||
|
PParam.rtps.useBuiltinTransports = false;
|
||||||
|
|
||||||
|
// Add the descriptor as a custom user transport
|
||||||
|
PParam.rtps.userTransports.push_back(localhostDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
mp_participant = Domain::createParticipant(PParam);
|
mp_participant = Domain::createParticipant(PParam);
|
||||||
if(mp_participant == nullptr)
|
if(mp_participant == nullptr)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ except AttributeError:
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
* Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
||||||
* Copyright (c) 2018-2019 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2018-2021 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
@@ -66,6 +66,7 @@ except AttributeError:
|
|||||||
#include <fastrtps/attributes/ParticipantAttributes.h>
|
#include <fastrtps/attributes/ParticipantAttributes.h>
|
||||||
#include <fastrtps/subscriber/Subscriber.h>
|
#include <fastrtps/subscriber/Subscriber.h>
|
||||||
#include <fastrtps/attributes/SubscriberAttributes.h>
|
#include <fastrtps/attributes/SubscriberAttributes.h>
|
||||||
|
#include <fastrtps/transport/UDPv4TransportDescriptor.h>
|
||||||
|
|
||||||
#include <fastrtps/Domain.h>
|
#include <fastrtps/Domain.h>
|
||||||
|
|
||||||
@@ -103,6 +104,22 @@ bool @(topic)_Subscriber::init(uint8_t topic_ID, std::condition_variable* t_send
|
|||||||
std::string nodeName = ns;
|
std::string nodeName = ns;
|
||||||
nodeName.append("@(topic)_subscriber");
|
nodeName.append("@(topic)_subscriber");
|
||||||
PParam.rtps.setName(nodeName.c_str());
|
PParam.rtps.setName(nodeName.c_str());
|
||||||
|
|
||||||
|
// Check if ROS_LOCALHOST_ONLY is set. This means that one wants to use
|
||||||
|
// only the localhost network for data sharing
|
||||||
|
const char* localhost_only = std::getenv("ROS_LOCALHOST_ONLY");
|
||||||
|
if (localhost_only && strcmp(localhost_only, "1") == 0) {
|
||||||
|
// Create a custom network transport descriptor to whitelist the localhost
|
||||||
|
auto localhostDescriptor = std::make_shared<UDPv4TransportDescriptor>();
|
||||||
|
localhostDescriptor->interfaceWhiteList.emplace_back("127.0.0.1");
|
||||||
|
|
||||||
|
// Disable the built-in Transport Layer
|
||||||
|
PParam.rtps.useBuiltinTransports = false;
|
||||||
|
|
||||||
|
// Add the descriptor as a custom user transport
|
||||||
|
PParam.rtps.userTransports.push_back(localhostDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
mp_participant = Domain::createParticipant(PParam);
|
mp_participant = Domain::createParticipant(PParam);
|
||||||
if(mp_participant == nullptr)
|
if(mp_participant == nullptr)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ recv_topics = [(alias[idx] if alias[idx] else s.short_name) for idx, s in enumer
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
* Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
|
||||||
* Copyright (c) 2018-2019 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2018-2021 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
@@ -230,6 +230,11 @@ int main(int argc, char** argv)
|
|||||||
printf("\033[0;37m--- MicroRTPS Agent ---\033[0m\n");
|
printf("\033[0;37m--- MicroRTPS Agent ---\033[0m\n");
|
||||||
printf("[ micrortps_agent ]\tStarting link...\n");
|
printf("[ micrortps_agent ]\tStarting link...\n");
|
||||||
|
|
||||||
|
const char* localhost_only = std::getenv("ROS_LOCALHOST_ONLY");
|
||||||
|
if (localhost_only && strcmp(localhost_only, "1") == 0) {
|
||||||
|
printf("[ micrortps_agent ]\tUsing only the localhost network for data sharing...\n");
|
||||||
|
}
|
||||||
|
|
||||||
switch (_options.transport)
|
switch (_options.transport)
|
||||||
{
|
{
|
||||||
case options::eTransports::UART:
|
case options::eTransports::UART:
|
||||||
|
|||||||
Reference in New Issue
Block a user