Kea 3.1.9
isc::radius::TcpExchange Class Reference

RADIUS/TCP (or RADIUS/TLS) Exchange. More...

#include <client_exchange.h>

Inheritance diagram for isc::radius::TcpExchange:

Public Member Functions

 TcpExchange (const MessagePtr &request, unsigned maxretries, const Servers &servers, Handler handler)
 Constructor.
virtual ~TcpExchange ()=default
 Destructor.
virtual void shutdown ()
 Shutdown.
virtual void start ()
 Start.
Public Member Functions inherited from isc::radius::Exchange
virtual ~Exchange ()=default
 Destructor.
const std::string & getId () const
 Get identifier.
int getRC () const
 Get the error code.
MessagePtr getRequest () const
 Get the request.
MessagePtr getResponse () const
 Get the response.
void logReplyMessages () const
 Log reply messages.
void processResponse ()
 Process response.

Protected Member Functions

void buildRequest ()
 Build request.
Protected Member Functions inherited from isc::radius::Exchange
 Exchange (const MessagePtr &request, unsigned maxretries, const Servers &servers)
 Constructor.
 Exchange (const MessagePtr &request, unsigned maxretries, const Servers &servers, Handler handler)
 Constructor.
void buildRequest (const ServerPtr &server, std::chrono::steady_clock::time_point start_time)
 Build request.
void createIdentifier ()
 Create identifier.

Static Protected Member Functions

static int CompleteCheck (const isc::tcp::WireDataPtr &response, std::string &error_msg)
 Complete check.
static void RequestHandler (TcpExchangePtr ex, const boost::system::error_code &ec, const isc::tcp::WireDataPtr &response, const std::string &error_msg)
 Request handler.

Protected Attributes

isc::tcp::WireDataPtr response_
 Response wire data.
ServerPtr server_
 Current server.
std::chrono::steady_clock::time_point start_time_
 Start time.
Protected Attributes inherited from isc::radius::Exchange
Handler handler_
 Termination handler.
std::string identifier_
 The identifier (random value in hexadecimal).
unsigned maxretries_
 Maximum number of retries for a server.
int rc_
 Error/return code.
MessagePtr received_
 Received message.
MessagePtr request_
 Request message.
MessagePtr sent_
 Sent message.
Servers servers_
 Servers (a copy which is what we need).
bool sync_
 Sync / async flag.

Additional Inherited Members

Public Types inherited from isc::radius::Exchange
typedef std::function< void(const ExchangePtr ex)> Handler
 Termination handler.
typedef asiolink::UDPSocket< const SocketCallbackRadiusSocket
 Type of RADIUS UDP sockets.
typedef std::function< void(const boost::system::error_code ec, const size_t size)> SocketCallback
 Type of UDP socket callback functions.
Static Public Member Functions inherited from isc::radius::Exchange
static ExchangePtr create (const asiolink::IOServicePtr io_service, const MessagePtr &request, unsigned maxretries, const Servers &servers, Handler handler, RadiusProtocol protocol=PW_PROTO_UDP)
 Factory.
static ExchangePtr create (const MessagePtr &request, unsigned maxretries, const Servers &servers)
 Factory.
Static Public Attributes inherited from isc::radius::Exchange
static constexpr size_t BUF_LEN = 8192
 Receive buffer size.

Detailed Description

RADIUS/TCP (or RADIUS/TLS) Exchange.

Definition at line 355 of file client_exchange.h.

Constructor & Destructor Documentation

◆ TcpExchange()

isc::radius::TcpExchange::TcpExchange ( const MessagePtr & request,
unsigned maxretries,
const Servers & servers,
Handler handler )

Constructor.

Async version.

Parameters
requestrequest message to send.
maxretriesmaximum number of retries for a server.
serversServers.
handlerTermination handler.

Definition at line 812 of file client_exchange.cc.

References isc::radius::Exchange::Exchange(), response_, server_, isc::radius::Exchange::servers_, and start_time_.

Here is the call graph for this function:

◆ ~TcpExchange()

virtual isc::radius::TcpExchange::~TcpExchange ( )
virtualdefault

Destructor.

Note
: no sync version.

Member Function Documentation

◆ buildRequest()

void isc::radius::TcpExchange::buildRequest ( )
protected

Build request.

Definition at line 320 of file client_exchange.cc.

References isc::radius::Exchange::buildRequest(), server_, and start_time_.

Referenced by start().

Here is the call graph for this function:

◆ CompleteCheck()

int isc::radius::TcpExchange::CompleteCheck ( const isc::tcp::WireDataPtr & response,
std::string & error_msg )
staticprotected

Complete check.

Parameters
responsePointer to response wire data.
error_msgReference to the error message.
Returns
status (>0 complete, 0 incomplete, <0 error).

Definition at line 959 of file client_exchange.cc.

Referenced by start().

◆ RequestHandler()

void isc::radius::TcpExchange::RequestHandler ( TcpExchangePtr ex,
const boost::system::error_code & ec,
const isc::tcp::WireDataPtr & response,
const std::string & error_msg )
staticprotected

Request handler.

Parameters
exPoint to the Exchange.
ecBoost error code.
responsePointer to response wire data.
error_msgError message.

Definition at line 895 of file client_exchange.cc.

References isc::radius::ERROR_RC, isc::radius::exchangeRCtoText(), isc_throw, LOG_DEBUG, LOG_ERROR, isc::radius::OK_RC, isc::radius::RADIUS_DBG_TRACE, isc::radius::radius_logger, isc::radius::RADIUS_TCP_EXCHANGE_FAILURE, isc::radius::RADIUS_TCP_EXCHANGE_RECEIVE_FAILED, isc::radius::RADIUS_TCP_EXCHANGE_RECEIVED, isc::radius::RADIUS_TCP_EXCHANGE_SUCCESS, isc::radius::REJECT_RC, isc::radius::RadiusImpl::shutdown_, and isc::radius::TIMEOUT_RC.

Referenced by start().

Here is the call graph for this function:

◆ shutdown()

void isc::radius::TcpExchange::shutdown ( )
virtual

Shutdown.

Implements isc::radius::Exchange.

Definition at line 890 of file client_exchange.cc.

References isc::radius::Exchange::handler_.

Referenced by start().

◆ start()

Member Data Documentation

◆ response_

isc::tcp::WireDataPtr isc::radius::TcpExchange::response_
protected

Response wire data.

Definition at line 390 of file client_exchange.h.

Referenced by TcpExchange(), and start().

◆ server_

ServerPtr isc::radius::TcpExchange::server_
protected

Current server.

Definition at line 387 of file client_exchange.h.

Referenced by TcpExchange(), buildRequest(), and start().

◆ start_time_

std::chrono::steady_clock::time_point isc::radius::TcpExchange::start_time_
protected

Start time.

Definition at line 384 of file client_exchange.h.

Referenced by TcpExchange(), and buildRequest().


The documentation for this class was generated from the following files: