Ground-Zerro / HydraRoute Public
Code Issues Pull requests Actions Releases View on GitHub ↗
1.4 KB c
#ifndef ARGS_H
#define ARGS_H

#include "hrneo.h"
#include "config.h"
#include <stdint.h>

typedef struct {
    char config_path[MAX_PATH_LEN];
    char genconfig_target[MAX_PATH_LEN];

    /* Bit-per-parameter "was set on CLI" mask. Bit positions are owned by
     * the PARAMS[] table in params.c — do not test individual bits here. */
    uint32_t set_mask;

    int  auto_start;
    char watchlist_path[MAX_PATH_LEN];
    int  clear_ipset;
    int  cidr_enabled;
    char cidr_file_path[MAX_PATH_LEN];
    int  ipset_enable_timeout;
    int  ipset_timeout;
    char log_level[16];
    char log_file_path[MAX_PATH_LEN];
    int  direct_route_enabled;
    int  interface_fwmark_start;
    int  interface_table_start;
    int  global_routing;
    int  conntrack_flush;
    int  ipset_maxelem;
    char geo_ip_files[MAX_GEO_FILES][MAX_PATH_LEN];
    int  geo_ip_file_count;
    char geo_site_files[MAX_GEO_FILES][MAX_PATH_LEN];
    int  geo_site_file_count;
    char policy_order[MAX_POLICY_ORDER][64];
    int  policy_order_count;
    int  l7_capture_enabled;
    int  l7_queue_num;
    int  l7_enable_tls;
    int  l7_enable_http;
    int  l7_connbytes_max;
    char l7_wan_interface[MAX_INTERFACE_NAME];
    int  l7_tcp_reasm_enabled;
    int  l7_tcp_reasm_max_entries;
    int  l7_tcp_reasm_ttl_sec;
} cli_args_t;

int  args_parse(int argc, char *argv[], cli_args_t *out);
void args_apply(const cli_args_t *args, config_t *cfg);

#endif