Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Oct 2002 22:33:14 +0400 (MSD)
From:      Gleb Smirnoff <glebius@cell.sick.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/44310: make ppp(8) add clients MAC address to all RADIUS requests and responces
Message-ID:  <200210201833.g9KIXEtF016470@cell.sick.ru>

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

>Number:         44310
>Category:       bin
>Synopsis:       make ppp(8) add clients MAC address to all RADIUS requests and responces
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Oct 20 11:40:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Gleb Smirnoff
>Release:        FreeBSD 4.7-PRERELEASE i386
>Organization:
Moscow State University
>Environment:
System: FreeBSD cell.sick.ru 4.7-PRERELEASE FreeBSD 4.7-PRERELEASE #7: Fri Sep 6 02:58:47 MSD 2002 root@cell.sick.ru:/usr/obj/usr/src/sys/NUCLEUS i386

>Description:
	  The following patch makes ppp(8) to add clients' MAC address to RADIUS
	packet if it is serving PPPoE (is run from pppoed(8)). ppp(8) will write MAC
	to RADIUS variable RAD_CALLING_STATION_ID. It can not be messed with real
	station id's (which are phone numbers), because ppp(8) also adds
	variable RAD_NAS_PORT_TYPE = RAD_ETHERNET.
>How-To-Repeat:
	Without this it is impossible to determine from which machine
	did the PPPoE client came from.
>Fix:

--- /usr/src/usr.sbin/ppp/radius.c	Sun Sep  1 06:12:32 2002
+++ radius.c	Sun Oct 20 22:10:27 2002
@@ -726,6 +726,7 @@
   struct timeval tv;
   int got;
   char hostname[MAXHOSTNAMELEN];
+  char *mac_addr;
 #if 0
   struct hostent *hp;
   struct in_addr hostaddr;
@@ -866,6 +867,13 @@
     }
   }
 
+  if ((mac_addr = getenv("HISMACADDR")) != 0)
+    if (rad_put_string(r->cx.rad, RAD_CALLING_STATION_ID, mac_addr) !=0 ) {
+	log_Printf(LogERROR, "rad_put: %s\n", rad_strerror(r->cx.rad));
+	rad_close(r->cx.rad);
+	return;
+     }
+
   radius_put_physical_details(r->cx.rad, authp->physical);
 
   r->cx.auth = authp;
@@ -895,6 +903,7 @@
   struct timeval tv;
   int got;
   char hostname[MAXHOSTNAMELEN];
+  char *mac_addr;
 #if 0
   struct hostent *hp;
   struct in_addr hostaddr;
@@ -962,6 +971,13 @@
     rad_close(r->cx.rad);
     return;
   }
+
+  if ((mac_addr = getenv("HISMACADDR")) != 0)
+    if (rad_put_string(r->cx.rad, RAD_CALLING_STATION_ID, mac_addr) !=0 ) {
+	log_Printf(LogERROR, "rad_put: %s\n", rad_strerror(r->cx.rad));
+	rad_close(r->cx.rad);
+	return;
+     }
 
   if (gethostname(hostname, sizeof hostname) != 0)
     log_Printf(LogERROR, "rad_put: gethostname(): %s\n", strerror(errno));
>Release-Note:
>Audit-Trail:
>Unformatted:

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




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