

1. Download and install CUDD package (http://vlsi.colorado.edu/~fabio/CUDD/)
2. Obtain and install Boost C++ Library containing 'dynamic_bitset' class
3. Set the CUDD and Boost path properly in the Makefile. Please note that if you have the Boost stored at /usr/include then including the dynamic_bitset.hpp file using the #include <boost/dynamic_bitset.hpp>, as done in the attached files, suffice.
-------------------------------------------------------------------------------------------------------------------------------------------------------------




Usage of Makefile
------------------
1.To compile all the files and generate executables type-
	 make
2. To compile only nfaToBDD.cpp and generate 'nfaToBDD' executable type-
	 make nfaToBDD
3.To compile only nfa_bdd_simulate and generate 'nfa_bdd_simulate' executable type-
         make nfa_bdd_simulate
4. To remove all the executables and .o files type-
         make clean

Description of executables
-------------------------
1. 'nfaToBDD' is used to construct the BDDs corresponding to different properties of NFA, given the metadata including epsilon eliminated transition table of that NFA
2.'nfa_bdd_simulate' is used to run the BDD based NFA for detecting attacks in the given network traffic trace 

Running executable
-------------------

1. To run nfaToBDD give the following command

  ./nfaToBDD <NFA transition filename> <path to destination directory for generated BDDs >

    Note: The destination directory is the place where the generated BDDs will be stored. Inside these two directory 2 additional directories need to be created. They should named 'trans' and 'metadata'. Once the executable is run, the 'trans' directory will contain the BDDs representing chunks of the NFA transitions while the 'metadata' directory will contain the BDDs representing various NFA properties including start states, accepting states, input symbols.

2. To run nfa_bdd_simulate give the following command
  
  ./nfa_bdd_simulate  <trace file> <y indicating Acceptance signal> <path to BDD directory> <number of trans chunk>

    -- trace file : network traffic trace file
    -- Acceptance signal: To report the signature matching precisely
    -- path to BDD directory: the directory containing 'trans' and 'metadata' directory
    -- number of trans chunk: Number of files containing BDDs in the 'trans' directory
