def METHOD_NAME(self, ir: "IR", config) -> bool:
    self.service = config.get("service")
    if not self.service:
        self.post_error("service must be present for a remote log service!")
        return False
    self.namespace = config.get("namespace", self.namespace)
    self.cluster = None
    self.grpc = config.get("grpc", False)
    self.protocol_version = config.get("protocol_version", "v2")
    if self.protocol_version == "v2":
        self.post_error(
            f'LogService: protocol_version {self.protocol_version} is unsupported, protocol_version must be "v3"'
        )
        return False
    self.driver = config.get("driver")
    # These defaults come from Envoy:
    # https://www.envoyproxy.io/docs/envoy/v1.22.2/api-v3/extensions/access_loggers/grpc/v3/als.proto#extensions-access-loggers-grpc-v3-commongrpcaccesslogconfig
    self.flush_interval_byte_size = config.get("flush_interval_byte_size", 16384)
    self.flush_interval_time = config.get("flush_interval_time", 1)
    self.driver_config = config.get("driver_config")
    if "additional_log_headers" in self.driver_config:
        if self.driver != "http" and self.driver_config["additional_log_headers"]:
            self.post_error("additional_log_headers are not supported in tcp mode")
            return False
        for header_obj in self.get_additional_headers():
            if header_obj.get("header_name", "") == "":
                self.post_error("Please provide a header name for every additional log header!")
                return False
    self.sourced_by(config)
    self.referenced_by(config)
    return True