Explorar el Código

Add changes file for 18448; refactor

(I've made it so FreeBSD || FreeBSD_kernel is enough to ensure that
we think you might have ipfw, and so that the logic is all in one
place.)
Nick Mathewson hace 10 años
padre
commit
ef31c8862f
Se han modificado 4 ficheros con 12 adiciones y 2 borrados
  1. 6 0
      changes/bug18448
  2. 1 1
      src/or/config.c
  3. 4 0
      src/or/config.h
  4. 1 1
      src/test/test_options.c

+ 6 - 0
changes/bug18448

@@ -0,0 +1,6 @@
+  o Minor features (build):
+    - Detect systems with FreeBSD-derived kernels (such as GNU/kFreeBSD) as
+      having possible IPfW support. Closes ticket 18448. Patch from
+      Steven Chamberlain.
+
+

+ 1 - 1
src/or/config.c

@@ -2861,7 +2861,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
       options->TransProxyType_parsed = TPT_TPROXY;
 #endif
     } else if (!strcasecmp(options->TransProxyType, "ipfw")) {
-#if !defined(__FreeBSD_kernel__) && !defined( DARWIN )
+#ifndef KERNEL_MAY_SUPPORT_IPFW
       /* Earlier versions of OS X have ipfw */
       REJECT("ipfw is a FreeBSD-specific"
              "and OS X/Darwin-specific feature.");

+ 4 - 0
src/or/config.h

@@ -14,6 +14,10 @@
 
 #include "testsupport.h"
 
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(DARWIN)
+#define KERNEL_MAY_SUPPORT_IPFW
+#endif
+
 MOCK_DECL(const char*, get_dirportfrontpage, (void));
 MOCK_DECL(const or_options_t *, get_options, (void));
 MOCK_DECL(or_options_t *, get_options_mutable, (void));

+ 1 - 1
src/test/test_options.c

@@ -1058,7 +1058,7 @@ test_options_validate__transproxy(void *ignored)
   ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
   tt_int_op(ret, OP_EQ, -1);
 
-#if !defined(__FreeBSD_kernel__) && !defined( DARWIN )
+#ifndef KERNEL_MAY_SUPPORT_IPFW
   tt_str_op(msg, OP_EQ, "ipfw is a FreeBSD-specificand OS X/Darwin-specific "
             "feature.");
 #else