28 {
return t->
token == VLIB_LEX_eof ? VLIB_PARSE_MATCH_DONE : VLIB_PARSE_MATCH_FAIL; }
37 return fp ? fp (pm, type, t, valuep) : VLIB_PARSE_MATCH_RULE;
48 if (t->
token != VLIB_LEX_word)
49 return VLIB_PARSE_MATCH_FAIL;
54 for (i = 0; tv[
i]; i++)
57 return VLIB_PARSE_MATCH_FAIL;
60 return iv[
i] == 0 ? VLIB_PARSE_MATCH_FULL : VLIB_PARSE_MATCH_PARTIAL;
68 if (t->
token == VLIB_LEX_number)
71 return VLIB_PARSE_MATCH_VALUE;
73 return VLIB_PARSE_MATCH_FAIL;
78 vlib_parse_value_t * v = va_arg (*args, vlib_parse_value_t *);
79 uword a = v->value.as_uword;
82 s =
format (s,
"%lld(0x%llx)", a, a);
84 s =
format (s,
"%ld(0x%lx)", a, a);
92 #define foreach_vanilla_lex_match_function \ 100 #define LEX_MATCH_DEBUG 0 103 vlib_parse_match_t name##_match (vlib_parse_main_t *pm, \ 104 vlib_parse_type_t *type, \ 105 vlib_lex_token_t *t, \ 106 vlib_parse_value_t *valuep) \ 108 if (LEX_MATCH_DEBUG > 0) \ 109 clib_warning ("against %U returns %s", \ 110 format_vlib_lex_token, pm->lex_main, t, \ 111 (t->token == VLIB_LEX_##name) \ 112 ? "VLIB_PARSE_MATCH_FULL" : \ 113 "VLIB_PARSE_MATCH_FAIL"); \ 114 if (t->token == VLIB_LEX_##name) \ 115 return VLIB_PARSE_MATCH_FULL; \ 116 return VLIB_PARSE_MATCH_FAIL; \ 119 PARSE_TYPE_INIT (name, name##_match, 0 , \
sll srl srl sll sra u16x4 i
bad routing header type(not 4)") sr_error (NO_MORE_SEGMENTS
vlib_parse_match_t eof_match(vlib_parse_main_t *pm, vlib_parse_type_t *type, vlib_lex_token_t *t, vlib_parse_value_t *valuep)
PARSE_TYPE_INIT(eof, eof_match, 0, 0)
#define VLIB_INIT_FUNCTION(x)
vlib_parse_item_t * parse_items
#define foreach_vanilla_lex_match_function
#define pool_elt_at_index(p, i)
static foreach_vanilla_lex_match_function clib_error_t * parse_builtin_init(vlib_main_t *vm)
vlib_parse_match_t( vlib_parse_match_function_t)(struct vlib_parse_main *, struct vlib_parse_type *, vlib_lex_token_t *, vlib_parse_value_t *)
union vlib_lex_token_t::@31 value
vlib_parse_match_t word_match(vlib_parse_main_t *pm, vlib_parse_type_t *type, vlib_lex_token_t *t, vlib_parse_value_t *valuep)
union vlib_parse_item_t::@35 value
#define vec_elt(v, i)
Get vector value at index i.
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
static u8 * format_value_number(u8 *s, va_list *args)
always_inline void * parse_last_match_value(vlib_parse_main_t *pm)
vlib_parse_match_t number_match(vlib_parse_main_t *pm, vlib_parse_type_t *type, vlib_lex_token_t *t, vlib_parse_value_t *valuep)
vlib_parse_match_t rule_eof_match(vlib_parse_main_t *pm, vlib_parse_type_t *type, vlib_lex_token_t *t, vlib_parse_value_t *valuep)