--- filter/filter.c | 9 +++++++-- filter/filter.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/filter/filter.c b/filter/filter.c index e505d570..b8147662 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -413,6 +413,12 @@ f_eval_buf(const struct f_line *expr, struct linpool *tmp_pool, buffer *buf) return fret; } +int +is_pseudo_filter(const struct filter *f) +{ + return f == FILTER_ACCEPT || f == FILTER_REJECT || f == FILTER_UNDEF; +} + /** * filter_same - compare two filters * @new: first filter to be compared @@ -427,8 +433,7 @@ filter_same(const struct filter *new, const struct filter *old) { if (old == new) /* Handle FILTER_ACCEPT and FILTER_REJECT */ return 1; - if (old == FILTER_ACCEPT || old == FILTER_REJECT || - new == FILTER_ACCEPT || new == FILTER_REJECT) + if (is_pseudo_filter(old) || is_pseudo_filter(new)) return 0; if ((!old->sym) && (!new->sym)) diff --git a/filter/filter.h b/filter/filter.h index 9d997efb..84b6b0be 100644 --- a/filter/filter.h +++ b/filter/filter.h @@ -58,6 +58,7 @@ enum filter_return f_eval_rte(const struct f_line *expr, struct rte **rte, struc uint f_eval_int(const struct f_line *expr); enum filter_return f_eval_buf(const struct f_line *expr, struct linpool *tmp_pool, buffer *buf); +int is_pseudo_filter(const struct filter *f); const char *filter_name(const struct filter *filter); int filter_same(const struct filter *new, const struct filter *old); int f_same(const struct f_line *f1, const struct f_line *f2); -- 2.24.0