1*7f071998SChris Mi#!/usr/bin/python3 2*7f071998SChris Mi 3*7f071998SChris Mi""" 4*7f071998SChris Mitdc_batch.py - a script to generate TC batch file 5*7f071998SChris Mi 6*7f071998SChris MiCopyright (C) 2017 Chris Mi <chrism@mellanox.com> 7*7f071998SChris Mi""" 8*7f071998SChris Mi 9*7f071998SChris Miimport argparse 10*7f071998SChris Mi 11*7f071998SChris Miparser = argparse.ArgumentParser(description='TC batch file generator') 12*7f071998SChris Miparser.add_argument("device", help="device name") 13*7f071998SChris Miparser.add_argument("file", help="batch file name") 14*7f071998SChris Miparser.add_argument("-n", "--number", type=int, 15*7f071998SChris Mi help="how many lines in batch file") 16*7f071998SChris Miparser.add_argument("-o", "--skip_sw", 17*7f071998SChris Mi help="skip_sw (offload), by default skip_hw", 18*7f071998SChris Mi action="store_true") 19*7f071998SChris Miparser.add_argument("-s", "--share_action", 20*7f071998SChris Mi help="all filters share the same action", 21*7f071998SChris Mi action="store_true") 22*7f071998SChris Miparser.add_argument("-p", "--prio", 23*7f071998SChris Mi help="all filters have different prio", 24*7f071998SChris Mi action="store_true") 25*7f071998SChris Miargs = parser.parse_args() 26*7f071998SChris Mi 27*7f071998SChris Midevice = args.device 28*7f071998SChris Mifile = open(args.file, 'w') 29*7f071998SChris Mi 30*7f071998SChris Minumber = 1 31*7f071998SChris Miif args.number: 32*7f071998SChris Mi number = args.number 33*7f071998SChris Mi 34*7f071998SChris Miskip = "skip_hw" 35*7f071998SChris Miif args.skip_sw: 36*7f071998SChris Mi skip = "skip_sw" 37*7f071998SChris Mi 38*7f071998SChris Mishare_action = "" 39*7f071998SChris Miif args.share_action: 40*7f071998SChris Mi share_action = "index 1" 41*7f071998SChris Mi 42*7f071998SChris Miprio = "prio 1" 43*7f071998SChris Miif args.prio: 44*7f071998SChris Mi prio = "" 45*7f071998SChris Mi if number > 0x4000: 46*7f071998SChris Mi number = 0x4000 47*7f071998SChris Mi 48*7f071998SChris Miindex = 0 49*7f071998SChris Mifor i in range(0x100): 50*7f071998SChris Mi for j in range(0x100): 51*7f071998SChris Mi for k in range(0x100): 52*7f071998SChris Mi mac = ("%02x:%02x:%02x" % (i, j, k)) 53*7f071998SChris Mi src_mac = "e4:11:00:" + mac 54*7f071998SChris Mi dst_mac = "e4:12:00:" + mac 55*7f071998SChris Mi cmd = ("filter add dev %s %s protocol ip parent ffff: flower %s " 56*7f071998SChris Mi "src_mac %s dst_mac %s action drop %s" % 57*7f071998SChris Mi (device, prio, skip, src_mac, dst_mac, share_action)) 58*7f071998SChris Mi file.write("%s\n" % cmd) 59*7f071998SChris Mi index += 1 60*7f071998SChris Mi if index >= number: 61*7f071998SChris Mi file.close() 62*7f071998SChris Mi exit(0) 63