]> git.proxmox.com Git - mirror_frr.git/blob - tools/fixup-deprecated.py
doc: Add `show ipv6 rpf X:X::X:X` command to docs
[mirror_frr.git] / tools / fixup-deprecated.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 #
4 # Script used to replace deprecated quagga/frr mactors/types/etc.
5 #
6 # loosly based on indent.py, 2017 by David Lamparter
7 # 2018 by Lou Berger, placed in public domain
8
9 import sys, re, subprocess, os
10
11
12 class replaceEntry:
13 compiled = None # compiled regex
14 repl = None # regex
15
16 def __init__(self, c, r):
17 self.compiled = c
18 self.repl = r
19
20
21 rList = [
22 # old #define VNL, VTYNL, VTY_NEWLINE
23 replaceEntry(re.compile(r"(VNL|VTYNL|VTY_NEWLINE)"), r'"\\n"'),
24 # old #define VTY_GET_INTEGER(desc, v, str)
25 # old #define VTY_GET_INTEGER_RANGE(desc, v, str, min, max)
26 # old #define VTY_GET_ULONG(desc, v, str)
27 replaceEntry(
28 re.compile(
29 r"(VTY_GET_INTEGER(_RANGE|)|VTY_GET_ULONG)[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;",
30 re.M | re.S,
31 ),
32 r"(\4) = strtoul((\5), NULL, 10);\t/* \3 */",
33 ),
34 # old #define VTY_GET_ULL(desc, v, str)
35 replaceEntry(
36 re.compile(
37 r"VTY_GET_ULL[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;",
38 re.M | re.S,
39 ),
40 r"(\2) = strtoull((\3), NULL, 10);\t/* \1 */",
41 ),
42 # old #define VTY_GET_IPV4_ADDRESS(desc, v, str)
43 replaceEntry(
44 re.compile(
45 r"VTY_GET_IPV4_ADDRESS[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;",
46 re.M | re.S,
47 ),
48 r"inet_aton((\3), &(\2));\t/* \1 */",
49 ),
50 # old #define VTY_GET_IPV4_PREFIX(desc, v, str)
51 replaceEntry(
52 re.compile(
53 r"VTY_GET_IPV4_PREFIX[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;",
54 re.M | re.S,
55 ),
56 r"str2prefix_ipv4((\3), &(\2));\t/* \1 */",
57 ),
58 # old #define vty_outln(vty, str, ...)
59 replaceEntry(
60 re.compile(r'vty_outln[\s\(]*(.*?)\s*,\s*(".*?"|.*?)\s*(\)|,)', re.M | re.S),
61 r'vty_out(\1, \2 "\\n"\3',
62 ),
63 ]
64
65
66 def fixup_file(fn):
67 with open(fn, "r") as fd:
68 text = fd.read()
69
70 for re in rList:
71 text = re.compiled.sub(re.repl, text)
72
73 tmpname = fn + ".fixup"
74 with open(tmpname, "w") as ofd:
75 ofd.write(text)
76 os.rename(tmpname, fn)
77
78
79 if __name__ == "__main__":
80 for fn in sys.argv[1:]:
81 fixup_file(fn)