# -*- coding: utf-8 -*- info["owner"] = "root" info["group"] = "root" info["mode"] = 0644 include("ip") comment_start = "#" header("Annonce des routes IPv6") rec = [ '2a01:240:fe3d:4:ea39:35ff:fef0:48c8', # Charybde '2a01:240:fe3d:4:f46f:f1ff:fe78:57ab', # nem ] # Pour plus tard: # rec = ips_of_metadata(metadata.query.by_groups(['dns-recursif'] ), vlan='adh') # Prob actuel: charybde n'apparaît pas dans cette requête car il ne présente # pas son ipv6 dans son ndd. rec_tpl = "" for ip in rec: if ':' not in ip: continue rec_tpl += """ RDNSS %s { AdvRDNSSOpen on; AdvRDNSSPreference 2; }; """ % ip #rec_tpl += '# %r' % metadata.query.by_groups('dns-recursif') def router_adv(**kw): kw['rec'] = rec_tpl kw.setdefault('other_prefixes', []) def prefix_section(pref): """Renvoie la section de conf d'un prefixe additionnel""" return """ prefix %s { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; };""" % pref kw['other_prefixes'] = '\n'.join(map(prefix_section, kw['other_prefixes'])) out(""" interface %(iface)s { AdvSendAdvert on; AdvLinkMTU 1280; AdvDefaultPreference high; prefix %(prefix)s { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; # Les routes supplémentaires:\n %(other_prefixes)s # Les récursifs:\n %(rec)s }; """ % kw) # NOTE: Je met \n parce qu'un "%" en début de ligne est remplacé par bcfg2 … router_adv(iface='crans', prefix='2a01:240:fe3d:4::/64') router_adv(iface='crans.3', prefix='2a01:240:fe3d:c04::/64', other_prefixes=[ # ULA de management des bornes: fda8:5d34:a228:/48 'fda8:5d34:a228:c04::/64', ])