1*4882a593Smuzhiyun#!/usr/bin/env python3 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyun""" 4*4882a593Smuzhiyuntdc_multibatch.py - a thin wrapper over tdc_batch.py to generate multiple batch 5*4882a593Smuzhiyunfiles 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunCopyright (C) 2019 Vlad Buslov <vladbu@mellanox.com> 8*4882a593Smuzhiyun""" 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunimport argparse 11*4882a593Smuzhiyunimport os 12*4882a593Smuzhiyun 13*4882a593Smuzhiyunparser = argparse.ArgumentParser( 14*4882a593Smuzhiyun description='TC multiple batch file generator') 15*4882a593Smuzhiyunparser.add_argument("device", help="device name") 16*4882a593Smuzhiyunparser.add_argument("dir", help="where to put batch files") 17*4882a593Smuzhiyunparser.add_argument( 18*4882a593Smuzhiyun "num_filters", type=int, help="how many lines per batch file") 19*4882a593Smuzhiyunparser.add_argument("num_files", type=int, help="how many batch files") 20*4882a593Smuzhiyunparser.add_argument( 21*4882a593Smuzhiyun "operation", 22*4882a593Smuzhiyun choices=['add', 'del', 'replace'], 23*4882a593Smuzhiyun help="operation to perform on filters") 24*4882a593Smuzhiyunparser.add_argument( 25*4882a593Smuzhiyun "-x", 26*4882a593Smuzhiyun "--file_prefix", 27*4882a593Smuzhiyun default="", 28*4882a593Smuzhiyun help="prefix for generated batch file names") 29*4882a593Smuzhiyunparser.add_argument( 30*4882a593Smuzhiyun "-d", 31*4882a593Smuzhiyun "--duplicate_handles", 32*4882a593Smuzhiyun action="store_true", 33*4882a593Smuzhiyun help="duplicate filter handle range in all files") 34*4882a593Smuzhiyunparser.add_argument( 35*4882a593Smuzhiyun "-a", 36*4882a593Smuzhiyun "--handle_start", 37*4882a593Smuzhiyun type=int, 38*4882a593Smuzhiyun default=1, 39*4882a593Smuzhiyun help="start handle range from (default: 1)") 40*4882a593Smuzhiyunparser.add_argument( 41*4882a593Smuzhiyun "-m", 42*4882a593Smuzhiyun "--mac_prefix", 43*4882a593Smuzhiyun type=int, 44*4882a593Smuzhiyun default=0, 45*4882a593Smuzhiyun choices=range(0, 256), 46*4882a593Smuzhiyun help="add this value to third byte of source MAC address of flower filter" 47*4882a593Smuzhiyun "(default: 0)") 48*4882a593Smuzhiyunargs = parser.parse_args() 49*4882a593Smuzhiyun 50*4882a593Smuzhiyundevice = args.device 51*4882a593Smuzhiyundir = args.dir 52*4882a593Smuzhiyunfile_prefix = args.file_prefix + args.operation + "_" 53*4882a593Smuzhiyunnum_filters = args.num_filters 54*4882a593Smuzhiyunnum_files = args.num_files 55*4882a593Smuzhiyunoperation = args.operation 56*4882a593Smuzhiyunduplicate_handles = args.duplicate_handles 57*4882a593Smuzhiyunhandle = args.handle_start 58*4882a593Smuzhiyunmac_prefix = args.mac_prefix 59*4882a593Smuzhiyun 60*4882a593Smuzhiyunfor i in range(num_files): 61*4882a593Smuzhiyun file = dir + '/' + file_prefix + str(i) 62*4882a593Smuzhiyun os.system("./tdc_batch.py -n {} -a {} -e {} -m {} {} {}".format( 63*4882a593Smuzhiyun num_filters, handle, operation, i + mac_prefix, device, file)) 64*4882a593Smuzhiyun if not duplicate_handles: 65*4882a593Smuzhiyun handle += num_filters 66