From 7c587d4b4d05a24cedcb2b0b339c18d79b9d4eb2 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Fri, 14 Aug 2015 03:16:32 +0200 Subject: src: netlink: don't truncate set key lengths If key is e.g. 12 bits, pretend its 16 instead of 8. This is needed to make sets work with header fields with size not divisible by 8. Signed-off-by: Florian Westphal --- src/netlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/netlink.c b/src/netlink.c index ad1f16df..4d1e977f 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -1106,7 +1106,7 @@ static int netlink_add_set_compat(struct netlink_ctx *ctx, nftnl_set_set_u32(nls, NFTNL_SET_KEY_TYPE, dtype_map_to_kernel(set->keytype)); nftnl_set_set_u32(nls, NFTNL_SET_KEY_LEN, - set->keylen / BITS_PER_BYTE); + div_round_up(set->keylen, BITS_PER_BYTE)); if (set->flags & NFT_SET_MAP) { nftnl_set_set_u32(nls, NFTNL_SET_DATA_TYPE, dtype_map_to_kernel(set->datatype)); @@ -1138,7 +1138,7 @@ static int netlink_add_set_batch(struct netlink_ctx *ctx, nftnl_set_set_u32(nls, NFTNL_SET_KEY_TYPE, dtype_map_to_kernel(set->keytype)); nftnl_set_set_u32(nls, NFTNL_SET_KEY_LEN, - set->keylen / BITS_PER_BYTE); + div_round_up(set->keylen, BITS_PER_BYTE)); if (set->flags & NFT_SET_MAP) { nftnl_set_set_u32(nls, NFTNL_SET_DATA_TYPE, dtype_map_to_kernel(set->datatype)); -- cgit v1.2.3