drop "Session N is closing" message level to 4; don't process PPPIP packets in this state
This commit is contained in:
parent
502ab27352
commit
38abd6684e
3 changed files with 18 additions and 15 deletions
4
Changes
4
Changes
|
|
@ -1,9 +1,11 @@
|
||||||
* Fri Dec 3 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13
|
* Mon Dec 6 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13
|
||||||
- Better cluster master collision resolution: keep a counter of state
|
- Better cluster master collision resolution: keep a counter of state
|
||||||
changes, propagated in the heartbeats; the master with the highest #
|
changes, propagated in the heartbeats; the master with the highest #
|
||||||
of changes (that has kept in contact with the LAC through the
|
of changes (that has kept in contact with the LAC through the
|
||||||
outage) prevails.
|
outage) prevails.
|
||||||
- Skip newlines in ringbuffer messages to CLI.
|
- Skip newlines in ringbuffer messages to CLI.
|
||||||
|
- Drop "Session N is closing" message level to 4; don't process PPPIP
|
||||||
|
packets in this state.
|
||||||
|
|
||||||
* Wed Dec 1 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.12
|
* Wed Dec 1 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.12
|
||||||
- The "This time, for sure!" release.
|
- The "This time, for sure!" release.
|
||||||
|
|
|
||||||
27
l2tpns.c
27
l2tpns.c
|
|
@ -4,7 +4,7 @@
|
||||||
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
||||||
// vim: sw=8 ts=8
|
// vim: sw=8 ts=8
|
||||||
|
|
||||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.61 2004-11-29 03:55:21 bodea Exp $";
|
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.62 2004-12-05 23:45:04 bodea Exp $";
|
||||||
|
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
@ -1731,7 +1731,7 @@ void processudp(u8 * buf, int len, struct sockaddr_in *addr)
|
||||||
case 39: // seq required - we control it as an LNS anyway...
|
case 39: // seq required - we control it as an LNS anyway...
|
||||||
break;
|
break;
|
||||||
case 36: // Random Vector
|
case 36: // Random Vector
|
||||||
LOG(4, s, t, " Random Vector received. Enabled AVP Hiding.\n");
|
LOG(4, s, t, " Random Vector received. Enabled AVP Hiding.\n");
|
||||||
memset(session[s].random_vector, 0, sizeof(session[s].random_vector));
|
memset(session[s].random_vector, 0, sizeof(session[s].random_vector));
|
||||||
memcpy(session[s].random_vector, b, n);
|
memcpy(session[s].random_vector, b, n);
|
||||||
session[s].random_vector_length = n;
|
session[s].random_vector_length = n;
|
||||||
|
|
@ -1912,12 +1912,6 @@ void processudp(u8 * buf, int len, struct sockaddr_in *addr)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (session[s].die)
|
|
||||||
{
|
|
||||||
LOG(3, s, t, "Session %d is closing. Don't process PPP packets\n", s);
|
|
||||||
// I'm pretty sure this isn't right -- mo.
|
|
||||||
// return; // closing session, PPP not processed
|
|
||||||
}
|
|
||||||
if (prot == PPPPAP)
|
if (prot == PPPPAP)
|
||||||
{
|
{
|
||||||
session[s].last_packet = time_now;
|
session[s].last_packet = time_now;
|
||||||
|
|
@ -1950,12 +1944,19 @@ void processudp(u8 * buf, int len, struct sockaddr_in *addr)
|
||||||
}
|
}
|
||||||
else if (prot == PPPIP)
|
else if (prot == PPPIP)
|
||||||
{
|
{
|
||||||
|
if (session[s].die)
|
||||||
|
{
|
||||||
|
LOG(4, s, t, "Session %d is closing. Don't process PPP packets\n", s);
|
||||||
|
return; // closing session, PPP not processed
|
||||||
|
}
|
||||||
|
|
||||||
session[s].last_packet = time_now;
|
session[s].last_packet = time_now;
|
||||||
if (session[s].walled_garden && !config->cluster_iam_master)
|
if (session[s].walled_garden && !config->cluster_iam_master)
|
||||||
{
|
{
|
||||||
master_forward_packet(buf, len, addr->sin_addr.s_addr, addr->sin_port);
|
master_forward_packet(buf, len, addr->sin_addr.s_addr, addr->sin_port);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
processipin(t, s, p, l);
|
processipin(t, s, p, l);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -2232,7 +2233,7 @@ static int still_busy(void)
|
||||||
// We stop waiting for radius after BUSY_WAIT_TIME 1/10th seconds
|
// We stop waiting for radius after BUSY_WAIT_TIME 1/10th seconds
|
||||||
if (abs(TIME - start_busy_wait) > BUSY_WAIT_TIME)
|
if (abs(TIME - start_busy_wait) > BUSY_WAIT_TIME)
|
||||||
{
|
{
|
||||||
LOG(1, 0, 0, "Giving up waiting for RADIUS to be empty. Shutting down anyway.\n");
|
LOG(1, 0, 0, "Giving up waiting for RADIUS to be empty. Shutting down anyway.\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2266,7 +2267,7 @@ static void mainloop(void)
|
||||||
clockt next_cluster_ping = 0; // send initial ping immediately
|
clockt next_cluster_ping = 0; // send initial ping immediately
|
||||||
time_t next_clean = time_now + config->cleanup_interval;
|
time_t next_clean = time_now + config->cleanup_interval;
|
||||||
|
|
||||||
LOG(4, 0, 0, "Beginning of main loop. udpfd=%d, tunfd=%d, cluster_sockfd=%d, controlfd=%d\n",
|
LOG(4, 0, 0, "Beginning of main loop. udpfd=%d, tunfd=%d, cluster_sockfd=%d, controlfd=%d\n",
|
||||||
udpfd, tunfd, cluster_sockfd, controlfd);
|
udpfd, tunfd, cluster_sockfd, controlfd);
|
||||||
|
|
||||||
FD_ZERO(&readset);
|
FD_ZERO(&readset);
|
||||||
|
|
@ -3069,7 +3070,7 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if ((ret = sched_setscheduler(0, SCHED_FIFO, ¶ms)) == 0)
|
if ((ret = sched_setscheduler(0, SCHED_FIFO, ¶ms)) == 0)
|
||||||
{
|
{
|
||||||
LOG(1, 0, 0, "Using FIFO scheduler. Say goodbye to any other processes running\n");
|
LOG(1, 0, 0, "Using FIFO scheduler. Say goodbye to any other processes running\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -3612,11 +3613,11 @@ int sessionsetup(tunnelidt t, sessionidt s)
|
||||||
assign_ip_address(s);
|
assign_ip_address(s);
|
||||||
if (!session[s].ip)
|
if (!session[s].ip)
|
||||||
{
|
{
|
||||||
LOG(0, s, t, " No IP allocated. The IP address pool is FULL!\n");
|
LOG(0, s, t, " No IP allocated. The IP address pool is FULL!\n");
|
||||||
sessionshutdown(s, "No IP addresses available");
|
sessionshutdown(s, "No IP addresses available");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
LOG(3, s, t, " No IP allocated. Assigned %s from pool\n",
|
LOG(3, s, t, " No IP allocated. Assigned %s from pool\n",
|
||||||
fmtaddr(htonl(session[s].ip), 0));
|
fmtaddr(htonl(session[s].ip), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,5 +43,5 @@ rm -rf %{buildroot}
|
||||||
%attr(644,root,root) /usr/share/man/man[58]/*
|
%attr(644,root,root) /usr/share/man/man[58]/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Dec 3 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13-1
|
* Mon Dec 6 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13-1
|
||||||
- 2.0.13 release, see /usr/share/doc/l2tpns-2.0.13/Changes
|
- 2.0.13 release, see /usr/share/doc/l2tpns-2.0.13/Changes
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue