Mysterious "if" directive
Posted: Fri Aug 26, 2022 7:02 pm
In the manual for openvpn(8), section “Server Options”, the `server` directive is explained as working à la this snippet:
What caught me (and `oconf`, it doesn’t do indentation, so sorry) off-guard is the `if` keyword; nesting and conditional evalution in OpenVPN are the sort of things I’m not much surprised with, given the complexity of the software, but I soon found out that… I couldn’t exactly find much info on such powerful scripting capabilities of the config-files language. I looked through all the places in the source code I could, trying to even take a lot at past commits, until a hit a wall in the face of the supposedly dead SVN archive repo? (http://svn.openvpn.net/projects/openvpn)
My question is: is the code snippet from the manual partially pseudocode, or flow control is an actual supported feature with a documentation I can read somewhere?
Code: Select all
mode server
tls-server
push "topology [topology]"
if dev tun AND (topology == net30 OR topology == p2p):
ifconfig 10.8.0.1 10.8.0.2
if !nopool:
ifconfig-pool 10.8.0.4 10.8.0.251
route 10.8.0.0 255.255.255.0
if client-to-client:
push "route 10.8.0.0 255.255.255.0"
else if topology == net30:
push "route 10.8.0.1"
if dev tap OR (dev tun AND topology == subnet):
ifconfig 10.8.0.1 255.255.255.0
if !nopool:
ifconfig-pool 10.8.0.2 10.8.0.253 255.255.255.0
push "route-gateway 10.8.0.1"
if route-gateway unset:
route-gateway 10.8.0.2
My question is: is the code snippet from the manual partially pseudocode, or flow control is an actual supported feature with a documentation I can read somewhere?