| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: if_spppsubr.c,v 1.238 2021/05/14 08:06:32 yamaguchi Exp $ */ | | 1 | /* $NetBSD: if_spppsubr.c,v 1.239 2021/05/14 08:11:08 yamaguchi Exp $ */ |
2 | | | 2 | |
3 | /* | | 3 | /* |
4 | * Synchronous PPP/Cisco link level subroutines. | | 4 | * Synchronous PPP/Cisco link level subroutines. |
5 | * Keepalive protocol implemented in both Cisco and PPP modes. | | 5 | * Keepalive protocol implemented in both Cisco and PPP modes. |
6 | * | | 6 | * |
7 | * Copyright (C) 1994-1996 Cronyx Engineering Ltd. | | 7 | * Copyright (C) 1994-1996 Cronyx Engineering Ltd. |
8 | * Author: Serge Vakulenko, <vak@cronyx.ru> | | 8 | * Author: Serge Vakulenko, <vak@cronyx.ru> |
9 | * | | 9 | * |
10 | * Heavily revamped to conform to RFC 1661. | | 10 | * Heavily revamped to conform to RFC 1661. |
11 | * Copyright (C) 1997, Joerg Wunsch. | | 11 | * Copyright (C) 1997, Joerg Wunsch. |
12 | * | | 12 | * |
13 | * RFC2472 IPv6CP support. | | 13 | * RFC2472 IPv6CP support. |
14 | * Copyright (C) 2000, Jun-ichiro itojun Hagino <itojun@iijlab.net>. | | 14 | * Copyright (C) 2000, Jun-ichiro itojun Hagino <itojun@iijlab.net>. |
| @@ -31,27 +31,27 @@ | | | @@ -31,27 +31,27 @@ |
31 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 31 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
32 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 32 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
33 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 33 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
34 | * POSSIBILITY OF SUCH DAMAGE. | | 34 | * POSSIBILITY OF SUCH DAMAGE. |
35 | * | | 35 | * |
36 | * From: Version 2.4, Thu Apr 30 17:17:21 MSD 1997 | | 36 | * From: Version 2.4, Thu Apr 30 17:17:21 MSD 1997 |
37 | * | | 37 | * |
38 | * From: if_spppsubr.c,v 1.39 1998/04/04 13:26:03 phk Exp | | 38 | * From: if_spppsubr.c,v 1.39 1998/04/04 13:26:03 phk Exp |
39 | * | | 39 | * |
40 | * From: Id: if_spppsubr.c,v 1.23 1999/02/23 14:47:50 hm Exp | | 40 | * From: Id: if_spppsubr.c,v 1.23 1999/02/23 14:47:50 hm Exp |
41 | */ | | 41 | */ |
42 | | | 42 | |
43 | #include <sys/cdefs.h> | | 43 | #include <sys/cdefs.h> |
44 | __KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.238 2021/05/14 08:06:32 yamaguchi Exp $"); | | 44 | __KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.239 2021/05/14 08:11:08 yamaguchi Exp $"); |
45 | | | 45 | |
46 | #if defined(_KERNEL_OPT) | | 46 | #if defined(_KERNEL_OPT) |
47 | #include "opt_inet.h" | | 47 | #include "opt_inet.h" |
48 | #include "opt_modular.h" | | 48 | #include "opt_modular.h" |
49 | #include "opt_compat_netbsd.h" | | 49 | #include "opt_compat_netbsd.h" |
50 | #include "opt_net_mpsafe.h" | | 50 | #include "opt_net_mpsafe.h" |
51 | #include "opt_sppp.h" | | 51 | #include "opt_sppp.h" |
52 | #endif | | 52 | #endif |
53 | | | 53 | |
54 | #include <sys/param.h> | | 54 | #include <sys/param.h> |
55 | #include <sys/proc.h> | | 55 | #include <sys/proc.h> |
56 | #include <sys/systm.h> | | 56 | #include <sys/systm.h> |
57 | #include <sys/kernel.h> | | 57 | #include <sys/kernel.h> |
| @@ -5616,27 +5616,28 @@ sppp_keepalive(void *dummy) | | | @@ -5616,27 +5616,28 @@ sppp_keepalive(void *dummy) |
5616 | ! (ifp->if_flags & IFF_RUNNING)) { | | 5616 | ! (ifp->if_flags & IFF_RUNNING)) { |
5617 | SPPP_UNLOCK(sp); | | 5617 | SPPP_UNLOCK(sp); |
5618 | continue; | | 5618 | continue; |
5619 | } | | 5619 | } |
5620 | | | 5620 | |
5621 | /* No keepalive in PPP mode if LCP not opened yet. */ | | 5621 | /* No keepalive in PPP mode if LCP not opened yet. */ |
5622 | if (! (sp->pp_flags & PP_CISCO) && | | 5622 | if (! (sp->pp_flags & PP_CISCO) && |
5623 | sp->pp_phase < SPPP_PHASE_AUTHENTICATE) { | | 5623 | sp->pp_phase < SPPP_PHASE_AUTHENTICATE) { |
5624 | SPPP_UNLOCK(sp); | | 5624 | SPPP_UNLOCK(sp); |
5625 | continue; | | 5625 | continue; |
5626 | } | | 5626 | } |
5627 | | | 5627 | |
5628 | /* No echo reply, but maybe user data passed through? */ | | 5628 | /* No echo reply, but maybe user data passed through? */ |
5629 | if ((now - sp->pp_last_receive) < sp->pp_max_noreceive) { | | 5629 | if (sp->pp_max_noreceive != 0 && |
| | | 5630 | (now - sp->pp_last_receive) < sp->pp_max_noreceive) { |
5630 | sp->pp_alivecnt = 0; | | 5631 | sp->pp_alivecnt = 0; |
5631 | SPPP_UNLOCK(sp); | | 5632 | SPPP_UNLOCK(sp); |
5632 | continue; | | 5633 | continue; |
5633 | } | | 5634 | } |
5634 | | | 5635 | |
5635 | if (sp->pp_alivecnt >= sp->pp_maxalive) { | | 5636 | if (sp->pp_alivecnt >= sp->pp_maxalive) { |
5636 | /* No keepalive packets got. Stop the interface. */ | | 5637 | /* No keepalive packets got. Stop the interface. */ |
5637 | sppp_wq_add(sp->wq_cp, &sp->work_ifdown); | | 5638 | sppp_wq_add(sp->wq_cp, &sp->work_ifdown); |
5638 | | | 5639 | |
5639 | if (! (sp->pp_flags & PP_CISCO)) { | | 5640 | if (! (sp->pp_flags & PP_CISCO)) { |
5640 | printf("%s: LCP keepalive timed out, going to restart the connection\n", | | 5641 | printf("%s: LCP keepalive timed out, going to restart the connection\n", |
5641 | ifp->if_xname); | | 5642 | ifp->if_xname); |
5642 | sp->pp_alivecnt = 0; | | 5643 | sp->pp_alivecnt = 0; |