Staging
v0.8.1
https://github.com/torvalds/linux
Raw File
Tip revision: 4cbe5a555fa58a79b6ecbb6c531b8bab0650778d authored by Linus Torvalds on 01 September 2012, 17:39:58 UTC
Linux 3.6-rc4
Tip revision: 4cbe5a5
ip_set_bitmap.h
#ifndef __IP_SET_BITMAP_H
#define __IP_SET_BITMAP_H

/* Bitmap type specific error codes */
enum {
	/* The element is out of the range of the set */
	IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,
	/* The range exceeds the size limit of the set type */
	IPSET_ERR_BITMAP_RANGE_SIZE,
};

#ifdef __KERNEL__
#define IPSET_BITMAP_MAX_RANGE	0x0000FFFF

/* Common functions */

static inline u32
range_to_mask(u32 from, u32 to, u8 *bits)
{
	u32 mask = 0xFFFFFFFE;

	*bits = 32;
	while (--(*bits) > 0 && mask && (to & mask) != from)
		mask <<= 1;

	return mask;
}

#endif /* __KERNEL__ */

#endif /* __IP_SET_BITMAP_H */
back to top