summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKozlov Dmitry <xeb@mail.ru>2013-03-16 16:31:28 +0400
committerKozlov Dmitry <xeb@mail.ru>2013-03-16 16:31:28 +0400
commit751477d72cb49656cc6d7d35d91b21da3be3314e (patch)
tree6efc8efc0b3c22762234f4a08d860e2a2edab589
parent6f1c3cd22e30a22bc7b2f69735d62490f274bb07 (diff)
downloadaccel-ppp-751477d72cb49656cc6d7d35d91b21da3be3314e.tar.gz
accel-ppp-751477d72cb49656cc6d7d35d91b21da3be3314e.zip
ipoe: drop previous session when new one detected in shared=0 mode
-rw-r--r--accel-pppd/ctrl/ipoe/ipoe.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/accel-pppd/ctrl/ipoe/ipoe.c b/accel-pppd/ctrl/ipoe/ipoe.c
index 811d6645..e7c91b1a 100644
--- a/accel-pppd/ctrl/ipoe/ipoe.c
+++ b/accel-pppd/ctrl/ipoe/ipoe.c
@@ -867,6 +867,10 @@ static void ipoe_recv_dhcpv4(struct dhcpv4_serv *dhcpv4, struct dhcpv4_packet *p
if (pack->msg_type == DHCPDISCOVER) {
ses = ipoe_session_lookup(serv, pack);
if (!ses) {
+
+ if (serv->opt_shared == 0)
+ ipoe_drop_sessions(serv, NULL);
+
ses = ipoe_session_create_dhcpv4(serv, pack);
if (ses) {
dhcpv4_packet_ref(pack);
@@ -901,6 +905,9 @@ static void ipoe_recv_dhcpv4(struct dhcpv4_serv *dhcpv4, struct dhcpv4_packet *p
log_info2("recv ");
dhcpv4_print_packet(pack, 0, log_info2);
}
+
+ if (serv->opt_shared == 0)
+ ipoe_drop_sessions(serv, NULL);
dhcpv4_send_nak(dhcpv4, pack);
} else {