#pragma once
#include "common.hpp"
#include "nfq.hpp"
#include "match.hpp"
#include "stream.hpp"


#define MAX_QUEUE_NUM 255


class Ruleset {
    public:
        typedef struct {
            NFQ* queue;
            Match* match;
        } ruleset_t;

    private:
        Ruleset(ruleset_t*, const char*);
        ruleset_t* const ruleset;
        char* const fn;
        static void cb(unsigned char*, size_t, NFQ::result_t&, void*); ///< parses packet and calls matches, @see NFQ:cb_t

    public:
        static Ruleset* getInst(const char*); ///< parses ruleset file and creates needed queues
        bool reload();
        ~Ruleset();
};