Selaa lähdekoodia

Fix transparent proxy checks to allow OS X to use ipfw or pf

OS X uses ipfw (FreeBSD) or pf (OpenBSD). Update the transparent
proxy option checks to allow for both ipfw and pf on OS X.

Fixes bug 14002.
teor 9 vuotta sitten
vanhempi
commit
d93516c445
2 muutettua tiedostoa jossa 13 lisäystä ja 5 poistoa
  1. 4 0
      changes/bug14002-osx-transproxy-ipfw-pf
  2. 9 5
      src/or/config.c

+ 4 - 0
changes/bug14002-osx-transproxy-ipfw-pf

@@ -0,0 +1,4 @@
+  o Minor bugfixes:
+    - OS X uses ipfw (FreeBSD) or pf (OpenBSD). Update the transparent
+      proxy option checks to allow for both ipfw and pf on OS X.
+      Fixes bug 14002.

+ 9 - 5
src/or/config.c

@@ -2597,20 +2597,24 @@ options_validate(or_options_t *old_options, or_options_t *options,
     if (!strcasecmp(options->TransProxyType, "default")) {
       options->TransProxyType_parsed = TPT_DEFAULT;
     } else if (!strcasecmp(options->TransProxyType, "pf-divert")) {
-#ifndef __OpenBSD__
-      REJECT("pf-divert is a OpenBSD-specific feature.");
+#if !defined(__OpenBSD__) && !defined( DARWIN )
+      /* Later versions of OS X have pf */
+      REJECT("pf-divert is a OpenBSD-specific "
+             "and OS X/Darwin-specific feature.");
 #else
       options->TransProxyType_parsed = TPT_PF_DIVERT;
 #endif
     } else if (!strcasecmp(options->TransProxyType, "tproxy")) {
-#ifndef __linux__
+#if !defined(__linux__)
       REJECT("TPROXY is a Linux-specific feature.");
 #else
       options->TransProxyType_parsed = TPT_TPROXY;
 #endif
     } else if (!strcasecmp(options->TransProxyType, "ipfw")) {
-#ifndef __FreeBSD__
-      REJECT("ipfw is a FreeBSD-specific feature.");
+#if !defined(__FreeBSD__) && !defined( DARWIN )
+      /* Earlier versions of OS X have ipfw */
+      REJECT("ipfw is a FreeBSD-specific"
+             "and OS X/Darwin-specific feature.");
 #else
       options->TransProxyType_parsed = TPT_IPFW;
 #endif