Ethereal-dev: [Ethereal-dev] RADIUS IPv6 RFC3162

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Budiyanto Fritz <fritzb88@xxxxxxxxx>
Date: Fri, 5 Mar 2004 16:32:20 -0800 (PST)
Hi All,

Here I attach various IPv6 attribute for
packet-radius.c

fritz

__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com
Index: packet-radius.c
===================================================================
RCS file: /cvsroot/ethereal/packet-radius.c,v
retrieving revision 1.93
diff -u -r1.93 packet-radius.c
--- packet-radius.c	28 Feb 2004 22:56:35 -0000	1.93
+++ packet-radius.c	6 Mar 2004 00:24:11 -0000
@@ -6,7 +6,7 @@
  *
  * RFC 2865, RFC 2866, RFC 2867, RFC 2868, RFC 2869
  *
- * $Id: packet-radius.c,v 1.93 2004/02/28 22:56:35 guy Exp $
+ * $Id: packet-radius.c,v 1.1 2004/03/05 21:51:37 fritz Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@xxxxxxxxxxxx>
@@ -147,6 +147,8 @@
     RADIUS_INTEGER4,
     RADIUS_IP_ADDRESS,
     RADIUS_IP6_ADDRESS,
+    RADIUS_IP6_PREFIX,
+    RADIUS_IP6_INTF_ID,
     RADIUS_UNKNOWN,
     RADIUS_IPX_ADDRESS,
     RADIUS_STRING_TAGGED,
@@ -569,6 +571,12 @@
   {88,	RADIUS_STRING,		"Framed Pool", NULL},
   {90,	RADIUS_STRING_TAGGED,	"Tunnel Client Auth ID", NULL},
   {91,	RADIUS_STRING_TAGGED,	"Tunnel Server Auth ID", NULL},
+  {95,	RADIUS_IP6_ADDRESS,	"NAS IPv6 Address", NULL},
+  {96,	RADIUS_IP6_INTF_ID,	"Framed Interface Id", NULL},
+  {97,	RADIUS_IP6_PREFIX,	"Framed IPv6 Prefix", NULL},
+  {98,	RADIUS_IP6_ADDRESS,	"Login IPv6 Host", NULL},
+  {99,	RADIUS_STRING,	    "Framed IPV6 Route", NULL},
+  {100,	RADIUS_STRING,	    "Framed IPV6 Pool", NULL},
   {120,	RADIUS_INTEGER4,	"Ascend Modem Port No", NULL},
   {121,	RADIUS_INTEGER4,	"Ascend Modem Slot No", NULL},
   {187,	RADIUS_INTEGER4,	"Ascend Multilink ID", NULL},
@@ -2388,6 +2396,8 @@
   gint32 timeval;
   const guint8 *pd;
   guint8 tag;
+  guint8 ipv6_prefix_length;
+  guint8 ipv6_addr_temp[16];
 
   int vsa_length;
   int vsa_len;
@@ -2433,6 +2443,22 @@
                 ip6_to_str_buf((const struct e_in6_addr *)tvb_get_ptr(tvb,offset+2,16),cont);
                 break;
 
+        case( RADIUS_IP6_PREFIX ):
+                ipv6_prefix_length = tvb_get_guint8(tvb,offset+3);
+                bzero(ipv6_addr_temp, 16);
+                if (ipv6_prefix_length > 16) ipv6_prefix_length = 16;
+                bcopy(tvb_get_ptr(tvb,offset+4, ipv6_prefix_length), ipv6_addr_temp, ipv6_prefix_length);
+                ip6_to_str_buf((const struct e_in6_addr *)ipv6_addr_temp, cont);
+                break;
+
+        case( RADIUS_IP6_INTF_ID ):
+                ipv6_prefix_length = tvb_get_guint8(tvb,offset+1);
+                bzero(ipv6_addr_temp, 16);
+                if (ipv6_prefix_length > 16) ipv6_prefix_length = 16;
+                bcopy(tvb_get_ptr(tvb,offset+2, ipv6_prefix_length), ipv6_addr_temp, ipv6_prefix_length);
+                ip6_to_str_buf((const struct e_in6_addr *)ipv6_addr_temp, cont);
+                break;
+
         case( RADIUS_IPX_ADDRESS ):
                 pd = tvb_get_ptr(tvb,offset+2,4);
                 sprintf(cont,"%u:%u:%u:%u",pd[0],pd[1],pd[2],pd[3]);
@@ -2500,19 +2526,22 @@
 			tvb_get_ntohs(tvb,offset+4));
  		break;
 
-	case( THE3GPP_IMSI ):
-	case( THE3GPP_IMSI_MCC_MNC ):
-	case( THE3GPP_GGSN_MCC_MNC ):
-	case( THE3GPP_SGSN_MCC_MNC ):
-	case( THE3GPP_SELECTION_MODE ):
-	case( THE3GPP_CHARGING_CHARACTERISTICS ):
-		sprintf(cont,"(encoded in UTF-8 format)");
-		break;
+    case( THE3GPP_IMSI ):
+    case( THE3GPP_IMSI_MCC_MNC ):
+    case( THE3GPP_GGSN_MCC_MNC ):
+    case( THE3GPP_SGSN_MCC_MNC ):
+    case( THE3GPP_SELECTION_MODE ):
+    case( THE3GPP_CHARGING_CHARACTERISTICS ):
+        sprintf(cont,"(encoded in UTF-8 format)");
+        break;
+
+    case( THE3GPP_NSAPI ):
+    case( THE3GPP_SESSION_STOP_INDICATOR ):
+        sprintf(cont,"(not parsed)");
+        break;
 
-	case( THE3GPP_NSAPI ):
-	case( THE3GPP_SESSION_STOP_INDICATOR ):
 	case( THE3GPP_IPV6_DNS_SERVERS ):
-		sprintf(cont,"(not parsed)");
+        ip6_to_str_buf((const struct e_in6_addr *)tvb_get_ptr(tvb,offset+2,16),cont);
 		break;
 
 	case( THE3GPP_QOS ):