### generated by accel_pppoe.py ###
[modules]
log_syslog
pppoe
shaper
{# Common authentication backend definitions #}
{% include 'accel-ppp/config_modules_auth_mode.j2' %}
ippool
{# Common IPv6 definitions #}
{% include 'accel-ppp/config_modules_ipv6.j2' %}
{# Common authentication protocols (pap, chap ...) #}
{% include 'accel-ppp/config_modules_auth_protocols.j2' %}

{% if snmp is defined %}
net-snmp
{% endif %}
{% if limits is defined %}
connlimit
{% endif %}

[core]
thread-count={{ thread_count }}

[log]
syslog=accel-pppoe,daemon
copy=1
level=5

{% if snmp is defined and snmp.master_agent is defined %}
[snmp]
master=1
{% endif %}

[client-ip-range]
disable

{# Common IP pool definitions #}
{% include 'accel-ppp/config_ip_pool.j2' %}

{# Common IPv6 pool definitions #}
{% include 'accel-ppp/config_ipv6_pool.j2' %}

{# Common DNS name-server definition #}
{% include 'accel-ppp/config_name_server.j2' %}

{% if wins_server is defined and wins_server is not none %}
[wins]
{%   for server in wins_server %}
wins{{ loop.index }}={{ server }}
{%   endfor %}
{% endif %}

{# Common chap-secrets and RADIUS server/option definitions #}
{% include 'accel-ppp/config_chap_secrets_radius.j2' %}

{% if session_control is defined and session_control != 'disable' %}
[common]
single-session={{ session_control }}
{% endif %}

[ppp]
verbose=1
check-ip=1
ccp={{ "1" if ppp_options.ccp is defined else "0" }}
unit-preallocate={{ "1" if authentication.radius.preallocate_vif is defined else "0" }}
{% if ppp_options.min_mtu is defined and ppp_options.min_mtu is not none %}
min-mtu={{ ppp_options.min_mtu }}
{% else %}
min-mtu={{ mtu }}
{% endif %}
{% if ppp_options.mru is defined and ppp_options.mru is not none %}
mru={{ ppp_options.mru }}
{% endif %}
mppe={{ ppp_options.mppe }}
lcp-echo-interval={{ ppp_options.lcp_echo_interval }}
lcp-echo-timeout={{ ppp_options.lcp_echo_timeout }}
lcp-echo-failure={{ ppp_options.lcp_echo_failure }}
{% if ppp_options.ipv4 is defined and ppp_options.ipv4 is not none %}
ipv4={{ ppp_options.ipv4 }}
{% endif %}
{# IPv6 #}
{% if ppp_options.ipv6 is defined and ppp_options.ipv6 is not none %}
ipv6={{ ppp_options.ipv6 }}
{%   if ppp_options.ipv6_intf_id is defined and ppp_options.ipv6_intf_id is not none %}
ipv6-intf-id={{ ppp_options.ipv6_intf_id }}
{%   endif %}
{%   if ppp_options.ipv6_peer_intf_id is defined and ppp_options.ipv6_peer_intf_id is not none %}
ipv6-peer-intf-id={{ ppp_options.ipv6_peer_intf_id }}
{%   endif %}
ipv6-accept-peer-intf-id={{ "1" if ppp_options.ipv6_accept_peer_intf_id is defined else "0" }}
{% endif %}
{# MTU #}
mtu={{ mtu }}

[pppoe]
verbose=1
ac-name={{ access_concentrator }}

{% if interface is defined and interface is not none %}
{%   for iface, iface_config in interface.items() %}
{%     if iface_config.vlan_id is not defined and iface_config.vlan_range is not defined %}
interface={{ iface }}
{%     endif %}
{%     if iface_config.vlan_id is defined and iface_config.vlan_range is not defined %}
{%       for vlan in iface_config.vlan_id %}
interface={{ iface }}.{{ vlan }}
vlan-mon={{ iface }},{{ vlan }}
{%       endfor %}
{%     endif %}
{%     if iface_config.vlan_range is defined and iface_config.vlan_id is not defined %}
vlan-mon={{ iface }},{{ iface_config.vlan_range | join(',') }}
interface=re:{{ iface | replace('.', '\\.') }}\.\d+
{%     endif %}
{%     if iface_config.vlan_id is defined and iface_config.vlan_range is defined %}
vlan-mon={{ iface }},{{ iface_config.vlan_id | join(',') }},{{ iface_config.vlan_range | join(',') }}
interface=re:{{ iface | replace('.', '\\.') }}\.\d+
{%     endif %}
{%   endfor %}
{% endif %}

{% if service_name %}
service-name={{ service_name | join(',') }}
{% endif %}

{% if pado_delay %}
{%   set pado_delay_param = namespace(value='0') %}
{%   for delay in pado_delay|sort(attribute='0') %}
{%     if not loop.last %}
{%       set pado_delay_param.value = pado_delay_param.value + ',' + delay + ':' + pado_delay[delay].sessions %}
{%     else %}
{%       set pado_delay_param.value = pado_delay_param.value + ',-1:' + pado_delay[delay].sessions %}
{%     endif %}
{%   endfor %}
pado-delay={{ pado_delay_param.value }}
{% endif %}

{% if limits is defined %}
[connlimit]
{%   if limits.connection_limit is defined and limits.connection_limit is not none %}
limit={{ limits.connection_limit }}
{%   endif %}
{%   if limits.burst is defined and limits.burst %}
burst={{ limits.burst }}
{%   endif %}
{%   if limits.timeout is defined and limits.timeout is not none %}
timeout={{ limits.timeout }}
{%   endif %}
{% endif %}
{% if authentication.radius.called_sid_format is defined and authentication.radius.called_sid_format is not none %}
called-sid={{ authentication.radius.called_sid_format }}
{% endif %}

{# Common RADIUS shaper configuration #}
{% include 'accel-ppp/config_shaper_radius.j2' %}

[cli]
tcp=127.0.0.1:2001