code: func (c *Catalog) ListServices(args *structs.DCSpecificRequest, reply *structs.IndexedServices) error {
  	if done, err := c.srv.forward("Catalog.ListServices", args, args, reply); done {
  		return err
  	}
  
  	return c.srv.blockingQuery(
  		&args.QueryOptions,
  		&reply.QueryMeta,
  		func(ws memdb.WatchSet, state *state.Store) error {
  			var index uint64
  			var services structs.Services
  			var err error
  			if len(args.NodeMetaFilters) > 0 {
  				index, services, err = state.ServicesByNodeMeta(ws, args.NodeMetaFilters)
  			} else {
  				index, services, err = state.Services(ws)
  			}
  			if err != nil {
  				return err
  			}
  
  			reply.Index, reply.Services = index, services
  			return c.srv.filterACL(args.Token, reply)
  		})
  }
docs: // ListServices is used to query the services in a DC