17f071998SChris Mi#!/usr/bin/python3 27f071998SChris Mi 37f071998SChris Mi""" 47f071998SChris Mitdc_batch.py - a script to generate TC batch file 57f071998SChris Mi 67f071998SChris MiCopyright (C) 2017 Chris Mi <chrism@mellanox.com> 77f071998SChris Mi""" 87f071998SChris Mi 97f071998SChris Miimport argparse 107f071998SChris Mi 117f071998SChris Miparser = argparse.ArgumentParser(description='TC batch file generator') 127f071998SChris Miparser.add_argument("device", help="device name") 137f071998SChris Miparser.add_argument("file", help="batch file name") 147f071998SChris Miparser.add_argument("-n", "--number", type=int, 157f071998SChris Mi help="how many lines in batch file") 167f071998SChris Miparser.add_argument("-o", "--skip_sw", 177f071998SChris Mi help="skip_sw (offload), by default skip_hw", 187f071998SChris Mi action="store_true") 197f071998SChris Miparser.add_argument("-s", "--share_action", 207f071998SChris Mi help="all filters share the same action", 217f071998SChris Mi action="store_true") 227f071998SChris Miparser.add_argument("-p", "--prio", 237f071998SChris Mi help="all filters have different prio", 247f071998SChris Mi action="store_true") 257f071998SChris Miargs = parser.parse_args() 267f071998SChris Mi 277f071998SChris Midevice = args.device 287f071998SChris Mifile = open(args.file, 'w') 297f071998SChris Mi 307f071998SChris Minumber = 1 317f071998SChris Miif args.number: 327f071998SChris Mi number = args.number 337f071998SChris Mi 347f071998SChris Miskip = "skip_hw" 357f071998SChris Miif args.skip_sw: 367f071998SChris Mi skip = "skip_sw" 377f071998SChris Mi 387f071998SChris Mishare_action = "" 397f071998SChris Miif args.share_action: 407f071998SChris Mi share_action = "index 1" 417f071998SChris Mi 427f071998SChris Miprio = "prio 1" 437f071998SChris Miif args.prio: 447f071998SChris Mi prio = "" 457f071998SChris Mi if number > 0x4000: 467f071998SChris Mi number = 0x4000 477f071998SChris Mi 487f071998SChris Miindex = 0 497f071998SChris Mifor i in range(0x100): 507f071998SChris Mi for j in range(0x100): 517f071998SChris Mi for k in range(0x100): 527f071998SChris Mi mac = ("%02x:%02x:%02x" % (i, j, k)) 537f071998SChris Mi src_mac = "e4:11:00:" + mac 547f071998SChris Mi dst_mac = "e4:12:00:" + mac 557f071998SChris Mi cmd = ("filter add dev %s %s protocol ip parent ffff: flower %s " 567f071998SChris Mi "src_mac %s dst_mac %s action drop %s" % 577f071998SChris Mi (device, prio, skip, src_mac, dst_mac, share_action)) 587f071998SChris Mi file.write("%s\n" % cmd) 597f071998SChris Mi index += 1 607f071998SChris Mi if index >= number: 617f071998SChris Mi file.close() 627f071998SChris Mi exit(0) 63