Example #1
0
    def _AS_to_XML(self, AS_object, pl, aggregate):
        """Converts a given AS number into a prefix list with ipv4/ipv6
        prefixes.
        """

        if aggregate:
            route_list4 = []
            route_list6 = []

            for r in AS_object.route_obj_dir.origin_table.itervalues():
                route_list4.append(r.route)

            for r in AS_object.route_obj_dir.origin_table_v6.itervalues():
                route_list6.append(r.route)

            route_list4 = aggregator.aggregate_prefix_list(route_list4)
            route_list6 = aggregator.aggregate_prefix_list(route_list6)

            for r in route_list4:
                et.SubElement(pl, 'prefix', attrib={'type': "ROUTE"}).text = r

            for r in route_list6:
                et.SubElement(pl, 'prefix', attrib={'type': "ROUTE6"}).text = r

        else:
            for r in AS_object.route_obj_dir.origin_table.itervalues():
                et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route

            for r in AS_object.route_obj_dir.origin_table_v6.itervalues():
                et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route
Example #2
0
    def _AS_to_XML(self, AS_object, pl, aggregate):
        """Converts a given AS number into a prefix list with ipv4/ipv6
        prefixes.
        """

        if aggregate:
            route_list4 = []
            route_list6 = []

            for r in AS_object.route_obj_dir.origin_table.itervalues():
                route_list4.append(r.route)

            for r in AS_object.route_obj_dir.origin_table_v6.itervalues():
                route_list6.append(r.route)

            route_list4 = aggregator.aggregate_prefix_list(route_list4)
            route_list6 = aggregator.aggregate_prefix_list(route_list6)

            for r in route_list4:
                et.SubElement(pl, 'prefix', attrib={'type': "ROUTE"}).text = r

            for r in route_list6:
                et.SubElement(pl, 'prefix', attrib={'type': "ROUTE6"}).text = r

        else:
            for r in AS_object.route_obj_dir.origin_table.itervalues():
                et.SubElement(pl, 'prefix', attrib={
                    'type': r.ROUTE_ATTR
                }).text = r.route

            for r in AS_object.route_obj_dir.origin_table_v6.itervalues():
                et.SubElement(pl, 'prefix', attrib={
                    'type': r.ROUTE_ATTR
                }).text = r.route
Example #3
0
    def _convert_RS_to_dict(self, route_set_object, route_set_object_dir, aggregate):
        """Traverses the tree created by the RSes. Ignores duplicate routes
        and avoids loops.
        """
        route_set_tree = deque([route_set_object.get_key()])
        traversed_route_sets = set()
        traversed_routes = set()

        routes4 = []
        routes6 = []

        while route_set_tree:
            current_set_name = route_set_tree.popleft()
            current_set = route_set_object_dir.data[current_set_name]
            for r in current_set.members.origin_table.itervalues():
                if r.route not in traversed_routes:
                    routes4.append(r.route)
                    traversed_routes.add(r.route)

            for r in current_set.mp_members.origin_table_v6.itervalues():
                if r.route not in traversed_routes:
                    routes6.append(r.route)
                    traversed_routes.add(r.route)

            for child_set in current_set.RSes_dir:
                if child_set not in traversed_route_sets:
                    traversed_route_sets.add(child_set)
                    route_set_tree.append(child_set)

        if aggregate:
            routes4 = aggregator.aggregate_prefix_list(routes4)
            routes6 = aggregator.aggregate_prefix_list(routes6)

        return {'ipv4': routes4, 'ipv6': routes6}
Example #4
0
    def _convert_ASset_to_dict(self, AS_set_object, AS_object_dir, AS_set_object_dir, aggregate):
        """Traverses the tree created by the AS sets. Ignores duplicate ASes
        and avoids loops.
        """
        AS_set_tree = deque([AS_set_object.get_key()])
        traversed_AS_sets = set()
        traversed_ASes = set()

        routes4 = []
        routes6 = []

        while AS_set_tree:
            current_set_name = AS_set_tree.popleft()
            current_set = AS_set_object_dir.data[current_set_name]
            for child_AS in current_set.ASN_members:
                if child_AS not in traversed_ASes:
                    traversed_ASes.add(child_AS)
                    try:
                        self._get_all_AS_routes(AS_object_dir.data[child_AS], routes4, routes6)
                    except KeyError:
                        pass

            for child_set in current_set.AS_set_members:
                if child_set not in traversed_AS_sets:
                    traversed_AS_sets.add(child_set)
                    AS_set_tree.append(child_set)

        if aggregate:
            routes4 = aggregator.aggregate_prefix_list(routes4)
            routes6 = aggregator.aggregate_prefix_list(routes6)

        return {'ipv4': routes4, 'ipv6': routes6}
Example #5
0
    def _convert_RS_to_dict(self, route_set_object, route_set_object_dir,
                            aggregate):
        """Traverses the tree created by the RSes. Ignores duplicate routes
        and avoids loops.
        """
        route_set_tree = deque([route_set_object.get_key()])
        traversed_route_sets = set()
        traversed_routes = set()

        routes4 = []
        routes6 = []

        while route_set_tree:
            current_set_name = route_set_tree.popleft()
            current_set = route_set_object_dir.data[current_set_name]
            for r in current_set.members.origin_table.itervalues():
                if r.route not in traversed_routes:
                    routes4.append(r.route)
                    traversed_routes.add(r.route)

            for r in current_set.mp_members.origin_table_v6.itervalues():
                if r.route not in traversed_routes:
                    routes6.append(r.route)
                    traversed_routes.add(r.route)

            for child_set in current_set.RSes_dir:
                if child_set not in traversed_route_sets:
                    traversed_route_sets.add(child_set)
                    route_set_tree.append(child_set)

        if aggregate:
            routes4 = aggregator.aggregate_prefix_list(routes4)
            routes6 = aggregator.aggregate_prefix_list(routes6)

        return {'ipv4': routes4, 'ipv6': routes6}
Example #6
0
    def _convert_ASset_to_dict(self, AS_set_object, AS_object_dir,
                               AS_set_object_dir, aggregate):
        """Traverses the tree created by the AS sets. Ignores duplicate ASes
        and avoids loops.
        """
        AS_set_tree = deque([AS_set_object.get_key()])
        traversed_AS_sets = set()
        traversed_ASes = set()

        routes4 = []
        routes6 = []

        while AS_set_tree:
            current_set_name = AS_set_tree.popleft()
            current_set = AS_set_object_dir.data[current_set_name]
            for child_AS in current_set.ASN_members:
                if child_AS not in traversed_ASes:
                    traversed_ASes.add(child_AS)
                    try:
                        self._get_all_AS_routes(AS_object_dir.data[child_AS],
                                                routes4, routes6)
                    except KeyError:
                        pass

            for child_set in current_set.AS_set_members:
                if child_set not in traversed_AS_sets:
                    traversed_AS_sets.add(child_set)
                    AS_set_tree.append(child_set)

        if aggregate:
            routes4 = aggregator.aggregate_prefix_list(routes4)
            routes6 = aggregator.aggregate_prefix_list(routes6)

        return {'ipv4': routes4, 'ipv6': routes6}
Example #7
0
    def _convert_AS_to_dict(self, AS_object, aggregate):
        """Converts a given AS number into a dictionary which includes all IPv4 and IPv6 addresses
       """

        routes4 = []
        routes6 = []

        self._get_all_AS_routes(AS_object, routes4, routes6)

        if aggregate:
            routes4 = aggregator.aggregate_prefix_list(routes4)
            routes6 = aggregator.aggregate_prefix_list(routes6)

        return {self.name_prefix + AS_object.origin: {'ipv4': routes4, 'ipv6': routes6}}
Example #8
0
    def _route_set_to_XML(self, route_set_object, route_set_object_dir, pl,
                          aggregate):
        """Traverses the tree created by the RSes. Ignores duplicate routes
        and avoids loops.
        """
        route_set_tree = deque([route_set_object.get_key()])
        traversed_route_sets = set()
        traversed_routes = set()

        route_list4 = []
        route_list6 = []

        while route_set_tree:
            current_set_name = route_set_tree.popleft()
            current_set = route_set_object_dir.data[current_set_name]
            for r in current_set.members.origin_table.itervalues():
                if r.route not in traversed_routes:
                    # et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route
                    route_list4.append(r.route)
                    traversed_routes.add(r.route)

            for r in current_set.mp_members.origin_table_v6.itervalues():
                if r.route not in traversed_routes:
                    # et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route
                    route_list6.append(r.route)
                    traversed_routes.add(r.route)

            for child_set in current_set.RSes_dir:
                if child_set not in traversed_route_sets:
                    traversed_route_sets.add(child_set)
                    route_set_tree.append(child_set)

        if aggregate:
            route_list4 = aggregator.aggregate_prefix_list(route_list4)
            route_list6 = aggregator.aggregate_prefix_list(route_list6)

        for r in route_list4:
            et.SubElement(pl, 'prefix', attrib={'type': ""}).text = r.route

        for r in route_list6:
            et.SubElement(pl, 'prefix', attrib={
                'type': r.ROUTE_ATTR
            }).text = r.route
Example #9
0
    def _convert_AS_to_dict(self, AS_object, aggregate):
        """Converts a given AS number into a dictionary which includes all IPv4 and IPv6 addresses
       """

        routes4 = []
        routes6 = []

        self._get_all_AS_routes(AS_object, routes4, routes6)

        if aggregate:
            routes4 = aggregator.aggregate_prefix_list(routes4)
            routes6 = aggregator.aggregate_prefix_list(routes6)

        return {
            self.name_prefix + AS_object.origin: {
                'ipv4': routes4,
                'ipv6': routes6
            }
        }
Example #10
0
    def _route_set_to_XML(self, route_set_object, route_set_object_dir, pl, aggregate):
        """Traverses the tree created by the RSes. Ignores duplicate routes
        and avoids loops.
        """
        route_set_tree = deque([route_set_object.get_key()])
        traversed_route_sets = set()
        traversed_routes = set()

        route_list4 = []
        route_list6 = []

        while route_set_tree:
            current_set_name = route_set_tree.popleft()
            current_set = route_set_object_dir.data[current_set_name]
            for r in current_set.members.origin_table.itervalues():
                if r.route not in traversed_routes:
                    # et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route
                    route_list4.append(r.route)
                    traversed_routes.add(r.route)

            for r in current_set.mp_members.origin_table_v6.itervalues():
                if r.route not in traversed_routes:
                    # et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route
                    route_list6.append(r.route)
                    traversed_routes.add(r.route)

            for child_set in current_set.RSes_dir:
                if child_set not in traversed_route_sets:
                    traversed_route_sets.add(child_set)
                    route_set_tree.append(child_set)

        if aggregate:
            route_list4 = aggregator.aggregate_prefix_list(route_list4)
            route_list6 = aggregator.aggregate_prefix_list(route_list6)

        for r in route_list4:
            et.SubElement(pl, 'prefix', attrib={'type': ""}).text = r.route

        for r in route_list6:
            et.SubElement(pl, 'prefix', attrib={'type': r.ROUTE_ATTR}).text = r.route