#!/usr/bin/lua

local uci = require('simple-uci').cursor()
local site = require "gluon.site"

uci:section('firewall', 'zone', 'l3roamd', {
	name = 'l3roamd',
	input = 'ACCEPT',
	output = 'ACCEPT',
	forward = 'REJECT',
	device = 'l3roam+',
	log = '1',
})

uci:section('firewall', 'zone', 'mmfd', {
	name = 'mmfd',
	input = 'REJECT',
	output = 'accept',
	forward = 'REJECT',
	device = 'mmfd+',
	log = '1',
})

-- forwardings and respective rules
uci:section('firewall', 'forwarding', 'fcc', {
	src = 'loc_client',
	dest = 'loc_client',
})

uci:section('firewall', 'forwarding', 'fcm', {
	src = 'loc_client',
	dest = 'mesh',
})

uci:section('firewall', 'forwarding', 'fmc', {
	src = 'mesh',
	dest = 'loc_client',
})

uci:section('firewall', 'forwarding', 'fmm', {
	src = 'mesh',
	dest = 'mesh',
})

uci:section('firewall', 'forwarding', 'flc', {
	src = 'l3roamd',
	dest = 'loc_client',
})

uci:section('firewall', 'forwarding', 'fcl', {
	src = 'loc_client',
	dest = 'l3roamd',
})

uci:section('firewall', 'rule',  'mesh_respondd_mcast_ll', {
	src = 'mesh',
	src_ip = 'fe80::/64' ,
	dest_port = '1001',
	proto = 'udp',
	target = 'ACCEPT',
})

uci:section('firewall', 'rule',  'mesh_respondd_mcast2', {
	src = 'mesh',
	src_ip = site.node_prefix6(),
	dest_port = '1001',
	proto = 'udp',
	target = 'ACCEPT',
})

uci:section('firewall', 'rule',  'mmfd_respondd_ll', {
	src = 'mmfd',
	src_ip = 'fe80::/64',
	dest_port = '1001',
	proto = 'udp',
	target = 'ACCEPT',
})

uci:section('firewall', 'rule',  'mmfd_respondd_mesh', {
	src = 'mmfd',
	src_ip = site.node_prefix6(),
	dest_port = '1001',
	proto = 'udp',
	target = 'ACCEPT',
})

uci:section('firewall', 'rule',  'mesh_mmfd', {
	src = 'mesh',
	src_ip = 'fe80::/64',
	dest_port = '27275',
	proto = 'udp',
	target = 'ACCEPT',
})

uci:section('firewall', 'rule', 'mesh_babel', {
	src = 'mesh',
	src_ip = 'fe80::/64',
	dest_port = '6696',
	proto = 'udp',
	target = 'ACCEPT',
})

uci:save('firewall')
