Skip to content

Commit 15f55e7

Browse files
author
Pavel Shirshov
committed
Ignore wrong ip address, don't crash bgpcfgd
1 parent fb174b5 commit 15f55e7

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

src/sonic-bgpcfgd/app/template.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import jinja2
55
import netaddr
66

7+
from .log import log_err
78

89
class TemplateFabric(object):
910
""" Fabric for rendering jinja2 templates """
@@ -97,12 +98,11 @@ def pfx_filter(value):
9798
intf, ip_address = key
9899
if '/' not in ip_address:
99100
if TemplateFabric.is_ipv4(ip_address):
100-
new_ip_address = "%s/32" % ip_address
101+
table[(intf, "%s/32" % ip_address)] = val
101102
elif TemplateFabric.is_ipv6(ip_address):
102-
new_ip_address = "%s/128" % ip_address
103+
table[(intf, "%s/128" % ip_address)] = val
103104
else:
104-
raise ValueError("'%s' is invalid ip address" % ip_address)
105-
table[(intf, new_ip_address)] = val
105+
log_err("'%s' is invalid ip address" % ip_address)
106106
else:
107107
table[key] = val
108108
return table

src/sonic-bgpcfgd/tests/test_pfx_filter.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from app.template import TemplateFabric
22
from collections import OrderedDict
3+
import pytest
4+
35

46
def test_pfx_filter_none():
57
res = TemplateFabric.pfx_filter(None)
@@ -126,12 +128,12 @@ def test_pfx_filter_pfx_comprehensive():
126128
res = TemplateFabric.pfx_filter(src)
127129
assert res == expected
128130

129-
def test_pfx_filter_pfx_exception():
131+
@pytest.fixture
132+
def test_pfx_filter_wrong_ip(caplog):
130133
src = {
131-
('Loopback0', '23asef45'): {},
134+
('Loopback0', 'wrong_ip'): {},
132135
}
133-
try:
134-
res = TemplateFabric.pfx_filter(src)
135-
assert False, "Exception wasn't raised"
136-
except ValueError as e:
137-
assert str(e) == "'23asef45' is invalid ip address"
136+
res = TemplateFabric.pfx_filter(src)
137+
assert "'wrong_ip' is invalid ip address" in caplog.text
138+
assert isinstance(res, OrderedDict) and len(res) == 0
139+

0 commit comments

Comments
 (0)