Hi Vincent, Alex,
I'm not a C programmer, so, could you please explain why fork() is the problem? I see this feature work this way:
1. Place "run external command" statement into "if" statement inside the filter or function, so it will be ran only on the specific updates/withdraws.
2. When update/withdraw message is arrived, BIRD runs external command, passes message details to it as environment variables and forks it. After fork BIRD is not blocked by child execution, so it will not be a performance impact.
Please clarify if I missed something.