libsmack: implement internal hash table of labels
Use hash table implemented internally for dictionary of labels.
Thanks to that some operations are more efficient:
-it is possible to use better hashing function than in hsearch:
DJB2 algorithm is used, which is much better, than hashing function
used in hsearch. Hashing function in hsearch causes, that on 32bit
machines, all labels that have common first eight bytes,
share same bucket and this cause many conflicts in combination of labels
naming convention with domain-based prefixes. This leads to significant
performance degradation in real system. This was not detected on tests
so far, because labels for test policies were generated randomly.
-it is possible to calculate hash during label validation.
-it would not cause drastic complexity growth to have number of labels
near to number of allocated buckets as it happens in hsearch.
-it would be possible to add number of labels exceeding number of
allocated buckets.
Signed-off-by: Jan Cybulski <j.cybulski@samsung.com>