<macro>
def macro_bfd(data):
	if 'bfd-enable' in data:
		return  data, {"bfd-enable": True}

def def_route(data):
	items = data.split()
	data = {}
	
	data['next-hop'] = items[2]
	try:
		if 'bfd' in items[3]:
			data['bfd-enable'] = True	
		elif 'preference' in items[3]:
			data['preference'] = items[4]
	except Exception as e:
		pass

	return data		
		
</macro>

<group name="router.static-route.ipv4">
#-------------------------------------------------- {{ignore}}
echo "Static Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="entry">
        static-route {{prefix}}/{{prefix-length}} next-hop {{next-hop | IP}} {{bfd-enable | re(r"bfd-enable") | macro("macro_bfd")}} {{ldp-sync | re(r"ldp-sync")}}
#-------------------------------------------------- {{_end_}}
        </group>
#-------------------------------------------------- {{ignore}}
echo "Static Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="entry">
        static-route {{prefix}}/{{prefix-length | re(r"[1-3][0-9]") }} next-hop {{next-hop | IP}} preference {{preference | DIGIT}}
#-------------------------------------------------- {{_end_}}
        </group>
#-------------------------------------------------- {{ignore}}
echo "Static Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="entry">
        static-route {{prefix}}/{{prefix-length  | re(r"[1-3][0-9]") }} next-hop {{next-hop | IP}} {{bfd-enable | re(r"bfd-enable") | macro("macro_bfd")}}
#-------------------------------------------------- {{_end_}}
        </group>
#-------------------------------------------------- {{ignore}}
echo "Static Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="default-route">
        static-route {{default-route | _line_ | contains("0.0.0.0/0") | macro("def_route")}}
#-------------------------------------------------- {{_end_}}
        </group>
</group>
        <group name="router.static-route.ipv4">

#-------------------------------------------------- {{ignore}}
echo "Static Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="black-hole">
        static-route {{prefix | PREFIX}} {{black-hole | re(r"black-hole")}}
#-------------------------------------------------- {{_end_}}
</group>
</group>











<group name="router.static-route.ipv6">
#-------------------------------------------------- {{ignore}}
echo "Static IPv6 Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="entry">
        static-route {{prefix}}/{{prefix-length | DIGIT}} next-hop {{next-hop | IPV6 }} {{bfd-enable | re(r"bfd-enable") | macro("macro_bfd")}}
#-------------------------------------------------- {{_end_}}
</group>
#-------------------------------------------------- {{ignore}}
echo "Static IPv6 Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="entry">
        static-route {{prefix}}/{{prefix-length | DIGIT}} next-hop {{next-hop | IPV6 }} preference {{preference | DIGIT}}
#-------------------------------------------------- {{_end_}}
</group>
#-------------------------------------------------- {{ignore}}
echo "Static IPv6 Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="default-route">
        static-route {{default-route | re(r".*") | _line_ | contains("::/0")}}
#-------------------------------------------------- {{_end_}}
</group>
</group>

<group name="router.static-route.ipv6">
#-------------------------------------------------- {{ignore}}
echo "Static IPv6 Route Configuration" {{_start_}}
#-------------------------------------------------- {{ignore}}
        <group name="black-hole">
        static-route {{prefix | PREFIXV6}} {{black-hole | re(r"black-hole")}}
#-------------------------------------------------- {{_end_}}
</group>
</group>

