diff options
author | Guy Harris <guy@alum.mit.edu> | 2002-07-17 01:02:45 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2002-07-17 01:02:45 +0000 |
commit | cc00331455604ca51fa743a4f73f5c899c023a67 (patch) | |
tree | 44d441344f49643a21d5406de0f94be22d71c4e3 /packet-radius.c | |
parent | 77fa06b8995c884495c533a3536eb252659d086c (diff) |
From Kan Sasaki:
1. Add some VSAs.
2. Modify the routines match_numval() and
rd_match_strval_attrib() to use a null string pointer, rather
than a 0 value, to signify the end of the attribute table,
because some vendors are using an attribute with a value of 0.
3. Bug fix.
svn path=/trunk/; revision=5890
Diffstat (limited to 'packet-radius.c')
-rw-r--r-- | packet-radius.c | 274 |
1 files changed, 210 insertions, 64 deletions
diff --git a/packet-radius.c b/packet-radius.c index e02bde3a59..d5c22de035 100644 --- a/packet-radius.c +++ b/packet-radius.c @@ -4,7 +4,7 @@ * * RFC 2865, RFC 2866, RFC 2867, RFC 2868, RFC 2869 * - * $Id: packet-radius.c,v 1.64 2002/07/10 20:55:45 guy Exp $ + * $Id: packet-radius.c,v 1.65 2002/07/17 01:02:45 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -218,7 +218,9 @@ enum { COSINE_VPI_VCI, - SHASTA_USER_PRIVILEGE + SHASTA_USER_PRIVILEGE, + + COLUMBIA_UNIVERSITY_SIP_METHOD }; static value_string radius_vals[] = @@ -263,43 +265,51 @@ static value_string radius_vals[] = * * VENDOR Cisco 9 */ -#define VENDOR_ACC 5 -#define VENDOR_CISCO 9 -#define VENDOR_SHIVA 166 -#define VENDOR_LIVINGSTON 307 -#define VENDOR_MICROSOFT 311 -#define VENDOR_3COM 429 -#define VENDOR_ASCEND 529 -#define VENDOR_BAY 1584 -#define VENDOR_VERSANET 2180 -#define VENDOR_REDBACK 2352 -#define VENDOR_JUNIPER 2636 -#define VENDOR_COSINE 3085 -#define VENDOR_SHASTA 3199 -#define VENDOR_NOMADIX 3309 -#define VENDOR_UNISPHERE 4874 -#define VENDOR_ISSANNI 5948 -#define VENDOR_QUINTUM 6618 +#define VENDOR_ACC 5 +#define VENDOR_CISCO 9 +#define VENDOR_SHIVA 166 +#define VENDOR_LIVINGSTON 307 +#define VENDOR_MICROSOFT 311 +#define VENDOR_3COM 429 +#define VENDOR_ASCEND 529 +#define VENDOR_BAY 1584 +#define VENDOR_FOUNDRY 1991 +#define VENDOR_VERSANET 2180 +#define VENDOR_REDBACK 2352 +#define VENDOR_JUNIPER 2636 +#define VENDOR_APTIS 2637 +#define VENDOR_COSINE 3085 +#define VENDOR_SHASTA 3199 +#define VENDOR_NOMADIX 3309 +#define VENDOR_UNISPHERE 4874 +#define VENDOR_ISSANNI 5948 +#define VENDOR_QUINTUM 6618 +#define VENDOR_COLUBRIS 8744 +#define VENDOR_COLUMBIA_UNIVERSITY 11862 static value_string radius_vendor_specific_vendors[] = { - {VENDOR_ACC, "ACC"}, - {VENDOR_CISCO, "Cisco"}, - {VENDOR_SHIVA, "Shiva"}, - {VENDOR_MICROSOFT, "Microsoft"}, - {VENDOR_LIVINGSTON, "Livingston"}, - {VENDOR_3COM, "3Com"}, - {VENDOR_ASCEND, "Ascend"}, - {VENDOR_BAY, "Bay Networks"}, - {VENDOR_VERSANET, "Versanet"}, - {VENDOR_REDBACK, "Redback"}, - {VENDOR_JUNIPER, "Juniper Networks"}, - {VENDOR_COSINE, "CoSine Communications"}, - {VENDOR_SHASTA, "Shasta"}, - {VENDOR_NOMADIX, "Nomadix"}, - {VENDOR_UNISPHERE, "Unisphere Networks"}, - {VENDOR_ISSANNI, "Issanni Communications"}, - {VENDOR_QUINTUM, "Quintum"}, + {VENDOR_ACC, "ACC"}, + {VENDOR_CISCO, "Cisco"}, + {VENDOR_SHIVA, "Shiva"}, + {VENDOR_MICROSOFT, "Microsoft"}, + {VENDOR_LIVINGSTON, "Livingston"}, + {VENDOR_3COM, "3Com"}, + {VENDOR_ASCEND, "Ascend"}, + {VENDOR_BAY, "Bay Networks"}, + {VENDOR_FOUNDRY, "Foundry"}, + {VENDOR_VERSANET, "Versanet"}, + {VENDOR_REDBACK, "Redback"}, + {VENDOR_JUNIPER, "Juniper Networks"}, + {VENDOR_APTIS, "Aptis"}, + {VENDOR_COSINE, "CoSine Communications"}, + {VENDOR_SHASTA, "Shasta"}, + {VENDOR_NOMADIX, "Nomadix"}, + {VENDOR_UNISPHERE, "Unisphere Networks"}, + {VENDOR_ISSANNI, "Issanni Communications"}, + {VENDOR_QUINTUM, "Quintum"}, + {VENDOR_COLUBRIS, "Colubris"}, + {VENDOR_COLUMBIA_UNIVERSITY, "Columbia University"}, {0, NULL} }; @@ -1682,6 +1692,19 @@ static value_string radius_vendor_bay_audit_level_vals[] = /* reference: + 'dictionary.foundry' file from FreeRADIUS + http://www.freeradius.org/radiusd/raddb/dictionary.foundry +*/ +static value_value_string radius_vendor_foundry_attrib[] = +{ + {1, RADIUS_INTEGER4, "Foundry Privilege Level"}, + {2, RADIUS_STRING, "Foundry Command String"}, + {3, RADIUS_INTEGER4, "Foundry Command Exception Flag"}, + {0, 0, NULL}, +}; + +/* +reference: 'dictionary.versanet' file from FreeRADIUS http://www.freeradius.org/radiusd/raddb/dictionary.versanet */ @@ -1964,6 +1987,38 @@ static value_value_string radius_vendor_juniper_attrib[] = {0, 0, NULL} }; +/* +reference: + 'dictionary.aptis' file from FreeRADIUS + http://www.freeradius.org/radiusd/raddb/dictionary.aptis +*/ +static value_value_string radius_vendor_aptis_attrib[] = +{ + {1, RADIUS_STRING, "CVX Identification"}, + {2, RADIUS_INTEGER4, "CVX VPOP ID"}, + {3, RADIUS_INTEGER4, "CVX SS7 Session ID Type"}, + {4, RADIUS_INTEGER4, "CVX Radius Redirect"}, + {5, RADIUS_INTEGER4, "CVX IPSVC AZNLVL"}, + {6, RADIUS_INTEGER4, "CVX IPSVC Mask"}, + {7, RADIUS_INTEGER4, "CVX Multilink Match Info"}, + {8, RADIUS_INTEGER4, "CVX Multilink Group Number"}, + {9, RADIUS_INTEGER4, "CVX PPP Log Mask"}, + {10, RADIUS_STRING, "CVX Modem Begin Modulation"}, + {11, RADIUS_STRING, "CVX Modem End Modulation"}, + {12, RADIUS_STRING, "CVX Modem Error Correction"}, + {13, RADIUS_STRING, "CVX Modem Data Compression"}, + {14, RADIUS_INTEGER4, "CVX Modem Tx Packets"}, + {15, RADIUS_INTEGER4, "CVX Modem ReTx Packets"}, + {16, RADIUS_INTEGER4, "CVX Modem SNR"}, + {17, RADIUS_INTEGER4, "CVX Modem Local Retrains"}, + {18, RADIUS_INTEGER4, "CVX Modem Remote Retrains"}, + {19, RADIUS_INTEGER4, "CVX Modem Local Rate Negs"}, + {20, RADIUS_INTEGER4, "CVX Modem Remote Rate Negs"}, + {21, RADIUS_INTEGER4, "CVX Modem Begin Recv Line Lvl"}, + {22, RADIUS_INTEGER4, "CVX Modem End Recv Line Lvl"}, + {0, 0, NULL}, +}; + static value_value_string radius_vendor_cosine_attrib[] = { {1, RADIUS_STRING, "Connection Profile Name"}, @@ -2098,24 +2153,61 @@ static value_value_string radius_vendor_quintum_attrib[] = {0, 0, NULL}, }; +/* +reference: + http://download.colubris.com/library/product_doc/CN3500_AdminGuide.pdf +*/ +static value_value_string radius_vendor_colubris_attrib[] = +{ + {0, RADIUS_STRING, "Colubris AV Pair"}, + {0, 0, NULL}, +}; + +/* +reference: + 'dictionary.columbia_university' file from FreeRADIUS + http://www.freeradius.org/radiusd/raddb/dictionary.columbia_university +*/ +static value_value_string radius_vendor_columbia_university_attrib[] = +{ + {0, COLUMBIA_UNIVERSITY_SIP_METHOD, "SIP Method"}, + {1, RADIUS_STRING, "SIP From"}, + {2, RADIUS_STRING, "SIP To"}, + {4, RADIUS_STRING, "SIP Translated Request URI"}, + {0, 0, NULL}, +}; + +static value_string radius_vendor_columbia_university_sip_method_vals[] = +{ + {0, "INVITE"}, + {1, "BYE"}, + {2, "REGISTER"}, + {3, "OTHER"}, + {0, NULL} +}; + static rd_vsa_table radius_vsa_table[] = { - {VENDOR_ACC, radius_vendor_acc_attrib}, - {VENDOR_CISCO, radius_vendor_cisco_attrib}, - {VENDOR_SHIVA, radius_vendor_shiva_attrib}, - {VENDOR_LIVINGSTON, radius_vendor_livingston_attrib}, - {VENDOR_MICROSOFT, radius_vendor_microsoft_attrib}, - {VENDOR_ASCEND, radius_vendor_ascend_attrib}, - {VENDOR_BAY, radius_vendor_bay_attrib}, - {VENDOR_VERSANET, radius_vendor_versanet_attrib}, - {VENDOR_REDBACK, radius_vendor_redback_attrib}, - {VENDOR_JUNIPER, radius_vendor_juniper_attrib}, - {VENDOR_COSINE, radius_vendor_cosine_attrib}, - {VENDOR_SHASTA, radius_vendor_shasta_attrib}, - {VENDOR_NOMADIX, radius_vendor_nomadix_attrib}, - {VENDOR_UNISPHERE, radius_vendor_unisphere_attrib}, - {VENDOR_ISSANNI, radius_vendor_issanni_attrib}, - {VENDOR_QUINTUM, radius_vendor_quintum_attrib}, + {VENDOR_ACC, radius_vendor_acc_attrib}, + {VENDOR_CISCO, radius_vendor_cisco_attrib}, + {VENDOR_SHIVA, radius_vendor_shiva_attrib}, + {VENDOR_LIVINGSTON, radius_vendor_livingston_attrib}, + {VENDOR_MICROSOFT, radius_vendor_microsoft_attrib}, + {VENDOR_ASCEND, radius_vendor_ascend_attrib}, + {VENDOR_BAY, radius_vendor_bay_attrib}, + {VENDOR_FOUNDRY, radius_vendor_foundry_attrib}, + {VENDOR_VERSANET, radius_vendor_versanet_attrib}, + {VENDOR_REDBACK, radius_vendor_redback_attrib}, + {VENDOR_JUNIPER, radius_vendor_juniper_attrib}, + {VENDOR_APTIS, radius_vendor_aptis_attrib}, + {VENDOR_COSINE, radius_vendor_cosine_attrib}, + {VENDOR_SHASTA, radius_vendor_shasta_attrib}, + {VENDOR_NOMADIX, radius_vendor_nomadix_attrib}, + {VENDOR_UNISPHERE, radius_vendor_unisphere_attrib}, + {VENDOR_ISSANNI, radius_vendor_issanni_attrib}, + {VENDOR_QUINTUM, radius_vendor_quintum_attrib}, + {VENDOR_COLUBRIS, radius_vendor_colubris_attrib}, + {VENDOR_COLUMBIA_UNIVERSITY, radius_vendor_columbia_university_attrib}, {0, NULL}, }; @@ -2205,6 +2297,8 @@ static rd_valstr_table valstr_table[] = {SHASTA_USER_PRIVILEGE, radius_vendor_shasta_user_privilege_vals}, + {COLUMBIA_UNIVERSITY_SIP_METHOD, radius_vendor_columbia_university_sip_method_vals}, + {0, NULL} }; @@ -2223,7 +2317,7 @@ static guint32 match_numval(guint32 val, const value_value_string *vvs) { guint32 i; - for (i = 0; vvs && vvs[i].val1; i++) + for (i = 0; vvs && vvs[i].str; i++) if (vvs[i].val1 == val) return(vvs[i].val2); @@ -2289,7 +2383,7 @@ static gchar *rd_match_strval_attrib(guint32 val, const value_value_string *vvs) { guint32 i; - for (i = 0; vvs[i].val1; i++) + for (i = 0; vvs[i].str; i++) if (vvs[i].val1 == val) return(vvs[i].str); @@ -2421,20 +2515,72 @@ static gchar *rd_value_to_str_2(gchar *dest, e_avphdr *avph, tvbuff_t *tvb, vsa_index++; } while (vsa_length > vsa_len && vsa_index < VSABUFFER); break; - case( RADIUS_SERVICE_TYPE ): - case( RADIUS_FRAMED_PROTOCOL ): - case( RADIUS_FRAMED_ROUTING ): - case( RADIUS_FRAMED_COMPRESSION ): - case( RADIUS_LOGIN_SERVICE ): - case( RADIUS_TERMINATING_ACTION ): - case( RADIUS_ACCOUNTING_STATUS_TYPE ): - case( RADIUS_ACCT_AUTHENTIC ): - case( RADIUS_ACCT_TERMINATE_CAUSE ): - case( RADIUS_NAS_PORT_TYPE ): + case( RADIUS_SERVICE_TYPE ): + case( RADIUS_FRAMED_PROTOCOL ): + case( RADIUS_FRAMED_ROUTING ): + case( RADIUS_FRAMED_COMPRESSION ): + case( RADIUS_LOGIN_SERVICE ): + case( RADIUS_TERMINATING_ACTION ): + case( RADIUS_ACCOUNTING_STATUS_TYPE ): + case( RADIUS_ACCT_AUTHENTIC ): + case( RADIUS_ACCT_TERMINATE_CAUSE ): + case( RADIUS_NAS_PORT_TYPE ): + case( ACC_REASON_CODE ): + case( ACC_CCP_OPTION ): + case( ACC_ROUTE_POLICY ): + case( ACC_ML_MLX_ADMIN_STATE ): + case( ACC_CLEARING_CAUSE ): + case( ACC_CLEARING_LOCATION ): + case( ACC_REQUEST_TYPE ): + case( ACC_BRIDGING_SUPPORT ): + case( ACC_APSM_OVERSUBSCRIBED ): + case( ACC_ACCT_ON_OFF_REASON ): + case( ACC_IP_COMPRESSION ): + case( ACC_IPX_COMPRESSION ): + case( ACC_CALLBACK_MODE ): + case( ACC_CALLBACK_CBCP_TYPE ): + case( ACC_DIALOUT_AUTH_MODE ): + case( ACC_ACCESS_COMMUNITY ): + case( CISCO_DISCONNECT_CAUSE ): + case( SHIVA_TYPE_OF_SERVICE ): + case( SHIVA_LINK_PROTOCOL ): + case( SHIVA_DISCONNECT_REASON ): + case( SHIVA_FUNCTION ): + case( SHIVA_CONNECT_REASON ): + case( LIVINGSTON_IPSEC_LOG_OPTIONS ): + case( LIVINGSTON_IPSEC_DENY_ACTION ): + case( LIVINGSTON_NAT_LOG_OPTIONS ): + case( LIVINGSTON_NAT_SESS_DIR_FAIL_ACTION ): + case( LIVINGSTON_MULTICAST_CLIENT ): + case( MICROSOFT_BAP_USAGE ): + case( MICROSOFT_ARAP_PW_CHANGE_REASON ): + case( MICROSOFT_ACCT_AUTH_TYPE ): + case( MICROSOFT_ACCT_EAP_TYPE ): case( ASCEND_CALLING_ID_TYPE_OF_NUMBER ): case( ASCEND_CALLING_ID_NUMBERING_PLAN ): case( ASCEND_CALLING_ID_PRESENTATION ): case( ASCEND_CALLING_ID_SCREENING ): + case( BAY_TUNNEL_AUTHEN_TYPE ): + case( BAY_TUNNEL_AUTHEN_MODE ): + case( BAY_USER_SERVER_LOCATION ): + case( BAY_SYSTEM_DISC_REASON ): + case( BAY_MODEM_DISC_REASON ): + case( BAY_ADDR_RESOLUTION_PROTOCOL ): + case( BAY_USER_LEVEL ): + case( BAY_AUDIT_LEVEL ): + case( VERSANET_TERMINATION_CAUSE ): + case( REDBACK_TUNNEL_FUNCTION ): + case( REDBACK_MCAST_SEND ): + case( REDBACK_MCAST_RECEIVE ): + case( REDBACK_TUNNEL_DNIS ): + case( REDBACK_PVC_ENCAPSULATION_TYPE ): + case( REDBACK_PVC_CIRCUIT_PADDING ): + case( REDBACK_BIND_TYPE ): + case( REDBACK_BIND_AUTH_PROTOCOL ): + case( REDBACK_LAC_PORT_TYPE ): + case( REDBACK_LAC_REAL_PORT_TYPE ): + case( SHASTA_USER_PRIVILEGE ): + case( COLUMBIA_UNIVERSITY_SIP_METHOD ): rdconvertinttostr(cont, print_type,tvb_get_ntohl(tvb,offset+2)); break; case( COSINE_VPI_VCI ): |