summaryrefslogtreecommitdiff
path: root/data/templates/accel-ppp/pppoe.config.tmpl
blob: 08f82996b5035a418e172ba7b9d076522699adf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
### 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 %}
{% if extended_scripts is defined %}
sigchld
pppd_compat
{% 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 }}
{% 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 }}
{% if ppp_options.interface_cache is defined and ppp_options.interface_cache is not none %}
unit-cache={{ ppp_options.interface_cache }}
{% endif %}

[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_range is defined %}
{%       for regex in iface_config.regex %}
interface=re:^{{ iface | replace('.', '\\.') }}\.({{ regex }})$
{%       endfor %}
vlan-mon={{ iface }},{{ iface_config.vlan_range | join(',') }}
{%     endif %}
{%     if iface_config.vlan_id is defined %}
{%       for vlan in iface_config.vlan_id %}
vlan-mon={{ iface }},{{ vlan }}
interface=re:^{{ iface | replace('.', '\\.') }}\.{{ vlan }}$
{%       endfor %}
{%     endif %}
{%   endfor %}
{% endif %}

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

{% if pado_delay %}
{%   set delay_without_sessions = pado_delay.delays_without_sessions[0] | default('0') %}
{%   set pado_delay_param = namespace(value=delay_without_sessions) %}
{%   for delay, sessions in pado_delay.delays_with_sessions | sort(attribute='1') %}
{%     if not loop.last %}
{%       set pado_delay_param.value = pado_delay_param.value + ',' + delay + ':' + sessions | string %}
{%     else %}
{%       set pado_delay_param.value = pado_delay_param.value + ',-1:' + sessions | string %}
{%     endif %}
{%   endfor %}
pado-delay={{ pado_delay_param.value }}
{% 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 %}

{% if authentication is defined and authentication.mode is defined and authentication.mode == 'local' %}
{%   if client_ip_pool is defined and client_ip_pool is not none %}
{%     if client_ip_pool.name is defined and client_ip_pool.name is not none %}
{%       for pool, pool_config in client_ip_pool.name.items() %}
{%         if pool_config.subnet is defined and pool_config.subnet is not none %}
ip-pool={{ pool }}
{%           if pool_config.gateway_address is defined and pool_config.gateway_address is not none %}
gw-ip-address={{ pool_config.gateway_address }}/{{ pool_config.subnet.split('/')[1] }}
{%           endif %}
{%         endif %}
{%       endfor %}
{%     endif %}
{%  endif %}
{% 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 %}

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

{% if extended_scripts is defined %}
[pppd-compat]
verbose=1
radattr-prefix=/run/accel-pppd/radattr
{% set script_name = {'on_up': 'ip-up', 'on_down': 'ip-down', 'on_change':'ip-change', 'on_pre_up':'ip-pre-up'} %}
{%   for script in extended_scripts %}
{{ script_name[script] }}={{ extended_scripts[script] }}
{%   endfor %}
{% endif %}

[cli]
tcp=127.0.0.1:2001