tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

alertsock.h (1475B)


      1 /* Copyright (c) 2003-2004, Roger Dingledine
      2 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
      3 * Copyright (c) 2007-2021, The Tor Project, Inc. */
      4 /* See LICENSE for licensing information */
      5 
      6 /**
      7 * \file alertsock.h
      8 *
      9 * \brief Header for alertsock.c
     10 **/
     11 
     12 #ifndef TOR_ALERTSOCK_H
     13 #define TOR_ALERTSOCK_H
     14 
     15 #include "orconfig.h"
     16 #include "lib/net/nettypes.h"
     17 #include "lib/cc/torint.h"
     18 
     19 /** Helper type used to manage waking up the main thread while it's in
     20 * the libevent main loop.  Used by the work queue code. */
     21 typedef struct alert_sockets_t {
     22  /* XXXX This structure needs a better name. */
     23  /** Socket that the main thread should listen for EV_READ events on.
     24   * Note that this socket may be a regular fd on a non-Windows platform.
     25   */
     26  tor_socket_t read_fd;
     27  /** Socket to use when alerting the main thread. */
     28  tor_socket_t write_fd;
     29  /** Function to alert the main thread */
     30  int (*alert_fn)(tor_socket_t write_fd);
     31  /** Function to make the main thread no longer alerted. */
     32  int (*drain_fn)(tor_socket_t read_fd);
     33 } alert_sockets_t;
     34 
     35 /* Flags to disable one or more alert_sockets backends. */
     36 #define ASOCKS_NOEVENTFD2   (1u<<0)
     37 #define ASOCKS_NOEVENTFD    (1u<<1)
     38 #define ASOCKS_NOPIPE2      (1u<<2)
     39 #define ASOCKS_NOPIPE       (1u<<3)
     40 #define ASOCKS_NOSOCKETPAIR (1u<<4)
     41 
     42 int alert_sockets_create(alert_sockets_t *socks_out, uint32_t flags);
     43 void alert_sockets_close(alert_sockets_t *socks);
     44 
     45 #endif /* !defined(TOR_ALERTSOCK_H) */