#define PARSER 1
#include "nest/bird.h"
-#include "conf/conf.h"
-#include "lib/resource.h"
-#include "lib/socket.h"
-#include "sysdep/unix/timer.h"
-#include "lib/string.h"
-#include "nest/protocol.h"
-#include "nest/iface.h"
-#include "nest/route.h"
-#include "nest/cli.h"
-#include "filter/filter.h"
#include "lib/flowspec.h"
/* Network Flow Specification */
flow_num_op:
- TRUE { $$ = 0b000; }
- | '=' { $$ = 0b001; }
- | NEQ { $$ = 0b110; }
- | '<' { $$ = 0b100; }
- | LEQ { $$ = 0b101; }
- | '>' { $$ = 0b010; }
- | GEQ { $$ = 0b011; }
- | FALSE { $$ = 0b111; }
+ TRUE { $$ = FLOW_OP_TRUE; }
+ | '=' { $$ = FLOW_OP_EQ; }
+ | NEQ { $$ = FLOW_OP_NEQ; }
+ | '<' { $$ = FLOW_OP_LT; }
+ | LEQ { $$ = FLOW_OP_LEQ; }
+ | '>' { $$ = FLOW_OP_GT; }
+ | GEQ { $$ = FLOW_OP_GEQ; }
+ | FALSE { $$ = FLOW_OP_FALSE; }
;
flow_logic_op:
- OR { $$ = 0x00; }
- | AND { $$ = 0x40; }
+ OR { $$ = FLOW_OP_OR; }
+ | AND { $$ = FLOW_OP_AND; }
;
flow_num_type_:
| ICMP CODE { $$ = FLOW_TYPE_ICMP_CODE; }
| LENGTH { $$ = FLOW_TYPE_PACKET_LENGTH; }
| DSCP { $$ = FLOW_TYPE_DSCP; }
+ | LABEL { $$ = FLOW_TYPE_LABEL; }
;
flow_num_type: flow_num_type_{ flow_builder_set_type(this_flow, $1); };
flow_flag_type: TCP FLAGS { flow_builder_set_type(this_flow, FLOW_TYPE_TCP_FLAGS); };
flow_frag_type: FRAGMENT { flow_builder_set_type(this_flow, FLOW_TYPE_FRAGMENT); };
-flow_label_type: LABEL { flow_builder_set_type(this_flow, FLOW_TYPE_LABEL); };
flow_srcdst:
DST { $$ = FLOW_TYPE_DST_PREFIX; }
flow_num_opt_ext_expr:
expr {
flow_check_cf_value_length(this_flow, $1);
- flow_builder_add_op_val(this_flow, 0b001, $1);
+ flow_builder_add_op_val(this_flow, FLOW_OP_EQ, $1);
}
| expr DDOT expr {
flow_check_cf_value_length(this_flow, $1);
flow_check_cf_value_length(this_flow, $3);
- flow_builder_add_op_val(this_flow, 0b011, $1); /* >= */
- flow_builder_add_op_val(this_flow, 0x40 | 0b101, $3); /* AND <= */
+ flow_builder_add_op_val(this_flow, FLOW_OP_GEQ, $1);
+ flow_builder_add_op_val(this_flow, FLOW_OP_AND | FLOW_OP_LEQ, $3);
}
;
| flow_num_type flow_num_opts
| flow_flag_type flow_bmk_opts
| flow_frag_type flow_frag_opts
- | flow_label_type flow_bmk_opts
;
flow4_opts: