mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-09-06 12:45:13 +02:00
xt_psd: avoid if (c=h) do {..} while (c = c->next)
It is aquivalent to c=h; while (c) { ..; c = c->next; } which is a bit easier to read.
This commit is contained in:

committed by
Jan Engelhardt

parent
2f18ab31ec
commit
57d25f22f1
@@ -163,8 +163,8 @@ xt_psd_match(const struct sk_buff *pskb, struct xt_action_param *match)
|
||||
u_int16_t src_port,dest_port;
|
||||
u_int8_t proto;
|
||||
unsigned long now;
|
||||
struct host *curr, *last, **head;
|
||||
int hash, count;
|
||||
struct host *curr, *last = NULL, **head;
|
||||
int hash, count = 0;
|
||||
/* Parameters from userspace */
|
||||
const struct xt_psd_info *psdinfo = match->matchinfo;
|
||||
|
||||
@@ -205,20 +205,21 @@ xt_psd_match(const struct sk_buff *pskb, struct xt_action_param *match)
|
||||
}
|
||||
|
||||
now = jiffies;
|
||||
hash = hashfunc(addr);
|
||||
head = &state.hash[hash];
|
||||
|
||||
spin_lock(&state.lock);
|
||||
|
||||
/* Do we know this source address already? */
|
||||
count = 0;
|
||||
last = NULL;
|
||||
if ((curr = *(head = &state.hash[hash = hashfunc(addr)])) != NULL)
|
||||
do {
|
||||
curr = *head;
|
||||
while (curr != NULL) {
|
||||
if (curr->src_addr.s_addr == addr.s_addr)
|
||||
break;
|
||||
count++;
|
||||
if (curr->next != NULL)
|
||||
last = curr;
|
||||
} while ((curr = curr->next) != NULL);
|
||||
curr = curr->next;
|
||||
}
|
||||
|
||||
if (curr != NULL) {
|
||||
/* We know this address, and the entry isn't too old. Update it. */
|
||||
@@ -266,12 +267,13 @@ xt_psd_match(const struct sk_buff *pskb, struct xt_action_param *match)
|
||||
else
|
||||
head = &last;
|
||||
last = NULL;
|
||||
if ((curr = *head) != NULL)
|
||||
do {
|
||||
curr = *head;
|
||||
while (curr != NULL) {
|
||||
if (curr == &state.list[state.index])
|
||||
break;
|
||||
last = curr;
|
||||
} while ((curr = curr->next) != NULL);
|
||||
curr = curr->next;
|
||||
}
|
||||
|
||||
/* Then, remove it */
|
||||
if (curr != NULL) {
|
||||
|
Reference in New Issue
Block a user