Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/net clear authentication protocol when SPPP_AUTHPROTO_NO...
details: https://anonhg.NetBSD.org/src/rev/e616cae6f7e7
branches: trunk
changeset: 379107:e616cae6f7e7
user: yamaguchi <yamaguchi%NetBSD.org@localhost>
date: Tue May 11 06:42:42 2021 +0000
description:
clear authentication protocol when SPPP_AUTHPROTO_NONE is specified
diffstat:
sys/net/if_sppp.h | 3 +-
sys/net/if_spppsubr.c | 58 +++++++++++++++++++++++++++++++++++++-------------
2 files changed, 45 insertions(+), 16 deletions(-)
diffs (133 lines):
diff -r 781742ccfd6a -r e616cae6f7e7 sys/net/if_sppp.h
--- a/sys/net/if_sppp.h Tue May 11 06:33:17 2021 +0000
+++ b/sys/net/if_sppp.h Tue May 11 06:42:42 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_sppp.h,v 1.34 2021/05/11 01:27:45 yamaguchi Exp $ */
+/* $NetBSD: if_sppp.h,v 1.35 2021/05/11 06:42:42 yamaguchi Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -40,6 +40,7 @@
#define SPPP_AUTHPROTO_NONE 0
#define SPPP_AUTHPROTO_PAP 1
#define SPPP_AUTHPROTO_CHAP 2
+#define SPPP_AUTHPROTO_NOCHG 3
#define SPPP_AUTHFLAG_NOCALLOUT 1 /* do not require authentication on */
/* callouts */
diff -r 781742ccfd6a -r e616cae6f7e7 sys/net/if_spppsubr.c
--- a/sys/net/if_spppsubr.c Tue May 11 06:33:17 2021 +0000
+++ b/sys/net/if_spppsubr.c Tue May 11 06:42:42 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_spppsubr.c,v 1.236 2021/05/11 06:33:17 yamaguchi Exp $ */
+/* $NetBSD: if_spppsubr.c,v 1.237 2021/05/11 06:42:42 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.236 2021/05/11 06:33:17 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.237 2021/05/11 06:42:42 yamaguchi Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -185,6 +185,8 @@
#define CISCO_ADDR_REPLY 1 /* Cisco address reply */
#define CISCO_KEEPALIVE_REQ 2 /* Cisco keepalive request */
+#define PPP_NOPROTO 0 /* no authentication protocol */
+
enum {
STATE_INITIAL = SPPP_STATE_INITIAL,
STATE_STARTING = SPPP_STATE_STARTING,
@@ -528,6 +530,34 @@ static const struct cp *cps[IDX_COUNT] =
&chap, /* IDX_CHAP */
};
+static inline u_int
+sppp_proto2authproto(u_short proto)
+{
+
+ switch (proto) {
+ case PPP_PAP:
+ return SPPP_AUTHPROTO_PAP;
+ case PPP_CHAP:
+ return SPPP_AUTHPROTO_CHAP;
+ }
+
+ return SPPP_AUTHPROTO_NONE;
+}
+
+static inline u_short
+sppp_authproto2proto(u_int authproto)
+{
+
+ switch (authproto) {
+ case SPPP_AUTHPROTO_PAP:
+ return PPP_PAP;
+ case SPPP_AUTHPROTO_CHAP:
+ return PPP_CHAP;
+ }
+
+ return PPP_NOPROTO;
+}
+
static void
sppp_change_phase(struct sppp *sp, int phase)
{
@@ -2720,7 +2750,7 @@ sppp_lcp_open(struct sppp *sp, void *xcp
/*
* If we are authenticator, negotiate LCP_AUTH
*/
- if (sp->hisauth.proto != 0)
+ if (sp->hisauth.proto != PPP_NOPROTO)
SET(sp->lcp.opts, SPPP_LCP_OPT_AUTH_PROTO);
else
CLR(sp->lcp.opts, SPPP_LCP_OPT_AUTH_PROTO);
@@ -2854,7 +2884,7 @@ sppp_lcp_confreq(struct sppp *sp, struct
if (authproto == PPP_PAP || authproto == PPP_CHAP)
sp->myauth.proto = authproto;
}
- if (sp->myauth.proto == 0) {
+ if (sp->myauth.proto == PPP_NOPROTO) {
/* we are not configured to do auth */
if (debug)
addlog(" [not configured]");
@@ -5995,12 +6025,8 @@ sppp_params(struct sppp *sp, u_long cmd,
cfg->myauthflags = sp->myauth.flags;
cfg->hisauthflags = sp->hisauth.flags;
strlcpy(cfg->ifname, sp->pp_if.if_xname, sizeof(cfg->ifname));
- cfg->hisauth = 0;
- if (sp->hisauth.proto)
- cfg->hisauth = (sp->hisauth.proto == PPP_PAP) ? SPPP_AUTHPROTO_PAP : SPPP_AUTHPROTO_CHAP;
- cfg->myauth = 0;
- if (sp->myauth.proto)
- cfg->myauth = (sp->myauth.proto == PPP_PAP) ? SPPP_AUTHPROTO_PAP : SPPP_AUTHPROTO_CHAP;
+ cfg->hisauth = sppp_proto2authproto(sp->hisauth.proto);
+ cfg->myauth = sppp_proto2authproto(sp->myauth.proto);
if (cfg->myname_length == 0) {
if (sp->myauth.name != NULL)
cfg->myname_length = sp->myauth.name_len + 1;
@@ -6137,13 +6163,15 @@ sppp_params(struct sppp *sp, u_long cmd,
sp->myauth.secret[sp->myauth.secret_len] = 0;
}
sp->myauth.flags = cfg->myauthflags;
- if (cfg->myauth)
- sp->myauth.proto = (cfg->myauth == SPPP_AUTHPROTO_PAP) ? PPP_PAP : PPP_CHAP;
+ if (cfg->myauth != SPPP_AUTHPROTO_NOCHG) {
+ sp->myauth.proto = sppp_authproto2proto(cfg->myauth);
+ }
sp->hisauth.flags = cfg->hisauthflags;
- if (cfg->hisauth)
- sp->hisauth.proto = (cfg->hisauth == SPPP_AUTHPROTO_PAP) ? PPP_PAP : PPP_CHAP;
+ if (cfg->hisauth != SPPP_AUTHPROTO_NOCHG) {
+ sp->hisauth.proto = sppp_authproto2proto(cfg->hisauth);
+ }
sp->pp_auth_failures = 0;
- if (sp->hisauth.proto != 0)
+ if (sp->hisauth.proto != PPP_NOPROTO)
SET(sp->lcp.opts, SPPP_LCP_OPT_AUTH_PROTO);
else
CLR(sp->lcp.opts, SPPP_LCP_OPT_AUTH_PROTO);
Home |
Main Index |
Thread Index |
Old Index