コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: compute_node_test.py プロジェクト: vvelpula/tf-test
    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)
コード例 #4
0
    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