forked from osmocom/wireshark
Additional AVPs, and Event-Timestamp support, in RADIUS, from Terje
Krogdahl. svn path=/trunk/; revision=3863
This commit is contained in:
parent
4dd604972b
commit
4d5ab5490b
4
AUTHORS
4
AUTHORS
|
@ -763,6 +763,10 @@ Motonori Shindo <mshindo[AT]mshindo.net> {
|
||||||
Authentication Protocol option
|
Authentication Protocol option
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Terje Krogdahl <tekr[AT]nextra.com> {
|
||||||
|
Additional AVPs, and Event-Timestamp support, in RADIUS
|
||||||
|
}
|
||||||
|
|
||||||
Alain Magloire <alainm[AT]rcsm.ece.mcgill.ca> was kind enough to
|
Alain Magloire <alainm[AT]rcsm.ece.mcgill.ca> was kind enough to
|
||||||
give his permission to use his version of snprintf.c.
|
give his permission to use his version of snprintf.c.
|
||||||
|
|
||||||
|
|
|
@ -1151,6 +1151,7 @@ B<http://www.ethereal.com>.
|
||||||
Markus Seehofer <mseehofe[AT]nt.hirschmann.de>
|
Markus Seehofer <mseehofe[AT]nt.hirschmann.de>
|
||||||
Lee Berger <lberger[AT]roy.org>
|
Lee Berger <lberger[AT]roy.org>
|
||||||
Motonori Shindo <mshindo[AT]mshindo.net>
|
Motonori Shindo <mshindo[AT]mshindo.net>
|
||||||
|
Terje Krogdahl <tekr[AT]nextra.com>
|
||||||
|
|
||||||
Alain Magloire <alainm[AT]rcsm.ece.mcgill.ca> was kind enough to give his
|
Alain Magloire <alainm[AT]rcsm.ece.mcgill.ca> was kind enough to give his
|
||||||
permission to use his version of snprintf.c.
|
permission to use his version of snprintf.c.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Routines for RADIUS packet disassembly
|
* Routines for RADIUS packet disassembly
|
||||||
* Copyright 1999 Johan Feyaerts
|
* Copyright 1999 Johan Feyaerts
|
||||||
*
|
*
|
||||||
* $Id: packet-radius.c,v 1.32 2001/06/18 09:31:15 guy Exp $
|
* $Id: packet-radius.c,v 1.33 2001/08/21 18:56:13 guy Exp $
|
||||||
*
|
*
|
||||||
* Ethereal - Network traffic analyzer
|
* Ethereal - Network traffic analyzer
|
||||||
* By Gerald Combs <gerald@ethereal.com>
|
* By Gerald Combs <gerald@ethereal.com>
|
||||||
|
@ -40,6 +40,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <time.h>
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "resolv.h"
|
#include "resolv.h"
|
||||||
|
|
||||||
|
@ -133,6 +134,9 @@ typedef struct _value_value_pair {
|
||||||
#define RD_TP_ACCT_TERMINATE_CAUSE 49
|
#define RD_TP_ACCT_TERMINATE_CAUSE 49
|
||||||
#define RD_TP_ACCT_MULTI_SESSION_ID 50
|
#define RD_TP_ACCT_MULTI_SESSION_ID 50
|
||||||
#define RD_TP_ACCT_LINK_COUNT 51
|
#define RD_TP_ACCT_LINK_COUNT 51
|
||||||
|
#define RD_TP_ACCT_INPUT_GIGAWORDS 52
|
||||||
|
#define RD_TP_ACCT_OUTPUT_GIGAWORDS 53
|
||||||
|
#define RD_TP_EVENT_TIMESTAMP 55
|
||||||
#define RD_TP_CHAP_CHALLENGE 60
|
#define RD_TP_CHAP_CHALLENGE 60
|
||||||
#define RD_TP_NAS_PORT_TYPE 61
|
#define RD_TP_NAS_PORT_TYPE 61
|
||||||
#define RD_TP_PORT_LIMIT 62
|
#define RD_TP_PORT_LIMIT 62
|
||||||
|
@ -142,7 +146,23 @@ typedef struct _value_value_pair {
|
||||||
#define RD_TP_TUNNEL_CLIENT_ENDPOINT 66
|
#define RD_TP_TUNNEL_CLIENT_ENDPOINT 66
|
||||||
#define RD_TP_TUNNEL_SERVER_ENDPOINT 67
|
#define RD_TP_TUNNEL_SERVER_ENDPOINT 67
|
||||||
#define RD_TP_TUNNEL_PASSWORD 69
|
#define RD_TP_TUNNEL_PASSWORD 69
|
||||||
|
#define RD_TP_CONNECT_INFO 77
|
||||||
#define RD_TP_TUNNEL_ASSIGNMENT_ID 82
|
#define RD_TP_TUNNEL_ASSIGNMENT_ID 82
|
||||||
|
#define RD_TP_NAS_PORT_ID 87
|
||||||
|
#define RD_TP_ASCEND_PRE_INPUT_OCTETS 190
|
||||||
|
#define RD_TP_ASCEND_PRE_OUTPUT_OCTETS 191
|
||||||
|
#define RD_TP_ASCEND_PRE_INPUT_PACKETS 192
|
||||||
|
#define RD_TP_ASCEND_PRE_OUTPUT_PACKETS 193
|
||||||
|
#define RD_TP_ASCEND_MAXIMUM_TIME 194
|
||||||
|
#define RD_TP_ASCEND_DISCONNECT_CAUSE 195
|
||||||
|
#define RD_TP_ASCEND_CONNECT_PROGRESS 196
|
||||||
|
#define RD_TP_ASCEND_DATA_RATE 197
|
||||||
|
#define RD_TP_ASCEND_PRESESSION_TIME 198
|
||||||
|
#define RD_TP_ASCEND_XMIT_RATE 255
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define AUTHENTICATOR_LENGTH 16
|
#define AUTHENTICATOR_LENGTH 16
|
||||||
#define RD_HDR_LENGTH 4
|
#define RD_HDR_LENGTH 4
|
||||||
|
@ -168,6 +188,7 @@ typedef struct _value_value_pair {
|
||||||
#define RADIUS_TUNNEL_MEDIUM_TYPE 18
|
#define RADIUS_TUNNEL_MEDIUM_TYPE 18
|
||||||
#define RADIUS_STRING_TAGGED 19
|
#define RADIUS_STRING_TAGGED 19
|
||||||
#define RADIUS_VENDOR_SPECIFIC 20
|
#define RADIUS_VENDOR_SPECIFIC 20
|
||||||
|
#define RADIUS_TIMESTAMP 21
|
||||||
|
|
||||||
static value_string radius_vals[] = {
|
static value_string radius_vals[] = {
|
||||||
{RADIUS_ACCESS_REQUEST, "Access Request"},
|
{RADIUS_ACCESS_REQUEST, "Access Request"},
|
||||||
|
@ -211,6 +232,7 @@ static value_string radius_vendor_specific_vendors[]=
|
||||||
{529,"Ascend"},
|
{529,"Ascend"},
|
||||||
{1584,"Bay Networks"},
|
{1584,"Bay Networks"},
|
||||||
{2636,"Juniper Networks"},
|
{2636,"Juniper Networks"},
|
||||||
|
{4874,"Unisphere Networks"},
|
||||||
{0,NULL}};
|
{0,NULL}};
|
||||||
|
|
||||||
static value_string radius_framed_protocol_vals[]=
|
static value_string radius_framed_protocol_vals[]=
|
||||||
|
@ -336,6 +358,11 @@ static value_string radius_nas_port_type_vals[]=
|
||||||
{12, "ADSL-CAP"},
|
{12, "ADSL-CAP"},
|
||||||
{13, "ADSL-DMT"},
|
{13, "ADSL-DMT"},
|
||||||
{14,"IDSL - ISDN"},
|
{14,"IDSL - ISDN"},
|
||||||
|
{15,"Ethernet"},
|
||||||
|
{16,"xDSL"},
|
||||||
|
{17,"Cable"},
|
||||||
|
{18,"Wireless Other"},
|
||||||
|
{19,"Wireless IEEE 802.11"},
|
||||||
{0,NULL}};
|
{0,NULL}};
|
||||||
|
|
||||||
static value_value_pair radius_printinfo[] = {
|
static value_value_pair radius_printinfo[] = {
|
||||||
|
@ -390,6 +417,9 @@ static value_value_pair radius_printinfo[] = {
|
||||||
{ RD_TP_ACCT_TERMINATE_CAUSE, RADIUS_ACCT_TERMINATE_CAUSE},
|
{ RD_TP_ACCT_TERMINATE_CAUSE, RADIUS_ACCT_TERMINATE_CAUSE},
|
||||||
{ RD_TP_ACCT_MULTI_SESSION_ID, RADIUS_STRING},
|
{ RD_TP_ACCT_MULTI_SESSION_ID, RADIUS_STRING},
|
||||||
{ RD_TP_ACCT_LINK_COUNT, RADIUS_INTEGER4},
|
{ RD_TP_ACCT_LINK_COUNT, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ACCT_INPUT_GIGAWORDS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ACCT_OUTPUT_GIGAWORDS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_EVENT_TIMESTAMP, RADIUS_TIMESTAMP},
|
||||||
{ RD_TP_CHAP_CHALLENGE, RADIUS_BINSTRING},
|
{ RD_TP_CHAP_CHALLENGE, RADIUS_BINSTRING},
|
||||||
{ RD_TP_NAS_PORT_TYPE, RADIUS_NAS_PORT_TYPE},
|
{ RD_TP_NAS_PORT_TYPE, RADIUS_NAS_PORT_TYPE},
|
||||||
{ RD_TP_PORT_LIMIT, RADIUS_INTEGER4},
|
{ RD_TP_PORT_LIMIT, RADIUS_INTEGER4},
|
||||||
|
@ -399,7 +429,19 @@ static value_value_pair radius_printinfo[] = {
|
||||||
{ RD_TP_TUNNEL_CLIENT_ENDPOINT, RADIUS_STRING_TAGGED},
|
{ RD_TP_TUNNEL_CLIENT_ENDPOINT, RADIUS_STRING_TAGGED},
|
||||||
{ RD_TP_TUNNEL_SERVER_ENDPOINT, RADIUS_STRING_TAGGED},
|
{ RD_TP_TUNNEL_SERVER_ENDPOINT, RADIUS_STRING_TAGGED},
|
||||||
{ RD_TP_TUNNEL_PASSWORD, RADIUS_STRING_TAGGED},
|
{ RD_TP_TUNNEL_PASSWORD, RADIUS_STRING_TAGGED},
|
||||||
|
{ RD_TP_CONNECT_INFO, RADIUS_STRING_TAGGED},
|
||||||
{ RD_TP_TUNNEL_ASSIGNMENT_ID, RADIUS_STRING_TAGGED},
|
{ RD_TP_TUNNEL_ASSIGNMENT_ID, RADIUS_STRING_TAGGED},
|
||||||
|
{ RD_TP_NAS_PORT_ID, RADIUS_STRING},
|
||||||
|
{ RD_TP_ASCEND_PRE_INPUT_OCTETS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_PRE_OUTPUT_OCTETS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_PRE_INPUT_PACKETS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_PRE_OUTPUT_PACKETS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_MAXIMUM_TIME, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_DISCONNECT_CAUSE, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_CONNECT_PROGRESS, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_DATA_RATE, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_PRESESSION_TIME, RADIUS_INTEGER4},
|
||||||
|
{ RD_TP_ASCEND_XMIT_RATE, RADIUS_INTEGER4},
|
||||||
{0,0},
|
{0,0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -455,6 +497,9 @@ static value_string radius_attrib_type_vals[] = {
|
||||||
{ RD_TP_ACCT_TERMINATE_CAUSE, "Acct Terminate Cause"},
|
{ RD_TP_ACCT_TERMINATE_CAUSE, "Acct Terminate Cause"},
|
||||||
{ RD_TP_ACCT_MULTI_SESSION_ID, "Acct Multi Session Id"},
|
{ RD_TP_ACCT_MULTI_SESSION_ID, "Acct Multi Session Id"},
|
||||||
{ RD_TP_ACCT_LINK_COUNT, "Acct Link Count"},
|
{ RD_TP_ACCT_LINK_COUNT, "Acct Link Count"},
|
||||||
|
{ RD_TP_ACCT_INPUT_GIGAWORDS, "Acct Input Gigawords"},
|
||||||
|
{ RD_TP_ACCT_OUTPUT_GIGAWORDS, "Acct Output Gigawords"},
|
||||||
|
{ RD_TP_EVENT_TIMESTAMP, "Event Timestamp"},
|
||||||
{ RD_TP_CHAP_CHALLENGE, "Chap Challenge"},
|
{ RD_TP_CHAP_CHALLENGE, "Chap Challenge"},
|
||||||
{ RD_TP_NAS_PORT_TYPE, "NAS Port Type"},
|
{ RD_TP_NAS_PORT_TYPE, "NAS Port Type"},
|
||||||
{ RD_TP_PORT_LIMIT, "Port Limit"},
|
{ RD_TP_PORT_LIMIT, "Port Limit"},
|
||||||
|
@ -464,7 +509,19 @@ static value_string radius_attrib_type_vals[] = {
|
||||||
{ RD_TP_TUNNEL_CLIENT_ENDPOINT, "Tunnel Client Endpoint"},
|
{ RD_TP_TUNNEL_CLIENT_ENDPOINT, "Tunnel Client Endpoint"},
|
||||||
{ RD_TP_TUNNEL_SERVER_ENDPOINT, "Tunnel Server Endpoint"},
|
{ RD_TP_TUNNEL_SERVER_ENDPOINT, "Tunnel Server Endpoint"},
|
||||||
{ RD_TP_TUNNEL_PASSWORD, "Tunnel Password"},
|
{ RD_TP_TUNNEL_PASSWORD, "Tunnel Password"},
|
||||||
|
{ RD_TP_CONNECT_INFO, "Connect-Info"},
|
||||||
{ RD_TP_TUNNEL_ASSIGNMENT_ID, "Tunnel Assignment ID"},
|
{ RD_TP_TUNNEL_ASSIGNMENT_ID, "Tunnel Assignment ID"},
|
||||||
|
{ RD_TP_NAS_PORT_ID, "NAS Port ID"},
|
||||||
|
{ RD_TP_ASCEND_PRE_INPUT_OCTETS, "Ascend Pre Input Octets"},
|
||||||
|
{ RD_TP_ASCEND_PRE_OUTPUT_OCTETS, "Ascend Pre Output Octets"},
|
||||||
|
{ RD_TP_ASCEND_PRE_INPUT_PACKETS, "Ascend Pre Input Packets"},
|
||||||
|
{ RD_TP_ASCEND_PRE_OUTPUT_PACKETS, "Ascend Pre Output Packets"},
|
||||||
|
{ RD_TP_ASCEND_MAXIMUM_TIME, "Ascend Maximum Time"},
|
||||||
|
{ RD_TP_ASCEND_DISCONNECT_CAUSE, "Ascend Disconnect Cause"},
|
||||||
|
{ RD_TP_ASCEND_CONNECT_PROGRESS, "Ascend Connect Progress"},
|
||||||
|
{ RD_TP_ASCEND_DATA_RATE, "Ascend Data Rate"},
|
||||||
|
{ RD_TP_ASCEND_PRESESSION_TIME, "Ascend PreSession Time"},
|
||||||
|
{ RD_TP_ASCEND_XMIT_RATE, "Ascend Xmit Rate"},
|
||||||
{0,NULL},
|
{0,NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -523,6 +580,8 @@ gchar *rd_value_to_str(e_avphdr *avph, tvbuff_t *tvb, int offset)
|
||||||
guint32 intval;
|
guint32 intval;
|
||||||
const guint8 *pd;
|
const guint8 *pd;
|
||||||
guint8 tag;
|
guint8 tag;
|
||||||
|
char *rtimestamp;
|
||||||
|
extern char *tzname[2];
|
||||||
|
|
||||||
/* prints the values of the attribute value pairs into a text buffer */
|
/* prints the values of the attribute value pairs into a text buffer */
|
||||||
print_type=match_numval(avph->avp_type,radius_printinfo);
|
print_type=match_numval(avph->avp_type,radius_printinfo);
|
||||||
|
@ -630,6 +689,12 @@ gchar *rd_value_to_str(e_avphdr *avph, tvbuff_t *tvb, int offset)
|
||||||
cont=&textbuffer[strlen(textbuffer)];
|
cont=&textbuffer[strlen(textbuffer)];
|
||||||
rdconvertbufftostr(cont,tvb,offset+6,avph->avp_length-6);
|
rdconvertbufftostr(cont,tvb,offset+6,avph->avp_length-6);
|
||||||
break;
|
break;
|
||||||
|
case( RADIUS_TIMESTAMP ):
|
||||||
|
intval=tvb_get_ntohl(tvb,offset+2);
|
||||||
|
rtimestamp=ctime((time_t*)&intval);
|
||||||
|
rtimestamp[strlen(rtimestamp)-1]=0;
|
||||||
|
sprintf(cont,"%d (%s %s)", tvb_get_ntohl(tvb,offset+2), rtimestamp, *tzname);
|
||||||
|
break;
|
||||||
case( RADIUS_UNKNOWN ):
|
case( RADIUS_UNKNOWN ):
|
||||||
default:
|
default:
|
||||||
strcpy(textbuffer,"Unknown Value Type");
|
strcpy(textbuffer,"Unknown Value Type");
|
||||||
|
|
Loading…
Reference in New Issue