Newbie question about 'export' semantics
Hi. I am new to bird, and am studying an existing bird 1.6 configuration to understand how the system it supports works. Nothing is broken on my system; I just want to understand how it works. In the main bird.cfg within a bgp template, I see this export filter calico_pools; that calico_pools filter calls this via a bird function if ( net = 10.6.130.64/26 ) then { accept; } Now, I correctly see this route as advertised when viewed from a BGP peer. What I don't understand are the semantics of this if-statement. In an export statement, the docs say the relationship is from routing table to protocol export: "This is similar to the import keyword, except that it works in the direction from the routing table to the protocol." What confuses me is that there is *no* net = 10.6.130.64/26 in the local routing table, so where is the value of "net" coming from such that the if-net comparison can be made and the export makes sense works? I know the statement somehow does the right thing; I just don't know how to read and explain it to others in the export context. Can someone please help me understand how to read this? Thanks.
I get it now. There *is* a local route that would match that if-statement in the context of the export. I misunderstood this routing table entry as ip-route presented it (that won't happen again). $ ip route ... blackhole 10.6.130.64/26 proto bird If I read the routes using the old 'route' command, the existence of this route in the local table is clearer to me. $ route ... 10.6.130.64 0.0.0.0 255.255.255.192 U 0 0 0 * On Thu, Aug 2, 2018 at 10:50 AM Mark Petrovic <mspetrovic@gmail.com> wrote:
Hi. I am new to bird, and am studying an existing bird 1.6 configuration to understand how the system it supports works. Nothing is broken on my system; I just want to understand how it works.
In the main bird.cfg within a bgp template, I see this
export filter calico_pools;
that calico_pools filter calls this via a bird function
if ( net = 10.6.130.64/26 ) then { accept; }
Now, I correctly see this route as advertised when viewed from a BGP peer. What I don't understand are the semantics of this if-statement. In an export statement, the docs say the relationship is from routing table to protocol
export: "This is similar to the import keyword, except that it works in the direction from the routing table to the protocol."
What confuses me is that there is *no* net = 10.6.130.64/26 in the local routing table, so where is the value of "net" coming from such that the if-net comparison can be made and the export makes sense works? I know the statement somehow does the right thing; I just don't know how to read and explain it to others in the export context.
Can someone please help me understand how to read this?
Thanks.
-- Mark
participants (1)
-
Mark Petrovic