home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.lbl.gov / 2014.05.ftp.ee.lbl.gov.tar / ftp.ee.lbl.gov / mrdebug.tar.Z / mrdebug.tar / mrhash.h < prev    next >
Text File  |  1993-10-25  |  2KB  |  71 lines

  1. /*
  2. **++
  3. **
  4. **  ABSTRACT:
  5. **
  6. **    This header file is for the name mapping hash functions.
  7. **
  8. **  AUTHOR:
  9. **
  10. **      Deb Agarwal (original by: Paul W. Ciarfella)
  11. **
  12. **  CREATION DATE:     14June93 
  13. **
  14. **  MODIFICATION HISTORY:
  15. **--
  16. **/
  17.  
  18. #define      NAMEMAP_HTABLE_SIZE     127
  19.  
  20. /*
  21. ** HENTRY_t: Hash table entry
  22. */
  23. typedef struct HENTRY_t
  24.     {
  25.     /*
  26.     ** Slot index in table for this entry
  27.     */
  28.     int hidx;
  29.     /*
  30.     ** Link for collision chaining
  31.     */
  32.     struct HENTRY_t *next_p;
  33.     struct HENTRY_t *prev_p;
  34.     /*
  35.     ** Data
  36.     */
  37.     NAME     key_p;            /* IP name, used as search key */
  38.     long     index;             /* adjacency list index */
  39.     long    *subnet;           /* pointer to the subnet ifc */
  40.     NAME     name;             /* filled in if the entry is an ip_name */
  41.  
  42.     } HENTRY_t;
  43.  
  44. /*
  45. ** HTABLE_t: Hash table
  46. */
  47. typedef struct htable
  48.     {
  49.     int        slots;           /* Number of slots in table                */
  50.     int        entries;        /* Number of entries in the table          */
  51.     HENTRY_t **htbl_p;        /* Pointer to the slots (which are created */
  52.                 /*           dynamically in create_htable) */
  53.     } HTABLE_t;
  54.  
  55. /*
  56. **    FUNCTION PROTOTYPES
  57. */
  58. void    create_htable( HTABLE_t *table_p, int slots );
  59. long      hash_index( char *key_p, long tbl_length );
  60. HENTRY_t *lookup_htable( HTABLE_t *table_p, char *key_p );
  61. void      delete_htable( HTABLE_t *table_p, char *key_p );
  62. void      insert_htable( HTABLE_t *table_p, char *key_p, long index, long *subnet, char *name );
  63. void      update_htable( HTABLE_t *table_p, char *key_p, long index );
  64. void      print_htable(  HTABLE_t *table_p );
  65.  
  66. /*
  67. **
  68. ** END: hash.h
  69. **
  70. */
  71.