Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 184127
b: refs/heads/master
c: 294188a
h: refs/heads/master
i:
  184125: 0024469
  184123: ada55b3
  184119: ec3759f
  184111: ed75904
  184095: 54d49fa
  184063: a0d35be
v: v3
  • Loading branch information
Jan Engelhardt authored and Patrick McHardy committed Jan 4, 2010
1 parent 16168de commit 974dab1
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5191d50192ec1281e51cbcb5248cb2667ff4d896
refs/heads/master: 294188ae32f984a072c64c959354b2f6f52f80a7
17 changes: 6 additions & 11 deletions trunk/net/netfilter/xt_connlimit.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,11 @@ struct xt_connlimit_data {
spinlock_t lock;
};

static u_int32_t connlimit_rnd;
static bool connlimit_rnd_inited;
static u_int32_t connlimit_rnd __read_mostly;
static bool connlimit_rnd_inited __read_mostly;

static inline unsigned int connlimit_iphash(__be32 addr)
{
if (unlikely(!connlimit_rnd_inited)) {
get_random_bytes(&connlimit_rnd, sizeof(connlimit_rnd));
connlimit_rnd_inited = true;
}
return jhash_1word((__force __u32)addr, connlimit_rnd) & 0xFF;
}

Expand All @@ -59,11 +55,6 @@ connlimit_iphash6(const union nf_inet_addr *addr,
union nf_inet_addr res;
unsigned int i;

if (unlikely(!connlimit_rnd_inited)) {
get_random_bytes(&connlimit_rnd, sizeof(connlimit_rnd));
connlimit_rnd_inited = true;
}

for (i = 0; i < ARRAY_SIZE(addr->ip6); ++i)
res.ip6[i] = addr->ip6[i] & mask->ip6[i];

Expand Down Expand Up @@ -226,6 +217,10 @@ static bool connlimit_mt_check(const struct xt_mtchk_param *par)
struct xt_connlimit_info *info = par->matchinfo;
unsigned int i;

if (unlikely(!connlimit_rnd_inited)) {
get_random_bytes(&connlimit_rnd, sizeof(connlimit_rnd));
connlimit_rnd_inited = true;
}
if (nf_ct_l3proto_try_module_get(par->family) < 0) {
printk(KERN_WARNING "cannot load conntrack support for "
"address family %u\n", par->family);
Expand Down
20 changes: 8 additions & 12 deletions trunk/net/netfilter/xt_recent.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,25 +90,17 @@ static struct proc_dir_entry *recent_proc_dir;
static const struct file_operations recent_old_fops, recent_mt_fops;
#endif

static u_int32_t hash_rnd;
static bool hash_rnd_initted;
static u_int32_t hash_rnd __read_mostly;
static bool hash_rnd_inited __read_mostly;

static unsigned int recent_entry_hash4(const union nf_inet_addr *addr)
static inline unsigned int recent_entry_hash4(const union nf_inet_addr *addr)
{
if (!hash_rnd_initted) {
get_random_bytes(&hash_rnd, sizeof(hash_rnd));
hash_rnd_initted = true;
}
return jhash_1word((__force u32)addr->ip, hash_rnd) &
(ip_list_hash_size - 1);
}

static unsigned int recent_entry_hash6(const union nf_inet_addr *addr)
static inline unsigned int recent_entry_hash6(const union nf_inet_addr *addr)
{
if (!hash_rnd_initted) {
get_random_bytes(&hash_rnd, sizeof(hash_rnd));
hash_rnd_initted = true;
}
return jhash2((u32 *)addr->ip6, ARRAY_SIZE(addr->ip6), hash_rnd) &
(ip_list_hash_size - 1);
}
Expand Down Expand Up @@ -287,6 +279,10 @@ static bool recent_mt_check(const struct xt_mtchk_param *par)
unsigned i;
bool ret = false;

if (unlikely(!hash_rnd_inited)) {
get_random_bytes(&hash_rnd, sizeof(hash_rnd));
hash_rnd_inited = true;
}
if (hweight8(info->check_set &
(XT_RECENT_SET | XT_RECENT_REMOVE |
XT_RECENT_CHECK | XT_RECENT_UPDATE)) != 1)
Expand Down

0 comments on commit 974dab1

Please sign in to comment.