LCOV - code coverage report
Current view: top level - root/contrail/src/contrail-common/io - ssl_server.h (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 0 1 0.0 %
Date: 2026-08-03 02:19:58 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #ifndef SRC_IO_SSL_SERVER_H_
       6             : #define SRC_IO_SSL_SERVER_H_
       7             : 
       8             : #include <boost/asio/ssl.hpp>
       9             : 
      10             : #include "io/tcp_server.h"
      11             : 
      12             : class SslSession;
      13             : 
      14             : class SslServer : public TcpServer {
      15             : public:
      16             :     typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> SslSocket;
      17             : 
      18             :     explicit SslServer(EventManager *evm, boost::asio::ssl::context::method m,
      19             :                        bool ssl_enabled = true,
      20             :                        bool ssl_handshake_delayed = false);
      21             :     virtual ~SslServer();
      22             : 
      23             : protected:
      24             :     // given SSL socket, Create a session object.
      25             :     virtual SslSession *AllocSession(SslSocket *socket) = 0;
      26             : 
      27             :     // boost ssl context accessor to setup ssl context variables.
      28             :     boost::asio::ssl::context *context();
      29             : 
      30             : private:
      31             :     friend class SslSession;
      32             : 
      33             :     static void AcceptHandShakeHandler(TcpServerPtr server,
      34             :                                        TcpSessionPtr session,
      35             :                                        const boost::system::error_code& error);
      36             :     static void ConnectHandShakeHandler(TcpServerPtr server,
      37             :                                         TcpSessionPtr session,
      38             :                                         const boost::system::error_code& error);
      39             : 
      40             :     // suppress AllocSession method using tcp socket, not valid for
      41             :     // ssl server.
      42           0 :     TcpSession *AllocSession(Socket *socket) { return NULL; }
      43             : 
      44             :     TcpSession *AllocSession(bool server_session);
      45             : 
      46             :     // override accept complete handler to trigger handshake
      47             :     virtual void AcceptHandlerComplete(TcpSessionPtr session);
      48             : 
      49             :     // override connect complete handler to trigger handshake
      50             :     void ConnectHandlerComplete(TcpSessionPtr session);
      51             : 
      52             :     Socket *accept_socket() const;
      53             :     void set_accept_socket();
      54             : 
      55             :     boost::asio::ssl::context context_;
      56             :     std::unique_ptr<SslSocket> so_ssl_accept_;  // SSL socket used in async_accept
      57             :     bool ssl_enabled_;
      58             :     bool ssl_handshake_delayed_;
      59             :     DISALLOW_COPY_AND_ASSIGN(SslServer);
      60             : };
      61             : 
      62             : #endif  // SRC_IO_SSL_SERVER_H_

Generated by: LCOV version 1.14