{{ config_header }}

hostname "{{ hostname }}"
; Generated on {{ date_gen }} by switchs2.py
{{ module_type }}
;--- Snmp ---
snmp-server contact "root@crans.org"
snmp-server location "Batiment {{ bat }}"
;A faire à la main
snmpv3 enable
snmpv3 restricted-access
;snmpv3 user "initial"
snmpv3 user "crans"
snmpv3 group ManagerPriv user "crans" sec-model ver3
snmp-server community "public" Operator
;--- Heure/date ---
time timezone 60
time daylight-time-rule Western-Europe
{%- for s in ntp_servers %}
sntp server {{ s }}
{%- endfor %}
timesync sntp
sntp unicast
;--- Misc ---
console inactivity-timer 30
;--- Logs ---
{%- for s in log_servers %}
logging {{ s }}
{%- endfor %}
;--- IP du switch ---
ip default-gateway {{ gateway }}
{%- for vlan in vlans %}
vlan {{ vlan.id }}
   name "{{ vlan.name|capitalize }}"
   {%- if vlan.tagged %}
   tagged {{ vlan.tagged }}
   {%- endif %}
   {%- if vlan.untagged %}
   untagged {{ vlan.untagged }}
   {%- endif %}
   {%- if vlan.ip_cfg %}
   ip address {{ vlan.ip_cfg.0 }} {{ vlan.ip_cfg.1 }}
   {%- else %}
   no ip address
   {%- endif %}
   {%- if vlan.extra %}
   {{ vlan.extra|indent(3, false) }}
   {%- endif %}
exit
{%- endfor %}
;--- Accès d'administration ---
no telnet-server
no web-management
aaa authentication ssh login public-key none
aaa authentication ssh enable public-key none
ip ssh
ip authorized-managers {{ network_id }} {{ subnet }}
ip ssh filetransfer
;--- Protection contre les boucles ---
loop-protect disable-timer 30
loop-protect transmit-interval 3
loop-protect {{ non_trusted }}
{%- if not public %}
;--- Serveurs radius ---
radius-server dead-time 2
radius-server key {{ radius_key }}
{%- for s in radius_servers %}
radius-server host {{ s }}
{%- endfor %}
;--- Filtrage mac ---
aaa port-access mac-based addr-format multi-colon
{%- endif %}
;--- Bricoles ---
no cdp run
no stack
;--- DHCP Snooping ---
{%- if dhcp_snooping_vlan_names %}
dhcp-snooping vlan{% for n in dhcp_snooping_vlan_names %} {{ n|vlan_id }}{% endfor %}
{%- for s in dhcp_servers %}
dhcp-snooping authorized-server {{ s }}
{%- endfor %}
; Activation
dhcp-snooping
{%- endif %}
{% if ra_filter %};--- RA guards ---
ipv6 ra-guard ports {{ non_trusted }}
no ipv6 ra-guard ports {{ trusted }} 
{% endif %}
;--- Config des prises ---
{%- for port in ports %}
{%- if port.radius_auth() and not public %}
aaa port-access mac-based {{ port|int }}
aaa port-access mac-based {{ port|int }} addr-limit {{ port.num_mac() }}
aaa port-access mac-based {{ port|int }} logoff-period 3600
aaa port-access mac-based {{ port|int }} unauth-vid 1
{%- endif %}
interface {{ port|int }}
   enable
   name "{{ port }}"
   {{ port.flowcontrol() }}
   {%- if port.is_trusted() %}
   dhcp-snooping trust
   {%- endif %}
   {%- if gigabit %}
   {{ port.speed() }}
   {%- endif %}
   no lacp
exit
{%- endfor %}
;--- Filtre de protocole ---
{%- if drop_mdns %}
filter multicast 01005e0000fb drop all
filter multicast 3333000000fb drop all
{%- endif %}
