summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accel-pppd/ctrl/ipoe/ipoe.c3
-rw-r--r--accel-pppd/ifcfg.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/accel-pppd/ctrl/ipoe/ipoe.c b/accel-pppd/ctrl/ipoe/ipoe.c
index 8bedfc47..b48e1f23 100644
--- a/accel-pppd/ctrl/ipoe/ipoe.c
+++ b/accel-pppd/ctrl/ipoe/ipoe.c
@@ -1244,6 +1244,9 @@ static int ipoe_session_terminate(struct ap_session *s, int hard)
{
struct ipoe_session *ses = container_of(s, typeof(*ses), ses);
+ if (ses->ifindex == -1)
+ ses->ctrl.dont_ifcfg = 1;
+
if (hard || !conf_soft_terminate || ses->UP || ap_shutdown)
ipoe_session_terminated(ses);
else
diff --git a/accel-pppd/ifcfg.c b/accel-pppd/ifcfg.c
index 03968fb5..8fdfde7d 100644
--- a/accel-pppd/ifcfg.c
+++ b/accel-pppd/ifcfg.c
@@ -193,8 +193,9 @@ void __export ap_session_ifdown(struct ap_session *ses)
if (ses->ifindex == -1)
return;
+ strcpy(ifr.ifr_name, ses->ifname);
+
if (!ses->ctrl->dont_ifcfg) {
- strcpy(ifr.ifr_name, ses->ifname);
ifr.ifr_flags = 0;
net->sock_ioctl(SIOCSIFFLAGS, &ifr);
}