summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config.y4
-rw-r--r--src/types.h5
2 files changed, 7 insertions, 2 deletions
diff --git a/src/config.y b/src/config.y
index e9ab3af..95ceaa2 100644
--- a/src/config.y
+++ b/src/config.y
@@ -560,8 +560,8 @@ boolean: TOK_YES { $$ = true; }
| TOK_NO { $$ = false; }
;
-autobool: TOK_AUTO { $$ = (fastd_tristate_t){ .set = false }; }
- | boolean { $$ = (fastd_tristate_t){ .set = true, .state = $1 }; }
+autobool: TOK_AUTO { $$ = fastd_tristate_undef; }
+ | boolean { $$ = $1 ? fastd_tristate_true : fastd_tristate_false; }
;
colon_or_port: ':'
diff --git a/src/types.h b/src/types.h
index 2dcfa58..3af287a 100644
--- a/src/types.h
+++ b/src/types.h
@@ -47,6 +47,11 @@ typedef struct fastd_tristate {
bool state : 1;
} fastd_tristate_t;
+static const fastd_tristate_t fastd_tristate_true = {true, true};
+static const fastd_tristate_t fastd_tristate_false = {true, false};
+static const fastd_tristate_t fastd_tristate_undef = {false, false};
+
+
typedef enum fastd_mode {
MODE_TAP,
MODE_TUN,