1
by Ondrej Sury
Imported Upstream version 1.0.13 |
1 |
/*
|
2 |
* Filters: utility functions
|
|
3 |
*
|
|
4 |
* Copyright 1998 Pavel Machek <pavel@ucw.cz>
|
|
5 |
*
|
|
6 |
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
7 |
*/
|
|
8 |
||
9 |
#include "nest/bird.h" |
|
10 |
#include "conf/conf.h" |
|
11 |
#include "filter/filter.h" |
|
12 |
||
13 |
#define P(a,b) ((a<<8) | b)
|
|
14 |
||
15 |
struct f_inst * |
|
16 |
f_new_inst(void) |
|
17 |
{
|
|
18 |
struct f_inst * ret; |
|
19 |
ret = cfg_alloc(sizeof(struct f_inst)); |
|
20 |
ret->code = ret->aux = 0; |
|
21 |
ret->arg1 = ret->arg2 = ret->next = NULL; |
|
1.1.23
by Ondřej Surý
Imported Upstream version 1.3.3 |
22 |
ret->lineno = ifs->conf_lino; |
1
by Ondrej Sury
Imported Upstream version 1.0.13 |
23 |
return ret; |
24 |
}
|
|
25 |
||
26 |
struct f_inst * |
|
27 |
f_new_dynamic_attr(int type, int f_type UNUSED, int code) |
|
28 |
{
|
|
29 |
/* FIXME: Remove the f_type parameter? */
|
|
30 |
struct f_inst *f = f_new_inst(); |
|
31 |
f->aux = type; |
|
32 |
f->a2.i = code; |
|
33 |
return f; |
|
34 |
}
|
|
35 |
||
36 |
/*
|
|
37 |
* Generate set_dynamic( operation( get_dynamic(), argument ) )
|
|
38 |
*/
|
|
39 |
struct f_inst * |
|
40 |
f_generate_complex(int operation, int operation_aux, struct f_inst *dyn, struct f_inst *argument) |
|
41 |
{
|
|
42 |
struct f_inst *set_dyn = f_new_inst(), |
|
43 |
*oper = f_new_inst(), |
|
44 |
*get_dyn = dyn; |
|
45 |
||
46 |
*set_dyn = *get_dyn; |
|
47 |
get_dyn->code = P('e','a'); |
|
48 |
oper->code = operation; |
|
49 |
oper->aux = operation_aux; |
|
50 |
oper->a1.p = get_dyn; |
|
51 |
oper->a2.p = argument; |
|
52 |
set_dyn->code = P('e','S'); |
|
53 |
set_dyn->a1.p = oper; |
|
54 |
return set_dyn; |
|
55 |
}
|
|
56 |
||
57 |
char * |
|
58 |
filter_name(struct filter *filter) |
|
59 |
{
|
|
60 |
if (!filter) |
|
61 |
return "ACCEPT"; |
|
62 |
else if (filter == FILTER_REJECT) |
|
63 |
return "REJECT"; |
|
64 |
else
|
|
65 |
return filter->name; |
|
66 |
}
|