mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 04:45:32 +00:00 
			
		
		
		
	Initial deprecated macros are: #define VNL #define VTYNL #define VTY_NEWLINE #define VTY_GET_INTEGER(desc, v, str) #define VTY_GET_INTEGER_RANGE(desc, v, str, min, max) #define VTY_GET_ULONG(desc, v, str) #define VTY_GET_ULL(desc, v, str) #define VTY_GET_IPV4_ADDRESS(desc, v, str) #define VTY_GET_IPV4_PREFIX(desc, v, str) #define vty_outln(vty, str, ...) Signed-off-by: Lou Berger <lberger@labn.net>
		
			
				
	
	
		
			56 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
# -*- coding: utf-8 -*-
 | 
						|
#
 | 
						|
# Script used to replace deprecated quagga/frr mactors/types/etc.
 | 
						|
#
 | 
						|
# loosly based on indent.py, 2017 by David Lamparter
 | 
						|
# 2018 by Lou Berger, placed in public domain
 | 
						|
 | 
						|
import sys, re, subprocess, os
 | 
						|
 | 
						|
class replaceEntry:
 | 
						|
    compiled = None    #compiled regex
 | 
						|
    repl    = None     #regex
 | 
						|
    def __init__(self, c, r):
 | 
						|
        self.compiled = c
 | 
						|
        self.repl = r
 | 
						|
 | 
						|
rList = [
 | 
						|
    # old #define VNL, VTYNL, VTY_NEWLINE
 | 
						|
    replaceEntry(re.compile(r'(VNL|VTYNL|VTY_NEWLINE)'),
 | 
						|
                 r'"\\n"'),
 | 
						|
    # old #define VTY_GET_INTEGER(desc, v, str)
 | 
						|
    # old #define VTY_GET_INTEGER_RANGE(desc, v, str, min, max)
 | 
						|
    # old #define VTY_GET_ULONG(desc, v, str)
 | 
						|
    replaceEntry(re.compile(r'(VTY_GET_INTEGER(_RANGE|)|VTY_GET_ULONG)[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;', re.M | re.S),
 | 
						|
                 r'(\4) = strtoul((\5), NULL, 10);\t/* \3 */'),
 | 
						|
    # old #define VTY_GET_ULL(desc, v, str)
 | 
						|
    replaceEntry(re.compile(r'VTY_GET_ULL[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;', re.M | re.S),
 | 
						|
                 r'(\2) = strtoull((\3), NULL, 10);\t/* \1 */'),
 | 
						|
    # old #define VTY_GET_IPV4_ADDRESS(desc, v, str)
 | 
						|
    replaceEntry(re.compile(r'VTY_GET_IPV4_ADDRESS[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;', re.M | re.S),
 | 
						|
                 r'inet_aton((\3), &(\2));\t/* \1 */'),
 | 
						|
    # old #define VTY_GET_IPV4_PREFIX(desc, v, str)
 | 
						|
    replaceEntry(re.compile(r'VTY_GET_IPV4_PREFIX[\s\(]*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)(\s*|)(\)|,).*?;', re.M | re.S),
 | 
						|
                 r'str2prefix_ipv4((\3), &(\2));\t/* \1 */'),
 | 
						|
    # old #define vty_outln(vty, str, ...)
 | 
						|
    replaceEntry(re.compile(r'vty_outln[\s\(]*(.*?)\s*,\s*(".*?"|.*?)\s*(\)|,)', re.M | re.S),
 | 
						|
                 r'vty_out(\1, \2 "\\n"\3'),
 | 
						|
        ]
 | 
						|
 | 
						|
def fixup_file(fn):
 | 
						|
    with open(fn, 'r') as fd:
 | 
						|
        text = fd.read()
 | 
						|
 | 
						|
        for re in rList:
 | 
						|
            text = re.compiled.sub(re.repl,text)
 | 
						|
 | 
						|
        tmpname = fn + '.fixup'
 | 
						|
        with open(tmpname, 'w') as ofd:
 | 
						|
            ofd.write(text)
 | 
						|
        os.rename(tmpname, fn)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    for fn in sys.argv[1:]:
 | 
						|
        fixup_file(fn)
 |