diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-10-25 12:04:19 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-03-25 16:35:33 -0400 |
commit | dfd7a7f5b63eb968caebf6823395689e6b77b654 (patch) | |
tree | e22bf2ff8738be2f145c6670eb4d9ed387aa5656 /src/lib/container/namemap_st.h | |
parent | 9a61d3f5adf1e4e61a0d51fb6f9368339f5330cc (diff) | |
download | tor-dfd7a7f5b63eb968caebf6823395689e6b77b654.tar.gz tor-dfd7a7f5b63eb968caebf6823395689e6b77b654.zip |
Add a type to map names to short identifiers
We'll be using this for four kinds of identifier in dispatch.c
Diffstat (limited to 'src/lib/container/namemap_st.h')
-rw-r--r-- | src/lib/container/namemap_st.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/lib/container/namemap_st.h b/src/lib/container/namemap_st.h new file mode 100644 index 0000000000..5717352fa2 --- /dev/null +++ b/src/lib/container/namemap_st.h @@ -0,0 +1,34 @@ +/* Copyright (c) 2003-2004, Roger Dingledine + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2018, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#ifndef NAMEMAP_ST_H +#define NAMEMAP_ST_H + +#include "lib/cc/compat_compiler.h" +#include "ext/ht.h" + +struct smartlist_t; + +/** Longest allowed name that's allowed in a namemap_t. */ +#define MAX_NAMEMAP_NAME_LEN 128 + +/** An entry inside a namemap_t. Maps a string to a numeric identifier. */ +typedef struct mapped_name_t { + HT_ENTRY(mapped_name_t) node; + unsigned intval; + char name[FLEXIBLE_ARRAY_MEMBER]; +} mapped_name_t; + +/** A structure that allocates small numeric identifiers for names and maps + * back and forth between them. */ +struct namemap_t { + HT_HEAD(namemap_ht, mapped_name_t) ht; + struct smartlist_t *names; +}; + +/** Macro to initialize a namemap. */ +#define NAMEMAP_INIT() { HT_INITIALIZER(), NULL } + +#endif |