+ fsm_close(&lcp_fsm[unit], reason);
+}
+
+#ifdef _linux_
+static void IdleTimeCheck __P((caddr_t));
+
+/*
+ * Timer expired for the LCP echo requests from this process.
+ */
+
+static void
+RestartIdleTimer (f)
+ fsm *f;
+{
+ u_long delta;
+ struct ppp_idle ddinfo;
+/*
+ * Read the time since the last packet was received.
+ */
+ if (ioctl (fd, PPPIOCGIDLE, &ddinfo) < 0) {
+ syslog (LOG_ERR, "ioctl(PPPIOCGIDLE): %m");
+ die (1);
+ }
+/*
+ * Compute the time since the last packet was received. If the timer
+ * has expired then disconnect the line.
+ */
+ delta = idle_time_limit - (u_long) ddinfo.recv_idle;
+ if (((int) delta <= 0L) && (f->state == OPENED)) {
+ syslog (LOG_NOTICE, "No IP frames received within idle time limit");
+ lcp_close(f->unit, "Idle time limit expired"); /* Reset connection */
+ phase = PHASE_TERMINATE; /* Mark it down */
+ } else {
+ if ((int) delta <= 0L)
+ delta = (u_long) idle_time_limit;
+ assert (idle_timer_running==0);
+ TIMEOUT (IdleTimeCheck, (caddr_t) f, delta);
+ idle_timer_running = 1;
+ }