code: func (c *Cloud) ListRoutes(clusterName string) ([]*cloudprovider.Route, error) {
  	table, err := c.findRouteTable(clusterName)
  	if err != nil {
  		return nil, err
  	}
  
  	var routes []*cloudprovider.Route
  	var instanceIDs []*string
  
  	for _, r := range table.Routes {
  		instanceID := orEmpty(r.InstanceId)
  
  		if instanceID == "" {
  			continue
  		}
  
  		instanceIDs = append(instanceIDs, &instanceID)
  	}
  
  	instances, err := c.getInstancesByIDs(instanceIDs)
  	if err != nil {
  		return nil, err
  	}
  
  	for _, r := range table.Routes {
  		instanceID := orEmpty(r.InstanceId)
  		destinationCIDR := orEmpty(r.DestinationCidrBlock)
  
  		if instanceID == "" || destinationCIDR == "" {
  			continue
  		}
  
  		instance, found := instances[instanceID]
  		if !found {
  			glog.Warningf("unable to find instance ID %s in the list of instances being routed to", instanceID)
  			continue
  		}
  		nodeName := mapInstanceToNodeName(instance)
  		routeName := clusterName + "-" + destinationCIDR
  		routes = append(routes, &cloudprovider.Route{Name: routeName, TargetNode: nodeName, DestinationCIDR: destinationCIDR})
  	}
  
  	return routes, nil
  }
docs: // ListRoutes implements Routes.ListRoutes
  // List all routes that match the filter