On Mon, Dec 30, 2019 at 04:56:26PM +0000, Asbjørn Sloth Tønnesen wrote: > This RFC patch series is a first stab, at adding some syntactic sugar > making it more plessant to implement non-trivial dual-stack configurations, > like https://bgpfilterguide.nlnog.net/ > > I'm not completely happy with the naming at this stage, but I want to > get this series out before 36C3 ends. > > Looking forward to your feedback.
Hi Thanks for the patchset, sorry for not giving feedback sooner, was on vacation. If i understand it correctly, the main point of this patchset is to introduce 'typed symbols', which have multiple values based of network type of processed route. I must say that i do not like the approach taken in the patch, seems to me that for intended purpose it is too intrusive change and the feature is too idiosyncratic - i don't recall any language where a constant may represent multiple unrelated values based on context. It is also over-specific (dispatch hardcoded for net_type, while there are other, context-specific properties, like protocol type). One way to make it less intrusive would be to keep symbol table the same (just symbol->value mapping) and do the change just in 'value' part. You have this example: define default_route:ipv4 = 0.0.0.0/0; define default_route:ipv6 = ::/0; This could be done by using function instead of constant: function default_route() { case net.type { NET_IP4: return 0.0.0.0/0; NET_IP6: return ::/0; } } I agree that it is more cumbersome than your version. Seems to me that your intended objective could be achieved, while keeping it universal and reasonable, by several independent changes: 1) Allow 'lazy-evaluated constants', that could depend on context. These are essentially zero-argument functions in disguise. 2) Allow something like if/case expressions (instead of just statements). 3) (optional) partially-evaluate/adapt filters based on context. So one could wrote something like: define default_route = case net.type { NET_IP4: 0.0.0.0/0; NET_IP6: ::/0; } (The remaining wart is a current style of enum constants, like 'NET_IP4'.) -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
signature.asc
Description: PGP signature