[bgpcfgd]: Add on-match next rule for set ipv6 next-hop prefer-global (#6011)
* Add 'on-match next' after every 'set ipv6 next-hop prefer-global' * Check that 'set ipv6 next-hop prefer-global' rule has 'on-match' next
This commit is contained in:
parent
98d749128a
commit
fd87ba0aee
@ -36,6 +36,7 @@ route-map TO_BGP_PEER_V4 permit 100
|
|||||||
!
|
!
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 1
|
route-map FROM_BGP_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 100
|
route-map FROM_BGP_PEER_V6 permit 100
|
||||||
|
@ -9,6 +9,7 @@ route-map TO_BGP_INTERNAL_PEER_V4 permit 100
|
|||||||
!
|
!
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
|
||||||
|
@ -20,6 +20,7 @@ route-map FROM_BGP_PEER_V4 permit 100
|
|||||||
route-map TO_BGP_PEER_V4 permit 100
|
route-map TO_BGP_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 1
|
route-map FROM_BGP_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 100
|
route-map FROM_BGP_PEER_V6 permit 100
|
||||||
|
@ -6,6 +6,7 @@ route-map FROM_BGP_PEER_V4 permit 100
|
|||||||
route-map TO_BGP_PEER_V4 permit 100
|
route-map TO_BGP_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 1
|
route-map FROM_BGP_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 100
|
route-map FROM_BGP_PEER_V6 permit 100
|
||||||
|
@ -20,6 +20,7 @@ route-map FROM_BGP_PEER_V4 permit 100
|
|||||||
route-map TO_BGP_PEER_V4 permit 100
|
route-map TO_BGP_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 1
|
route-map FROM_BGP_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_PEER_V6 permit 100
|
route-map FROM_BGP_PEER_V6 permit 100
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/instance.conf.j2
|
! template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
neighbor 10.10.10.10 remote-as 555
|
neighbor 10.10.10.10 remote-as 555
|
||||||
neighbor 10.10.10.10 description remote_peer
|
neighbor 10.10.10.10 description remote_peer
|
||||||
@ -12,5 +12,5 @@
|
|||||||
neighbor 10.10.10.10 activate
|
neighbor 10.10.10.10 activate
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/instance.conf.j2
|
! end of template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/instance.conf.j2
|
! template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
neighbor fc::10 remote-as 555
|
neighbor fc::10 remote-as 555
|
||||||
neighbor fc::10 description remote_peer
|
neighbor fc::10 description remote_peer
|
||||||
@ -12,5 +12,5 @@
|
|||||||
neighbor fc::10 activate
|
neighbor fc::10 activate
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/instance.conf.j2
|
! end of template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/instance.conf.j2
|
! template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
neighbor 10.10.10.10 remote-as 555
|
neighbor 10.10.10.10 remote-as 555
|
||||||
neighbor 10.10.10.10 description remote_peer
|
neighbor 10.10.10.10 description remote_peer
|
||||||
@ -10,5 +10,5 @@
|
|||||||
neighbor 10.10.10.10 activate
|
neighbor 10.10.10.10 activate
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/instance.conf.j2
|
! end of template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/instance.conf.j2
|
! template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
neighbor fc::10 remote-as 555
|
neighbor fc::10 remote-as 555
|
||||||
neighbor fc::10 description remote_peer
|
neighbor fc::10 description remote_peer
|
||||||
@ -10,5 +10,5 @@
|
|||||||
neighbor fc::10 activate
|
neighbor fc::10 activate
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/instance.conf.j2
|
! end of template: bgpd/templates/internal/instance.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/peer-group.conf.j2
|
! template: bgpd/templates/internal/peer-group.conf.j2
|
||||||
!
|
!
|
||||||
neighbor INTERNAL_PEER_V4 peer-group
|
neighbor INTERNAL_PEER_V4 peer-group
|
||||||
neighbor INTERNAL_PEER_V6 peer-group
|
neighbor INTERNAL_PEER_V6 peer-group
|
||||||
@ -16,5 +16,5 @@
|
|||||||
neighbor INTERNAL_PEER_V6 route-map TO_BGP_INTERNAL_PEER_V6 out
|
neighbor INTERNAL_PEER_V6 route-map TO_BGP_INTERNAL_PEER_V6 out
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/peer-group.conf.j2
|
! end of template: bgpd/templates/internal/peer-group.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/peer-group.conf.j2
|
! template: bgpd/templates/internal/peer-group.conf.j2
|
||||||
!
|
!
|
||||||
neighbor INTERNAL_PEER_V4 peer-group
|
neighbor INTERNAL_PEER_V4 peer-group
|
||||||
neighbor INTERNAL_PEER_V6 peer-group
|
neighbor INTERNAL_PEER_V6 peer-group
|
||||||
@ -14,5 +14,5 @@
|
|||||||
neighbor INTERNAL_PEER_V6 route-map TO_BGP_INTERNAL_PEER_V6 out
|
neighbor INTERNAL_PEER_V6 route-map TO_BGP_INTERNAL_PEER_V6 out
|
||||||
exit-address-family
|
exit-address-family
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/peer-group.conf.j2
|
! end of template: bgpd/templates/internal/peer-group.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/policies.conf.j2
|
! template: bgpd/templates/internal/policies.conf.j2
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
|
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
|
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
|
||||||
@ -18,5 +19,5 @@ route-map FROM_BGP_INTERNAL_PEER_V4 permit 2
|
|||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 2
|
||||||
set originator-id 10.10.10.10
|
set originator-id 10.10.10.10
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/policies.conf.j2
|
! end of template: bgpd/templates/internal/policies.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
!
|
!
|
||||||
! template: bgpd/templates/general/policies.conf.j2
|
! template: bgpd/templates/internal/policies.conf.j2
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
|
route-map FROM_BGP_INTERNAL_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
|
route-map TO_BGP_INTERNAL_PEER_V4 permit 100
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 1
|
||||||
|
on-match next
|
||||||
set ipv6 next-hop prefer-global
|
set ipv6 next-hop prefer-global
|
||||||
!
|
!
|
||||||
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
|
route-map FROM_BGP_INTERNAL_PEER_V6 permit 100
|
||||||
!
|
!
|
||||||
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
|
route-map TO_BGP_INTERNAL_PEER_V6 permit 100
|
||||||
!
|
!
|
||||||
! end of template: bgpd/templates/general/policies.conf.j2
|
! end of template: bgpd/templates/internal/policies.conf.j2
|
||||||
!
|
!
|
||||||
|
@ -79,6 +79,7 @@ def extract_rm_from_peer_group(path, peer_group_name):
|
|||||||
def check_routemap_in_file(filename, route_map_name):
|
def check_routemap_in_file(filename, route_map_name):
|
||||||
route_map_re = re.compile(r'^route-map\s+%s\s+permit\s+(\d+)' % route_map_name)
|
route_map_re = re.compile(r'^route-map\s+%s\s+permit\s+(\d+)' % route_map_name)
|
||||||
set_re = re.compile(r'set ipv6 next-hop prefer-global')
|
set_re = re.compile(r'set ipv6 next-hop prefer-global')
|
||||||
|
next_re = re.compile(r'on-match next')
|
||||||
with open(filename) as fp:
|
with open(filename) as fp:
|
||||||
lines = [line.strip() for line in fp if not line.strip().startswith('!') and line.strip() != '']
|
lines = [line.strip() for line in fp if not line.strip().startswith('!') and line.strip() != '']
|
||||||
found_entry = False
|
found_entry = False
|
||||||
@ -86,7 +87,11 @@ def check_routemap_in_file(filename, route_map_name):
|
|||||||
route_map_entries = {}
|
route_map_entries = {}
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if found_entry:
|
if found_entry:
|
||||||
route_map_entries[found_seq_no] = set_re.match(line) is not None
|
if set_re.match(line):
|
||||||
|
route_map_entries[found_seq_no][0] = True
|
||||||
|
elif next_re.match(line):
|
||||||
|
route_map_entries[found_seq_no][1] = True
|
||||||
|
else:
|
||||||
found_entry = False
|
found_entry = False
|
||||||
found_seq_no = None
|
found_seq_no = None
|
||||||
if route_map_re.match(line):
|
if route_map_re.match(line):
|
||||||
@ -96,11 +101,12 @@ def check_routemap_in_file(filename, route_map_name):
|
|||||||
found_seq_no = int(seq_n_txt)
|
found_seq_no = int(seq_n_txt)
|
||||||
assert found_seq_no not in route_map_entries, "Route-map has duplicate entries: %s - %d" % (route_map_name, found_seq_no)
|
assert found_seq_no not in route_map_entries, "Route-map has duplicate entries: %s - %d" % (route_map_name, found_seq_no)
|
||||||
found_entry = True
|
found_entry = True
|
||||||
|
route_map_entries[found_seq_no] = [False, False]
|
||||||
results = [route_map_entries[seq] for seq in sorted(route_map_entries.keys())]
|
results = [route_map_entries[seq] for seq in sorted(route_map_entries.keys())]
|
||||||
if (len(results)):
|
|
||||||
err_msg = "route-map %s doesn't have mandatory permit entry for 'set ipv6 next-hop prefer-global" % route_map_name
|
err_msg = "route-map %s doesn't have mandatory permit entry for 'set ipv6 next-hop prefer-global" % route_map_name
|
||||||
assert results[0], err_msg
|
assert len(results), err_msg
|
||||||
return len(results) > 0
|
assert all(results[0]), "first ipv6 route-map entry doesn't have set ipv6 nexthop"
|
||||||
|
return True
|
||||||
|
|
||||||
def check_routemap(path, route_map_name):
|
def check_routemap(path, route_map_name):
|
||||||
result_files = load_results(path, "policies.conf")
|
result_files = load_results(path, "policies.conf")
|
||||||
|
Loading…
Reference in New Issue
Block a user