Commit | Line | Data |
---|---|---|
a7b4f989 JK |
1 | #ifndef _PFXLEN_H |
2 | #define _PFXLEN_H | |
3 | ||
4 | #include <asm/byteorder.h> | |
15b4d93f | 5 | #include <linux/netfilter.h> |
d0d9e0a5 | 6 | #include <net/tcp.h> |
a7b4f989 JK |
7 | |
8 | /* Prefixlen maps, by Jan Engelhardt */ | |
9 | extern const union nf_inet_addr ip_set_netmask_map[]; | |
10 | extern const union nf_inet_addr ip_set_hostmask_map[]; | |
11 | ||
12 | static inline __be32 | |
13 | ip_set_netmask(u8 pfxlen) | |
14 | { | |
15 | return ip_set_netmask_map[pfxlen].ip; | |
16 | } | |
17 | ||
18 | static inline const __be32 * | |
19 | ip_set_netmask6(u8 pfxlen) | |
20 | { | |
21 | return &ip_set_netmask_map[pfxlen].ip6[0]; | |
22 | } | |
23 | ||
24 | static inline u32 | |
25 | ip_set_hostmask(u8 pfxlen) | |
26 | { | |
27 | return (__force u32) ip_set_hostmask_map[pfxlen].ip; | |
28 | } | |
29 | ||
30 | static inline const __be32 * | |
31 | ip_set_hostmask6(u8 pfxlen) | |
32 | { | |
33 | return &ip_set_hostmask_map[pfxlen].ip6[0]; | |
34 | } | |
35 | ||
d0d9e0a5 JK |
36 | extern u32 ip_set_range_to_cidr(u32 from, u32 to, u8 *cidr); |
37 | ||
e6146e86 JK |
38 | #define ip_set_mask_from_to(from, to, cidr) \ |
39 | do { \ | |
40 | from &= ip_set_hostmask(cidr); \ | |
41 | to = from | ~ip_set_hostmask(cidr); \ | |
42 | } while (0) | |
43 | ||
a7b4f989 | 44 | #endif /*_PFXLEN_H */ |