#pragma once
#include <cstddef>

#define PROCESS_META 1

// @TODO(stwcx): These values are currently configured in autoconf but never
//               modified by anyone, nor could I see why they ever would be.
//               Once autoconf is removed, they should be switched over to
//               a constant in a header file.

#define BMC_VERSION_FILE "/etc/os-release"
#define BUSNAME_LOGGING "xyz.openbmc_project.Logging"
#define BUSNAME_SYSLOG_CONFIG "xyz.openbmc_project.Syslog.Config"
#define BUSPATH_REMOTE_LOGGING_CONFIG                                          \
    "/xyz/openbmc_project/logging/config/remote"
#define CALLOUT_FWD_ASSOCIATION "callout"
#define CALLOUT_REV_ASSOCIATION "fault"
#define INVENTORY_ROOT "/xyz/openbmc_project/inventory"
#define OBJ_ENTRY "/xyz/openbmc_project/logging/entry"
#define OBJ_INTERNAL "/xyz/openbmc_project/logging/internal/manager"
#define OBJ_LOGGING "/xyz/openbmc_project/logging"
#define SYSTEMD_BUSNAME "org.freedesktop.systemd1"
#define SYSTEMD_INTERFACE "org.freedesktop.systemd1.Manager"
#define SYSTEMD_PATH "/org/freedesktop/systemd1"

#define RSYSLOG_SERVER_CONFIG_FILE "@rsyslog_server_conf@"

extern const char *ERRLOG_PERSIST_PATH;
extern const char *EXTENSION_PERSIST_DIR;
extern const bool IS_UNIT_TEST;

static constexpr size_t ERROR_CAP = @error_cap@;
static constexpr size_t ERROR_INFO_CAP = @error_info_cap@;

static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_FWLEVEL = "2";
static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_UPDATE_TS = "3";
static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_EVENTID = "4";
static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_RESOLUTION = "5";
static constexpr size_t CLASS_VERSION = 5;

// vim: ft=cpp
