From: Ondrej Zajicek Date: Tue, 27 Nov 2012 00:25:47 +0000 (+0100) Subject: Fixes setting of route attributes of type router id. X-Git-Tag: v1.3.9~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e40f3e795e39f0b92445fd5295382220077c77f;p=thirdparty%2Fbird.git Fixes setting of route attributes of type router id. --- diff --git a/filter/filter.c b/filter/filter.c index 49b67391a..fb2034ee9 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -956,11 +956,25 @@ interpret(struct f_inst *what) l->attrs[0].type = what->aux | EAF_ORIGINATED; switch (what->aux & EAF_TYPE_MASK) { case EAF_TYPE_INT: - case EAF_TYPE_ROUTER_ID: if (v1.type != T_INT) runtime( "Setting int attribute to non-int value" ); l->attrs[0].u.data = v1.val.i; 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: runtime( "Setting opaque attribute is not allowed" ); break;