<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _add_new_route(dcidr, router_ip, vpc_info, con, route_table_id):
 """ Add a new route to the route table. """

    try:
        instance, eni = find_instance_and_eni_by_ip(vpc_info, router_ip)
        # Only set the route if the RT is associated with any of the subnets
        # used for the cluster.
        rt_subnets           = \
                    set(vpc_info['rt_subnet_lookup'].get(route_table_id, []))
        cluster_node_subnets = \
                    set(vpc_info['cluster_node_subnets'])
        if not rt_subnets or not rt_subnets.intersection(cluster_node_subnets):
            logging.debug("--- skipping adding route in RT '%s' "
                          "%s -> %s (%s, %s) since RT's subnets (%s) are not "
                          "part of the cluster (%s)." %
                          (route_table_id, dcidr, router_ip, instance.id,
                           eni.id,
                           ", ".join(rt_subnets) if rt_subnets else "none",
                           ", ".join(cluster_node_subnets)))
            return

        logging.info("--- adding route in RT '%s' "
                     "%s -> %s (%s, %s)" %
                     (route_table_id, dcidr, router_ip, instance.id, eni.id))
        con.create_route(route_table_id         = route_table_id,
                         destination_cidr_block = dcidr,
                         instance_id            = instance.id,
                         interface_id           = eni.id)
        CURRENT_STATE.routes[dcidr] = \
                                    (router_ip, str(instance.id), str(eni.id))
        _rt_state_update(route_table_id, dcidr, router_ip, instance.id, eni.id,
                         msg="Added route")

    except Exception as e:
        logging.error("*** failed to add route in RT '%s' "
                      "%s -> %s (%s)" %
                      (route_table_id, dcidr, router_ip, e.message))
        _rt_state_update(route_table_id, dcidr,
                         msg="[ERROR add route: %s]" % e.message)