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:
Florian Westphal
2012-08-16 12:01:09 +02:00
committed by Jan Engelhardt
parent 2f18ab31ec
commit 57d25f22f1

View File

@@ -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_int16_t src_port,dest_port;
u_int8_t proto; u_int8_t proto;
unsigned long now; unsigned long now;
struct host *curr, *last, **head; struct host *curr, *last = NULL, **head;
int hash, count; int hash, count = 0;
/* Parameters from userspace */ /* Parameters from userspace */
const struct xt_psd_info *psdinfo = match->matchinfo; 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; now = jiffies;
hash = hashfunc(addr);
head = &state.hash[hash];
spin_lock(&state.lock); spin_lock(&state.lock);
/* Do we know this source address already? */ /* Do we know this source address already? */
count = 0; curr = *head;
last = NULL; while (curr != NULL) {
if ((curr = *(head = &state.hash[hash = hashfunc(addr)])) != NULL)
do {
if (curr->src_addr.s_addr == addr.s_addr) if (curr->src_addr.s_addr == addr.s_addr)
break; break;
count++; count++;
if (curr->next != NULL) if (curr->next != NULL)
last = curr; last = curr;
} while ((curr = curr->next) != NULL); curr = curr->next;
}
if (curr != NULL) { if (curr != NULL) {
/* We know this address, and the entry isn't too old. Update it. */ /* 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 else
head = &last; head = &last;
last = NULL; last = NULL;
if ((curr = *head) != NULL) curr = *head;
do { while (curr != NULL) {
if (curr == &state.list[state.index]) if (curr == &state.list[state.index])
break; break;
last = curr; last = curr;
} while ((curr = curr->next) != NULL); curr = curr->next;
}
/* Then, remove it */ /* Then, remove it */
if (curr != NULL) { if (curr != NULL) {