4545from vyos .utils .configfs import add_cli_node
4646from vyos .utils .dict import dict_search
4747from vyos .utils .file import move_recursive
48+ from vyos .utils .network import is_addr_assigned
4849from vyos .utils .permission import chown
4950from vyos .utils .process import cmd
5051from 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