Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Apr 2001 18:48:18 +0300
From:      Victor Ivanov <v0rbiz@icon.bg>
To:        freebsd-hackers@freebsd.org
Cc:        freebsd-isp@freebsd.org
Subject:   ppp showing radius message
Message-ID:  <20010425184818.A20522@icon.icon.bg>

next in thread | raw e-mail | index | archive | help

--R3G7APHDIzY6R/pk
Content-Type: multipart/mixed; boundary="82I3+IH0IqGh5yIs"
Content-Disposition: inline


--82I3+IH0IqGh5yIs
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

    Hi,

    I made a simple (and ugly) patch to ppp to show the radius message when
a radius reject is received.  It also saves it in struct authinfo so the au=
th
failure routine can pass it to the peer.  The patch modifies pap.c to do th=
is,
but I don't know how to modify the other auth types (I'm using pap only her=
e).

    Someone finds this useful (except me)?

P.S. It's tested on the server side (with Windows client and a PicoBSD clie=
nt
     for peers).

--=20
Players win and winners play
Have a lucky day

--82I3+IH0IqGh5yIs
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ppp-message.patch"
Content-Transfer-Encoding: quoted-printable

--- auth.h.orig	Wed Apr 25 18:13:13 2001
+++ auth.h	Wed Apr 25 18:13:25 2001
@@ -42,6 +42,7 @@
   struct {
     struct fsm_retry fsm;	/* How often/frequently to resend requests */
   } cfg;
+  char *fail_message;
 };
=20
 #define auth_Failure(a) (*a->fn.failure)(a);
--- pap.c.orig	Wed Apr 25 18:13:43 2001
+++ pap.c	Wed Apr 25 18:15:51 2001
@@ -149,7 +149,8 @@
 static void
 pap_Failure(struct authinfo *authp)
 {
-  SendPapCode(authp, PAP_NAK, "Login incorrect");
+  SendPapCode(authp, PAP_NAK,
+	  (authp->fail_message ? authp->fail_message : "Login incorrect"));
   datalink_AuthNotOk(authp->physical->dl);
 }
=20
--- radius.c.orig	Wed Apr 25 18:15:55 2001
+++ radius.c	Wed Apr 25 18:24:07 2001
@@ -83,6 +83,8 @@
 #include "datalink.h"
 #include "bundle.h"
=20
+static char fail_message[128];
+
 /*
  * rad_continue_send_request() has given us `got' (non-zero).  Deal with i=
t.
  */
@@ -111,10 +113,32 @@
       break;
=20
     case RAD_ACCESS_REJECT:
-      log_Printf(LogPHASE, "Radius(%s): REJECT received\n", stype);
-      if (r->cx.auth)
-        auth_Failure(r->cx.auth);
-      rad_close(r->cx.rad);
+      {
+        int got2;
+
+        nuke =3D NULL;
+        while (!nuke && ((got2 =3D rad_get_attr(r->cx.rad, &data, &len)) >=
 0)) {
+	  if (got2 =3D=3D RAD_REPLY_MESSAGE) {
+	    if ((nuke =3D rad_cvt_string(data, len)) =3D=3D NULL) {
+	      log_Printf(LogERROR, "rad_cvt_string: %s\n", rad_strerror(r->cx.rad=
));
+	      rad_close(r->cx.rad);
+	      return;
+	    }
+	  }
+	}
+	if (nuke) {
+	  strlcpy(fail_message, nuke, sizeof(fail_message));
+	  free(nuke);
+	  r->cx.auth->fail_message =3D fail_message;
+	  log_Printf(LogPHASE, "Radius(%s): REJECT received (%s)\n",
+		  stype, fail_message);
+	} else
+	  log_Printf(LogPHASE, "Radius(%s): REJECT received\n", stype);
+
+        if (r->cx.auth)
+          auth_Failure(r->cx.auth);
+        rad_close(r->cx.rad);
+      }
       return;
=20
     case RAD_ACCESS_CHALLENGE:

--82I3+IH0IqGh5yIs--

--R3G7APHDIzY6R/pk
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: PGP 6.5.1i

iQCVAwUBOubxwPD9M5lef5W3AQH3vgQAjcmUOXh9w7seLaBhpEl4n8IZkgSCS1Z3
jzaNt3QMgfOGRz2zMubV0JyJxu2lgBoGn1+NnQ/wRJyzGQI9w8qkG9ZPzwnNN9Qu
wlCksFfJ+WTaEpJYDeiqDuYSt+qQB+J2fCz0sINUg2yGIpB2CNgIIGo3qGK5KMzC
Oon5YS8ZZV4=
=9p7B
-----END PGP SIGNATURE-----

--R3G7APHDIzY6R/pk--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010425184818.A20522>