Skip to content

Commit b02565c

Browse files
authored
Merge pull request #4858 from c-po/login-warning
login: T8024: show user warning for unconfigured RADIUS/TACACS source-address
2 parents 4f2d7c3 + dbff37e commit b02565c

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/conf_mode/system_login.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
from vyos.utils.configfs import add_cli_node
4646
from vyos.utils.dict import dict_search
4747
from vyos.utils.file import move_recursive
48+
from vyos.utils.network import is_addr_assigned
4849
from vyos.utils.permission import chown
4950
from vyos.utils.process import cmd
5051
from vyos.utils.process import call
@@ -212,13 +213,17 @@ def verify(login):
212213

213214
verify_vrf(login['radius'])
214215

215-
if 'source_address' in login['radius']:
216+
if addresses := dict_search('radius.source_address', login):
216217
ipv4_count = 0
217218
ipv6_count = 0
218-
for address in login['radius']['source_address']:
219+
radius_vrf = dict_search('radius.vrf', login)
220+
for address in addresses:
219221
if is_ipv4(address): ipv4_count += 1
220222
else: ipv6_count += 1
221223

224+
if not is_addr_assigned(address, vrf=radius_vrf):
225+
Warning(f'Specified RADIUS source-address "{address}" is not assigned!')
226+
222227
if ipv4_count > 1:
223228
raise ConfigError('Only one IPv4 source-address can be set!')
224229
if ipv6_count > 1:
@@ -235,13 +240,18 @@ def verify(login):
235240
fail = False
236241

237242
if fail:
238-
raise ConfigError('All RADIUS servers are disabled')
243+
raise ConfigError('All TACACS servers are disabled')
239244

240245
if tacacs_servers_count > MAX_TACACS_COUNT:
241246
raise ConfigError(f'Number of TACACS servers exceeded maximum of {MAX_TACACS_COUNT}!')
242247

243248
verify_vrf(login['tacacs'])
244249

250+
if tmp := dict_search('tacacs.source_address', login):
251+
tacacs_vrf = dict_search('tacacs.vrf', login)
252+
if not is_addr_assigned(tmp, vrf=tacacs_vrf):
253+
Warning(f'Specified TACACS source-address "{tmp}" is not assigned!')
254+
245255
if 'max_login_session' in login and 'timeout' not in login:
246256
raise ConfigError('"login timeout" must be configured!')
247257

0 commit comments

Comments
 (0)