docs: def read_route_spec_config(fname):
      """
      Read, parse and sanity check the route spec config file.
  
      The config file needs to be in this format:
  
      {
          "<CIDR-1>" : [ "host-1-ip", "host-2-ip", "host-3-ip" ],
          "<CIDR-2>" : [ "host-4-ip", "host-5-ip" ],
          "<CIDR-3>" : [ "host-6-ip", "host-7-ip", "host-8-ip", "host-9-ip" ]
      }
  
      Returns the validated route config.
  
      """
      try:
          try:
              f = open(fname, "r")
          except IOError as e:
              # Cannot open file? Doesn't exist?
              raise ValueError("Cannot open file: " + str(e))
          data = json.loads(f.read())
          f.close()
          # Sanity checking on the data object
          data = common.parse_route_spec_config(data)
  
      except ValueError as e:
          logging.error("Config ignored: %s" % str(e))
          data = None
  
      return data