/* Based on MurmurHash3, written by Austin Appleby and placed in the
  * public domain.
  */
-static inline int avtab_hash(struct avtab_key *keyp, u32 mask)
+static inline int avtab_hash(const struct avtab_key *keyp, u32 mask)
 {
        static const u32 c1 = 0xcc9e2d51;
        static const u32 c2 = 0x1b873593;
 static struct avtab_node*
 avtab_insert_node(struct avtab *h, int hvalue,
                  struct avtab_node *prev, struct avtab_node *cur,
-                 struct avtab_key *key, struct avtab_datum *datum)
+                 const struct avtab_key *key, const struct avtab_datum *datum)
 {
        struct avtab_node *newnode;
        struct avtab_extended_perms *xperms;
        return newnode;
 }
 
-static int avtab_insert(struct avtab *h, struct avtab_key *key, struct avtab_datum *datum)
+static int avtab_insert(struct avtab *h, const struct avtab_key *key,
+                       const struct avtab_datum *datum)
 {
        int hvalue;
        struct avtab_node *prev, *cur, *newnode;
  * key/specified mask into the table, as needed by the conditional avtab.
  * It also returns a pointer to the node inserted.
  */
-struct avtab_node *
-avtab_insert_nonunique(struct avtab *h, struct avtab_key *key, struct avtab_datum *datum)
+struct avtab_node *avtab_insert_nonunique(struct avtab *h,
+                                         const struct avtab_key *key,
+                                         const struct avtab_datum *datum)
 {
        int hvalue;
        struct avtab_node *prev, *cur;
        return avtab_insert_node(h, hvalue, prev, cur, key, datum);
 }
 
-struct avtab_datum *avtab_search(struct avtab *h, struct avtab_key *key)
+struct avtab_datum *avtab_search(struct avtab *h, const struct avtab_key *key)
 {
        int hvalue;
        struct avtab_node *cur;
 /* This search function returns a node pointer, and can be used in
  * conjunction with avtab_search_next_node()
  */
-struct avtab_node*
-avtab_search_node(struct avtab *h, struct avtab_key *key)
+struct avtab_node *avtab_search_node(struct avtab *h,
+                                    const struct avtab_key *key)
 {
        int hvalue;
        struct avtab_node *cur;
 };
 
 int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
-                   int (*insertf)(struct avtab *a, struct avtab_key *k,
-                                  struct avtab_datum *d, void *p),
+                   int (*insertf)(struct avtab *a, const struct avtab_key *k,
+                                  const struct avtab_datum *d, void *p),
                    void *p)
 {
        __le16 buf16[4];
        return insertf(a, &key, &datum, p);
 }
 
-static int avtab_insertf(struct avtab *a, struct avtab_key *k,
-                        struct avtab_datum *d, void *p)
+static int avtab_insertf(struct avtab *a, const struct avtab_key *k,
+                        const struct avtab_datum *d, void *p)
 {
        return avtab_insert(a, k, d);
 }
        goto out;
 }
 
-int avtab_write_item(struct policydb *p, struct avtab_node *cur, void *fp)
+int avtab_write_item(struct policydb *p, const struct avtab_node *cur, void *fp)
 {
        __le16 buf16[4];
        __le32 buf32[ARRAY_SIZE(cur->datum.u.xperms->perms.p)];
 
 void avtab_init(struct avtab *h);
 int avtab_alloc(struct avtab *, u32);
 int avtab_alloc_dup(struct avtab *new, const struct avtab *orig);
-struct avtab_datum *avtab_search(struct avtab *h, struct avtab_key *k);
+struct avtab_datum *avtab_search(struct avtab *h, const struct avtab_key *k);
 void avtab_destroy(struct avtab *h);
 void avtab_hash_eval(struct avtab *h, char *tag);
 
 struct policydb;
 int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
-                   int (*insert)(struct avtab *a, struct avtab_key *k,
-                                 struct avtab_datum *d, void *p),
+                   int (*insert)(struct avtab *a, const struct avtab_key *k,
+                                 const struct avtab_datum *d, void *p),
                    void *p);
 
 int avtab_read(struct avtab *a, void *fp, struct policydb *pol);
-int avtab_write_item(struct policydb *p, struct avtab_node *cur, void *fp);
+int avtab_write_item(struct policydb *p, const struct avtab_node *cur, void *fp);
 int avtab_write(struct policydb *p, struct avtab *a, void *fp);
 
-struct avtab_node *avtab_insert_nonunique(struct avtab *h, struct avtab_key *key,
-                                         struct avtab_datum *datum);
+struct avtab_node *avtab_insert_nonunique(struct avtab *h,
+                                         const struct avtab_key *key,
+                                         const struct avtab_datum *datum);
 
-struct avtab_node *avtab_search_node(struct avtab *h, struct avtab_key *key);
+struct avtab_node *avtab_search_node(struct avtab *h,
+                                    const struct avtab_key *key);
 
 struct avtab_node *avtab_search_node_next(struct avtab_node *node, int specified);