.. _program_listing_file_include_rmw_network_flow_endpoint.h: Program Listing for File network_flow_endpoint.h ================================================ |exhale_lsh| :ref:`Return to documentation for file ` (``include/rmw/network_flow_endpoint.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2020 Ericsson AB // // 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. #ifndef RMW__NETWORK_FLOW_ENDPOINT_H_ #define RMW__NETWORK_FLOW_ENDPOINT_H_ #if __cplusplus extern "C" { #endif #include "rmw/types.h" #include "rmw/visibility_control.h" typedef enum rmw_transport_protocol_e { RMW_TRANSPORT_PROTOCOL_UNKNOWN = 0, RMW_TRANSPORT_PROTOCOL_UDP, RMW_TRANSPORT_PROTOCOL_TCP, RMW_TRANSPORT_PROTOCOL_COUNT } rmw_transport_protocol_t; typedef enum rmw_internet_protocol_e { RMW_INTERNET_PROTOCOL_UNKNOWN = 0, RMW_INTERNET_PROTOCOL_IPV4, RMW_INTERNET_PROTOCOL_IPV6, RMW_INTERNET_PROTOCOL_COUNT } rmw_internet_protocol_t; #define RMW_INET_ADDRSTRLEN 48 typedef struct RMW_PUBLIC_TYPE rmw_network_flow_endpoint_s { // Transport protocol rmw_transport_protocol_t transport_protocol; // Internet protocol rmw_internet_protocol_t internet_protocol; // Port uint16_t transport_port; // Flow label // TODO(anamud): Consider specializing since flow_label is set only at publisher // ... side. uint32_t flow_label; // DSCP (Diff. Services Code Point) // TODO(anamud): Consider specializing since DSCP is set only at publisher // ... side. uint8_t dscp; // Internet address char internet_address[RMW_INET_ADDRSTRLEN]; } rmw_network_flow_endpoint_t; RMW_PUBLIC rmw_network_flow_endpoint_t rmw_get_zero_initialized_network_flow_endpoint(void); RMW_PUBLIC const char * rmw_network_flow_endpoint_get_transport_protocol_string( const rmw_transport_protocol_t transport_protocol); RMW_PUBLIC const char * rmw_network_flow_endpoint_get_internet_protocol_string( const rmw_internet_protocol_t internet_protocol); RMW_PUBLIC rmw_ret_t rmw_network_flow_endpoint_set_internet_address( rmw_network_flow_endpoint_t * network_flow_endpoint, const char * internet_address, size_t size); #if __cplusplus } #endif #endif // RMW__NETWORK_FLOW_ENDPOINT_H_