Fixes setting of route attributes of type router id.
This commit is contained in:
parent
c93c02088a
commit
3e40f3e795
1 changed files with 15 additions and 1 deletions
|
@ -956,11 +956,25 @@ interpret(struct f_inst *what)
|
||||||
l->attrs[0].type = what->aux | EAF_ORIGINATED;
|
l->attrs[0].type = what->aux | EAF_ORIGINATED;
|
||||||
switch (what->aux & EAF_TYPE_MASK) {
|
switch (what->aux & EAF_TYPE_MASK) {
|
||||||
case EAF_TYPE_INT:
|
case EAF_TYPE_INT:
|
||||||
case EAF_TYPE_ROUTER_ID:
|
|
||||||
if (v1.type != T_INT)
|
if (v1.type != T_INT)
|
||||||
runtime( "Setting int attribute to non-int value" );
|
runtime( "Setting int attribute to non-int value" );
|
||||||
l->attrs[0].u.data = v1.val.i;
|
l->attrs[0].u.data = v1.val.i;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EAF_TYPE_ROUTER_ID:
|
||||||
|
#ifndef IPV6
|
||||||
|
/* IP->Quad implicit conversion */
|
||||||
|
if (v1.type == T_IP) {
|
||||||
|
l->attrs[0].u.data = ipa_to_u32(v1.val.px.ip);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/* T_INT for backward compatibility */
|
||||||
|
if ((v1.type != T_QUAD) && (v1.type != T_INT))
|
||||||
|
runtime( "Setting quad attribute to non-quad value" );
|
||||||
|
l->attrs[0].u.data = v1.val.i;
|
||||||
|
break;
|
||||||
|
|
||||||
case EAF_TYPE_OPAQUE:
|
case EAF_TYPE_OPAQUE:
|
||||||
runtime( "Setting opaque attribute is not allowed" );
|
runtime( "Setting opaque attribute is not allowed" );
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue