Commit d4d4a4b2 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Merge remote-tracking branch 'tor-github/pr/527'

parents c63d951e d0201241
Loading
Loading
Loading
Loading

changes/bug28518

0 → 100644
+4 −0
Original line number Diff line number Diff line
  o Minor features (FreeBSD):
    - Warn relay operators if the "net.inet.ip.random_id" sysctl (IP ID
      randomization) is disabled on their relay if it is running on FreeBSD
      based operating systems. Closes ticket 28518.
+21 −0
Original line number Diff line number Diff line
@@ -157,6 +157,10 @@
#include "core/or/connection_st.h"
#include "core/or/port_cfg_st.h"

#ifdef __FreeBSD__
#include <sys/sysctl.h>
#endif

#ifdef HAVE_SYSTEMD
#   if defined(__COVERITY__) && !defined(__INCLUDE_LEVEL__)
/* Systemd's use of gcc's __INCLUDE_LEVEL__ extension macro appears to confuse
@@ -3382,6 +3386,23 @@ options_validate(or_options_t *old_options, or_options_t *options,
  if (ContactInfo && !string_is_utf8(ContactInfo, strlen(ContactInfo)))
    REJECT("ContactInfo config option must be UTF-8.");

#ifdef __FreeBSD__
  if (server_mode(options)) {
    int random_id_state;
    size_t state_size = sizeof(random_id_state);

    if (sysctlbyname("net.inet.ip.random_id", &random_id_state,
        &state_size, NULL, 0)) {
      log_warn(LD_CONFIG,
          "Failed to figure out if IP ids are randomized.");
    } else if (random_id_state == 0) {
      log_warn(LD_CONFIG, "Looks like IP ids are not randomized. "
          "Please consider setting the net.inet.ip.random_id sysctl, "
          "so your relay makes it harder to figure out how busy it is.");
    }
  }
#endif

  /* Special case on first boot if no Log options are given. */
  if (!options->Logs && !options->RunAsDaemon && !from_setconf) {
    if (quiet_level == 0)