[j-nsp] terminate endless loop in SLAX

Phil Shafer phil at juniper.net
Tue Jun 26 14:35:28 EDT 2018


Martin T writes:
>Thanks Phil! So in short, at the moment "terminate" statement inside
>the while loop works in a way that when "terminate" statement is
>executed, then immediately next iteration of while loop is started if
>while expression returns true and this will loop infinitely? If this
>while expression returns false, then terminate statement was the last
>thing processed by the script and script exits. At least based on my
>tests it seems to work like that.

Yes, which does inspire a reasonable (if ugly) workaround:

Bock % cat /tmp/foo.slax
version 1.2;

match / {
    mvar $working = true();

    <op-script-results> {
        while ($working) {
            set $working = false();
            terminate "doa";
        }
    }
}
Bock % slaxproc -E -g /tmp/foo.slax
doa
<?xml version="1.0"?>
<op-script-results/>
Bock %

Hope this helps.

Thanks,
 Phil


More information about the juniper-nsp mailing list