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.)
This commit is contained in:
Nick Mathewson 2016-03-11 10:05:28 -05:00
parent db263442af
commit ef31c8862f
4 changed files with 12 additions and 2 deletions

6
changes/bug18448 Normal file
View File

@ -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.

View File

@ -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.");

View File

@ -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));

View File

@ -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