def _set_dmzlan_ifup_address_and_route(data, pos):
	ret = True
	emsg = []

	# Always ifups dmz
	e = xt_func.sudo(["ip link set dev", pos, "up"])
	if not e[0]: 
		ret = False
		emsg.append(e[1])

	for i in data["basic-subnet"]:
		ip_range = xt_func.iprange2list(i["ip"])
		inet = xt_func.block2cidr(ip_range[0]+ "/"+ i["mask"]) 
		for ip in ip_range:
			e = xt_func.sudo(["ip addr add", ip+ "/"+ i["mask"], "brd + dev", pos])
			if not e[0]: 
				ret = False
				emsg.append(e[1])
		e = xt_func.sudo(["ip route add", inet, "dev", pos, "src", ip_range[0], "table", const.RTAB[pos]])

	for i in data["static-route"]:
		e = xt_func.sudo(["ip route add", i["subnet"], "via", i["gateway"], "dev", pos, "table", const.RTAB[pos]])
		if not e[0]: 
			ret = False
			emsg.append(e[1])

	return (ret, emsg)
def _set_static_wan_ifup_address_and_route(data, pos):
	ret = True
	emsg = []

	if data["enable"] != 1: return (ret, [pos, "disabled"])

	e = xt_func.sudo(["ip link set dev", pos, "up"])
	if not e[0]: 
		ret = False
		emsg.append(e[1])

	# static supports only one subnet
	fst_ip = data["static-mode"]["ip"][0].split("-")[0]
	inet = xt_func.block2cidr(fst_ip + "/" + data["static-mode"]["mask"]) 
	for i in data["static-mode"]["ip"]:
		ip_range = xt_func.iprange2list(i)
		for ip in ip_range:
			e = xt_func.sudo(["ip addr add", ip+ "/"+ data["static-mode"]["mask"], "brd + dev", pos])
			if not e[0]: 
				ret = False
				emsg.append(e[1])
	e = xt_func.sudo(["ip route add default via", data["static-mode"]["gateway"], "dev", pos, "table", const.RTAB[pos]])
	e = xt_func.sudo(["ip route append default via", data["static-mode"]["gateway"], "dev", pos])

	if len(data["public-ip-passthrough"]["ip"]) > 0:
		#Copy addresses to DMZ for public-ip-passthrough
		for ip in ip_range:
			e = xt_func.sudo(["ip addr add", ip+ "/"+ data["static-mode"]["mask"], "brd + dev dmz"])
			if not e[0]: 
				ret = False
				emsg.append(e[1])
		#Don't forget route tables 
		e = xt_func.sudo(["ip route del", inet, "dev dmz"])
		e = xt_func.sudo(["ip route add", inet, "src", fst_ip, "dev dmz table", const.RTAB["dmz"]])

	return (ret, emsg)