diff options
-rw-r--r-- | accel-pppd/ctrl/ipoe/ipoe.c | 3 | ||||
-rw-r--r-- | accel-pppd/ifcfg.c | 3 |
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); } |