123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- // Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /**
- * @file IPLocator.h
- *
- */
- #ifndef IP_LOCATOR_H_
- #define IP_LOCATOR_H_
- #include <vector>
- #include <string>
- #include <fastdds/rtps/common/Locator.h>
- namespace eprosima {
- namespace fastrtps {
- namespace rtps {
- /**
- * Class IPLocator, to provide helper functions to the IP based transports.
- * @ingroup UTILITIES_MODULE
- */
- class IPLocator
- {
- public:
- /**
- * Fills locator with the given parameters.
- * @param kindin Kind of the locator.
- * @param address IP Address of the locator as string.
- * @param portin Port of the locator.
- * @param locator Locator to be filled.
- */
- RTPS_DllAPI static void createLocator(
- int32_t kindin,
- const std::string& address,
- uint32_t portin,
- Locator_t& locator);
- //! Sets locator's IPv4.
- RTPS_DllAPI static bool setIPv4(
- Locator_t& locator,
- const unsigned char* addr);
- //! Sets locator's IPv4.
- RTPS_DllAPI static bool setIPv4(
- Locator_t& locator,
- octet o1,
- octet o2,
- octet o3,
- octet o4);
- //! Sets locator's IPv4.
- RTPS_DllAPI static bool setIPv4(
- Locator_t& locator,
- const std::string& ipv4);
- //! Copies locator's IPv4.
- RTPS_DllAPI static bool setIPv4(
- Locator_t& destlocator,
- const Locator_t& origlocator);
- //! Retrieves locator's IPv4 as octet array.
- RTPS_DllAPI static const octet* getIPv4(const Locator_t& locator);
- //! Check if the locator has IPv4.
- RTPS_DllAPI static bool hasIPv4(const Locator_t& locator);
- //! Returns a string representation of the locator's IPv4.
- RTPS_DllAPI static std::string toIPv4string(const Locator_t& locator);
- //! Copies locator's IPv4.
- RTPS_DllAPI static bool copyIPv4(
- const Locator_t& locator,
- unsigned char* dest);
- // IPv6
- //! Sets locator's IPv6.
- RTPS_DllAPI static bool setIPv6(
- Locator_t& locator,
- const unsigned char* addr);
- //! Sets locator's IPv6.
- RTPS_DllAPI static bool setIPv6(
- Locator_t& locator,
- uint16_t group0,
- uint16_t group1,
- uint16_t group2,
- uint16_t group3,
- uint16_t group4,
- uint16_t group5,
- uint16_t group6,
- uint16_t group7);
- //! Sets locator's IPv6.
- RTPS_DllAPI static bool setIPv6(
- Locator_t& locator,
- const std::string& ipv6);
- //! Copies locator's IPv6.
- RTPS_DllAPI static bool setIPv6(
- Locator_t& destlocator,
- const Locator_t& origlocator);
- //! Retrieves locator's IPv6 as octet array.
- RTPS_DllAPI static const octet* getIPv6(const Locator_t& locator);
- //! Check if the locator has IPv6.
- RTPS_DllAPI static bool hasIPv6(const Locator_t& locator);
- //! Returns a string representation of the locator's IPv6.
- RTPS_DllAPI static std::string toIPv6string(const Locator_t& locator);
- //! Copies locator's IPv6.
- RTPS_DllAPI static bool copyIPv6(
- const Locator_t& locator,
- unsigned char* dest);
- //! Sets locator's IP
- RTPS_DllAPI static bool ip(
- Locator_t& locator,
- const std::string& ip);
- //! Returns a string representation of the locator's IP.
- RTPS_DllAPI static std::string ip_to_string(const Locator_t& locator);
- // TCP
- //! Sets locator's logical port (as in RTCP protocol)
- RTPS_DllAPI static bool setLogicalPort(
- Locator_t& locator,
- uint16_t port);
- //! Gets locator's logical port (as in RTCP protocol)
- RTPS_DllAPI static uint16_t getLogicalPort(const Locator_t& locator);
- //! Sets locator's physical port (as in RTCP protocol)
- RTPS_DllAPI static bool setPhysicalPort(
- Locator_t& locator,
- uint16_t port);
- //! Gets locator's physical port (as in RTCP protocol)
- RTPS_DllAPI static uint16_t getPhysicalPort(const Locator_t& locator);
- // TCPv4
- //! Sets locator's WAN address (as in RTCP protocol)
- RTPS_DllAPI static bool setWan(
- Locator_t& locator,
- octet o1,
- octet o2,
- octet o3,
- octet o4);
- //! Sets locator's WAN address (as in RTCP protocol)
- RTPS_DllAPI static bool setWan(
- Locator_t& locator,
- const std::string& wan);
- //! Gets locator's WAN address (as in RTCP protocol)
- RTPS_DllAPI static const octet* getWan(const Locator_t& locator);
- //! Checks if the locator has WAN address (as in RTCP protocol)
- RTPS_DllAPI static bool hasWan(const Locator_t& locator);
- //! Retrieves a string representation of the locator's WAN address (as in RTCP protocol)
- RTPS_DllAPI static std::string toWanstring(const Locator_t& locator);
- //! Sets locator's LAN ID (as in RTCP protocol)
- RTPS_DllAPI static bool setLanID(
- Locator_t& locator,
- const std::string& lanId);
- //! Gets locator's LAN ID (as in RTCP protocol)
- RTPS_DllAPI static const octet* getLanID(const Locator_t& locator);
- //! Retrieves a string representation of the locator's LAN ID (as in RTCP protocol)
- RTPS_DllAPI static std::string toLanIDstring(const Locator_t& locator);
- //! Returns a new locator without logical port (as in RTCP protocol).
- RTPS_DllAPI static Locator_t toPhysicalLocator(const Locator_t& locator);
- //! Checks if a locator WAN address and IP address are the same (as in RTCP protocol).
- RTPS_DllAPI static bool ip_equals_wan(const Locator_t& locator);
- // Common
- //! Sets locator's RTPC port. Physical for UDP and logical for TCP (as in RTCP protocol)
- RTPS_DllAPI static bool setPortRTPS(
- Locator_t& locator,
- uint16_t port);
- //! Gets locator's RTPC port. Physical for UDP and logical for TCP (as in RTCP protocol)
- RTPS_DllAPI static uint16_t getPortRTPS(Locator_t& locator);
- //! Checks if a locator has local IP address.
- RTPS_DllAPI static bool isLocal(const Locator_t& locator);
- //! Checks if a locator has any IP address.
- RTPS_DllAPI static bool isAny(const Locator_t& locator);
- //! Checks if a both locators has the same IP address.
- RTPS_DllAPI static bool compareAddress(
- const Locator_t& loc1,
- const Locator_t& loc2,
- bool fullAddress = false);
- //! Checks if a both locators has the same IP address and physical port (as in RTCP protocol).
- RTPS_DllAPI static bool compareAddressAndPhysicalPort(
- const Locator_t& loc1,
- const Locator_t& loc2);
- //! Returns a string representation of the given locator.
- RTPS_DllAPI static std::string to_string(const Locator_t& locator);
- // UDP
- //! Checks if the locator has a multicast IP address.
- RTPS_DllAPI static bool isMulticast(const Locator_t& locator);
- private:
- IPLocator();
- virtual ~IPLocator();
- };
- }
- }
- } /* namespace eprosima */
- #endif /* IP_LOCATOR_H_ */
|