diff options
author | 2016-08-11 16:59:29 +0300 | |
---|---|---|
committer | 2016-08-11 16:59:29 +0300 | |
commit | 72171290152897fac1a149fe4f9d1cbf0ae914c4 (patch) | |
tree | 264720682c55f2dbae2e38128ebc6ce7ae22ecca /scripts/automation/trex_control_plane/stl/examples | |
parent | 7aa248272fb7687f6cfd84a1414ddee4f0a47369 (diff) |
1)removed unnecessary files from repository
2)fixed bug in checking update of data-base
Diffstat (limited to 'scripts/automation/trex_control_plane/stl/examples')
-rwxr-xr-x | scripts/automation/trex_control_plane/stl/examples/scapy_server.py | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/scripts/automation/trex_control_plane/stl/examples/scapy_server.py b/scripts/automation/trex_control_plane/stl/examples/scapy_server.py deleted file mode 100755 index 55f7cb54..00000000 --- a/scripts/automation/trex_control_plane/stl/examples/scapy_server.py +++ /dev/null @@ -1,277 +0,0 @@ -import stl_path -import trex_stl_lib -from trex_stl_lib.api import * -from copy import deepcopy -import sys -import tempfile -import md5 - -#print ls() - -from cStringIO import StringIO -import sys -""" -old_stdout = sys.stdout -sys.stdout = mystdout = StringIO() - -ls() - -sys.stdout = old_stdout - -a= mystdout.getvalue() - -f = open('scapy_supported_formats.txt','w') -f.write(a) -f.close() -""" -#-------------------------------------------------------TREE IMPLEMENTATION ------------------------ -class node(object): - def __init__(self, value):#, children = []): - self.value = value - self.children = [] - - def __str__(self, level=0): - ret = "\t"*level+repr(self.value)+"\n" - for child in self.children: - ret += child.__str__(level+1) - return ret -#---------------------------------------------------------------------------------------------------- - - -def build_lib(): - lib = protocol_struct() - lib = lib.split('\n') - all_protocols=[] - for entry in lib: - entry = entry.split(':') - all_protocols.append(entry[0].strip()) - del all_protocols[len(all_protocols)-1] - return all_protocols - -def protocol_struct(protocol=''): - if '_' in protocol: - return [] - if not protocol=='': - if protocol not in all_protocols: - return 'protocol not supported' - protocol = eval(protocol) - old_stdout = sys.stdout - sys.stdout = mystdout = StringIO() - if not protocol=='': - ls(protocol) - else: - ls() - sys.stdout = old_stdout - a= mystdout.getvalue() -# print a - return a - -def parse_description_line(line): - line_arr = [x.strip() for x in re.split(': | = ',line)] - return tuple(line_arr) - -def parse_entire_description(d): - d = d.split('\n') - description_list = [parse_description_line(x) for x in d] - del description_list[len(description_list)-1] - return description_list - -def get_protocol_details(p_name): - protocol_str = protocol_struct(p_name) - if protocol_str=='protocol not supported': - return 'protocol not supported' - if len(protocol_str) is 0: - return [] - tupled_protocol = parse_entire_description(protocol_str) - return tupled_protocol - - -class scapyRegex: - def __init__(self,FieldName,regex='empty'): - self.FieldName = FieldName - self.regex = regex - - def stringRegex(self): - return self.regex - -all_protocols = build_lib() - -Raw = {'Raw':''} -high_level_protocols = ['Raw'] -transport_protocols = {'TCP':Raw,'UDP':Raw} -network_protocols = {'IP':transport_protocols ,'ARP':''} -low_level_protocols = { 'Ether': network_protocols } -regexDB= {'MACField' : scapyRegex('MACField','^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$'), - 'IPField' : scapyRegex('IPField','^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$')} - - -def build_nodes(data,dictionary): - n = node(data) - if len(dictionary)==0: - n.children=[] - return n - for obj in dictionary.keys(): - if not (obj==''): - x = build_nodes(obj,dictionary[obj]) - n.children.append(x) - return n - -def build_tree(): - root = node('ALL') - root.children = [] - root = build_nodes('ALL',low_level_protocols) - return root - -protocol_tree = build_tree() - -def print_tree(root,level=0): - output = "\t"*level+str(root.value) - print output - if len(root.children)==0: - return - for child in root.children: - print_tree(child,level+1) - -def get_all_protocols(): - return json.dumps(all_protocols) - -def get_tree(): - old_stdout = sys.stdout - sys.stdout = mystdout = StringIO() - print_tree(t) - sys.stdout = old_stdout - a= mystdout.getvalue() - return json.dumps(a) - -def get_all_db(): - db = {} - for pro in all_protocols: - details = get_protocol_details(pro) - db[pro] = json.dumps(details) - return db - -def get_all_fields(): - fields = [] - for pro in all_protocols: - details = get_protocol_details(pro) - for i in range(0,len(details),1): - if len(details[i]) is 3: - fields.append(details[i][1]) - uniqeFields = list(set(fields)) - fieldDict = {} - for f in uniqeFields: - if f in regexDB: - fieldDict[f] = regexDB[f].stringRegex() - else: - fieldDict[f] = scapyRegex(f).stringRegex() - return fieldDict - - -class pktResult: - def __init__(self,result,errorCode,errorDesc): - self.result = result - self.errorCode = errorCode - self.errorDesc = errorDesc - - def convert2tuple(self): - return tuple([self.result,self.errorCode,self.errorDesc]) - - - -# pkt_descriptor in JSON format only! -# returned tuple in JSON format: (pktResultTuple , show2data, hexdump(buffer)) -# pktResultTuple is: ( result, errorCode, error description ) - -def build_pkt(pkt_descriptor): - try: - pkt = eval(json.loads(pkt_descriptor)) - old_stdout = sys.stdout - sys.stdout = mystdout = StringIO() - pkt.show2() - sys.stdout = old_stdout - show2data = mystdout.getvalue() #show2 data - bufferData = str(pkt) #pkt buffer - bufferData = bufferData.encode('base64') - pktRes = pktResult('Success',0,'None').convert2tuple() - res = [pktRes,json.dumps(show2data),json.dumps(bufferData)] - JSONres = json.dumps(res) - return JSONres - except: - pktRes = pktResult('Pkt build Failed',str(sys.exc_info()[0]),str(sys.exc_info()[1])).convert2tuple() - res = [pktRes,[],[]] - res = json.dumps(res) - return res - -#input: container -#output: md5 in json format encoded in base64 -def getMD5(container): - resMD5 = md5.new(json.dumps(container)) - resMD5 = json.dumps(resMD5.digest().encode('base64')) - return resMD5 - - -def get_all(): - fields=get_all_fields() - db=get_all_db() - fieldMD5 = getMD5(fields) - dbMD5 = getMD5(db) - res = {} - res['db'] = db - res['fields'] = fields - res['DB_md5'] = dbMD5 -# print dbMD5 - res['fields_md5'] = fieldMD5 - return json.dumps(res) - -#input in json string encoded base64 -def check_update(dbMD5,fieldMD5): - fields=get_all_fields() - db=get_all_db() - currentDBMD5 = json.loads(getMD5(db)) - currentFieldMD5 = json.loads(getMD5(fields)) - dbMD5_parsed = json.loads(dbMD5) - fieldMD5_parsed = json.loads(fieldMD5) - res = [] -# print 'this is current DB MD5: %s ' % currentDBMD5 -# print 'this is given DB MD5: %s ' % dbMD5_parsed - if fieldMD5_parsed == currentFieldMD5: - resField = pktResult('Success',0,'None').convert2tuple() - else: - resField = pktResult('Fail',-1,'Field DB is not up to date').convert2tuple() - if dbMD5_parsed == currentDBMD5: - resDB = pktResult('Success',0,'None').convert2tuple() - else: - resDB = pktResult('Fail',-1,'Protocol DB is not up to date').convert2tuple() - return json.dumps([resField,resDB]) - -#pkt_desc as json -#dictionary of offsets per protocol. tuple for each field: (name, offset, size) at json format -def get_all_pkt_offsets(pkt_desc): - pkt_desc= json.loads(pkt_desc) - try: - pkt_protocols = pkt_desc.split('/') - scapy_pkt = eval(pkt_desc) - total_protocols = len(pkt_protocols) - res = {} - for i in range(total_protocols): - fields = [] - for field in scapy_pkt.fields_desc: - size = field.get_size_bytes() - if field.name is 'load': - size = len(scapy_pkt) - fields.append([field.name, field.offset, size]) - res[pkt_protocols[i]] = fields - scapy_pkt=scapy_pkt.payload - pktRes = pktResult('Success',0,'None').convert2tuple() - FinalRes = [pktRes,res] - return json.dumps(FinalRes) - except: - pktRes = pktResult('Pkt build Failed',str(sys.exc_info()[0]),str(sys.exc_info()[1])).convert2tuple() - res = [pktRes,{}] - res = json.dumps(res) - return res - - - - - |