summaryrefslogtreecommitdiffstats
path: root/filter/filter.h
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1999-04-05 22:10:31 +0200
committerMartin Mares <mj@ucw.cz>1999-04-05 22:10:31 +0200
commit63a381dbf5e37c2740982d07988cea983c699816 (patch)
tree594c69300bfd73f56cb5a4381324aa90d1166775 /filter/filter.h
parentd4ff748224fc18e460e74ab14d70d01fd50e4b92 (diff)
downloadbird-63a381dbf5e37c2740982d07988cea983c699816.tar
bird-63a381dbf5e37c2740982d07988cea983c699816.zip
Several filter changes. (Pavel, please check if they are OK.)
o Changed parameters of f_run. Changed rtein+rteout pair to rte pointer passed by reference, added ea_list of temporary attrs again passed by reference and finally added a pointer to memory pool for storing temporary data (new ea_lists's, temporary rta's etc.). o Re-ordered result codes, so that all accepts come before all rejects. o Introduced FILTER_ACCEPT and FILTER_REJECT dummy values (will be used in protocol configurations). o Added filter_name() which returns name of a filter or ACCEPT/REJECT for the dummies.
Diffstat (limited to 'filter/filter.h')
-rw-r--r--filter/filter.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/filter/filter.h b/filter/filter.h
index ba8dc85..d8ee7ef 100644
--- a/filter/filter.h
+++ b/filter/filter.h
@@ -32,14 +32,18 @@ struct filter {
void filters_postconfig(void);
struct f_inst *f_new_inst(void);
-int f_run(struct filter *filter, struct rte *rtein, struct rte **rteout);
+int f_run(struct filter *filter, struct rte **rte, struct ea_list **tmp_attrs, struct linpool *tmp_pool);
+char *filter_name(struct filter *filter);
-#define F_ACCEPT 1
-#define F_REJECT 2
-#define F_MODIFY 3
+#define F_ACCEPT 1 /* Need to preserve ordering: accepts < rejects! */
+#define F_MODIFY 2 /* FIXME: Introduce modification flags instead? */
+#define F_REJECT 3
#define F_ERROR 4
#define F_QUITBIRD 5
+#define FILTER_ACCEPT NULL
+#define FILTER_REJECT ((void *) 1)
+
/* Type numbers must be in 0..0xff range */
#define T_MASK 0xff