mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-09-06 04:35:12 +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_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) {
|
||||||
|
Reference in New Issue
Block a user