Fix the strange bundles' members looping use.

Avoids gcc warnings.

Signed-off-by: Benjamin Cama <benoar@dolka.fr>
This commit is contained in:
Benjamin Cama 2011-09-24 17:14:57 +02:00
parent 6a529fb49e
commit 036223c418

View file

@ -1462,20 +1462,20 @@ static void processipout(uint8_t *buf, int len)
return; return;
} }
// Add on L2TP header
{
bundleidt bid = 0;
if(session[s].bundle != 0 && bundle[session[s].bundle].num_of_links > 1) if(session[s].bundle != 0 && bundle[session[s].bundle].num_of_links > 1)
{ {
bid = session[s].bundle; // Add on L2TP header
s = bundle[bid].members[bundle[bid].current_ses = ++bundle[bid].current_ses % bundle[bid].num_of_links]; bundleidt bid = session[s].bundle;
bundlet *b = &bundle[bid];
b->current_ses = (b->current_ses + 1) % b->num_of_links;
s = b->members[b->current_ses];
t = session[s].tunnel; t = session[s].tunnel;
sp = &session[s]; sp = &session[s];
LOG(4, s, t, "MPPP: (1)Session number becomes: %d\n", s); LOG(4, s, t, "MPPP: (1)Session number becomes: %d\n", s);
if(len > MINFRAGLEN) if(len > MINFRAGLEN)
{ {
// Partition the packet to "bundle[b].num_of_links" fragments // Partition the packet to "bundle[b].num_of_links" fragments
bundlet *b = &bundle[bid];
uint32_t num_of_links = b->num_of_links; uint32_t num_of_links = b->num_of_links;
uint32_t fraglen = len / num_of_links; uint32_t fraglen = len / num_of_links;
fraglen = (fraglen > session[s].mru ? session[s].mru : fraglen); fraglen = (fraglen > session[s].mru ? session[s].mru : fraglen);
@ -1492,7 +1492,8 @@ static void processipout(uint8_t *buf, int len)
remain -= fraglen; remain -= fraglen;
while (remain > last_fraglen) while (remain > last_fraglen)
{ {
s = b->members[b->current_ses = ++b->current_ses % num_of_links]; b->current_ses = (b->current_ses + 1) % num_of_links;
s = b->members[b->current_ses];
t = session[s].tunnel; t = session[s].tunnel;
sp = &session[s]; sp = &session[s];
LOG(4, s, t, "MPPP: (2)Session number becomes: %d\n", s); LOG(4, s, t, "MPPP: (2)Session number becomes: %d\n", s);
@ -1503,7 +1504,8 @@ static void processipout(uint8_t *buf, int len)
remain -= fraglen; remain -= fraglen;
} }
// send the last fragment // send the last fragment
s = b->members[b->current_ses = ++b->current_ses % num_of_links]; b->current_ses = (b->current_ses + 1) % num_of_links;
s = b->members[b->current_ses];
t = session[s].tunnel; t = session[s].tunnel;
sp = &session[s]; sp = &session[s];
LOG(4, s, t, "MPPP: (2)Session number becomes: %d\n", s); LOG(4, s, t, "MPPP: (2)Session number becomes: %d\n", s);
@ -1530,7 +1532,6 @@ static void processipout(uint8_t *buf, int len)
tunnelsend(fragbuf, len + (p-fragbuf), t); // send it... tunnelsend(fragbuf, len + (p-fragbuf), t); // send it...
update_session_out_stat(s, sp, len); update_session_out_stat(s, sp, len);
} }
}
// Snooping this session, send it to intercept box // Snooping this session, send it to intercept box
if (sp->snoop_ip && sp->snoop_port) if (sp->snoop_ip && sp->snoop_port)
@ -1610,7 +1611,10 @@ static void processipv6out(uint8_t * buf, int len)
if (session[s].bundle && bundle[session[s].bundle].num_of_links > 1) if (session[s].bundle && bundle[session[s].bundle].num_of_links > 1)
{ {
bundleidt bid = session[s].bundle; bundleidt bid = session[s].bundle;
s = bundle[bid].members[bundle[bid].current_ses = ++bundle[bid].current_ses % bundle[bid].num_of_links]; bundlet *b = &bundle[bid];
b->current_ses = (b->current_ses + 1) % b->num_of_links;
s = b->members[b->current_ses];
LOG(3, s, session[s].tunnel, "MPPP: Session number becomes: %u\n", s); LOG(3, s, session[s].tunnel, "MPPP: Session number becomes: %u\n", s);
} }
t = session[s].tunnel; t = session[s].tunnel;