Bladeren bron

Fix warnings from doxygen

Most of these are simple.  The only nontrivial part is that our
pattern for using ENUM_BF was confusing doxygen by making declarations
that didn't look like declarations.
Nick Mathewson 12 jaren geleden
bovenliggende
commit
d5e11f21cc
13 gewijzigde bestanden met toevoegingen van 99 en 84 verwijderingen
  1. 6 0
      changes/doxygen_fixes
  2. 3 3
      src/common/address.c
  3. 1 1
      src/common/crypto.c
  4. 1 0
      src/common/crypto.h
  5. 2 1
      src/common/tortls.c
  6. 3 3
      src/common/util.c
  7. 1 1
      src/or/addressmap.c
  8. 42 42
      src/or/channel.h
  9. 1 1
      src/or/connection_or.c
  10. 1 1
      src/or/entrynodes.h
  11. 1 1
      src/or/geoip.c
  12. 23 23
      src/or/main.c
  13. 14 7
      src/or/or.h

+ 6 - 0
changes/doxygen_fixes

@@ -0,0 +1,6 @@
+  o Documentation:
+    - Resolve warnings from Doxygen.
+
+  o Code simplification and refactoring:
+    - Change our use of the ENUM_BF macro to avoid declarations that
+      confuse Doxygen.

+ 3 - 3
src/common/address.c

@@ -182,7 +182,7 @@ tor_addr_make_unspec(tor_addr_t *a)
   a->family = AF_UNSPEC;
 }
 
-/** Set address <a>a</b> to the null address in address family <b>family</b>.
+/** Set address <b>a</b> to the null address in address family <b>family</b>.
  * The null address for AF_INET is 0.0.0.0.  The null address for AF_INET6 is
  * [::].  AF_UNSPEC is all null. */
 void
@@ -1463,8 +1463,8 @@ is_internal_IP(uint32_t ip, int for_listening)
  * allocated string holding the address portion and *<b>port_out</b>
  * to the port.
  *
- * Don't do DNS lookups and don't allow domain names in the <ip> field.
- * Don't accept <b>addrport</b> of the form "<ip>" or "<ip>:0".
+ * Don't do DNS lookups and don't allow domain names in the "ip" field.
+ * Don't accept <b>addrport</b> of the form "ip" or "ip:0".
  *
  * Return 0 on success, -1 on failure. */
 int

+ 1 - 1
src/common/crypto.c

@@ -1594,7 +1594,7 @@ struct crypto_digest_t {
     SHA256_CTX sha2; /**< state for SHA256 */
   } d; /**< State for the digest we're using.  Only one member of the
         * union is usable, depending on the value of <b>algorithm</b>. */
-  ENUM_BF(digest_algorithm_t) algorithm : 8; /**< Which algorithm is in use? */
+  digest_algorithm_bitfield_t algorithm : 8; /**< Which algorithm is in use? */
 };
 
 /** Allocate and return a new digest object to compute SHA1 digests.

+ 1 - 0
src/common/crypto.h

@@ -89,6 +89,7 @@ typedef enum {
   DIGEST_SHA256 = 1,
 } digest_algorithm_t;
 #define  N_DIGEST_ALGORITHMS (DIGEST_SHA256+1)
+#define digest_algorithm_bitfield_t ENUM_BF(digest_algorithm_t)
 
 /** A set of all the digests we know how to compute, taken on a single
  * string.  Any digests that are shorter than 256 bits are right-padded

+ 2 - 1
src/common/tortls.c

@@ -149,6 +149,7 @@ typedef enum {
     TOR_TLS_ST_SENTCLOSE, TOR_TLS_ST_CLOSED, TOR_TLS_ST_RENEGOTIATE,
     TOR_TLS_ST_BUFFEREVENT
 } tor_tls_state_t;
+#define tor_tls_state_bitfield_t ENUM_BF(tor_tls_state_t)
 
 /** Holds a SSL object and its associated data.  Members are only
  * accessed from within tortls.c.
@@ -159,7 +160,7 @@ struct tor_tls_t {
   SSL *ssl; /**< An OpenSSL SSL object. */
   int socket; /**< The underlying file descriptor for this TLS connection. */
   char *address; /**< An address to log when describing this connection. */
-  ENUM_BF(tor_tls_state_t) state : 3; /**< The current SSL state,
+  tor_tls_state_bitfield_t state : 3; /**< The current SSL state,
                                        * depending on which operations
                                        * have completed successfully. */
   unsigned int isServer:1; /**< True iff this is a server-side connection */

+ 3 - 3
src/common/util.c

@@ -898,8 +898,8 @@ tor_digest_is_zero(const char *digest)
   return tor_memeq(digest, ZERO_DIGEST, DIGEST_LEN);
 }
 
-/** Return true if <b>string</b> is a valid '<key>=[<value>]' string.
- *  <value> is optional, to indicate the empty string. Log at logging
+/** Return true if <b>string</b> is a valid 'key=[value]' string.
+ *  "value" is optional, to indicate the empty string. Log at logging
  *  <b>severity</b> if something ugly happens. */
 int
 string_is_key_value(int severity, const char *string)
@@ -3026,7 +3026,7 @@ tor_vsscanf(const char *buf, const char *pattern, va_list ap)
 /** Minimal sscanf replacement: parse <b>buf</b> according to <b>pattern</b>
  * and store the results in the corresponding argument fields.  Differs from
  * sscanf in that:
- * <ul><li>It only handles %u, %lu, %x, %lx, %<NUM>s, %d, %ld, %lf, and %c.
+ * <ul><li>It only handles %u, %lu, %x, %lx, %[NUM]s, %d, %ld, %lf, and %c.
  *     <li>It only handles decimal inputs for %lf. (12.3, not 1.23e1)
  *     <li>It does not handle arbitrarily long widths.
  *     <li>Numbers do not consume any space characters.

+ 1 - 1
src/or/addressmap.c

@@ -45,7 +45,7 @@
 typedef struct {
   char *new_address;
   time_t expires;
-  ENUM_BF(addressmap_entry_source_t) source:3;
+  addressmap_entry_source_bitfield_t source:3;
   unsigned src_wildcard:1;
   unsigned dst_wildcard:1;
   short num_resolve_failures;

+ 42 - 42
src/or/channel.h

@@ -21,7 +21,7 @@ struct cell_queue_entry_s;
 TOR_SIMPLEQ_HEAD(chan_cell_queue, cell_queue_entry_s) incoming_queue;
 typedef struct chan_cell_queue chan_cell_queue_t;
 
-/*
+/**
  * Channel struct; see the channel_t typedef in or.h.  A channel is an
  * abstract interface for the OR-to-OR connection, similar to connection_or_t,
  * but without the strong coupling to the underlying TLS implementation.  They
@@ -31,18 +31,18 @@ typedef struct chan_cell_queue chan_cell_queue_t;
  */
 
 struct channel_s {
-  /* Magic number for type-checking cast macros */
+  /** Magic number for type-checking cast macros */
   uint32_t magic;
 
-  /* Current channel state */
+  /** Current channel state */
   channel_state_t state;
 
-  /* Globally unique ID number for a channel over the lifetime of a Tor
+  /** Globally unique ID number for a channel over the lifetime of a Tor
    * process.
    */
   uint64_t global_identifier;
 
-  /* Should we expect to see this channel in the channel lists? */
+  /** Should we expect to see this channel in the channel lists? */
   unsigned char registered:1;
 
   /** has this channel ever been open? */
@@ -57,28 +57,28 @@ struct channel_s {
     CHANNEL_CLOSE_FOR_ERROR
   } reason_for_closing;
 
-  /* Timestamps for both cell channels and listeners */
+  /** Timestamps for both cell channels and listeners */
   time_t timestamp_created; /* Channel created */
   time_t timestamp_active; /* Any activity */
 
   /* Methods implemented by the lower layer */
 
-  /* Free a channel */
+  /** Free a channel */
   void (*free)(channel_t *);
-  /* Close an open channel */
+  /** Close an open channel */
   void (*close)(channel_t *);
-  /* Describe the transport subclass for this channel */
+  /** Describe the transport subclass for this channel */
   const char * (*describe_transport)(channel_t *);
-  /* Optional method to dump transport-specific statistics on the channel */
+  /** Optional method to dump transport-specific statistics on the channel */
   void (*dumpstats)(channel_t *, int);
 
-  /* Registered handlers for incoming cells */
+  /** Registered handlers for incoming cells */
   channel_cell_handler_fn_ptr cell_handler;
   channel_var_cell_handler_fn_ptr var_cell_handler;
 
   /* Methods implemented by the lower layer */
 
-  /*
+  /**
    * Ask the underlying transport what the remote endpoint address is, in
    * a tor_addr_t.  This is optional and subclasses may leave this NULL.
    * If they implement it, they should write the address out to the
@@ -90,75 +90,75 @@ struct channel_s {
 
 #define GRD_FLAG_ORIGINAL 1
 #define GRD_FLAG_ADDR_ONLY 2
-  /*
+  /**
    * Get a text description of the remote endpoint; canonicalized if the flag
    * GRD_FLAG_ORIGINAL is not set, or the one we originally connected
    * to/received from if it is.  If GRD_FLAG_ADDR_ONLY is set, we return only
    * the original address.
    */
   const char * (*get_remote_descr)(channel_t *, int);
-  /* Check if the lower layer has queued writes */
+  /** Check if the lower layer has queued writes */
   int (*has_queued_writes)(channel_t *);
-  /*
+  /**
    * If the second param is zero, ask the lower layer if this is
    * 'canonical', for a transport-specific definition of canonical; if
    * it is 1, ask if the answer to the preceding query is safe to rely
    * on.
    */
   int (*is_canonical)(channel_t *, int);
-  /* Check if this channel matches a specified extend_info_t */
+  /** Check if this channel matches a specified extend_info_t */
   int (*matches_extend_info)(channel_t *, extend_info_t *);
-  /* Check if this channel matches a target address when extending */
+  /** Check if this channel matches a target address when extending */
   int (*matches_target)(channel_t *, const tor_addr_t *);
-  /* Write a cell to an open channel */
+  /** Write a cell to an open channel */
   int (*write_cell)(channel_t *, cell_t *);
-   /* Write a packed cell to an open channel */
+  /** Write a packed cell to an open channel */
   int (*write_packed_cell)(channel_t *, packed_cell_t *);
-  /* Write a variable-length cell to an open channel */
+  /** Write a variable-length cell to an open channel */
   int (*write_var_cell)(channel_t *, var_cell_t *);
 
-  /*
+  /**
    * Hash of the public RSA key for the other side's identity key, or
    * zeroes if the other side hasn't shown us a valid identity key.
    */
   char identity_digest[DIGEST_LEN];
-  /* Nickname of the OR on the other side, or NULL if none. */
+  /** Nickname of the OR on the other side, or NULL if none. */
   char *nickname;
 
-  /*
+  /**
    * Linked list of channels with the same identity digest, for the
    * digest->channel map
    */
   TOR_LIST_ENTRY(channel_s) next_with_same_id;
 
-  /* List of incoming cells to handle */
+  /** List of incoming cells to handle */
   chan_cell_queue_t incoming_queue;
 
-  /* List of queued outgoing cells */
+  /** List of queued outgoing cells */
   chan_cell_queue_t outgoing_queue;
 
-  /* Circuit mux for circuits sending on this channel */
+  /** Circuit mux for circuits sending on this channel */
   circuitmux_t *cmux;
 
-  /* Circuit ID generation stuff for use by circuitbuild.c */
+  /** Circuit ID generation stuff for use by circuitbuild.c */
 
-  /*
+  /**
    * When we send CREATE cells along this connection, which half of the
    * space should we use?
    */
-  ENUM_BF(circ_id_type_t) circ_id_type:2;
+  circ_id_type_bitfield_t circ_id_type:2;
   /** DOCDOC*/
   unsigned wide_circ_ids:1;
-  /*
+  /**
    * Which circ_id do we try to use next on this connection?  This is
    * always in the range 0..1<<15-1.
    */
   circid_t next_circ_id;
 
-  /* For how many circuits are we n_chan?  What about p_chan? */
+  /** For how many circuits are we n_chan?  What about p_chan? */
   unsigned int num_n_circuits, num_p_circuits;
 
-  /*
+  /**
    * True iff this channel shouldn't get any new circs attached to it,
    * because the connection is too old, or because there's a better one.
    * More generally, this flag is used to note an unhealthy connection;
@@ -210,7 +210,7 @@ struct channel_listener_s {
    */
   uint64_t global_identifier;
 
-  /* Should we expect to see this channel in the channel lists? */
+  /** Should we expect to see this channel in the channel lists? */
   unsigned char registered:1;
 
   /** Why did we close?
@@ -222,31 +222,31 @@ struct channel_listener_s {
     CHANNEL_LISTENER_CLOSE_FOR_ERROR
   } reason_for_closing;
 
-  /* Timestamps for both cell channels and listeners */
+  /** Timestamps for both cell channels and listeners */
   time_t timestamp_created; /* Channel created */
   time_t timestamp_active; /* Any activity */
 
   /* Methods implemented by the lower layer */
 
-  /* Free a channel */
+  /** Free a channel */
   void (*free)(channel_listener_t *);
-  /* Close an open channel */
+  /** Close an open channel */
   void (*close)(channel_listener_t *);
-  /* Describe the transport subclass for this channel */
+  /** Describe the transport subclass for this channel */
   const char * (*describe_transport)(channel_listener_t *);
-  /* Optional method to dump transport-specific statistics on the channel */
+  /** Optional method to dump transport-specific statistics on the channel */
   void (*dumpstats)(channel_listener_t *, int);
 
-  /* Registered listen handler to call on incoming connection */
+  /** Registered listen handler to call on incoming connection */
   channel_listener_fn_ptr listener;
 
-  /* List of pending incoming connections */
+  /** List of pending incoming connections */
   smartlist_t *incoming_list;
 
-  /* Timestamps for listeners */
+  /** Timestamps for listeners */
   time_t timestamp_accepted;
 
-  /* Counters for listeners */
+  /** Counters for listeners */
   uint64_t n_accepted;
 };
 

+ 1 - 1
src/or/connection_or.c

@@ -215,7 +215,7 @@ connection_or_clear_ext_or_id_map(void)
   orconn_ext_or_id_map = NULL;
 }
 
-/** Creates an Extended ORPort identifier for <b>conn<b/> and deposits
+/** Creates an Extended ORPort identifier for <b>conn</b> and deposits
  *  it into the global list of identifiers. */
 void
 connection_or_set_ext_or_identifier(or_connection_t *conn)

+ 1 - 1
src/or/entrynodes.h

@@ -5,7 +5,7 @@
 /* See LICENSE for licensing information */
 
 /**
- * \file guardnodes.h
+ * \file entrynodes.h
  * \brief Header file for circuitbuild.c.
  **/
 

+ 1 - 1
src/or/geoip.c

@@ -812,7 +812,7 @@ char *
 geoip_get_transport_history(void)
 {
   unsigned granularity = IP_GRANULARITY;
-  /** String hash table <name of transport> -> <number of users>. */
+  /** String hash table (name of transport) -> (number of users). */
   strmap_t *transport_counts = strmap_new();
 
   /** Smartlist that contains copies of the names of the transports

+ 23 - 23
src/or/main.c

@@ -1196,7 +1196,7 @@ run_scheduled_events(time_t now)
   int i;
   int have_dir_info;
 
-  /** 0. See if we've been asked to shut down and our timeout has
+  /* 0. See if we've been asked to shut down and our timeout has
    * expired; or if our bandwidth limits are exhausted and we
    * should hibernate; or if it's time to wake up from hibernation.
    */
@@ -1213,7 +1213,7 @@ run_scheduled_events(time_t now)
   /* 0c. If we've deferred log messages for the controller, handle them now */
   flush_pending_log_callbacks();
 
-  /** 1a. Every MIN_ONION_KEY_LIFETIME seconds, rotate the onion keys,
+  /* 1a. Every MIN_ONION_KEY_LIFETIME seconds, rotate the onion keys,
    *  shut down and restart all cpuworkers, and update the directory if
    *  necessary.
    */
@@ -1247,7 +1247,7 @@ run_scheduled_events(time_t now)
   if (options->UseBridges)
     fetch_bridge_descriptors(options, now);
 
-  /** 1b. Every MAX_SSL_KEY_LIFETIME_INTERNAL seconds, we change our
+  /* 1b. Every MAX_SSL_KEY_LIFETIME_INTERNAL seconds, we change our
    * TLS context. */
   if (!last_rotated_x509_certificate)
     last_rotated_x509_certificate = now;
@@ -1273,7 +1273,7 @@ run_scheduled_events(time_t now)
     time_to_add_entropy = now + ENTROPY_INTERVAL;
   }
 
-  /** 1c. If we have to change the accounting interval or record
+  /* 1c. If we have to change the accounting interval or record
    * bandwidth used in this accounting interval, do so. */
   if (accounting_is_enabled(options))
     accounting_run_housekeeping(now);
@@ -1286,7 +1286,7 @@ run_scheduled_events(time_t now)
     dirserv_test_reachability(now);
   }
 
-  /** 1d. Periodically, we discount older stability information so that new
+  /* 1d. Periodically, we discount older stability information so that new
    * stability info counts more, and save the stability information to disk as
    * appropriate. */
   if (time_to_downrate_stability < now)
@@ -1405,7 +1405,7 @@ run_scheduled_events(time_t now)
       dns_init();
   }
 
-  /** 2. Periodically, we consider force-uploading our descriptor
+  /* 2. Periodically, we consider force-uploading our descriptor
    * (if we've passed our internal checks). */
 
 /** How often do we check whether part of our router info has changed in a
@@ -1465,11 +1465,11 @@ run_scheduled_events(time_t now)
     update_networkstatus_downloads(now);
   }
 
-  /** 2c. Let directory voting happen. */
+  /* 2c. Let directory voting happen. */
   if (authdir_mode_v3(options))
     dirvote_act(options, now);
 
-  /** 3a. Every second, we examine pending circuits and prune the
+  /* 3a. Every second, we examine pending circuits and prune the
    *    ones which have been pending for more than a few seconds.
    *    We do this before step 4, so it can try building more if
    *    it's not comfortable with the number of available circuits.
@@ -1478,24 +1478,24 @@ run_scheduled_events(time_t now)
    * it can't, currently), we should do this more often.) */
   circuit_expire_building();
 
-  /** 3b. Also look at pending streams and prune the ones that 'began'
+  /* 3b. Also look at pending streams and prune the ones that 'began'
    *     a long time ago but haven't gotten a 'connected' yet.
    *     Do this before step 4, so we can put them back into pending
    *     state to be picked up by the new circuit.
    */
   connection_ap_expire_beginning();
 
-  /** 3c. And expire connections that we've held open for too long.
+  /* 3c. And expire connections that we've held open for too long.
    */
   connection_expire_held_open();
 
-  /** 3d. And every 60 seconds, we relaunch listeners if any died. */
+  /* 3d. And every 60 seconds, we relaunch listeners if any died. */
   if (!net_is_disabled() && time_to_check_listeners < now) {
     retry_all_listeners(NULL, NULL, 0);
     time_to_check_listeners = now+60;
   }
 
-  /** 4. Every second, we try a new circuit if there are no valid
+  /* 4. Every second, we try a new circuit if there are no valid
    *    circuits. Every NewCircuitPeriod seconds, we expire circuits
    *    that became dirty more than MaxCircuitDirtiness seconds ago,
    *    and we make a new circ if there are no clean circuits.
@@ -1508,7 +1508,7 @@ run_scheduled_events(time_t now)
   if (now % 10 == 5)
     circuit_expire_old_circuits_serverside(now);
 
-  /** 5. We do housekeeping for each connection... */
+  /* 5. We do housekeeping for each connection... */
   connection_or_set_bad_connections(NULL, 0);
   for (i=0;i<smartlist_len(connection_array);i++) {
     run_connection_housekeeping(i, now);
@@ -1528,30 +1528,30 @@ run_scheduled_events(time_t now)
     time_to_shrink_memory = now + MEM_SHRINK_INTERVAL;
   }
 
-  /** 6. And remove any marked circuits... */
+  /* 6. And remove any marked circuits... */
   circuit_close_all_marked();
 
-  /** 7. And upload service descriptors if necessary. */
+  /* 7. And upload service descriptors if necessary. */
   if (can_complete_circuit && !net_is_disabled()) {
     rend_consider_services_upload(now);
     rend_consider_descriptor_republication();
   }
 
-  /** 8. and blow away any connections that need to die. have to do this now,
+  /* 8. and blow away any connections that need to die. have to do this now,
    * because if we marked a conn for close and left its socket -1, then
    * we'll pass it to poll/select and bad things will happen.
    */
   close_closeable_connections();
 
-  /** 8b. And if anything in our state is ready to get flushed to disk, we
+  /* 8b. And if anything in our state is ready to get flushed to disk, we
    * flush it. */
   or_state_save(now);
 
-  /** 8c. Do channel cleanup just like for connections */
+  /* 8c. Do channel cleanup just like for connections */
   channel_run_cleanup();
   channel_listener_run_cleanup();
 
-  /** 9. and if we're an exit node, check whether our DNS is telling stories
+  /* 9. and if we're an exit node, check whether our DNS is telling stories
    * to us. */
   if (!net_is_disabled() &&
       public_server_mode(options) &&
@@ -1566,7 +1566,7 @@ run_scheduled_events(time_t now)
     }
   }
 
-  /** 10. write bridge networkstatus file to disk */
+  /* 10. write bridge networkstatus file to disk */
   if (options->BridgeAuthoritativeDir &&
       time_to_write_bridge_status_file < now) {
     networkstatus_dump_bridge_status_to_file(now);
@@ -1574,7 +1574,7 @@ run_scheduled_events(time_t now)
     time_to_write_bridge_status_file = now+BRIDGE_STATUSFILE_INTERVAL;
   }
 
-  /** 11. check the port forwarding app */
+  /* 11. check the port forwarding app */
   if (!net_is_disabled() &&
       time_to_check_port_forwarding < now &&
       options->PortForwarding &&
@@ -1592,11 +1592,11 @@ run_scheduled_events(time_t now)
     time_to_check_port_forwarding = now+PORT_FORWARDING_CHECK_INTERVAL;
   }
 
-  /** 11b. check pending unconfigured managed proxies */
+  /* 11b. check pending unconfigured managed proxies */
   if (!net_is_disabled() && pt_proxies_configuration_pending())
     pt_configure_remaining_proxies();
 
-  /** 12. write the heartbeat message */
+  /* 12. write the heartbeat message */
   if (options->HeartbeatPeriod &&
       time_to_next_heartbeat <= now) {
     if (time_to_next_heartbeat) /* don't log the first heartbeat */

+ 14 - 7
src/or/or.h

@@ -196,6 +196,7 @@ typedef enum {
    * and let it use any circuit ID it wants. */
   CIRC_ID_TYPE_NEITHER=2
 } circ_id_type_t;
+#define circ_id_type_bitfield_t ENUM_BF(circ_id_type_t)
 
 #define CONN_TYPE_MIN_ 3
 /** Type for sockets listening for OR connections. */
@@ -1683,6 +1684,7 @@ typedef enum {
     DIR_SPOOL_CACHED_DIR, DIR_SPOOL_NETWORKSTATUS,
     DIR_SPOOL_MICRODESC, /* NOTE: if we add another entry, add another bit. */
 } dir_spool_source_t;
+#define dir_spool_source_bitfield_t ENUM_BF(dir_spool_source_t)
 
 /** Subtype of connection_t for an "directory connection" -- that is, an HTTP
  * connection to retrieve or serve directory material. */
@@ -1702,7 +1704,7 @@ typedef struct dir_connection_t {
    * "spooling" of directory material to the outbuf.  Otherwise, we'd have
    * to append everything to the outbuf in one enormous chunk. */
   /** What exactly are we spooling right now? */
-  ENUM_BF(dir_spool_source_t)  dir_spool_src : 3;
+  dir_spool_source_bitfield_t  dir_spool_src : 3;
 
   /** If we're fetching descriptors, what router purpose shall we assign
    * to them? */
@@ -1875,12 +1877,13 @@ typedef enum {
   ADDR_POLICY_ACCEPT=1,
   ADDR_POLICY_REJECT=2,
 } addr_policy_action_t;
+#define addr_policy_action_bitfield_t ENUM_BF(addr_policy_action_t)
 
 /** A reference-counted address policy rule. */
 typedef struct addr_policy_t {
   int refcnt; /**< Reference count */
   /** What to do when the policy matches.*/
-  ENUM_BF(addr_policy_action_t) policy_type:2;
+  addr_policy_action_bitfield_t policy_type:2;
   unsigned int is_private:1; /**< True iff this is the pseudo-address,
                               * "private". */
   unsigned int is_canonical:1; /**< True iff this policy is the canonical
@@ -1932,6 +1935,7 @@ typedef enum {
    */
   SAVED_IN_JOURNAL
 } saved_location_t;
+#define saved_location_bitfield_t ENUM_BF(saved_location_t)
 
 /** Enumeration: what kind of download schedule are we using for a given
  * object? */
@@ -1940,6 +1944,7 @@ typedef enum {
   DL_SCHED_CONSENSUS = 1,
   DL_SCHED_BRIDGE = 2,
 } download_schedule_t;
+#define download_schedule_bitfield_t ENUM_BF(download_schedule_t)
 
 /** Information about our plans for retrying downloads for a downloadable
  * object. */
@@ -1948,7 +1953,7 @@ typedef struct download_status_t {
                            * again? */
   uint8_t n_download_failures; /**< Number of failures trying to download the
                                 * most recent descriptor. */
-  ENUM_BF(download_schedule_t) schedule : 8;
+  download_schedule_bitfield_t schedule : 8;
 } download_status_t;
 
 /** If n_download_failures is this high, the download can never happen. */
@@ -2203,7 +2208,7 @@ typedef struct microdesc_t {
    */
   time_t last_listed;
   /** Where is this microdescriptor currently stored? */
-  ENUM_BF(saved_location_t) saved_location : 3;
+  saved_location_bitfield_t saved_location : 3;
   /** If true, do not attempt to cache this microdescriptor on disk. */
   unsigned int no_save : 1;
   /** If true, this microdesc has an entry in the microdesc_map */
@@ -2413,8 +2418,8 @@ typedef enum {
 /** A common structure to hold a v3 network status vote, or a v3 network
  * status consensus. */
 typedef struct networkstatus_t {
-  ENUM_BF(networkstatus_type_t) type : 8; /**< Vote, consensus, or opinion? */
-  ENUM_BF(consensus_flavor_t) flavor : 8; /**< If a consensus, what kind? */
+  networkstatus_type_t type; /**< Vote, consensus, or opinion? */
+  consensus_flavor_t flavor; /**< If a consensus, what kind? */
   unsigned int has_measured_bws : 1;/**< True iff this networkstatus contains
                                      * measured= bandwidth values. */
 
@@ -2933,6 +2938,7 @@ typedef enum {
      */
     PATH_STATE_ALREADY_COUNTED = 6,
 } path_state_t;
+#define path_state_bitfield_t ENUM_BF(path_state_t)
 
 /** An origin_circuit_t holds data necessary to build and use a circuit.
  */
@@ -2983,7 +2989,7 @@ typedef struct origin_circuit_t {
    * circuit building and usage accounting. See path_state_t
    * for more details.
    */
-  ENUM_BF(path_state_t) path_state : 3;
+  path_state_bitfield_t path_state : 3;
 
   /* If this flag is set, we should not consider attaching any more
    * connections to this circuit. */
@@ -4478,6 +4484,7 @@ typedef enum {
    * did this remapping happen." */
   ADDRMAPSRC_NONE
 } addressmap_entry_source_t;
+#define addressmap_entry_source_bitfield_t ENUM_BF(addressmap_entry_source_t)
 
 /********************************* control.c ***************************/