/*
 * Filename: packet-diameter-defs.h
 *
 * This file contains the static definitions of the Diameter base protocol
 * AVPs.  If libxml is in the LD_LIBRARY_PATH, and dictionary.xml exists,
 * then it will not be used.
 *
 * $Id: packet-diameter-defs.h 14272 2005-05-02 18:31:15Z etxrab $
 * Generated: Fri Feb 23 13:04:15 2001
 * * Copyright (c) 2005 by Anders Broman <anders.broman@ericsson.com>
 * References:
 * http://www.ietf.org/rfc/rfc3588.txt
 * http://www.iana.org/assignments/radius-types updated 20 January 2005 (Not command codes)
 * http://www.ietf.org/internet-drafts/draft-ietf-aaa-diameter-cc-06.txt
 * http://www.ietf.org/internet-drafts/draft-ietf-aaa-diameter-nasreq-17.txt
 * http://www.ietf.org/internet-drafts/draft-ietf-aaa-diameter-mobileip-20.txt
 * http://www.ietf.org/internet-drafts/draft-ietf-aaa-diameter-sip-app-03.txt
 * http://www.ietf.org/html.charters/aaa-charter.html
 * http://www.iana.org/assignments/aaa-parameters
 */

#ifndef _PACKET_DIAMETER_DEFS_H
#define _PACKET_DIAMETER_DEFS_H


/* Type to string table */

/* Attribute to String tables */
static const value_string diameter_service_type_vals[]={
   {1, "Login"},
   {2, "Framed"},
   {3, "Callback-Login"},
   {4, "Callback-Framed"},
   {5, "Outbound"},
   {6, "Administrative"},
   {7, "NAS-Prompt"},
   {8, "Authenticate-Only"},
   {9, "Callback-NAS-Prompt"},
   {10,"Call Check"},
   {11,"Callback Administrative"},
   {12,"Voice"},					/*[Chiba]				*/
   {13,"Fax"},						/*[Chiba]				*/
   {14,"Modem Relay"},				/*[Chiba]				*/
   {15,"IAPP-Register"},			/*[IEEE 802.11f][Kerry]	*/
   {16,"IAPP-AP-Check"},			/*[IEEE 802.11f][Kerry]	*/
   {17,"Authorize Only"},			/*[RFC3576]				*/
   {0, (char *)NULL}
};

static const value_string diameter_framed_protocol_vals[]={
   {1,	"PPP"},
   {2,	"SLIP"},
   {3,	"AppleTalk Remote Access Protocol (ARAP)"},
   {4,	"Gandalf proprietary SingleLink/MultiLink protocol"},
   {5,	"Xylogics proprietary IPX/SLIP"},
   {6,	"X.75 Synchronous"},
   {7,	"GPRS PDP Context"},
   {261,"FR"},
   {258,"EUUI"},
   {255,"Ascend-ARA"},
   {259,"X25"},
   {256,"MPP"},
   {257,"EURAW"},
   {260,"COMB"},
   {0, (char *)NULL}
};

static const value_string diameter_framed_routing_vals[]={
   {0, "None"},
   {1, "Send routing packets"},
   {2, "Listen for routing packets"},
   {3, "Send and Listen"},
   {0, (char *)NULL}
};

static const value_string diameter_framed_compression_vals[]={
   {0,	"None"},
   {1,	"VJ TCP/IP header compression"},
   {2,	"IPX-Header-Compression"},
   {3,	"Stac-LZS compression"},
   {0, (char *)NULL}
};

static const value_string diameter_login_service_vals[]={
   {0, "Telnet"},
   {1, "Rlogin"},
   {2, "TCP-Clear"},
   {3, "PortMaster"},
   {4, "LAT"},
   {5, "X25-PAD"},
   {6, "X25-T3POS"},
   {7, "(unassigned)"},
   {8, "TCP Clear Quiet (suppresses any NAS-generated connect string)"},
   {0, (char *)NULL}
};

static const value_string diameter_termination_action_vals[]={
   {0, "Default"},
   {1, "RADIUS-Request"},
   {0, (char *)NULL}
};

static const value_string diameter_acct_status_type_vals[]={
   {1,	"Start"},
   {2,	"Stop"},
   {3,	"Alive"},
   {4,	"Modem-Start"},
   {5,	"Modem-Stop"},
   {6,	"Cancel"},
   {7,	"Accounting-On"},
   {8,	"Accounting-Off"},
   {9,	"Tunnel-Start"},		/*[RFC 2867]*/
   {10,	"Tunnel-Stop"},			/*[RFC 2867]*/
   {11,	"Tunnel-Reject"},		/*[RFC 2867]*/
   {12,	"Tunnel-Link-Start"},	/*[RFC 2867]*/
   {13,	"Tunnel-Link-Stop"},	/*[RFC 2867]*/
   {14,	"Tunnel-Link-Reject"},	/*[RFC 2867]*/
   {15,	"Failed"},				/*[RFC 2866]*/


   {0, (char *)NULL}
};

static const value_string diameter_acct_authentic_vals[]={
   {1, "RADIUS"},
   {0, "None"},
   {2, "Local"},
   {3, "Remote"},
   {4, "Diameter"},
   {0, (char *)NULL}
};

static const value_string diameter_acct_terminate_cause_vals[]={
   {1, "User-Request"},
   {2, "Lost-Carrier"},
   {3, "Lost-Service"},
   {4, "Idle-Timeout"},
   {5, "Session-Timeout"},
   {6, "Admin-Reset"},
   {7, "Admin-Reboot"},
   {8, "Port-Error"},
   {9, "NAS-Error"},
   {10, "NAS-Request"},
   {11, "NAS-Reboot"},
   {12, "Port-Unneeded"},
   {13, "Port-Preempted"},
   {14, "Port-Suspended"},
   {15, "Service-Unavailable"},
   {16, "Callback"},
   {17, "User-Error"},
   {18, "Host-Request"},
   {19,	"Supplicant Restart"},					/*[RFC3580]*/
   {20,	"Reauthentication Failure"},			/*[RFC3580]*/
   {21,	"Port Reinitialized"},					/*[RFC3580]*/
   {22,	"Port Administratively Disabled"},		/*[RFC3580]*/
   {0, (char *)NULL}
};
static const value_string diameter_nas_port_type_vals[]={
   {0, "Async"},
   {1, "Sync"},
   {2, "ISDN Sync"},
   {3, "ISDN Async V.120"},
   {4, "ISDN Async V.110"},
   {5, "Virtual"},
   {6, "PIAFS"},
   {7, "HDLC-Clear-Channel"},
   {8, "X.25"},
   {9, "X.75"},
   {10,"G.3 Fax"},
   {11,"SDSL - Symmetric DSL"},
   {12,"ADSL-CAP - Asymmetric DSL, Carrierless Amplitude Phase Modulation"},
   {13,"ADSL-DMT - Asymmetric DSL, Discrete Multi-Tone"},
   {14,"IDSL - ISDN Digital Subscriber Line"},
   {15,"Ethernet"},
   {16,"xDSL - Digital Subscriber Line of unknown type"},
   {17,"Cable"},
   {18,"Wireless - Other"},
   {19,"Wireless - IEEE 802.11"},
   {20,"Token-Ring"},                                 
   {21,"FDDI"},                                       
   {22,"Wireless - CDMA2000"},                           
   {23,"Wireless - UMTS"},                               
   {24,"Wireless - 1X-EV"},                              
   {25,"IAPP"},
   {26,"FTTP - Fiber to the Premises"},
   {0, (char *)NULL}
};

static const value_string diameter_tunnel_type_vals[]= {
	{1,"PPTP"},
	{2,"L2F"},
	{3,"L2TP"},
	{4,"ATMP"},
	{5,"VTP"},
	{6,"AH"},
	{7,"IP-IP-Encap"},
	{8,"MIN-IP-IP"},
	{9,"ESP"},
	{10,"GRE"},
	{11,"DVS"},
	{12,"IP-IP"},
	{13,"VLAN"},
	{0,NULL}
};

static const value_string diameter_tunnel_medium_type_vals[]= {
	{1,"IPv4"},
	{2,"IPv6"},
	{3,"NSAP"},
	{4,"HDLC"},
	{5,"BBN"},
	{6,"IEEE-802"},
	{7,"E-163"},
	{8,"E-164"},
	{9,"F-69"},
	{10,"X-121"},
	{11,"IPX"},
	{12,"Appletalk"},
	{13,"Decnet4"},
	{14,"Vines"},
	{15,"E-164-NSAP"},
	{0,NULL}
};

static const value_string diameter_avp_data_addrfamily_vals[]= {
	{1,"IPv4"},
	{2,"IPv6"},
	{3,"NSAP"},
	{4,"HDLC"},
	{5,"BBN"},
	{6,"IEEE-802"},
	{7,"E-163"},
	{8,"E-164"},
	{9,"F-69"},
	{10,"X-121"},
	{11,"IPX"},
	{12,"Appletalk"},
	{13,"Decnet4"},
	{14,"Vines"},
	{15,"E-164-NSAP"},
	{16,"DNS"},
	{17,"DistinguishedName"},
	{18,"AS"},
	{19,"XTPoIPv4"},
	{20,"XTPoIPv6"},
	{21,"XTPNative"},
	{22,"FibrePortName"},
	{23,"FibreNodeName"},
	{24,"GWID"},
	{0,NULL}
};
/*
 *Values for RADIUS Attribute 101, Error-Cause Attribute [RFC3576]:
 */
static const value_string diameter_error_cause_attribute_vals[]= {
	{201,"Residual Session Context Removed"},
	{202,"Invalid EAP Packet (Ignored)"},
	{401,"Unsupported Attribute"},
	{402,"Missing Attribute"},
	{403,"NAS Identification Mismatch"},
	{404,"Invalid Request"},
	{405,"Unsupported Service"},
	{406,"Unsupported Extension"},
	{501,"Administratively Prohibited"},
	{502,"Request Not Routable (Proxy)"},
	{503,"Session Context Not Found"},
	{504,"Session Context Not Removable"},
	{505,"Other Proxy Processing Error"},
	{506,"Resources Unavailable"},
	{507,"Request Initiated"},
	{0,NULL}
};
/* Redirect-Host-Usage AVP Values (code 261) */
static const value_string diameter_redirect_host_usage_vals[]= {
	{0, "Don't Cache"},
	{1, "All Session"},
	{2, "All Realm"},
	{3, "Realm and Application"},
	{4, "All Application"},
	{5, "All Host"},
	{6, "All User"},
	{0,NULL}
};
/* Session-Binding AVP Values (code 270) */
static const value_string diameter_session_binding_vals[]= {
	{1, "RE_AUTH"},		/*[RFC3588]*/
	{2, "STR"},		/*[RFC3588]*/
	{3, "Unallocated"},
	{4, "ACCOUNTING"},	/*[RFC3588]*/
  /*5-8    Unallocated (IETF Consensus) */
	{0,NULL}
};

/* Session-Server-Failover AVP Values (code 271) */
static const value_string diameter_session_server_failover_vals[]= {
	{0, "Refuse Service"},
	{1, "Try Again"},
	{2, "Allow Service"},
	{3, "Try Again / Allow Service"},
	{0,NULL}
};
/* Disconnect-Cause AVP Values (code 273) */
static const value_string diameter_disconnect_cause_vals[]= {
	{0, "Rebooting"},
	{1, "Busy"},
	{2, "Do Not Want To Talk To You"},
	{0,NULL}
};
/* Auth-Request-Type AVP Values (code 274) */
static const value_string diameter_auth_request_type_vals[]= {
	{1, "Authenticate Only"},
	{2, "Authorize Only"},
	{3, "Authorize Authenticate"},
	{0,NULL}
};
/* Auth-Session-State AVP Values (code 277) */
static const value_string diameter_auth_session_state_vals[]= {
	{0, "State Maintained"},
	{1, "No State Maintained"},
	{0,NULL}
};
/* Re-Auth-Request-Type AVP Values (code 285) */
static const value_string diameter_re_auth_request_type_vals[]= {
	{0, "Authorize Only"},
	{1, "Authorize Authenticate"},
	{0,NULL}
};

/*   Termination-Cause AVP Values (code 295) */
static const value_string diameter_termination_cause_vals[]= {
	{1, "Logout"},
	{2, "Service Not Provided"},
	{3, "Bad Answer"},
	{4, "Administrative"},
	{5, "Link Broken"},
	{6, "Auth Expired"},
	{7, "User Moved"},
	{8, "Session Timeout"},
	{0,NULL}
};
/*   Inband-Security-Id AVP (code 299) */
static const value_string diameter_inband_security_id_vals[]= {
	{0, "NO_INBAND_SECURITY"},	/*[RFC3588]*/
	{1, "TLS"},					/*[RFC3588]*/
	{0,NULL}
};

/*
 * XXX - this isn't an enumerated value list, it's a list of bits in a
 * bitset.  The DIAMETER dissector doesn't have any mechanism to handle
 * that; it would need one in order to dissect the value of this AVP
 * correctly.
 */
/*    MIP-Feature-Vector AVP (code 337) */
static const value_string diameter_mip_feature_vector_vals[]= {
	{1, "Mobile-Node-Home-Address-Requested"},			/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{2, "Home-Address-Allocatable-Only-in-Home-Realm"},	/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{4, "Home-Agent-Requested"},						/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{8, "Foreign-Home-Agent-Available"},				/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{16, "MN-HA-Key-Request"},							/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{32, "MN-FA-Key-Request"},							/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{64, "FA-HA-Key-Request"},							/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{128, "Home-Agent-In-Foreign-Network"},				/* RFC-ietf-aaa-diameter-mobileip-20.txt */
	{256, "Co-Located-Mobile-Node"},						/* RFC-ietf-aaa-diameter-mobileip-20.txt */ 
	{0,NULL}
};
/* MIP-Algorithm-Type AVP Values (code 345) */
static const value_string diameter_mip_algorithm_type[] = {
	{2, "HMAC-SHA1"},
	{0, NULL}
};
/* MIP-Replay-Mode AVP Values (code 346) */
static const value_string diameter_mip_replay_mode[] = {
	{1, "None"},
	{2, "Timestamp"},
	{3, "Nonces"},
	{0, NULL}
};
/*
 * XXX - this isn't used; does there need to be an entry for AVP 406
 * that would use it?
 */
/* Accounting-Auth-Method AVP Values (code 406) */
static const value_string diameter_accounting_auth_method_vals[] = {
	{1, "PAP"},										/* [RFC-ietf-aaa-diameter-nasreq-17.txt] */
 	{2, "CHAP"},									/* [RFC-ietf-aaa-diameter-nasreq-17.txt] */
 	{3, "MS-CHAP-1"},								/* [RFC-ietf-aaa-diameter-nasreq-17.txt] */
	{4, "MS-CHAP-2"},								/* [RFC-ietf-aaa-diameter-nasreq-17.txt] */
	{5, "EAP"},										/* [RFC-ietf-aaa-diameter-nasreq-17.txt] */
	{7, "None"},									/* [RFC-ietf-aaa-diameter-nasreq-17.txt] */
	{0, NULL}
};

/* CC-Request-Type  AVP Values (code 416)*/
static const value_string diameter_cc_request_type_vals[]= {
	{1, "INITIAL_REQUEST"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{2, "UPDATE_REQUEST"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{3, "TERMINATION_REQUEST"},						/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{4, "EVENT_REQUEST"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

 /* CC-Session-Failover AVP Values (code 418)*/
static const value_string diameter_CC_Session_Failover_vals[]= {
	{0, "FAILOVER_NOT_SUPPORTED"},					/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "FAILOVER_SUPPORTED"},						/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

 /* Check-Balance-Result AVP Values (code 422)*/
static const value_string diameter_Check_Balance_Result_vals[]= {
	{0, "ENOUGH_CREDIT"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "NO_CREDIT"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

 /* Credit-Control AVP Values (code 426)*/
static const value_string diameter_credit_control_vals[]= {
	{0, "CREDIT_AUTHORIZATION"},					/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "RE_AUTHORIZATION"},						/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

 /* Credit-Control-Failure-Handling AVP Values (code 427)*/
static const value_string diameter_credit_control_failure_handling_vals[]= {
	{0, "TERMINATE"},									/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "CONTINUE"},									/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{2, "RETRY_AND_TERMINATE"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/*  Direct-Debiting-Failure-Handling AVP Values (code 428)*/
static const value_string diameter_direct_debiting_failure_handling_vals[]= {
	{0, "TERMINATE_OR_BUFFER"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "CONTINUE"},									/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/* Redirect-Address-Type AVP Values (code 433)*/
static const value_string diameter_redirect_address_type_vals[]= {
	{0, "IPv4 Address"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "IPv6 Address"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{2, "URL"},											/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{3, "SIP URL"},										/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/*  Requested-Action AVP Values (436)*/
static const value_string diameter_requested_action_vals[]= {
	{0, "DIRECT_DEBITING"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "REFUND_ACCOUNT"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{2, "CHECK_BALANCE"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{3, "PRICE_ENQUIRY"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/*  Final-Unit-Action AVP Values (code 449)*/
static const value_string diameter_final_unit_action_vals[]= {
	{0, "TERMINATE"},									/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "REDIRECT"},									/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{2, "RESTRICT_ACCESS"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};
 
/*  Subscription-Id-Type AVP Values (code 450)*/
static const value_string diameter_subscription_id_type_vals[]= {
	{0, "END_USER_E164"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "END_USER_IMSI"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{2, "END_USER_SIP_URI"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{3, "END_USER_NAI"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{4, "END_USER_PRIVATE"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/*  Tariff-Change-Usage AVP Values (code 452)*/
static const value_string diameter_tariff_change_usage_vals[]= {
	{0, "UNIT_BEFORE_TARIFF_CHANGE"},					/* [RFC-ietf-aaa-diameter-cc-06.txt] */  
	{1, "UNIT_AFTER_TARIFF_CHANGE"},					/* [RFC-ietf-aaa-diameter-cc-06.txt]  */
	{2, "UNIT_INDETERMINATE"},							/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/*  CC-Unit-Type AVP Values (code 454) */
static const value_string diameter_cc_Unit_type_vals[]= {
	{0, "TIME"},										/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "MONEY"},										/* [RFC-ietf-aaa-diameter-cc-06.txt]  */
	{2, "TOTAL-OCTETS"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */ 
	{3, "INPUT-OCTETS"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{4, "OUTPUT-OCTETS"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{5, "SERVICE-SPECIFIC-UNITS"},						/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};

/*  Multiple-Services-Indicator AVP Values (code 455)*/ 
static const value_string diameter_multiple_services_indicator_vals[]= {
	{0, "MULTIPLE_SERVICES_NOT_SUPPORTED"},				/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{1, "MULTIPLE_SERVICES_SUPPORTED"},					/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};


/*
 * XXX - this isn't used; does there need to be an entry for AVP 459
 * that would use it?
 */
/*  User-Equipment-Info-Type AVP Values (code 459)*/
static const value_string diameter_user_equipment_info_type_vals[]= {
	{0, "IMEISV"},										/* [RFC-ietf-aaa-diameter-cc-06.txt]  */
	{1, "MAC"},											/* [RFC-ietf-aaa-diameter-cc-06.txt]  */
	{2, "EUI64"},										/* [RFC-ietf-aaa-diameter-cc-06.txt] */ 
	{3, "MODIFIED_EUI64"},								/* [RFC-ietf-aaa-diameter-cc-06.txt] */
	{0, NULL}
};


/* Accounting-Record-Type AVP Values (code 480) */
static const value_string diameter_accounting_record_type_vals[]= {
	{1, "Event Record"},
	{2, "Start Record"},
	{3, "Interim Record"},
	{4, "Stop Record"},
	{0,NULL}
};
/* Accounting-Realtime-Required AVP Values (code 483) */
static const value_string diameter_accounting_realtime_required_vals[]= {
	{1, "DELIVER_AND_GRANT"},
	{2, "GRANT_AND_STORE"},
	{3, "GRANT_AND_LOSE"},
	{0,NULL}
};
static const value_string diameter_application_id_vals[] = {
	{0, "Diameter Common Messages"},
	{1, "Diameter NASREQ Application"},
	{2, "Diameter Mobile IPv4 Application"},
	{3, "Diameter Base Accounting"},
	{4, "Diameter Credit-Control Application"},	/* draft-ietf-aaa-diameter-cc-06 */
	{5, "Diameter EAP"},							/* [RFC-ietf-aaa-eap-10.txt] */
	{16777216, "3GPP Cx"},						/* 3GPP TS 29.228 and 29.229 */
	{16777217, "3GPP Sh"},						/* 3GPP TS 29.328 and 29.329 */
	{16777218, "3GPP Re/Rf"},					/* 3GPP TS 32.225 */
	{16777219, "3GPP Wx"},						/* 3GPP TS 29.234 */
	{16777220, "3GPP Zn"},						/* 3GPP TS 29.109 */
	{16777221, "3GPP Zh"},						/* 3GPP TS 29.109 */
	{16777222, "3GPP Gq"},						/* 3GPP TS 29.209 */
	{16777223, "3GPP Gmb"},						/* 3GPP TS 29.061 */
	{4294967295U, "Relay Application"},
	
	{0, NULL}
};


/* Diameter Session Initiation Protocol (SIP) Application value strings */
/* Remove comment when IANA assigned values are avalable 

static const value_string SIP_reason_code_vals[] = {
	{0, "PERMANENT_TERMINATION"},
	{1, "NEW_SIP_SERVER_ASSIGNED "},
	{2, "SIP_SERVER_CHANGE"},
	{3, "REMOVE_SIP_SERVER"},
	{0, NULL}

};

Remove comment when IANA assigned values are avalable */ 

/* Used both in Diameter Session Initiation Protocol (SIP) Application and 3GPP Vendor
 * Specific AVP:s TS 29 299 5.7.0 */
static const value_string SIP_server_assignment_type_vals[] ={
	{0, "NO_ASSIGNMENT"},
	{1, "REGISTRATION"},
	{2, "RE_REGISTRATION"},
	{3, "UNREGISTERED_USER"},
	{4, "TIMEOUT_DEREGISTRATION"},
	{5, "USER_DEREGISTRATION"},
	{6, "TIMEOUT_DEREGISTRATION_STORE_SERVER_NAME"},
	{7, "USER_DEREGISTRATION_STORE_SERVER_NAME"},
	{8, "ADMINISTRATIVE_DEREGISTRATION"},
	{9, "AUTHENTICATION_FAILURE"},
	{10, "AUTHENTICATION_TIMEOUT"},
	{11, "DEREGISTRATION_TOO_MUCH_DATA"},
	{0, NULL}
};
static const value_string SIP_user_authorization_type[] = {
	{0, "REGISTRATION"},
	{1, "DE_REGISTRATION"},
	{2, "REGISTRATION_AND_CAPABILITIES"},
	{0, NULL}

};
static const value_string SIP_user_data_request_type[] = {
	{0, "COMPLETE_PROFILE"},
	{1, "REGISTERED_PROFILE"},
	{2, "UNREGISTERED_PROFILE"},
	{0, NULL}

};
static const value_string ThreeGPP_reason_code_vals[] = {
	{0, "PERMANENT_TERMINATION"},
	{1, "NEW_SIP_SERVER_ASSIGNED "},
	{2, "SERVER_CHANGE"},
	{3, "REMOVE_S-CSCF "},
	{0, NULL}

};
static const value_string SIP_user_data_already_available_vals[] = {
	{0, "USER_DATA_NOT_AVAILABLE"},
	{1, "USER_DATA_ALREADY_AVAILABLE"},
	{0, NULL}

};

/*
 * The Result-Code data field contains an IANA-managed 32-bit address
 * space representing errors (see Section 11.4(RFC3588)).  Diameter provides the
 * following classes of errors, all identified by the thousands digit in
 * the decimal notation:
 *
 *    -  1xxx (Informational)
 *    -  2xxx (Success)
 *    -  3xxx (Protocol Errors)
 *    -  4xxx (Transient Failures)
 *    -  5xxx (Permanent Failure)
 */
/* Result-Code AVP Values (code 268) */
static const value_string diameter_result_code_vals[] = {
	/* Informational
	 * Errors that fall within this category are used to inform the
	 * requester that a request could not be satisfied, and additional
	 * action is required on its part before access is granted.
	 */
	{1001, "DIAMETER_MULTI_ROUND_AUTH "},
	/* Errors that fall within the Success category are used to inform a peer 
	 *that a request has been successfully completed
	 */
	{2001, "DIAMETER_SUCCESS"},
	{2002, "DIAMETER_LIMITED_SUCCESS"},
	/* draft-ietf-aaa-diameter-sip-app-01.txt numbers not yet allocated by IANA 
	{2xx1, "DIAMETER_FIRST_REGISTRATION"},
	{2xx2, "DIAMETER_SUBSEQUENT_REGISTRATION "},
	{2xx3, "DIAMETER_UNREGISTERED_SERVICE "},
	{2xx4, "DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED "},
	{2xx5, "DIAMETER_SERVER_SELECTION"},
	{2xx6, "DIAMETER_SUCCESS_AUTH_SENT_SERVER_NOT_STORED"},
	{2xx7, "DIAMETER_SUCCESS_SERVER_NOT_STORED"},
	
	  */

	/* Protocol errors */
	{3001, "DIAMETER_COMMAND_UNSUPPORTED"},
	{3002, "DIAMETER_UNABLE_TO_DELIVER"},
	{3003, "DIAMETER_REALM_NOT_SERVED"},
	{3004, "DIAMETER_TOO_BUSY"},
	{3005, "DIAMETER_LOOP_DETECTED"},
	{3006, "DIAMETER_REDIRECT_INDICATION"},
	{3007, "DIAMETER_APPLICATION_UNSUPPORTED"},
	{3008, "DIAMETER_INVALID_HDR_BITS"},
	{3009, "DIAMETER_INVALID_AVP_BITS"},
	{3010, "DIAMETER_UNKNOWN_PEER"},
	/* Transient Failures */
	{4001, "DIAMETER_AUTHENTICATION_REJECTED"},
	{4002, "DIAMETER_OUT_OF_SPACE"},
	{4003, "ELECTION_LOST"},
	/* draft-ietf-aaa-diameter-mobileip-20 */
	{4005, "DIAMETER_ERROR_MIP_REPLY_FAILURE"},
	{4006, "DIAMETER_ERROR_HA_NOT_AVAILABLE"},
	{4007, "DIAMETER_ERROR_BAD_KEY"},
	{4008, "DIAMETER_ERROR_MIP_FILTER_NOT_SUPPORTED"},
	/* draft-ietf-aaa-diameter-cc-03.txt */
	{4010, "DIAMETER_END_USER_SERVICE_DENIED"},
	{4011, "DIAMETER_CREDIT_CONTROL_NOT_APPLICABLE"},
	{4012, "DIAMETER_CREDIT_LIMIT_REACHED"},
	/* draft-ietf-aaa-diameter-sip-app-01.txt numbers not yet allocated by IANA 
	 
	{4xx1, "DIAMETER_USER_NAME_REQUIRED"},
	*/
	/* Permanent Failures */
	{5001, "DIAMETER_AVP_UNSUPPORTED"}, 
	{5002, "DIAMETER_UNKNOWN_SESSION_ID"}, 
	{5003, "DIAMETER_AUTHORIZATION_REJECTED"}, 
	{5004, "DIAMETER_INVALID_AVP_VALUE"}, 
	{5005, "DIAMETER_MISSING_AVP"}, 
	{5006, "DIAMETER_RESOURCES_EXCEEDED"}, 
	{5007, "DIAMETER_CONTRADICTING_AVPS"}, 
	{5008, "DIAMETER_AVP_NOT_ALLOWED"}, 
	{5009, "DIAMETER_AVP_OCCURS_TOO_MANY_TIMES"}, 
	{5010, "DIAMETER_NO_COMMON_APPLICATION"}, 
	{5011, "DIAMETER_UNSUPPORTED_VERSION"}, 
	{5012, "DIAMETER_UNABLE_TO_COMPLY"}, 
	{5013, "DIAMETER_INVALID_BIT_IN_HEADER"}, 
	{5014, "DIAMETER_INVALID_AVP_LENGTH"}, 
	{5015, "DIAMETER_INVALID_MESSAGE_LENGTH"}, 
	{5016, "DIAMETER_INVALID_AVP_BIT_COMBO"}, 
	{5017, "DIAMETER_NO_COMMON_SECURITY"}, 
	/* draft-ietf-aaa-diameter-mobileip-20 */
	{5024, "DIAMETER_ERROR_NO_FOREIGN_HA_SERVICE"}, 
	{5025, "DIAMETER_ERROR_END_TO_END_MIP_KEY_ENCRYPTION"}, 
	/* draft-ietf-aaa-diameter-cc-03.txt */
	{5030, "DIAMETER_USER_UNKNOWN"},
	{5031, "DIAMETER_RATING_FAILED"},

	/* draft-ietf-aaa-diameter-sip-app-01.txt numbers not yet allocated by IANA 

	{5xx1, "DIAMETER_ERROR_USER_UNKNOWN"}, 
	{5xx2, "DIAMETER_ERROR_IDENTITIES_DONT_MATCH"}, 
	{5xx3, "DIAMETER_ERROR_IDENTITY_NOT_REGISTERED"}, 
	{5xx4, "DIAMETER_ERROR_ROAMING_NOT_ALLOWED"}, 
	{5xx5, "DIAMETER_ERROR_IDENTITY_ALREADY_REGISTERED"}, 
	{5xx6, "DIAMETER_ERROR_USER_UNKNOWN"}, 
	{5xx7, "DIAMETER_ERROR_IN_ASSIGNMENT_TYPE"}, 
	{5xx8, "DIAMETER_ERROR_TOO_MUCH_DATA"}, 
	{5xx9, "DIAMETER_ERROR_NOT_SUPPORTED_USER_DATA"},
	*/
	{0, NULL}
};
/* TS 29.229 6.4.0 */
static const value_string diameter_exp_result_code_vals[] = {
        {2001, "DIAMETER_FIRST_REGISTRATION"},
        {2002, "DIAMETER_SUBSEQUENT_REGISTRATION"},
        {2003, "DIAMETER_UNREGISTERED_SERVICE"},
        {2004, "DIAMETER_SUCCESS_SERVER_NAME_NOT_STORED"},
        {2005, "DIAMETER_SERVER_SELECTION"},
        {5001, "DIAMETER_ERROR_USER_UNKNOWN"},
        {5002, "DIAMETER_ERROR_IDENTITIES_DONT_MATCH"},
        {5003, "DIAMETER_ERROR_IDENTITY_NOT_REGISTERED"},
        {5004, "DIAMETER_ERROR_ROAMING_NOT_ALLOWED"},
        {5005, "DIAMETER_ERROR_IDENTITY_ALREADY_REGISTERED "},
        {5006, "DIAMETER_ERROR_ROAMING_AUTH_SCHEME_NOT_SUPPORTED"},
        {5007, "DIAMETER_ERROR_IN_ASSIGNMENT_TYPE"},
        {5008, "DIAMETER_ERROR_TOO_MUCH_DATA"},
        {5009, "DIAMETER_ERROR_NOT_SUPPORTED_USER_DATA"},
        {5010, "DIAMETER_MISSING_USER_ID"},
        {5011, "DIAMETER_ERROR_FEATURE_UNSUPPORTED"},
	{0, NULL}
};
	 


static struct old_avp_info old_diameter_avps[] = {
	/* Radius Attributes */
	{  1, "User-Name",                DIAMETER_UTF8STRING,   (value_string *)NULL},
	{  2, "User-Password",            DIAMETER_OCTET_STRING, (value_string *)NULL},
	{  3, "CHAP-Password",            DIAMETER_OCTET_STRING, (value_string *)NULL},
	{  4, "NAS-IP-Address",           DIAMETER_IP_ADDRESS,   (value_string *)NULL},
	{  5, "NAS-Port",                 DIAMETER_INTEGER32,    (value_string *)NULL},
	{  6, "Service-Type",             DIAMETER_ENUMERATED,   diameter_service_type_vals},
	{  7, "Framed-Protocol",          DIAMETER_ENUMERATED,   diameter_framed_protocol_vals},
	{  8, "Framed-IP-Address",        DIAMETER_IP_ADDRESS,   (value_string *)NULL},
	{  9, "Framed-IP-Netmask",        DIAMETER_IP_ADDRESS,   (value_string *)NULL},
	{ 10, "Framed-Routing",           DIAMETER_ENUMERATED,   diameter_framed_routing_vals},
	{ 11, "Filter-Id",                DIAMETER_UTF8STRING,   (value_string *)NULL},
	{ 12, "Framed-MTU",               DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 13, "Framed-Compression",       DIAMETER_ENUMERATED,   diameter_framed_compression_vals},
	{ 14, "Login-IP-Host",            DIAMETER_IP_ADDRESS,   (value_string *)NULL},
	{ 15, "Login-Service",            DIAMETER_ENUMERATED,   diameter_login_service_vals},
	{ 16, "Login-TCP-Port",           DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 17, "Old-Password",             DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 18, "Reply-Message",            DIAMETER_UTF8STRING,   (value_string *)NULL},
	{ 19, "Callback-Number",          DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 20, "Callback-Id",              DIAMETER_OCTET_STRING, (value_string *)NULL},
	/* 21 is Unassigned */
	{ 22, "Framed-Route",             DIAMETER_UTF8STRING,   (value_string *)NULL},
	{ 23, "Framed-IPX-Network",       DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 24, "State",                    DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 25, "Class",                    DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 26, "Vendor-Specific",          DIAMETER_ENUMERATED,   sminmpec_values},
	{ 27, "Session-Timeout",          DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 28, "Idle-Timeout",             DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 29, "Termination-Action",       DIAMETER_ENUMERATED,   diameter_termination_action_vals},
	{ 30, "Called-Station-Id",        DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 31, "Calling-Station-Id",       DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 32, "NAS-Identifier",           DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 33, "Proxy-State",              DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 34, "Login-LAT-Service",        DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 35, "Login-LAT-Node",           DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 36, "Login-LAT-Group",          DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 37, "Framed-AppleTalk-Link",    DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 38, "Framed-AppleTalk-Network", DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 39, "Framed-AppleTalk-Zone",    DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 40, "Acct-Status-Type",         DIAMETER_ENUMERATED,   diameter_acct_status_type_vals},
	{ 41, "Acct-Delay-Time",          DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 42, "Acct-Input-Octets",				DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 43, "Acct-Output-Octets",				DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 44, "Acct-Session-Id",				DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 45, "Acct-Authentic",					DIAMETER_ENUMERATED,   diameter_acct_authentic_vals},
	{ 46, "Acct-Session-Time",				DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 47, "Acct-Input-Packets",				DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 48, "Acct-Output-Packets",			DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 49, "Acct-Terminate-Cause",			DIAMETER_ENUMERATED,   diameter_acct_terminate_cause_vals},
	{ 50, "Acct-Multi-Session-Id",			DIAMETER_OCTET_STRING, (value_string *)NULL},
	{ 51, "Acct-Link-Count",				DIAMETER_INTEGER32,    (value_string *)NULL},
	{ 52, "Acct-Input-Gigawords",			DIAMETER_INTEGER32,		(value_string *)NULL},/*[RFC2869]*/
	{ 53, "Acct-Output-Gigawords",			DIAMETER_INTEGER32,		(value_string *)NULL},/*[RFC2869]*/
	{ 54, "(unassigned)",					DIAMETER_INTEGER32,		(value_string *)NULL},
	{ 55, "Event-Timestamp",				DIAMETER_TIME,			(value_string *)NULL},/*[RFC2869]*/
	/*
	 * 56-59	(unassigned)
	 *
	 */
	{ 60,	"CHAP-Challenge",				DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 61,	"NAS-Port-Type",				DIAMETER_ENUMERATED,	diameter_nas_port_type_vals},
	{ 62,	"Port-Limit",					DIAMETER_INTEGER32,		(value_string *)NULL},
	{ 63,	"Login-LAT-Port",				DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 64,	"Tunnel-Type",					DIAMETER_ENUMERATED,	diameter_tunnel_type_vals},
	{ 65,	"Tunnel-Medium-Type",			DIAMETER_ENUMERATED,	diameter_tunnel_medium_type_vals},
	{ 66,	"Tunnel-Client-Endpoint",		DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 67,	"Tunnel-Server-Endpoint",		DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 68,	"Tunnel-Connection-ID",			DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 69,	"Tunnel-Password",				DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 70,	"ARAP-Password",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 71,	"ARAP-Features",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 72,	"ARAP-Zone-Access",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 73,	"ARAP-Security",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 74,	"ARAP-Security-Data",			DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 75,	"Password-Retry",				DIAMETER_INTEGER32,		(value_string *)NULL},/*[RFC2869]*/
	{ 76,	"Prompt",						DIAMETER_ENUMERATED,	(value_string *)NULL},/*[RFC2869]*/
	{ 77,	"Connect-Info",					DIAMETER_UTF8STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 78,	"Configuration-Token",			DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 79,	"EAP-Message",					DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 80,	"Message-Authenticator",		DIAMETER_INTEGER64,		(value_string *)NULL},/*[RFC2869]*/
	{ 81,	"Tunnel-Private-Group-ID",		DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2868]*/
    { 82,	"Tunnel-Assignment-Id",			DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 83,	"Tunnel-Preference",			DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2868]*/
	{ 84,	"ARAP-Challenge-Response",		DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 85,	"Acct-Interim-Interval",		DIAMETER_INTEGER32,		(value_string *)NULL},/*[RFC2869]*/
	{ 86,	"Acct-Tunnel-Packets-Lost",		DIAMETER_INTEGER32,		(value_string *)NULL},/*[RFC2867]*/
	{ 87,	"NAS-Port-Id",					DIAMETER_UTF8STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 88,	"Framed-Pool",					DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2869]*/
	{ 89,	"(unassigned)",					DIAMETER_OCTET_STRING,	(value_string *)NULL},
	{ 90,	"Tunnel-Client-Auth-ID",		DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2868]*/
	{ 91,	"Tunnel-Server-Auth-ID",		DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC2868]*/
	/*
	 * 92-93      (Unassigned)
	 */
	{ 94,	"Originating-Line-Info",		DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[Trifunovic]*/ 
	{ 95,	"NAS-IPv6-Address",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC3162]*/
	{ 96,	"Framed-Interface-Id",			DIAMETER_INTEGER64,		(value_string *)NULL},/*[RFC3162]*/
	{ 97,	"Framed-IPv6-Prefix",			DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC3162]*/
	{ 98,	"Login-IPv6-Host",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC3162]*/
	{ 99,	"Framed-IPv6-Route",			DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC3162]*/
	{ 100,	"Framed-IPv6-Pool",				DIAMETER_OCTET_STRING,	(value_string *)NULL},/*[RFC3162]*/
	{ 101,	"Error-Cause Attribute",		DIAMETER_ENUMERATED,	diameter_error_cause_attribute_vals},/*[RFC3576]*/ 
/*
   192-223	Experimental Use			 [RFC2058]
   224-240	Implementation Specific			 [RFC2058]
   241-255	Reserved				 [RFC2058]   
*/
	/* Diameter AVPs */
    { 257, "Host-IP-Address",             DIAMETER_IP_ADDRESS,  (value_string *)NULL},
    { 258, "Auth-Application-Id",         DIAMETER_UNSIGNED32,  diameter_application_id_vals},
    { 259, "Acct-Application-Id",         DIAMETER_UNSIGNED32,  diameter_application_id_vals},
    { 260, "Vendor-Specific-Application-Id", DIAMETER_GROUPED, (value_string *)NULL},
    { 261, "Redirect-Host-Usage",         DIAMETER_ENUMERATED,  diameter_redirect_host_usage_vals},
    { 262, "Redirect-Max-Cache-Time",     DIAMETER_UNSIGNED32,  (value_string *)NULL},
    { 263, "Session-Id",                  DIAMETER_SESSION_ID,  (value_string *)NULL},
    { 264, "Origin-Host",                 DIAMETER_IDENTITY,    (value_string *)NULL},
    { 265, "Supported-Vendor-Id",         DIAMETER_UNSIGNED32,  (value_string *)NULL},
    { 266, "Vendor-Id",                   DIAMETER_ENUMERATED,  sminmpec_values},
    { 267, "Firmware-Revision",           DIAMETER_UNSIGNED32,  (value_string *)NULL},
    { 268, "Result-Code",                 DIAMETER_ENUMERATED,  diameter_result_code_vals},
    { 269, "Product-Name",                DIAMETER_UTF8STRING,  (value_string *)NULL},
    { 270, "Session-Binding",             DIAMETER_UNSIGNED32,  diameter_session_binding_vals},
    { 271, "Session-Server-Failover",     DIAMETER_ENUMERATED,  diameter_session_server_failover_vals},
    { 272, "Multi-Round-Time-Out",        DIAMETER_UNSIGNED32,  (value_string *)NULL},
    { 273, "Disconnect-Cause",            DIAMETER_ENUMERATED,  diameter_disconnect_cause_vals},
    { 274, "Auth-Request-Type",           DIAMETER_ENUMERATED,  diameter_auth_request_type_vals},
    { 275, "Alternate-Peer",              DIAMETER_IDENTITY,    (value_string *)NULL},
    { 276, "Auth-Grace-Period",           DIAMETER_UNSIGNED32,  (value_string *)NULL},
    { 277, "Auth-Session-State",          DIAMETER_ENUMERATED,  diameter_auth_session_state_vals},
    { 278, "Origin-State-Id",             DIAMETER_UNSIGNED32,  (value_string *)NULL},
    { 279, "Failed-AVP",                  DIAMETER_OCTET_STRING,(value_string *)NULL},
    { 280, "Proxy-Host",                  DIAMETER_IDENTITY,    (value_string *)NULL},
    { 281, "Error-Message",               DIAMETER_UTF8STRING,  (value_string *)NULL},
    { 282, "Route-Record",                DIAMETER_IDENTITY,    (value_string *)NULL},
    { 283, "Destination-Realm",           DIAMETER_UTF8STRING,  (value_string *)NULL},
    { 284, "Proxy-Info",                  DIAMETER_GROUPED,     (value_string *)NULL},
    { 285, "Re-Auth-Request-Type",        DIAMETER_ENUMERATED,  diameter_re_auth_request_type_vals},
    { 286, "Source-Route",                DIAMETER_IDENTITY,    (value_string *)NULL},
    { 287, "Accounting-Sub-Session-Id",   DIAMETER_UNSIGNED64,  (value_string *)NULL},
    { 291, "Authorization-Lifetime",      DIAMETER_INTEGER32,   (value_string *)NULL},
    { 292, "Redirect-Host",               DIAMETER_IDENTITY,    (value_string *)NULL},
    { 293, "Destination-Host",            DIAMETER_IDENTITY,    (value_string *)NULL},
    { 294, "Error-Reporting-Host",        DIAMETER_IDENTITY,    (value_string *)NULL},
    { 296, "Origin-Realm",                DIAMETER_UTF8STRING,  (value_string *)NULL},
    { 295, "Termination-Cause",           DIAMETER_ENUMERATED,  diameter_termination_cause_vals},
    { 297, "Experimental-Result",			DIAMETER_GROUPED,     (value_string *)NULL},
    { 298, "Experimental-Result-Code",		DIAMETER_ENUMERATED,	diameter_exp_result_code_vals},
    { 299, "Inband-Security-Id",			DIAMETER_ENUMERATED,	diameter_inband_security_id_vals},	/* [RFC3588] */
    { 300, "E2E-Sequence",					DIAMETER_GROUPED,     (value_string *)NULL},				/* [RFC3588] */

/* Diameter Mobile IP AVPs */
    { 318, "MIP-FA-to-HA-SPI",            DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 319, "MIP-FA-to-MN-SPI",            DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 320, "MIP-Reg-Request",             DIAMETER_MIP_REG_REQ,    (value_string *)NULL},
    { 321, "MIP-Reg-Reply",               DIAMETER_OCTET_STRING,   (value_string *)NULL},
    { 322, "MIP-MN-AAA-Auth",             DIAMETER_GROUPED,        (value_string *)NULL},
    { 323, "MIP-HA-to-FA-SPI",				DIAMETER_UNSIGNED32,	(value_string *)NULL},
    { 325, "MIP-MN-to-FA-MSA",            DIAMETER_GROUPED,        (value_string *)NULL},
    { 326, "MIP-FA-to-MN-MSA",            DIAMETER_GROUPED,        (value_string *)NULL},
    { 328, "MIP-FA-to-HA-MSA",            DIAMETER_GROUPED,        (value_string *)NULL},
    { 329, "MIP-HA-to-FA-MSA",            DIAMETER_GROUPED,        (value_string *)NULL},
    { 331, "MIP-MN-to-HA-MSA",            DIAMETER_GROUPED,        (value_string *)NULL},
    { 332, "MIP-HA-to-MN-MSA",            DIAMETER_GROUPED,        (value_string *)NULL},
    { 333, "MIP-Mobile-Node-Address",     DIAMETER_IP_ADDRESS,     (value_string *)NULL},
    { 334, "MIP-Home-Agent-Address",      DIAMETER_IP_ADDRESS,     (value_string *)NULL},
    { 335, "MIP-Nonce",                   DIAMETER_OCTET_STRING,   (value_string *)NULL},
    { 336, "MIP-Candidate-Home-Agent-Host", DIAMETER_IDENTITY,     (value_string *)NULL},
    { 337, "MIP-Feature-Vector",          DIAMETER_UNSIGNED32,     diameter_mip_feature_vector_vals},
    { 338, "MIP-Auth-Input-Data-Length",  DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 339, "MIP-Authenticator-Length",    DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 340, "MIP-Authenticator-Offset",    DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 341, "MIP-MN-AAA-SPI",              DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 342, "MIP-PEER-SPI",                DIAMETER_UNSIGNED32,     (value_string *)NULL},
    { 343, "MIP-Session-Key",             DIAMETER_OCTET_STRING,   (value_string *)NULL},
    { 344, "MIP-FA-Challenge",            DIAMETER_OCTET_STRING,   (value_string *)NULL},
    { 345, "MIP-Algorithm-Type",          DIAMETER_ENUMERATED,     diameter_mip_algorithm_type},
    { 346, "MIP-Replay-Mode",	          DIAMETER_ENUMERATED,     diameter_mip_replay_mode},
    { 347, "MIP-Filter-Rule",             DIAMETER_IP_FILTER_RULE, (value_string *)NULL},
    { 348, "MIP-Home-Agent-Host",         DIAMETER_IDENTITY,       (value_string *)NULL},
    { 398, "MIP-Key-Lifetime",            DIAMETER_UNSIGNED32,     (value_string *)NULL},
/* http://www.ietf.org/internet-drafts/draft-ietf-aaa-diameter-cc-03.txt */
	{ 411, "CC-Correlation-Id",                 DIAMETER_OCTET_STRING,		(value_string *)NULL}, 
	{ 412, "CC-Input-Octets",                   DIAMETER_UNSIGNED64 ,		(value_string *)NULL}, 
	{ 413, "CC-Money",                          DIAMETER_GROUPED    ,		(value_string *)NULL}, 
	{ 414, "CC-Output-Octets",                  DIAMETER_UNSIGNED64 ,		(value_string *)NULL}, 
	{ 415, "CC-Request-Number",                 DIAMETER_UNSIGNED32 ,		(value_string *)NULL}, 
	{ 416, "CC-Request-Type",                   DIAMETER_ENUMERATED , diameter_cc_request_type_vals}, 
	{ 417, "CC-Service-Specific-Units",         DIAMETER_UNSIGNED64 ,		(value_string *)NULL},  
	{ 418, "CC-Session-Failover",				DIAMETER_ENUMERATED , diameter_CC_Session_Failover_vals}, 
	{ 419, "CC-Sub-Session-Id",                 DIAMETER_UNSIGNED64 ,		(value_string *)NULL},
	{ 420, "CC-Time",                           DIAMETER_UNSIGNED32 ,		(value_string *)NULL},
	{ 421, "CC-Total-Octets",                   DIAMETER_UNSIGNED64 ,		(value_string *)NULL},
	{ 422, "Check-Balance-Result",              DIAMETER_ENUMERATED , diameter_Check_Balance_Result_vals},
	{ 423, "Cost-Information",                  DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 424, "Cost-Unit",                         DIAMETER_UTF8STRING ,		(value_string *)NULL},
	{ 426, "Credit-Control",                    DIAMETER_ENUMERATED , diameter_credit_control_vals},
	{ 427, "Credit-Control-Failure-Handling",   DIAMETER_ENUMERATED , diameter_credit_control_failure_handling_vals},
	{ 425, "Currency-Code",                     DIAMETER_UNSIGNED32 ,		(value_string *)NULL},
	{ 428, "Direct-Debiting-Failure-Handling",  DIAMETER_ENUMERATED , diameter_direct_debiting_failure_handling_vals},
	{ 429, "Exponent",                          DIAMETER_INTEGER32  ,		(value_string *)NULL},
	{ 430, "Final-Unit-Indication",             DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 431, "Granted-Service-Unit",              DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 432, "Rating-Group",                      DIAMETER_UNSIGNED32 ,		(value_string *)NULL},
	{ 433, "Redirect-Address-Type",             DIAMETER_ENUMERATED , diameter_redirect_address_type_vals},
	{ 434, "Redirect-Server",                   DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 435, "Redirect-Server-Address",           DIAMETER_UTF8STRING ,		(value_string *)NULL},
	{ 436, "Requested-Action",                  DIAMETER_ENUMERATED , diameter_requested_action_vals},
	{ 437, "Requested-Service-Unit",            DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 438, "Restriction-Filter-Rule",           DIAMETER_IP_FILTER_RULE,	(value_string *)NULL},
	{ 439, "Service-Identifier",                DIAMETER_UTF8STRING ,		(value_string *)NULL},
	{ 440, "Service-Parameter-Info",            DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 441, "Service-Parameter-Type",            DIAMETER_UNSIGNED32 ,		(value_string *)NULL},
	{ 442, "Service-Parameter-Value",           DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ 443, "Subscription-Id",                   DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 444, "Subscription-Id-Data",              DIAMETER_UTF8STRING ,		(value_string *)NULL},
	{ 445, "Unit-Value",                        DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 446, "Used-Service-Unit",                 DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 447, "Value-Digits",                      DIAMETER_INTEGER64  ,		(value_string *)NULL},
	{ 448, "Validity-Time",                     DIAMETER_UNSIGNED32 ,		(value_string *)NULL},
	{ 449, "Final-Unit-Action",                 DIAMETER_ENUMERATED ,		diameter_final_unit_action_vals},
	{ 450, "Subscription-Id-Type",              DIAMETER_ENUMERATED ,		diameter_subscription_id_type_vals},
	{ 451, "Tariff-Time-Change",                DIAMETER_TIME,				(value_string *)NULL},
	{ 452, "Tariff-Change-Usage",               DIAMETER_ENUMERATED ,		diameter_tariff_change_usage_vals},
	{ 453, "G-S-U-Pool-Identifier",             DIAMETER_UNSIGNED32 ,		(value_string *)NULL},
	{ 454, "CC-Unit-Type",                      DIAMETER_ENUMERATED ,		diameter_cc_Unit_type_vals},
	{ 455, "Multiple-Services-Indicator",       DIAMETER_ENUMERATED ,		diameter_multiple_services_indicator_vals},
	{ 456, "Multiple-Services-Credit-Control",  DIAMETER_GROUPED    ,		(value_string *)NULL},
	{ 457, "G-S-U-Pool-Reference",              DIAMETER_GROUPED    ,		(value_string *)NULL},
    { 482, "Accounting-Interim-Interval",		DIAMETER_UNSIGNED32,		(value_string *)NULL},
    { 483, "Accounting-Realtime-Required",		DIAMETER_UNSIGNED32,		(value_string *)NULL},
    { 485, "Accounting-Record-Number",			DIAMETER_UNSIGNED32,		(value_string *)NULL},
    { 480, "Accounting-Record-Type",			DIAMETER_ENUMERATED,		diameter_accounting_record_type_vals},
    { 483, "Accounting-Realtime-Required",      DIAMETER_ENUMERATED,		diameter_accounting_realtime_required_vals},
    { 485, "Accounting-Record-Number",			DIAMETER_UNSIGNED32,		(value_string *)NULL},
    { 487, "Accounting-Sub-Session-Id",			DIAMETER_ENUMERATED,		(value_string *)NULL},


/* draft-ietf-aaa-diameter-sip-app-01.txt AVP codes to be allocated
	{ xx01, "SIP-Visited-Network-Id",			DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx02, "SIP-AOR",							DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx03, "SIP-Server-URI",					DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx04, "SIP-Server-Capabilities",			DIAMETER_GROUPED,			(value_string *)NULL},
	{ xx05, "SIP-Mandatory-Capability",			DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ xx06, "SIP-Optional-Capability",			DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ xx07, "SIP-User-Data",					DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx08, "SIP-Number-Auth-Items",			DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ xx09, "SIP-Auth-Data-Item",				DIAMETER_GROUPED,			(value_string *)NULL},
	{ xx10, "SIP-Item-Number",					DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ xx11, "SIP-Authentication-Scheme",		DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx12, "SIP-Authenticate",					DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx13, "SIP-Authorization",				DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx14, "SIP-Authentication-Info",			DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx15, "SIP-Authentication-Context",		DIAMETER_GROUPED,			(value_string *)NULL},
	{ xx16, "SIP-Confidentiality-Key",			DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx17, "SIP-Integrity-Key",				DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ xx18, "SIP-Server-Assignment-Type",		DIAMETER_ENUMERATED,		SIP_server_assignment_type_vals},
	{ xx19, "SIP-Deregistration-Reason",		DIAMETER_GROUPED,			(value_string *)NULL},
	{ xx20, "SIP-Reason-Code",					DIAMETER_ENUMERATED,		SIP_reason_code_vals},
	{ xx21, "SIP-Reason-Info",					DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx22, "SIP-Accouting-Information",		DIAMETER_GROUPED,			(value_string *)NULL},
	{ xx23, "SIP-Accounting-Server-URI",		DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx24, "SIP-Credit-Control-Server-URI",	DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx25, "SIP-User-Authorization-Type",		DIAMETER_ENUMERATED,		SIP_user_authorization_type},
	{ xx26, "SIP-User-Data-Request-Type",		DIAMETER_ENUMERATED,		SIP_user_data_request_type},
	{ xx27, "SIP-User-Data-Already-Available",	DIAMETER_ENUMERATED,		SIP_user_data_already_available_vals},
	{ xx28, "SIP-Method",						DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ xx29, "SIP-Entity-Body-Hash",				DIAMETER_OCTET_STRING,		(value_string *)NULL},
	*/
	{0, (char *)NULL, 0, (value_string*)NULL}
};

 /* The following table describes the Diameter AVPs defined for the Cx interface protocol.
  * The Vendor-Id header of all AVPs defined in this specification shall be set to 
  * 3GPP (10415).
  * TS 29.299 5.7.0
  */
static struct old_avp_info ThreeGPP_vendor_diameter_avps[] = {
	{ 1, "Visited-Network-Identifier",				DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ 2, "Public-Identity",							DIAMETER_PUBLIC_ID,			(value_string *)NULL},
	{ 3, "Server-Name",								DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ 4, "Server-Capabilities",						DIAMETER_GROUPED,			(value_string *)NULL},
	{ 5, "Mandatory-Capability",					DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ 6, "Optional-Capability",						DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ 7, "User-Data",								DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ 8, "SIP-Number-Auth-Items",					DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ 9, "SIP-Authentication-Scheme",				DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ 10, "SIP-Authenticate",						DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ 11, "SIP-Authorization",						DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ 12, "SIP-Authentication-Context",				DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ 13, "SIP-Auth-Data-Item",						DIAMETER_GROUPED,			(value_string *)NULL},
	{ 14, "SIP-Item-Number",						DIAMETER_UNSIGNED32,		(value_string *)NULL},
	{ 15, "Server-Assignment-Type",					DIAMETER_ENUMERATED,		SIP_server_assignment_type_vals},
	{ 16, "Deregistration-Reason",					DIAMETER_GROUPED,			(value_string *)NULL},
	{ 17, "Reason-Code",							DIAMETER_ENUMERATED,		ThreeGPP_reason_code_vals},
	{ 18, "Reason-Info",							DIAMETER_UTF8STRING,		(value_string *)NULL},
	{ 19, "Charging-Information",					DIAMETER_GROUPED,			(value_string *)NULL},
	{ 20, "Primary-Event-Charging-Function-Name",	DIAMETER_URI,				(value_string *)NULL},
	{ 21, "Secondary-Event-Charging-Function-Name",	DIAMETER_URI,				(value_string *)NULL},
	{ 22, "Primary-Charging-Collection-Function-Name",	 DIAMETER_URI,			(value_string *)NULL},
	{ 23, "Secondary-Charging-Collection-Function-Name", DIAMETER_URI,			(value_string *)NULL},
	{ 24, "User-Authorization-Type",				DIAMETER_ENUMERATED,		SIP_user_authorization_type},
	{ 25, "User-Data-Request-Type",					DIAMETER_ENUMERATED,		SIP_user_data_request_type},
	{ 26, "User-Data-Already-Available",			DIAMETER_ENUMERATED,		SIP_user_data_already_available_vals},
	{ 27, "Confidentiality-Key",					DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{ 28, "Integrity-Key",							DIAMETER_OCTET_STRING,		(value_string *)NULL},
	{0, (char *)NULL, 0, (value_string*)NULL}
};
static const value_string diameter_command_code_vals[] = {

	/* Base Protocol */
	{257, "Capabilities-Exchange"},
	{258, "Re-Auth"},
	{260, "AA-Mobile-Node"},			/* [RFC-ietf-aaa-diameter-mobileip-20.txt]  */
	{262, "Home-Agent-MIP"},			/* [RFC-ietf-aaa-diameter-mobileip-20.txt]  */
	{265, "AAR / AAA"},					/* [RFC-ietf-aaa-diameter-nasreq-17.txt]	*/
	{265, "DER / DEA"},					/* [RFC-ietf-aaa-eap-10.txt]				*/
	{271, "Accounting"},
	{272, "Credit-Control"},					/* [RFC-ietf-aaa-diameter-cc-06.txt]		*/
	{274, "Abort-Session"},
	{275, "Session-Termination"},
	{280, "Device-Watchdog"},
	{282, "Disconnect-Peer"},			/* [RFC3588] */
	/* 300-313   Allocated for 3GPP (TS 29.229 6.40)*/
	{300, "User-Authorization"},
	{301, "Server-Assignment"},
	{302, "Location-Info"},
	{303, "Multimedia-Auth"},
	{304, "Registration-Termination"},
	{305, "Push-Profile"},

	/* Session Initiation Protocol (SIP) Application, numbers not yet assigned by IANA 
	{aaa, "User-Authorization"},
	{bbb, "Server-Assignment"},
	{ccc, "Location-Info"},
	{ddd, "Multimedia-Auth"},
	{eee, "Registration-Termination"},
	{fff, "Push-Profile"},
	*/	

	{0, (char *)NULL}
};

/* stuff for supporting multiple versions */
typedef enum {
  DIAMETER_V16,
  DIAMETER_RFC
} Version_Type;

static const enum_val_t options[] = {
  { "draft-16", "Diameter base draft version 16 and below",  DIAMETER_V16  },
  { "rfc3588", "Diameter base RFC 3588 ",                    DIAMETER_RFC  },
  { NULL, NULL, 0 }
};



#endif /* _PACKET_DIAMETER_H */
