Skip to content
Snippets Groups Projects
Commit 330aecea authored by Ondřej Zajíček's avatar Ondřej Zajíček
Browse files

Bugfix in interpret

Missing cases in filter code interpret leads to crash
when  bgp_next_hop attr was queried.
parent 083c43e2
No related merge requests found
......@@ -560,6 +560,15 @@ interpret(struct f_inst *what)
res.type = T_INT;
res.val.i = e->u.data;
break;
case EAF_TYPE_IP_ADDRESS:
if (!e) {
res.type = T_VOID;
break;
}
res.type = T_IP;
struct adata * ad = e->u.ptr;
res.val.px.ip = * (ip_addr *) ad->data;
break;
case EAF_TYPE_AS_PATH:
if (!e) {
res.type = T_VOID;
......@@ -599,6 +608,14 @@ interpret(struct f_inst *what)
runtime( "Setting int attribute to non-int value" );
l->attrs[0].u.data = v1.val.i;
break;
case EAF_TYPE_IP_ADDRESS:
if (v1.type != T_IP)
runtime( "Setting ip attribute to non-ip value" );
int len = sizeof(ip_addr);
struct adata *ad = lp_alloc(f_pool, sizeof(struct adata) + len);
ad->length = len;
(* (ip_addr *) ad->data) = v1.val.px.ip;
break;
case EAF_TYPE_AS_PATH:
if (v1.type != T_PATH)
runtime( "Setting path attribute to non-path value" );
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment