⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sfxhash.h

📁 Linux snort-2.4.4源代码
💻 H
字号:
/***  sfxhash.h**  generic hash table - stores and maps key + data pairs*  (supports memcap and automatic memory recovery when out of memory)**  Copyright (C) 2001 Marc A Norton*  Copyright (C) 2003 Sourcefire,Inc.**/#ifndef _SFXHASH_#define _SFXHASH_#include <stdlib.h>#include <string.h>#include <time.h>#include "sfmemcap.h"#include "sfhashfcn.h"/**   ERROR DEFINES*/#define SFXHASH_NOMEM    -2#define SFXHASH_ERR      -1#define SFXHASH_OK        0#define SFXHASH_INTABLE   1/**   HASH NODE*/typedef struct _sfxhash_node{  struct _sfxhash_node * gnext, * gprev; /* global node list - used for ageing nodes */  struct _sfxhash_node * next,  * prev;  /* row node list */  int    rindex; /* row index of table this node belongs to. */  void * key;   /* Pointer to the key. */  void * data;  /* Pointer to the users data, this is not copied ! */     } SFXHASH_NODE;/**    SFGX HASH Table*/typedef struct _sfxhash{  SFHASHFCN     * sfhashfcn; /* hash function */  int             keysize; /* bytes in key, if <= 0 -> keys are strings */  int             datasize;/* bytes in key, if == 0 -> user data */  SFXHASH_NODE ** table;   /* array of node ptr's */  unsigned        nrows;   /* # rows int the hash table use a prime number 211, 9871 */  unsigned        count;   /* total # nodes in table */    unsigned        crow;    // findfirst/next row in table  SFXHASH_NODE  * cnode;   // findfirst/next node ptr  int             splay;  MEMCAP          mc;  unsigned        overhead_bytes;  /** # of bytes that will be unavailable for nodes inside the table */      unsigned        overhead_blocks; /** # of blocks consumed by the table */  unsigned        find_fail;  unsigned        find_success;      SFXHASH_NODE  * ghead, * gtail;  /* global - root of all nodes allocated in table */  SFXHASH_NODE  * fhead, * ftail;  /* free list of nodes */  int             recycle_nodes;  unsigned        anr_tries; /* ANR requests to the userfunc */  unsigned        anr_count; /* # ANR ops performaed */  int             anr_flag;  /* 0=off, !0=on */  int (*anrfree)( void * key, void * data );  int (*usrfree)( void * key, void * data );} SFXHASH;/**   HASH PROTOTYPES*/SFXHASH       * sfxhash_new( int nrows, int keysize, int datasize, int memcap,                              int anr_flag,                              int (*anrfunc)(void *key, void * data),                             int (*usrfunc)(void *key, void * data),                             int recycle_flag );void            sfxhash_delete( SFXHASH * h );int             sfxhash_add ( SFXHASH * h, void * key, void * data );SFXHASH_NODE * sfxhash_get_node( SFXHASH * t, void * key );int             sfxhash_remove( SFXHASH * h, void * key );unsigned        sfxhash_count( SFXHASH * h );unsigned        sfxhash_anr_count( SFXHASH * h );void          * sfxhash_mru( SFXHASH * t );void          * sfxhash_lru( SFXHASH * t );SFXHASH_NODE  * sfxhash_mru_node( SFXHASH * t );SFXHASH_NODE  * sfxhash_lru_node( SFXHASH * t );void          * sfxhash_find( SFXHASH * h, void * key );SFXHASH_NODE  * sfxhash_find_node( SFXHASH * t, void * key);SFXHASH_NODE  * sfxhash_findfirst( SFXHASH * h );SFXHASH_NODE  * sfxhash_findnext ( SFXHASH * h );SFXHASH_NODE  * sfxhash_ghead( SFXHASH * h );SFXHASH_NODE  * sfxhash_gnext( SFXHASH_NODE * n );void sfxhash_gmovetofront( SFXHASH *t, SFXHASH_NODE * hnode );void            sfxhash_splaymode( SFXHASH * h, int mode );void          * sfxhash_alloc( SFXHASH * t, unsigned nbytes );void            sfxhash_free( SFXHASH * t, void * p );int             sfxhash_free_node(SFXHASH *t, SFXHASH_NODE *node);unsigned        sfxhash_maxdepth( SFXHASH * t );unsigned        sfxhash_overhead_bytes( SFXHASH * t );unsigned        sfxhash_overhead_blocks( SFXHASH * t );unsigned        sfxhash_find_success( SFXHASH * h );unsigned        sfxhash_find_fail( SFXHASH * h );unsigned        sfxhash_find_total( SFXHASH * h );int sfxhash_set_keyops( SFXHASH *h ,                        unsigned (*hash_fcn)( SFHASHFCN * p,                                              unsigned char *d,                                              int n),                        int (*keycmp_fcn)( const void *s1,                                           const void *s2,                                           size_t n));#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -