Testing interface configuration generation.

-- Testcase --
{%
	let real_include = include;

	include("./cfg/ucentral.uc", {
		TRACE_CALLS: "stderr",

		/* wrap include() to fixup the include paths */
		include: function(path, scope) {
			path = replace(path, "/usr/share/ucentral/", "../cfg/");

			/* make path absolute */
			if (index(path, "/") != 0) {
				try {
					die();
				} catch(e) {
					path = replace(e.stacktrace[1].filename, /\/[^\/]+$/, '') + '/' + path;
				};
			}

			return real_include(path, scope);
		}
	})
%}
-- End --

-- Environment --
{
	"capab": {
		"network" : {
			"lan" : {
				"ifname" : "lan1 lan2 lan3 lan4",
				"macaddr" : "00:11:22:f5:37:d3",
				"protocol" : "static"
			},
			"wan" : {
				"ifname" : "wan",
				"macaddr" : "00:11:22:f5:37:d2",
				"protocol" : "dhcp"
			}
		}
	},
	"cfg": {
		"network" : [
			{
				"cfg" : {
					"proto" : "dhcp"
				},
				"mode" : "wan"
			},
			{
				"cfg" : {
					"proto" : "dhcp"
				},
				"vlan": 200,
				"mode" : "wan"
			},
			{
				"cfg" : {
					"peeraddr" : "0.0.0.0",
					"vid" : "50"
				},
				"mode" : "gre"
			},
			{
				"cfg" : {
					"dhcp" : {
						"leasetime" : "6h",
						"limit" : 100,
						"start" : 10
					},
					"ip6assign" : 60,
					"ipaddr" : "192.168.16.1",
					"leases" : [
						{
							"hostname" : "test",
							"ip" : "192.168.100.2",
							"mac" : "00:11:22:33:44:55"
						},
						{
							"hostname" : "test2-2",
							"ip" : "192.168.100.3",
							"mac" : "00:11:22:33:44:56"
						}
					],
					"mtu" : 1500,
					"netmask" : "255.255.255.0",
					"proto" : "static"
				},
				"mode" : "nat",
				"vlan" : 200
			},
			{
				"cfg" : {
					"dhcp" : {
						"leasetime" : "6h",
						"limit" : 100,
						"start" : 10
					},
					"ipaddr" : "192.168.12.11",
					"proto" : "static"
				},
				"mode" : "guest"
			},
			{
				"cfg" : {
					"vid": 1,
					"peeraddr": "192.168.0.10",
					"ipaddr": "10.0.0.1",
					"netmask": "255.255.255.0",
					"port": 4789,
				},
				"mode" : "vxlan"
			}
		]
	}
}
-- End --

-- File fs/stat~_usr_share_ucentral_cfg_network_uc.json --
{ "type": "file" }
-- End --

-- Expect stderr --
[call] fs.stat path </usr/share/ucentral/cfg_network.uc>
-- End --

-- Expect stdout --
set network.wan='interface'
set network.wan.proto='dhcp'
set network.wan.metric='1'
set network.wan.type='bridge'
set network.wan.ifname='wan'
set network.wan200='interface'
set network.wan200.proto='dhcp'
set network.wan200.metric='1'
set network.wan200.ifname='@wan.200'
set network.wan200.ip4table='200'
set network.wan200.ip6table='200'
del network.wan200.type
set network.gre='interface'
set network.gre.proto='gretap'
set network.gre.type='gre'
set network.gre.peeraddr='0.0.0.0'
set network.gre.tunlink='wan'
set network.gretun_50='interface'
set network.gretun_50.proto='static'
set network.gretun_50.type='bridge'
set network.gretun_50.ifname='gre4t-gre.50'
set network.nat200='interface'
set network.nat200.proto='static'
set network.nat200.ipaddr='192.168.16.1'
set network.nat200.netmask='255.255.255.0'
set network.nat200.metric='10'
set network.nat200.mtu='1500'
set network.nat200.ip6assign='60'
set network.nat200.type='bridge'
set network.nat200_route='rule'
set network.nat200_route.in='nat200'
set network.nat200_route.lookup='200'
set network.guest='interface'
set network.guest.proto='static'
set network.guest.ipaddr='192.168.12.11'
set network.guest.netmask='255.255.255.0'
set network.guest.metric='10'
set network.guest.type='bridge'
set network.vxlan='interface'
set network.vxlan.proto='vxlan'
set network.vxlan.peeraddr='192.168.0.10'
set network.vxlan.tunlink='wan'
set network.vxlan.port='4789'
set network.vxlan.vid='1'
set network.vxlanpeer='interface'
set network.vxlanpeer.type='bridge'
set network.vxlanpeer.proto='static'
set network.vxlanpeer.ifname='@vxlan'
set network.vxlanpeer.ipaddr='10.0.0.1'
set network.vxlanpeer.netmask='255.255.255.0'
set dhcp.wan='dhcp'
set dhcp.wan.interface='wan'
set dhcp.wan.ignore='1'
set dhcp.wan200='dhcp'
set dhcp.wan200.interface='wan200'
set dhcp.wan200.ignore='1'
set dhcp.nat200='dhcp'
set dhcp.nat200.interface='nat200'
set dhcp.nat200.start='10'
set dhcp.nat200.limit='100'
set dhcp.nat200.leasetime='6h'
set dhcp.test='host'
set dhcp.test.ip='192.168.100.2'
set dhcp.test.mac='00:11:22:33:44:55'
set dhcp.test.hostname='test'
set dhcp.test2-2='host'
set dhcp.test2-2.ip='192.168.100.3'
set dhcp.test2-2.mac='00:11:22:33:44:56'
set dhcp.test2-2.hostname='test2-2'
set dhcp.guest='dhcp'
set dhcp.guest.interface='guest'
set dhcp.guest.start='10'
set dhcp.guest.limit='100'
set dhcp.guest.leasetime='6h'
set firewall.wan200='zone'
set firewall.wan200.name='wan200'
set firewall.wan200.network='wan200'
set firewall.wan200.input='REJECT'
set firewall.wan200.output='ACCEPT'
set firewall.wan200.forward='REJECT'
set firewall.wan200.masq='1'
set firewall.wan200.mtu_fix='1'
set firewall.nat200='zone'
set firewall.nat200.name='nat200'
set firewall.nat200.network='nat200'
set firewall.nat200.input='ACCEPT'
set firewall.nat200.output='ACCEPT'
set firewall.nat200.forward='ACCEPT'
set firewall.nat200_wan200='forwarding'
set firewall.nat200_wan200.src='nat200'
set firewall.nat200_wan200.dest='wan200'
set firewall.guest='zone'
set firewall.guest.name='guest'
set firewall.guest.network='guest'
set firewall.guest.input='REJECT'
set firewall.guest.output='ACCEPT'
set firewall.guest.forward='REJECT'
set firewall.guest_wan='forwarding'
set firewall.guest_wan.src='guest'
set firewall.guest_wan.dest='wan'
set firewall.guest_allow_dns='rule'
set firewall.guest_allow_dns.name='Allow-DNS-Guest'
set firewall.guest_allow_dns.src='guest'
set firewall.guest_allow_dns.dest_port='53'
del firewall.guest_allow_dns.proto
add_list firewall.guest_allow_dns.proto='tcp'
add_list firewall.guest_allow_dns.proto='udp'
set firewall.guest_allow_dns.target='ACCEPT'
set firewall.guest_allow_dhcp='rule'
set firewall.guest_allow_dhcp.name='Allow-DHCP-Guest'
set firewall.guest_allow_dhcp.src='guest'
set firewall.guest_allow_dhcp.dest_port='67'
set firewall.guest_allow_dhcp.family='ipv4'
set firewall.guest_allow_dhcp.proto='udp'
set firewall.guest_allow_dhcp.target='ACCEPT'
set firewall.guest_allowdhcpv6='rule'
set firewall.guest_allowdhcpv6.name='Allow-DHCPv6-Guest'
set firewall.guest_allowdhcpv6.src='guest'
set firewall.guest_allowdhcpv6.dest_port='547'
set firewall.guest_allowdhcpv6.family='ipv6'
set firewall.guest_allowdhcpv6.proto='udp'
set firewall.guest_allowdhcpv6.target='ACCEPT'
set firewall.guest_block_local='rule'
set firewall.guest_block_local.name='Block-local-Guest'
set firewall.guest_block_local.src='guest'
set firewall.guest_block_local.dest='*'
set firewall.guest_block_local.family='ipv4'
del firewall.guest_block_local.proto
add_list firewall.guest_block_local.proto='tcp'
add_list firewall.guest_block_local.proto='udp'
del firewall.guest_block_local.dest_ip
add_list firewall.guest_block_local.dest_ip='192.168.0.0/16'
add_list firewall.guest_block_local.dest_ip='172.16.0.0/24'
add_list firewall.guest_block_local.dest_ip='10.0.0.0/24'
set firewall.guest_block_local.target='REJECT'
set firewall.vxlan_accept='rule'
set firewall.vxlan_accept.src='wan'
set firewall.vxlan_accept.proto='udp'
set firewall.vxlan_accept.port='4789'
set firewall.vxlan_accept.target='ACCEPT'
-- End --
