mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2025-01-03 07:31:54 +00:00
Nest: Fix bitfield attributes
Fix missing route lookup, causing crash when accessing route attribute. Also fix additional space in bitfield formatting.
This commit is contained in:
parent
f47ca71d77
commit
4036da3732
@ -1248,6 +1248,7 @@ ea_list_unref(ea_list *l)
|
|||||||
void
|
void
|
||||||
ea_format_bitfield(const struct eattr *a, byte *buf, int bufsize, const char **names, int min, int max)
|
ea_format_bitfield(const struct eattr *a, byte *buf, int bufsize, const char **names, int min, int max)
|
||||||
{
|
{
|
||||||
|
byte *start = buf;
|
||||||
byte *bound = buf + bufsize - 32;
|
byte *bound = buf + bufsize - 32;
|
||||||
u32 data = a->u.data;
|
u32 data = a->u.data;
|
||||||
int i;
|
int i;
|
||||||
@ -1261,13 +1262,17 @@ ea_format_bitfield(const struct eattr *a, byte *buf, int bufsize, const char **n
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf += bsprintf(buf, " %s", names[i]);
|
buf += bsprintf(buf, "%s ", names[i]);
|
||||||
data &= ~(1u << i);
|
data &= ~(1u << i);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data)
|
if (data)
|
||||||
bsprintf(buf, " %08x", data);
|
bsprintf(buf, "%08x ", data);
|
||||||
|
|
||||||
|
if (buf != start)
|
||||||
|
buf--;
|
||||||
|
|
||||||
|
*buf = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ attr_bit: KRT_FEATURE_ECN { $$ = f_new_dynamic_attr_bit(0, "krt_features"); } ;
|
|||||||
attr_bit: KRT_FEATURE_ALLFRAG { $$ = f_new_dynamic_attr_bit(3, "krt_features"); } ;
|
attr_bit: KRT_FEATURE_ALLFRAG { $$ = f_new_dynamic_attr_bit(3, "krt_features"); } ;
|
||||||
|
|
||||||
/* Using attribute bits in filters (moved here to not confuse Bison on *BSD) */
|
/* Using attribute bits in filters (moved here to not confuse Bison on *BSD) */
|
||||||
lvalue: attr_bit { $$ = (struct f_lval) { .type = F_LVAL_ATTR_BIT, .fab = $1 }; };
|
lvalue: attr_bit { $$ = (struct f_lval) { .type = F_LVAL_ATTR_BIT, .fab = $1, .rte = f_new_inst(FI_CURRENT_ROUTE), }; };
|
||||||
|
|
||||||
CF_CODE
|
CF_CODE
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user