diff options
author | Daniil Baturin <daniil@vyos.io> | 2023-03-16 14:11:19 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-16 14:11:19 +0000 |
commit | fda93b223239eb5040374754323ae51160785610 (patch) | |
tree | ded2a94c895a817cdc8d256c1e9c1eea86c5d0d7 | |
parent | 34cab2599c5bb32d38973dfcd60c51d30a5fdb3b (diff) | |
parent | 4eccfe6a19b457720ece4ab9a66b10a95f34b635 (diff) | |
download | vyos-1x-fda93b223239eb5040374754323ae51160785610.tar.gz vyos-1x-fda93b223239eb5040374754323ae51160785610.zip |
Merge pull request #1885 from sever-sever/T5058-eq
T5058: Fix IPoE regex Jinja2 for interface
-rw-r--r-- | data/templates/accel-ppp/ipoe.config.tmpl | 2 | ||||
-rw-r--r-- | python/vyos/template.py | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/data/templates/accel-ppp/ipoe.config.tmpl b/data/templates/accel-ppp/ipoe.config.tmpl index 476c922b8..0599b5501 100644 --- a/data/templates/accel-ppp/ipoe.config.tmpl +++ b/data/templates/accel-ppp/ipoe.config.tmpl @@ -26,7 +26,7 @@ verbose=1 {% for interface in interfaces %} {% set ifname = interface.name %} {% if interface.vlan_mon %} -{% set ifname = 're:' ~ interface.name ~ '\.\d+' %} +{% set ifname = 're:^' ~ interface.name ~ '\.' ~ interface.vlan_mon | range_to_regex ~ '$' %} {% endif %} interface={{ ifname }},shared={{ interface.shared }},mode={{ interface.mode }},ifcfg={{ interface.ifcfg }}{{ ',range=' ~ interface.range if interface.range is defined and interface.range is not none }},start={{ interface.sess_start }},ipv6=1 {% endfor %} diff --git a/python/vyos/template.py b/python/vyos/template.py index 4778bf1c8..c98d6874e 100644 --- a/python/vyos/template.py +++ b/python/vyos/template.py @@ -362,3 +362,28 @@ def get_ipv4(interface): """ Get interface IPv4 addresses""" from vyos.ifconfig import Interface return Interface(interface).get_addr_v4() + +@register_filter('range_to_regex') +def range_to_regex(num_range): + """Convert range of numbers or list of ranges + to regex + % range_to_regex('11-12') + '(1[1-2])' + % range_to_regex(['11-12', '14-15']) + '(1[1-2]|1[4-5])' + """ + from vyos.range_regex import range_to_regex + if isinstance(num_range, list): + data = [] + for entry in num_range: + if '-' not in entry: + data.append(entry) + else: + data.append(range_to_regex(entry)) + return f'({"|".join(data)})' + + if '-' not in num_range: + return num_range + + regex = range_to_regex(num_range) + return f'({regex})' |