On Mon, Aug 07, 2017 at 03:01:49AM +0200, Ondrej Zajicek wrote:
Any ideas how to increase the memory available to things on the stack?
Looks like you're hitting the Bison parser stack limit. The default is 10000, which is probably too low, looking at your sample config file.
It is true that there is a stack limit, but the core problem is that involved grammar rules use right recursion instead of left recursion like most other rules. That causes excessive stack usage.
Workaround could to use global definitions instead of local variables, i.e:
define AS1 = [ 170.238.64.0/23, 152.231.29.0/24 ];
Also note that instead of sequence of ifs it is much more efficient to use case expression based on asn and then just net-based test inside of case branch:
case asn { 0: return net ~ AS0; 1: return net ~ AS1; 2: return net ~ AS2; ... }
I implemented your approach, this indeed seesm to be an optimalisation. Thank you! :) Kind regards, Job