libnids 主要数据结构

1.  tuple4   libnids最基本结构

 

struct  tuple4{

      u_short    source;    //源端口

      u_short    dest;       //目的端口

           u_int   saddr;     //源ip

           u_int   daddr;     //目的ip

}

 

2.  half_stream 

 

struct  half_stream{

      char        status;             //套接字的连接状态,如TCP_CLOSE

      char        collect;             //用来表示有数据到达,此数据存放在data成员中,也可以表示数据不存储数据到data

      char        collect_urg;      //表示是否有紧急数据到达,次数据存放在 urgdata中

      char        *data;              //用于存放数据

      int          offset;               //表示存储在data中数据的第一个字节的偏移量

      int          count;               //表示从tcp 连接开始已经存储在data中的数据的字节数

      int          count_new;      //有多少新的数据存储到data 中,如果为0,则表示没有新的数据到达

      int          bufsize;

      int          rmen_alloc;

      int          urg_count;

      u_int      acked;

      u_int      seq;

      u_int      ack_seq;

      u_int      first_data_seq;

      u_char   urgdata;             //存储紧急数据

      u_char   count_new_urg; //表示有新的紧急数据到达,如果为0,表示没有新的紧急数据

      u_char   urg_seen;

      u_int      urg_ptr;

      u_short  window;

      u_char   ts_on;

      u_int      curr_ts;

      struct     skbuff     *list;

      struct     skbuff     *listtail;        

}

 

3.  tcp_stream

 

struct  tcp_stream{

               struct tuple4    addr;                  

                            char     nids_state;

      struct lurker_node    *listeners;

      struct half_stream     *client;

      struct half_stream     *server;

      struct tcp_stream      *next_node;

      struct tcp_stream      *prev_node;

                             int       hash_index;

      struct tcp_stream       *next_time;

      struct tcp_stream       *prev_time;

                             int        read;

      struct tcp_stream       *next_free;            

}

你可能感兴趣的:(数据结构)