def get_flow_entry( self, flow_table=None, index=None, source_ip=None, dest_ip=None, source_port=None, dest_port=None, proto=None, vrf_id=None, refresh=True, evicted=True): ''' Returns tuple of forward and reverse flow instances of FlowEntry class Returns (None, None) if not found ''' reqd_entries = {} forward_flow = None reverse_flow = None if refresh or not flow_table: flow_table = self.get_flow_table(index=index, refresh=refresh, evicted=evicted) if index: reqd_entries['index'] = index if source_ip: reqd_entries['sip'] = source_ip if dest_ip: reqd_entries['dip'] = dest_ip if source_port: reqd_entries['sport'] = str(source_port) if dest_port: reqd_entries['dport'] = str(dest_port) if proto: reqd_entries['proto'] = PROTO_MAP[proto] if vrf_id: reqd_entries['vrf_id'] = vrf_id for flow_entry_item in flow_table.items: if reqd_entries.viewitems() <= flow_entry_item.viewitems(): forward_flow = FlowEntry(flow_entry_item) if flow_entry_item['rflow'] != '-1': reverse_flow_item = [x for x in flow_table.items if x['index']==forward_flow.r_flow_index][0] reverse_flow = FlowEntry(reverse_flow_item) break self.logger.debug('Forward flow: %s' % (forward_flow.dump() \ if forward_flow else None)) self.logger.debug('Reverse flow: %s' % (reverse_flow.dump() \ if reverse_flow else None)) return (forward_flow, reverse_flow)
def get_flow_entry(self, flow_table=None, index=None, source_ip=None, dest_ip=None, source_port=None, dest_port=None, proto=None, vrf_id=None, refresh=True, show_evicted=True): ''' Returns tuple of forward and reverse flow instances of FlowEntry class Returns (None, None) if not found ''' reqd_entries = {} forward_flow = None reverse_flow = None if refresh or not flow_table: flow_table = self.get_flow_table(index=index, refresh=refresh, show_evicted=show_evicted) if index: reqd_entries['index'] = index if source_ip: reqd_entries['sip'] = source_ip if dest_ip: reqd_entries['dip'] = dest_ip if source_port: reqd_entries['sport'] = str(source_port) if dest_port: reqd_entries['dport'] = str(dest_port) if proto: reqd_entries['proto'] = PROTO_MAP[proto] if vrf_id: reqd_entries['vrf_id'] = vrf_id for flow_entry_item in flow_table.items: if reqd_entries.viewitems() <= flow_entry_item.viewitems(): forward_flow = FlowEntry(flow_entry_item) if flow_entry_item['rflow'] != '-1': reverse_flow_item = [ x for x in flow_table.items if x['index'] == forward_flow.r_flow_index ][0] reverse_flow = FlowEntry(reverse_flow_item) break self.logger.debug('Forward flow: %s' % (forward_flow.dump() \ if forward_flow else None)) self.logger.debug('Reverse flow: %s' % (reverse_flow.dump() \ if reverse_flow else None)) return (forward_flow, reverse_flow)
def get_flow_entry( self, flow_table=None, index=None, source_ip=None, dest_ip=None, source_port=None, dest_port=None, proto=None, vrf_id=None, refresh=True, show_evicted=True, all_flows=False): ''' Returns tuple of forward and reverse flow instances of FlowEntry class Returns (None, None) if not found ''' reqd_entries = {} forward_flow = None reverse_flow = None if refresh or not flow_table: flow_table = self.get_flow_table(index=index, refresh=refresh, show_evicted=show_evicted) if index: reqd_entries['index'] = index if source_ip: reqd_entries['sip'] = source_ip if dest_ip: reqd_entries['dip'] = dest_ip if source_port: reqd_entries['sport'] = str(source_port) if dest_port: reqd_entries['dport'] = str(dest_port) if proto: reqd_entries['proto'] = PROTO_MAP[proto] if vrf_id: reqd_entries['vrf_id'] = vrf_id if all_flows: all_flow_list = [] for flow_entry_item in flow_table.items: if viewitems(reqd_entries) <= viewitems(flow_entry_item): forward_flow = FlowEntry(flow_entry_item) if flow_entry_item['rflow'] != '-1': reverse_flow_item = [x for x in flow_table.items if x['index']==forward_flow.r_flow_index][0] reverse_flow = FlowEntry(reverse_flow_item) if all_flows: all_flow_list.append((forward_flow, reverse_flow)) continue else: self.logger.debug('Forward flow: %s' % (forward_flow.dump() \ if forward_flow else None)) self.logger.debug('Reverse flow: %s' % (reverse_flow.dump() \ if reverse_flow else None)) return (forward_flow, reverse_flow) if all_flows: self.logger.debug('Returns multiple flows, %s, matching flow data as\ list of tuples', all_flow_list) return all_flow_list return (forward_flow, reverse_flow)
def get_flow_entry( self, flow_table=None, index=None, source_ip=None, dest_ip=None, source_port=None, dest_port=None, proto=None, vrf_id=None, refresh=True, show_evicted=True, all_flows=False): ''' Returns tuple of forward and reverse flow instances of FlowEntry class Returns (None, None) if not found ''' reqd_entries = {} forward_flow = None reverse_flow = None if refresh or not flow_table: flow_table = self.get_flow_table(index=index, refresh=refresh, show_evicted=show_evicted) if index: reqd_entries['index'] = index if source_ip: reqd_entries['sip'] = source_ip if dest_ip: reqd_entries['dip'] = dest_ip if source_port: reqd_entries['sport'] = str(source_port) if dest_port: reqd_entries['dport'] = str(dest_port) if proto: reqd_entries['proto'] = PROTO_MAP[proto] if vrf_id: reqd_entries['vrf_id'] = vrf_id if all_flows: all_flow_list = [] for flow_entry_item in flow_table.items: if reqd_entries.viewitems() <= flow_entry_item.viewitems(): forward_flow = FlowEntry(flow_entry_item) if flow_entry_item['rflow'] != '-1': reverse_flow_item = [x for x in flow_table.items if x['index']==forward_flow.r_flow_index][0] reverse_flow = FlowEntry(reverse_flow_item) if all_flows: all_flow_list.append((forward_flow, reverse_flow)) continue else: self.logger.debug('Forward flow: %s' % (forward_flow.dump() \ if forward_flow else None)) self.logger.debug('Reverse flow: %s' % (reverse_flow.dump() \ if reverse_flow else None)) return (forward_flow, reverse_flow) if all_flows: self.logger.debug('Returns multiple flows, %s, matching flow data as\ list of tuples', all_flow_list) return all_flow_list