Add script to generate is_aspa_invalid_pair for bird

This commit is contained in:
Quantum 2024-10-29 01:37:50 -04:00
parent a1dd233e78
commit 8395181020
2 changed files with 51 additions and 0 deletions

30
aspa/generate.py Normal file
View file

@ -0,0 +1,30 @@
from aspa.data import ASPA
def generate_bird(aspas: list[ASPA]) -> str:
lines = [
'function is_aspa_invalid_pair(int upstream_asn; int downstream_asn) {',
' case downstream_asn {'
]
for aspa in aspas:
if not aspa.providers:
lines.append(f' {aspa.customer}: return true;')
continue
lines.append(f' {aspa.customer}: case upstream_asn {{')
for provider in aspa.providers:
lines.append(f' {provider}: {{}}')
lines += [
' else: return true;',
' }'
]
lines += [
' }',
' return false;',
'}'
]
return '\n'.join(lines)

21
make-bird-aspa Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env python3
import argparse
from aspa.data import parse_json
from aspa.generate import generate_bird
def main():
parser = argparse.ArgumentParser(description='Generates is_aspa_invalid_pair function for bird')
parser.add_argument('aspa_json', type=str, help='the JSON file with ASPA data')
args = parser.parse_args()
with open(args.aspa_json) as f:
aspas = parse_json(f.read())
print(generate_bird(aspas))
if __name__ == '__main__':
main()