Hello!

On 3/22/19 1:29 PM, remco van mook wrote:
would it be possible to add a function to Bird that’s essentially the same as 
syslog in C? That way we can have filters/function log messages including 
severity which is very helpful for debugging and monitoring.

Well, to be honest, everything may be possible, unless proven impossible. (Treat me gracefully please, my children finally fell asleep.)

I tried to implement this in the bird configuration language itself, but got 
stuck on either of two points:
  - Bird can’t concatenate strings
  - function definitions need to have a predefined number of arguments

Yes, this is probably impossible in current state.

Ideally I’d like to replace a statement like

print "REJECTING: ",net.ip,"/",net.len," received from ",from," AS 
",bgp_path.first,": Prefix is a martian";

with

syslog LOG_WARNING, "REJECTING: ",net.ip,"/",net.len," received from ",from," AS 
",bgp_path.first,": Prefix is a martian”;

Right now I’m just commenting out the print statements that get hit too often 
to prevent spamming log files with ten thousands of rows, and ideally I’d like 
to use the log command that Bird uses for it’s own messages to set where these 
messages should go based on relevance.

This seems feasible, based on the user point of view. What is worse, the print command itself is hacked into the filter language in quite a crude and insane way.

If it is enough for you, there is currently a fundamental filter rewrite undergoing code review and testing before being merged into v2 branch. After this is merged, it is possible to simplify the print command quite a lot and also to implement syslog. Is that enough for you?

I don't like implementing this in v1.6.x – the legacy branch will never get the new interpreter.

Maria

Reply via email to