LCOV - code coverage report
Current view: top level - feature/relay - routermode.c (source / functions) Hit Total Coverage
Test: lcov.info Lines: 10 15 66.7 %
Date: 2021-11-24 03:28:48 Functions: 3 5 60.0 %

          Line data    Source code
       1             : /* Copyright (c) 2001 Matej Pfajfar.
       2             :  * Copyright (c) 2001-2004, Roger Dingledine.
       3             :  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
       4             :  * Copyright (c) 2007-2021, The Tor Project, Inc. */
       5             : /* See LICENSE for licensing information */
       6             : 
       7             : /**
       8             :  * @file routermode.c
       9             :  * @brief Check if we're running as a relay/cache.
      10             :  **/
      11             : 
      12             : #include "core/or/or.h"
      13             : 
      14             : #include "app/config/config.h"
      15             : #include "feature/relay/router.h"
      16             : #include "feature/relay/routermode.h"
      17             : 
      18             : /** Return 1 if we are configured to accept either relay or directory requests
      19             :  * from clients and we aren't at risk of exceeding our bandwidth limits, thus
      20             :  * we should be a directory server. If not, return 0.
      21             :  */
      22             : int
      23         595 : dir_server_mode(const or_options_t *options)
      24             : {
      25         595 :   if (!options->DirCache)
      26             :     return 0;
      27        1080 :   return options->DirPort_set ||
      28         621 :     (server_mode(options) && router_has_bandwidth_to_be_dirserver(options));
      29             : }
      30             : 
      31             : /** Return true iff we are trying to be a server.
      32             :  */
      33       26208 : MOCK_IMPL(int,
      34             : server_mode,(const or_options_t *options))
      35             : {
      36       26208 :   if (options->ClientOnly) return 0;
      37       26159 :   return (options->ORPort_set);
      38             : }
      39             : 
      40             : /** Return true iff we are trying to be a non-bridge server.
      41             :  */
      42        1331 : MOCK_IMPL(int,
      43             : public_server_mode,(const or_options_t *options))
      44             : {
      45        1331 :   if (!server_mode(options)) return 0;
      46         646 :   return (!options->BridgeRelay);
      47             : }
      48             : 
      49             : /** Remember if we've advertised ourselves to the dirservers. */
      50             : static int server_is_advertised=0;
      51             : 
      52             : /** Return true iff we have published our descriptor lately.
      53             :  */
      54           0 : MOCK_IMPL(int,
      55             : advertised_server_mode,(void))
      56             : {
      57           0 :   return server_is_advertised;
      58             : }
      59             : 
      60             : /**
      61             :  * Called with a boolean: set whether we have recently published our
      62             :  * descriptor.
      63             :  */
      64             : void
      65           0 : set_server_advertised(int s)
      66             : {
      67           0 :   server_is_advertised = s;
      68           0 : }

Generated by: LCOV version 1.14