mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Minor cleanups and fixes
This commit is contained in:
@@ -754,7 +754,7 @@ flow_builder_add_val_mask(struct flow_builder *fb, byte op, u32 value, u32 mask)
|
||||
if (a)
|
||||
{
|
||||
flow_builder_add_op_val(fb, op ^ 0x01, a);
|
||||
op |= 0x40;
|
||||
op |= FLOW_OP_AND;
|
||||
}
|
||||
|
||||
if (b)
|
||||
@@ -897,28 +897,20 @@ flow_builder_clear(struct flow_builder *fb)
|
||||
*/
|
||||
|
||||
/* Flowspec operators for [op, value]+ pairs */
|
||||
#define FLOW_TRUE 0b000
|
||||
#define FLOW_EQ 0b001
|
||||
#define FLOW_GT 0b010
|
||||
#define FLOW_GTE 0b011
|
||||
#define FLOW_LT 0b100
|
||||
#define FLOW_LTE 0b101
|
||||
#define FLOW_NEQ 0b110
|
||||
#define FLOW_FALSE 0b111
|
||||
|
||||
static const char *
|
||||
num_op_str(const byte *op)
|
||||
{
|
||||
switch (*op & 0x07)
|
||||
{
|
||||
case FLOW_TRUE: return "true";
|
||||
case FLOW_EQ: return "=";
|
||||
case FLOW_GT: return ">";
|
||||
case FLOW_GTE: return ">=";
|
||||
case FLOW_LT: return "<";
|
||||
case FLOW_LTE: return "<=";
|
||||
case FLOW_NEQ: return "!=";
|
||||
case FLOW_FALSE: return "false";
|
||||
case FLOW_OP_TRUE: return "true";
|
||||
case FLOW_OP_EQ: return "=";
|
||||
case FLOW_OP_GT: return ">";
|
||||
case FLOW_OP_GEQ: return ">=";
|
||||
case FLOW_OP_LT: return "<";
|
||||
case FLOW_OP_LEQ: return "<=";
|
||||
case FLOW_OP_NEQ: return "!=";
|
||||
case FLOW_OP_FALSE: return "false";
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@@ -985,8 +977,8 @@ net_format_flow_num(buffer *b, const byte *part)
|
||||
{
|
||||
/* XXX: I don't like this so complicated if-tree */
|
||||
if (!isset_and(op) &&
|
||||
((num_op( op) == FLOW_EQ) || (num_op( op) == FLOW_GTE)) &&
|
||||
((num_op(last_op) == FLOW_EQ) || (num_op(last_op) == FLOW_LTE)))
|
||||
((num_op( op) == FLOW_OP_EQ) || (num_op( op) == FLOW_OP_GEQ)) &&
|
||||
((num_op(last_op) == FLOW_OP_EQ) || (num_op(last_op) == FLOW_OP_LEQ)))
|
||||
{
|
||||
b->pos--; /* Remove last char (it is a space) */
|
||||
buffer_puts(b, ",");
|
||||
@@ -1002,7 +994,7 @@ net_format_flow_num(buffer *b, const byte *part)
|
||||
val = get_value(op+1, len);
|
||||
|
||||
if (!isset_end(op) && !isset_and(op) && isset_and(op+1+len) &&
|
||||
(num_op(op) == FLOW_GTE) && (num_op(op+1+len) == FLOW_LTE))
|
||||
(num_op(op) == FLOW_OP_GEQ) && (num_op(op+1+len) == FLOW_OP_LEQ))
|
||||
{
|
||||
/* Display interval */
|
||||
buffer_print(b, "%u..", val);
|
||||
@@ -1011,7 +1003,7 @@ net_format_flow_num(buffer *b, const byte *part)
|
||||
val = get_value(op+1, len);
|
||||
buffer_print(b, "%u", val);
|
||||
}
|
||||
else if (num_op(op) == FLOW_EQ)
|
||||
else if (num_op(op) == FLOW_OP_EQ)
|
||||
{
|
||||
buffer_print(b, "%u", val);
|
||||
}
|
||||
|
@@ -14,6 +14,20 @@
|
||||
#include "lib/net.h"
|
||||
|
||||
|
||||
/* Flow component operators */
|
||||
#define FLOW_OP_TRUE 0x00 /* 0b000 */
|
||||
#define FLOW_OP_EQ 0x01 /* 0b001 */
|
||||
#define FLOW_OP_GT 0x02 /* 0b010 */
|
||||
#define FLOW_OP_GEQ 0x03 /* 0b011 */
|
||||
#define FLOW_OP_LT 0x04 /* 0b100 */
|
||||
#define FLOW_OP_LEQ 0x05 /* 0b101 */
|
||||
#define FLOW_OP_NEQ 0x06 /* 0b110 */
|
||||
#define FLOW_OP_FALSE 0x07 /* 0b111 */
|
||||
|
||||
#define FLOW_OP_OR 0x00
|
||||
#define FLOW_OP_AND 0x40
|
||||
|
||||
|
||||
/* Types of components in flowspec */
|
||||
enum flow_type {
|
||||
FLOW_TYPE_DST_PREFIX = 1,
|
||||
|
Reference in New Issue
Block a user