Module Name: src Committed By: yamaguchi Date: Tue May 11 06:21:28 UTC 2021
Modified Files: src/sys/net: if_spppsubr.c Log Message: Move RCA event after RCR event A authentication failed by TO+ event between RCA and RCR events 1. RCA event in REQ-SENT state - REQ-SENT => ACK-RCVD 2. TO+ event - ACK-RCVD => REQ-SENT 3. RCR+ event - REQ-SENT => ACK-SENT By moving RCA after RCR, the state is transisted to OPENED 1. RCR event - REQ-SENT => ACK-SENT 2. TO+ event - state is not changed 3. RCA event - ACK-SENT => OPENED To generate a diff of this commit: cvs rdiff -u -r1.233 -r1.234 src/sys/net/if_spppsubr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if_spppsubr.c diff -u src/sys/net/if_spppsubr.c:1.233 src/sys/net/if_spppsubr.c:1.234 --- src/sys/net/if_spppsubr.c:1.233 Tue May 11 01:27:45 2021 +++ src/sys/net/if_spppsubr.c Tue May 11 06:21:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_spppsubr.c,v 1.233 2021/05/11 01:27:45 yamaguchi Exp $ */ +/* $NetBSD: if_spppsubr.c,v 1.234 2021/05/11 06:21:28 yamaguchi Exp $ */ /* * Synchronous PPP/Cisco link level subroutines. @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.233 2021/05/11 01:27:45 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.234 2021/05/11 06:21:28 yamaguchi Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -4876,11 +4876,6 @@ sppp_chap_input(struct sppp *sp, struct if (memcmp(digest, value, value_len) == 0) { sp->scp[IDX_CHAP].rcr_type = CP_RCR_ACK; - if (!ISSET(sppp_auth_role(&chap, sp), SPPP_AUTH_PEER) || - sp->chap.rechallenging) { - /* generate a dummy RCA event*/ - sppp_wq_add(sp->wq_cp, &sp->scp[IDX_CHAP].work_rca); - } } else { sp->scp[IDX_CHAP].rcr_type = CP_RCR_NAK; } @@ -4896,6 +4891,13 @@ sppp_chap_input(struct sppp *sp, struct } sppp_wq_add(sp->wq_cp, &sp->scp[IDX_CHAP].work_rcr); + + /* generate a dummy RCA event */ + if (sp->scp[IDX_CHAP].rcr_type == CP_RCR_ACK && + (!ISSET(sppp_auth_role(&chap, sp), SPPP_AUTH_PEER) || + sp->chap.rechallenging)) { + sppp_wq_add(sp->wq_cp, &sp->scp[IDX_CHAP].work_rca); + } break; default: @@ -5149,15 +5151,17 @@ sppp_pap_input(struct sppp *sp, struct m secret_len == sp->hisauth.secret_len && memcmp(secret, sp->hisauth.secret, secret_len) == 0) { sp->scp[IDX_PAP].rcr_type = CP_RCR_ACK; - if (!ISSET(sppp_auth_role(&pap, sp), SPPP_AUTH_PEER)) { - /* generate a dummy RCA event*/ - sppp_wq_add(sp->wq_cp, &sp->scp[IDX_PAP].work_rca); - } } else { sp->scp[IDX_PAP].rcr_type = CP_RCR_NAK; } sppp_wq_add(sp->wq_cp, &sp->scp[IDX_PAP].work_rcr); + + /* generate a dummy RCA event */ + if (sp->scp[IDX_PAP].rcr_type == CP_RCR_ACK && + !ISSET(sppp_auth_role(&pap, sp), SPPP_AUTH_PEER)) { + sppp_wq_add(sp->wq_cp, &sp->scp[IDX_PAP].work_rca); + } break; /* ack and nak are his authproto */