#ifndef _CONFIG_H
#define _CONFIG_H

#ifdef __cplusplus
extern "C"
{
#endif

#include "packet_io.h"
#include "ip_reassembly.h"
#include "session_manager.h"

#define CONFIG_LOG_ERROR(format, ...) LOG_ERROR("config", format, ##__VA_ARGS__)
#define CONFIG_LOG_DEBUG(format, ...) LOG_DEBUG("config", format, ##__VA_ARGS__)

struct device_options
{
    uint8_t base;
    uint8_t offset;
};

struct stellar_config
{
    struct device_options dev_opts;
    struct packet_io_options io_opts;
    struct ip_reassembly_options ip_opts;
    struct session_manager_options sess_mgr_opts;
};

int stellar_load_config(const char *file, struct stellar_config *config);
void stellar_print_config(struct stellar_config *config);

#ifdef __cplusplus
}
#endif

#endif
