Ethereal-dev: Re: [ethereal-dev] Diameter (using new prefs.c)
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: David Frascone <dave@xxxxxxxxxxxx>
Date: Fri, 14 Jul 2000 09:29:48 -0500
On Thu, Jul 13, 2000 at 10:58:40PM -0500, Gilbert Ramirez wrote: > We really do need a global way of modifying port registrations, for all > protocols. This is a novel technique that will work well for this > situation (diameter), but we still need to come up with code for > doing it globally. > > When are you going to post the diameter dissector? > It's been attached to the last two messages, in the tarball. In case the mailing list has been dropping attachments, I'll include it here. ---------------------packet-diameter.c----------------------- /* packet-diameter.c * Routines for DIAMETER packet disassembly * * $Id$ * * Copyright (c) 2000 by David Frascone <chaos@xxxxxxxxxxxxxx> * * Ethereal - Network traffic analyzer * By Johan Feyaerts * Copyright 1999 Johan Feyaerts * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_SYS_TYPES_H # include <sys/types.h> #endif #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <glib.h> #include "packet.h" #include "resolv.h" #include "prefs.h" /* This must be defined before we include our dictionary defs */ typedef struct _value_value_pair { guint16 val1; guint16 val2; } value_value_pair; typedef enum { DIAMETER_DATA=1, DIAMETER_STRING, DIAMETER_ADDRESS, DIAMETER_INTEGER32, DIAMETER_INTEGER64, DIAMETER_TIME, DIAMETER_COMPLEX } diameterDataTypes; #include "packet-diameter.h" #define COMMAND_CODE_OFFSET 20 #define NTP_TIME_DIFF (2208988800UL) #define UDP_PORT_DIAMETER 2645 /* #define UDP_PORT_DIAMETER 1812 -- Compiling this in breaks RADIUS */ static int proto_diameter = -1; static int hf_diameter_length = -1; static int hf_diameter_code = -1; static int hf_diameter_id =-1; static int hf_diameter_flags = -1; static int hf_diameter_ns = -1; static int hf_diameter_nr = -1; static gint ett_diameter = -1; static gint ett_diameter_avp = -1; static gint ett_diameter_avpinfo = -1; static char gbl_diameterString[200]; static int gbl_diameterPort=UDP_PORT_DIAMETER; gboolean gbl_commandCodeInHeader = FALSE; typedef struct _e_diameterhdr { guint8 code; /* Must be 254 for diameter */ guint8 flagsVer; guint16 pktLength; guint32 identifier; union { struct { guint16 nextSend; guint16 nextReceived; } old; struct { guint32 commandCode; guint32 vendorId; guint16 nextSend; guint16 nextReceived; } new; } u; } e_diameterhdr; typedef struct _e_avphdr { guint32 avp_type; guint16 avp_length; guint16 avp_flags; guint32 avp_vendorId; /* optional */ guint32 avp_tag; /* optional */ } e_avphdr; #define AUTHENTICATOR_LENGTH 12 #define DIAM_FLAGS_A 0x10 #define DIAM_FLAGS_W 0x08 #define AVP_FLAGS_P 0x0010 #define AVP_FLAGS_T 0x0008 #define AVP_FLAGS_V 0x0004 #define AVP_FLAGS_R 0x0002 #define AVP_FLAGS_M 0x0001 void proto_reg_handoff_diameter(void); static guint32 match_numval(guint32 val, const value_value_pair *vs) { guint32 i = 0; while (vs[i].val1) { if (vs[i].val1 == val) return(vs[i].val2); i++; } return(0); } static gchar *rdconvertbufftostr(gchar *dest,guint8 length,const guint8 *pd) { /*converts the raw buffer into printable text */ guint32 i; guint32 totlen=0; dest[0]='"'; dest[1]=0; totlen=1; for (i=0; i < (guint32)length; i++) { if( isalnum((int)pd[i])||ispunct((int)pd[i]) ||((int)pd[i]==' ')) { dest[totlen]=(gchar)pd[i]; totlen++; } else { sprintf(&(dest[totlen]), "\\%03u", pd[i]); totlen=totlen+strlen(&(dest[totlen])); } } dest[totlen]='"'; dest[totlen+1]=0; return dest; } static gchar *rd_match_strval(guint32 val, const value_string *vs) { gchar *result; result=match_strval(val,vs); if (result == NULL ) { result="Undefined"; } return result; } static char *complexValCheck(e_avphdr *avp, const char *data, size_t dataLen) { const char *rawData; static char returnStr[1024]; switch (avp->avp_type) { case DIAMETER_ATT_INTEGRITY_CHECK_VALUE: { struct { guint32 transform; guint32 keyid; } icv; memcpy(&icv, data, 8); icv.transform=ntohl(icv.transform); icv.keyid=ntohl(icv.keyid); rawData = &data[8]; sprintf(returnStr, "transform: 0x%08x (%d) keyid: 0x%08x (%d) Hash: ", icv.transform, icv.transform, icv.keyid, icv.keyid); rdconvertbufftostr(&returnStr[strlen(returnStr)], dataLen-8, rawData); return returnStr; } } return NULL;; } /* complexValCheck */ static char *customValCheck(int code, int value) { switch (code) { case DIAMETER_ATT_QOS_SERVICE_TYPE: return rd_match_strval(value, diameter_qos_service_type_vals); break; case DIAMETER_ATT_SERVICE_TYPE: return rd_match_strval(value, diameter_service_type_vals); break; case DIAMETER_ATT_PROHIBIT: return rd_match_strval(value, diameter_prohibit_vals); break; case DIAMETER_ATT_PROMPT: return rd_match_strval(value, diameter_prompt_vals); break; case DIAMETER_ATT_SOURCE_PORT: return rd_match_strval(value, diameter_source_port_vals); break; case DIAMETER_ATT_NAS_PORT_TYPE: return rd_match_strval(value, diameter_nas_port_type_vals); break; case DIAMETER_ATT_INTERFACE_ADDRESS: return rd_match_strval(value, diameter_interface_address_vals); break; case DIAMETER_ATT_FRAMED_ROUTING: return rd_match_strval(value, diameter_framed_routing_vals); break; case DIAMETER_ATT_COMMAND_CODE: return rd_match_strval(value, diameter_command_code_vals); break; case DIAMETER_ATT_FRAMED_IP_ADDRESS: return rd_match_strval(value, diameter_framed_ip_address_vals); break; case DIAMETER_ATT_ARAP_ZONE_ACCESS: return rd_match_strval(value, diameter_arap_zone_access_vals); break; case DIAMETER_ATT_ACCT_AUTHENTIC: return rd_match_strval(value, diameter_acct_authentic_vals); break; case DIAMETER_ATT_FRAMED_PROTOCOL: return rd_match_strval(value, diameter_framed_protocol_vals); break; case DIAMETER_ATT_FRAMED_COMPRESSION: return rd_match_strval(value, diameter_framed_compression_vals); break; case DIAMETER_ATT_AUTHENTICATION_TYPE: return rd_match_strval(value, diameter_authentication_type_vals); break; case DIAMETER_ATT_ACCT_TERMINATE_CAUSE: return rd_match_strval(value, diameter_acct_terminate_cause_vals); break; case DIAMETER_ATT_PROTOCOL: return rd_match_strval(value, diameter_protocol_vals); break; case DIAMETER_ATT_DESTINATION_PORT: return rd_match_strval(value, diameter_destination_port_vals); break; case DIAMETER_ATT_TERMINATION_ACTION: return rd_match_strval(value, diameter_termination_action_vals); break; case DIAMETER_ATT_EXTENSION_ID: return rd_match_strval(value, diameter_extension_id_vals); break; case DIAMETER_ATT_MERIT_LAS_CODE: return rd_match_strval(value, diameter_merit_las_code_vals); break; case DIAMETER_ATT_LOGIN_SERVICE: return rd_match_strval(value, diameter_login_service_vals); break; case DIAMETER_ATT_RSVP_SERVICE_TYPE: return rd_match_strval(value, diameter_rsvp_service_type_vals); break; case DIAMETER_ATT_REBOOT_TYPE: return rd_match_strval(value, diameter_reboot_type_vals); break; case DIAMETER_ATT_ACCT_STATUS_TYPE: return rd_match_strval(value, diameter_acct_status_type_vals); break; } return NULL; } static gchar *rd_value_to_str(e_avphdr *avph,const u_char *pd, int offset) { int print_type; gchar *cont; guint32 intval; int dataLen; char *valstr; static char buffer[1024]; dataLen = avph->avp_length - sizeof(e_avphdr); if (!(avph->avp_flags & AVP_FLAGS_V)) dataLen += 4; if (!(avph->avp_flags & AVP_FLAGS_T)) dataLen += 4; /* prints the values of the attribute value pairs into a text buffer */ print_type=match_numval(avph->avp_type,diameter_printinfo); /* Default begin */ sprintf(buffer,"Value: "); cont=&buffer[strlen(buffer)]; switch(print_type) { case DIAMETER_COMPLEX: valstr=complexValCheck(avph, &(pd[offset]), dataLen); if (valstr) { strcpy(cont, valstr); break; } /* Intentional fall through */ case DIAMETER_DATA: case DIAMETER_STRING: rdconvertbufftostr(cont,dataLen, &(pd[offset])); break; case DIAMETER_ADDRESS: sprintf(cont,"%u.%u.%u.%u",(guint8)pd[offset], (guint8)pd[offset+1],(guint8)pd[offset+2], (guint8)pd[offset+3]); break; case DIAMETER_INTEGER32: /* Check for custom values */ intval=pntohl(&(pd[offset])); valstr=customValCheck(avph->avp_type, intval); if (valstr) { sprintf(cont,"%s (%u)", valstr, intval); } else { sprintf(cont,"%u", intval); } break; case DIAMETER_INTEGER64: sprintf(cont,"Unsupported Conversion"); break; case DIAMETER_TIME: { struct tm lt; intval=pntohl(&(pd[offset])); intval -= NTP_TIME_DIFF; lt=*localtime((time_t *)&intval); strftime(cont, 1024, "%a, %d %b %Y %H:%M:%S %z",<); } break; default: rdconvertbufftostr(cont,dataLen, &(pd[offset])); break; } if (cont == buffer) { strcpy(cont,"Unknown Value"); } return buffer; } static void dissect_attribute_value_pairs(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int avplength) { /* adds the attribute value pairs to the tree */ e_avphdr avph; gchar *avptpstrval; gchar *valstr; guint32 tag=0; guint32 vendorId=0; int dataOffset; int fixAmt; proto_item *avptf; proto_tree *avptree; int vendorOffset, tagOffset; if (avplength==0) { proto_tree_add_text(tree, NullTVB,offset,0, "No Attribute Value Pairs Found"); return; } while (avplength > 0 ) { vendorOffset = tagOffset = 0; memcpy(&avph,&pd[offset],sizeof(e_avphdr)); avph.avp_type = ntohl(avph.avp_type); avph.avp_length = ntohs(avph.avp_length); avph.avp_flags = ntohs(avph.avp_flags); if (avph.avp_flags & AVP_FLAGS_V) { vendorId = ntohl(avph.avp_vendorId); vendorOffset = 8; if (avph.avp_flags & AVP_FLAGS_T) { tag = ntohl(avph.avp_tag); tagOffset = 12; dataOffset = sizeof(e_avphdr); } else { /* only a vendor id */ dataOffset = sizeof(e_avphdr) - sizeof(guint32); } } else { if (avph.avp_flags & AVP_FLAGS_T) { /* tag in vendor field */ tag = ntohl(avph.avp_vendorId); tagOffset = 8; dataOffset = sizeof(e_avphdr) - sizeof(guint32); } else { /* No vendor or tag info */ dataOffset = sizeof(e_avphdr) - (2*sizeof(guint32)); } } /* * Fix byte-alignment */ fixAmt = 4 - (avph.avp_length % 4); if (fixAmt == 4) fixAmt = 0; avplength=avplength - (avph.avp_length + fixAmt); avptpstrval=match_strval(avph.avp_type, diameter_attrib_type_vals); if (avptpstrval == NULL) avptpstrval="Unknown Type"; if (!BYTES_ARE_IN_FRAME(offset, avph.avp_length)) { break; } avptf = proto_tree_add_text(tree,NullTVB, offset, avph.avp_length, "%s(%d) l:0x%x (%d bytes)", avptpstrval,avph.avp_type,avph.avp_length, avph.avp_length); avptree = proto_item_add_subtree(avptf, ett_diameter_avpinfo); if (avptree !=NULL) { proto_tree_add_text(avptree,NullTVB, offset, 4, "AVP Code: %s(%d)", avptpstrval,avph.avp_type); proto_tree_add_text(avptree,NullTVB, offset+4 , 2, "Length: 0x%x(%d bytes)", avph.avp_length, avph.avp_length); proto_tree_add_text(avptree,NullTVB, offset+6, 2, "Flags: P:%d T:%d V:%d R:%d M:%d", (avph.avp_flags & AVP_FLAGS_P)?1:0, (avph.avp_flags & AVP_FLAGS_T)?1:0, (avph.avp_flags & AVP_FLAGS_V)?1:0, (avph.avp_flags & AVP_FLAGS_R)?1:0, (avph.avp_flags & AVP_FLAGS_M)?1:0); if (vendorOffset) { proto_tree_add_text(avptree,NullTVB, offset+vendorOffset, 4, "VendorId: 0x%08x (%d)", vendorId, vendorId); } if (tagOffset) { proto_tree_add_text(avptree,NullTVB, offset+tagOffset, 4, "Tag: 0x%08x (%d)", tag, tag); } valstr=rd_value_to_str(&avph, pd, offset+dataOffset); proto_tree_add_text(avptree,NullTVB, offset+dataOffset, avph.avp_length - dataOffset, "Data: (%d bytes) %s", avph.avp_length - dataOffset, valstr); } offset=offset+avph.avp_length + fixAmt; if (avph.avp_length == 0) { break; } } } static void dissect_diameter(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) { proto_tree *diameter_tree,*avptree; proto_item *ti,*avptf; int avplength,hdrlength, offsetavp; e_diameterhdr dh; int commandCode; char buffer[2000]; int nextSend, nextReceived; gchar *codestrval; if (gbl_commandCodeInHeader) hdrlength=sizeof(e_diameterhdr); else hdrlength = sizeof(e_diameterhdr) - (2 * sizeof(uint32_t)); memcpy(&dh,&pd[offset],hdrlength); /* Fix byte ordering in our static structure */ dh.pktLength = ntohs(dh.pktLength); dh.identifier = ntohl(dh.identifier); /* Our code is in first avp */ if (gbl_commandCodeInHeader) { dh.u.new.nextSend = ntohs(dh.u.new.nextSend); dh.u.new.nextReceived = ntohs(dh.u.new.nextReceived); dh.u.new.commandCode = ntohl(dh.u.new.commandCode); dh.u.new.vendorId = ntohl(dh.u.new.vendorId); nextSend = dh.u.new.nextSend; nextReceived = dh.u.new.nextReceived; commandCode = dh.u.new.commandCode; } else { dh.u.old.nextSend = ntohs(dh.u.old.nextSend); dh.u.old.nextReceived = ntohs(dh.u.old.nextReceived); nextSend = dh.u.old.nextSend; nextReceived = dh.u.old.nextReceived; memcpy(&commandCode, &pd[offset+COMMAND_CODE_OFFSET], 4); commandCode = ntohl(commandCode); } codestrval= match_strval(commandCode,diameter_command_code_vals); if (codestrval==NULL) { codestrval="Unknown Packet"; } if (check_col(fd, COL_PROTOCOL)) col_add_str(fd, COL_PROTOCOL, "DIAMETER"); if (check_col(fd, COL_INFO)) { if (DIAM_FLAGS_A & dh.flagsVer) { sprintf(buffer,"ACK (id=%d, l=%d, s=%d, r=%d)", dh.identifier, dh.pktLength, nextSend, nextReceived); } else { sprintf(buffer,"%s(%d) (id=%d, l=%d, s=%d, r=%d)", codestrval,commandCode, dh.identifier, dh.pktLength, nextSend, nextReceived); } col_add_fstr(fd,COL_INFO,buffer); } if (tree) { ti = proto_tree_add_protocol_format(tree, proto_diameter, NullTVB, offset, dh.pktLength, "%s", gbl_diameterString); diameter_tree = proto_item_add_subtree(ti, ett_diameter); if (!(DIAM_FLAGS_A & dh.flagsVer)) { proto_tree_add_uint_format(diameter_tree, hf_diameter_code, NullTVB, offset+0, 1, dh.code, "Packet code:0x%02x", dh.code); } proto_tree_add_uint_format(diameter_tree, hf_diameter_flags, NullTVB, offset+1, 1, dh.flagsVer, "Packet flags/Version: 0x%02x (Flags:0x%x," " A:%d W:%d Version=0x%1x (%d)", dh.flagsVer, (dh.flagsVer&0xf8)>>3, (DIAM_FLAGS_A & dh.flagsVer)?1:0, (DIAM_FLAGS_W & dh.flagsVer)?1:0, dh.flagsVer&0x07, dh.flagsVer&0x07); proto_tree_add_uint_format(diameter_tree, hf_diameter_length, NullTVB, offset+2, 2, dh.pktLength, "Packet length: 0x%04x (%d)",dh.pktLength, dh.pktLength); proto_tree_add_uint_format(diameter_tree,hf_diameter_id, NullTVB, offset+4, 4, dh.identifier, "Packet identifier: 0x%08x (%d)", dh.identifier, dh.identifier); if (gbl_commandCodeInHeader) { proto_tree_add_uint_format(diameter_tree,hf_diameter_id, NullTVB, offset+8, 4, dh.identifier, "Command Code: 0x%08x (%d:%s)", dh.u.new.commandCode, dh.u.new.commandCode, codestrval); proto_tree_add_uint_format(diameter_tree,hf_diameter_id, NullTVB, offset+12, 4, dh.identifier, "VendorId: 0x%08x (%d)", dh.u.new.vendorId, dh.u.new.vendorId); proto_tree_add_uint_format(diameter_tree, hf_diameter_ns, NullTVB, offset+16, 2, nextSend, "Ns: 0x%02x(%d)",nextSend, nextSend); proto_tree_add_uint_format(diameter_tree, hf_diameter_nr, NullTVB, offset+20, 2, nextReceived, "Nr: 0x%02x(%d)", nextReceived, nextReceived); } else { proto_tree_add_uint_format(diameter_tree, hf_diameter_ns, NullTVB, offset+8, 2, nextSend, "Ns: 0x%02x(%d)",nextSend, nextSend); proto_tree_add_uint_format(diameter_tree, hf_diameter_nr, NullTVB, offset+10, 2, nextReceived, "Nr: 0x%02x(%d)", nextReceived, nextReceived); } /* Update the lengths */ avplength= dh.pktLength -hdrlength; offsetavp=offset+hdrlength; /* list the attribute value pairs */ avptf = proto_tree_add_text(diameter_tree, NullTVB,offset+hdrlength,avplength, "Attribute value pairs"); avptree = proto_item_add_subtree(avptf, ett_diameter_avp); if (avptree !=NULL) { dissect_attribute_value_pairs( pd, offsetavp,fd,avptree,avplength); } } } /* registration with the filtering engine */ void proto_register_diameter(void) { static hf_register_info hf[] = { { &hf_diameter_code, { "Code","diameter.code", FT_UINT8, BASE_DEC, NULL, 0x0, "" }}, { &hf_diameter_flags, { "Flags+Version", "diameter.flags", FT_UINT8, BASE_DEC, NULL, 0x0, "" }}, { &hf_diameter_length, { "Length","diameter.length", FT_UINT32, BASE_DEC, NULL, 0x0, "" }}, { &hf_diameter_id, { "Identifier", "diameter.id", FT_UINT32, BASE_DEC, NULL, 0x0, "" }}, { &hf_diameter_ns, { "Next Send", "diameter.ns", FT_UINT16, BASE_DEC, NULL, 0x0, "" }}, { &hf_diameter_nr, { "Next Received", "diameter.nr", FT_UINT16, BASE_DEC, NULL, 0x0, "" }}, }; static gint *ett[] = { &ett_diameter, &ett_diameter_avp, &ett_diameter_avpinfo }; module_t *diameter_module; /* Register a configuration option for port */ #if 0 g_warning ("DIAMETER Registering configuration option (port = %d)", gbl_diameterPort); #endif diameter_module = prefs_register_module("Diameter", "Diameter", proto_reg_handoff_diameter); prefs_register_uint_preference(diameter_module, "port", "DIAMETER Port", "Set the port for DIAMETER messages", 10, &gbl_diameterPort); prefs_register_bool_preference(diameter_module, "command_in_header", "Command code in header", "Whether the command code is in the header, or in the first AVP", &gbl_commandCodeInHeader); #if 0 g_warning ("DIAMETER Registering protocol (port = %d)", gbl_diameterPort); #endif proto_diameter = proto_register_protocol (gbl_diameterString, "diameter"); proto_register_field_array(proto_diameter, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } void proto_reg_handoff_diameter(void) { static int Initialized=FALSE; static int port=0; if (Initialized) { #if 0 g_warning ("DIAMETER re-registering handoff (port = %d)", gbl_diameterPort); #endif dissector_delete("udp.port", port, dissect_diameter); } else { #if 0 g_warning ("DIAMETER Registering handoff (port = %d)", gbl_diameterPort); #endif Initialized=TRUE; } /* set port for future deletes */ port=gbl_diameterPort; sprintf(gbl_diameterString, "Diameter Protocol (port %d)", gbl_diameterPort); dissector_add("udp.port", gbl_diameterPort, dissect_diameter); } -------------------------------end packet-diameter.c----------------- --------------------packet-diameter.h----------------------- /* * Filename: packet-diameter.h * WARNING: This file was automatically generated by dict2h.pl. Modifications * will be erased by next invocation of dictionary parser. */ #ifndef _PACKET_DIAMETER_H #define _PACKET_DIAMETER_H /* Attributes */ #define DIAMETER_ATT_USER_NAME 1 #define DIAMETER_ATT_USER_PASSWORD 2 #define DIAMETER_ATT_CHAP_PASSWORD 3 #define DIAMETER_ATT_NAS_IP_ADDRESS 4 #define DIAMETER_ATT_NAS_PORT 5 #define DIAMETER_ATT_SERVICE_TYPE 6 #define DIAMETER_ATT_FRAMED_PROTOCOL 7 #define DIAMETER_ATT_FRAMED_IP_ADDRESS 8 #define DIAMETER_ATT_FRAMED_IP_NETMASK 9 #define DIAMETER_ATT_FRAMED_ROUTING 10 #define DIAMETER_ATT_FILTER_ID 11 #define DIAMETER_ATT_FRAMED_MTU 12 #define DIAMETER_ATT_FRAMED_COMPRESSION 13 #define DIAMETER_ATT_LOGIN_IP_HOST 14 #define DIAMETER_ATT_LOGIN_SERVICE 15 #define DIAMETER_ATT_LOGIN_TCP_PORT 16 #define DIAMETER_ATT_OLD_PASSWORD 17 #define DIAMETER_ATT_REPLY_MESSAGE 18 #define DIAMETER_ATT_CALLBACK_NUMBER 19 #define DIAMETER_ATT_CALLBACK_ID 20 #define DIAMETER_ATT_FRAMED_ROUTE 22 #define DIAMETER_ATT_FRAMED_IPX_NETWORK 23 #define DIAMETER_ATT_STATE 24 #define DIAMETER_ATT_CLASS 25 #define DIAMETER_ATT_SESSION_TIMEOUT 27 #define DIAMETER_ATT_IDLE_TIMEOUT 28 #define DIAMETER_ATT_TERMINATION_ACTION 29 #define DIAMETER_ATT_CALLED_STATION_ID 30 #define DIAMETER_ATT_CALLING_STATION_ID 31 #define DIAMETER_ATT_NAS_IDENTIFIER 32 #define DIAMETER_ATT_PROXY_STATE 33 #define DIAMETER_ATT_LOGIN_LAT_SERVICE 34 #define DIAMETER_ATT_LOGIN_LAT_NODE 35 #define DIAMETER_ATT_LOGIN_LAT_GROUP 36 #define DIAMETER_ATT_FRAMED_APPLETALK_LINK 37 #define DIAMETER_ATT_FRAMED_APPLETALK_NETWORK 38 #define DIAMETER_ATT_FRAMED_APPLETALK_ZONE 39 #define DIAMETER_ATT_CHAP_CHALLENGE 60 #define DIAMETER_ATT_NAS_PORT_TYPE 61 #define DIAMETER_ATT_PORT_LIMIT 62 #define DIAMETER_ATT_LOGIN_LAT_PORT 63 #define DIAMETER_ATT_TUNNEL_TYPE 64 #define DIAMETER_ATT_TUNNEL_MEDIUM_TYPE 65 #define DIAMETER_ATT_ACCT_TUNNEL_CLIENT_ENDPOINT 66 #define DIAMETER_ATT_TUNNEL_SERVER_ENDPOINT 67 #define DIAMETER_ATT_ACCT_TUNNEL_CONNECTION_ID 68 #define DIAMETER_ATT_TUNNEL_PASSWORD 69 #define DIAMETER_ATT_ARAP_PASSWORD 70 #define DIAMETER_ATT_ARAP_FEATURES 71 #define DIAMETER_ATT_ARAP_ZONE_ACCESS 72 #define DIAMETER_ATT_ARAP_SECURITY 73 #define DIAMETER_ATT_ARAP_SECURITY_DATA 74 #define DIAMETER_ATT_PASSWORD_RETRY 75 #define DIAMETER_ATT_PROMPT 76 #define DIAMETER_ATT_CONNECT_INFO 77 #define DIAMETER_ATT_CONFIGURATION_TOKEN 78 #define DIAMETER_ATT_EAP_MESSAGE 79 #define DIAMETER_ATT_SIGNATURE 80 #define DIAMETER_ATT_ACCT_STATUS_TYPE 40 #define DIAMETER_ATT_ACCT_DELAY_TIME 41 #define DIAMETER_ATT_ACCT_INPUT_OCTETS 42 #define DIAMETER_ATT_ACCT_OUTPUT_OCTETS 43 #define DIAMETER_ATT_ACCT_SESSION_ID 44 #define DIAMETER_ATT_ACCT_AUTHENTIC 45 #define DIAMETER_ATT_ACCT_SESSION_TIME 46 #define DIAMETER_ATT_ACCT_INPUT_PACKETS 47 #define DIAMETER_ATT_ACCT_OUTPUT_PACKETS 48 #define DIAMETER_ATT_ACCT_TERMINATE_CAUSE 49 #define DIAMETER_ATT_ACCT_MULTI_SESSION_ID 50 #define DIAMETER_ATT_ACCT_LINK_COUNT 51 #define DIAMETER_ATT_MERIT_ENCAPSULATED 141 #define DIAMETER_ATT_MERIT_REPLY_IF_ACK_MESSAGE 144 #define DIAMETER_ATT_MERIT_LAS_START_TIME 145 #define DIAMETER_ATT_MERIT_LAS_CODE 146 #define DIAMETER_ATT_MERIT_LAS_DURATION 147 #define DIAMETER_ATT_MERIT_LOCAL_DURATION 148 #define DIAMETER_ATT_MERIT_HUNTGROUP_SERVICE 149 #define DIAMETER_ATT_MERIT_PORT_ENTRY 150 #define DIAMETER_ATT_MERIT_PROXY_ACTION 211 #define DIAMETER_ATT_MERIT_TOKEN 213 #define DIAMETER_ATT_MERIT_OWNERSHIP 219 #define DIAMETER_ATT_MERIT_SUBGROUP 220 #define DIAMETER_ATT_MERIT_HUNTGROUP_NAME 221 #define DIAMETER_ATT_MERIT_USER_ID 222 #define DIAMETER_ATT_MERIT_USER_REALM 223 #define DIAMETER_ATT_COMMAND_CODE 256 #define DIAMETER_ATT_EXTENSION_ID 258 #define DIAMETER_ATT_INTEGRITY_CHECK_VALUE 259 #define DIAMETER_ATT_ENCRYPTED_PAYLOAD 260 #define DIAMETER_ATT_NONCE 261 #define DIAMETER_ATT_TIMESTAMP 262 #define DIAMETER_ATT_SESSION_ID 263 #define DIAMETER_ATT_VENDOR_NAME 266 #define DIAMETER_ATT_FIRMWARE_REVISION 267 #define DIAMETER_ATT_RESULT_CODE 268 #define DIAMETER_ATT_DESTINATION_NAI 269 #define DIAMETER_ATT_REBOOT_TYPE 271 #define DIAMETER_ATT_REBOOT_TIME 272 #define DIAMETER_ATT_FAILED_AVP 279 #define DIAMETER_ATT_RECEIVE_WINDOW 277 #define DIAMETER_ATT_REDIRECT_HOST 278 #define DIAMETER_ATT_IP_PORT 281 #define DIAMETER_ATT_ACCOUNTING_RECORD_TYPE 480 #define DIAMETER_ATT_ADIF_RECORD 481 #define DIAMETER_ATT_ACCOUNTING_INTERIM_INTERVAL 482 #define DIAMETER_ATT_ACCOUNTING_DELIVERY_MAX_BATCH 483 #define DIAMETER_ATT_ACCOUNTING_DELIVERY_MAX_DELAY 484 #define DIAMETER_ATT_ACCOUNTING_RECORD_NUMBER 485 #define DIAMETER_ATT_MIP_REGISTRATION_REQUEST 320 #define DIAMETER_ATT_MIP_REGISTRATION_REPLY 321 #define DIAMETER_ATT_MN_FA_CHALLENGE_LENGTH 322 #define DIAMETER_ATT_MN_FA_RESPONSE 323 #define DIAMETER_ATT_MOBILE_NODE_ADDRESS 333 #define DIAMETER_ATT_HOME_AGENT_ADDRESS 334 #define DIAMETER_ATT_PREVIOUS_FA_NAI 335 #define DIAMETER_ATT_MN_AAA_SPI 336 #define DIAMETER_ATT_FOREIGN_HA_AVAIL 337 #define DIAMETER_ATT_MN_TO_FA_KEY 325 #define DIAMETER_ATT_MN_TO_HA_KEY 331 #define DIAMETER_ATT_FA_TO_MN_KEY 326 #define DIAMETER_ATT_FA_TO_HA_KEY 328 #define DIAMETER_ATT_HA_TO_MN_KEY 332 #define DIAMETER_ATT_HA_TO_FA_KEY 329 #define DIAMETER_ATT_FA_MN_PREFERRED_SPI 324 #define DIAMETER_ATT_FA_HA_PREFERRED_SPI 327 #define DIAMETER_ATT_FILTER_RULE 400 #define DIAMETER_ATT_REQUEST_TYPE 401 #define DIAMETER_ATT_EAP_PAYLOAD 402 #define DIAMETER_ATT_CMS_DATA 310 #define DIAMETER_ATT_RES_MGMT_INDEX 573 #define DIAMETER_ATT_RES_MGMT_TOKEN 574 #define DIAMETER_ATT_SOURCE_HOST 600 #define DIAMETER_ATT_DESTINATION_HOST 601 #define DIAMETER_ATT_SOURCE_PORT 602 #define DIAMETER_ATT_DESTINATION_PORT 603 #define DIAMETER_ATT_PROTOCOL 604 #define DIAMETER_ATT_RSVP_SERVICE_TYPE 605 #define DIAMETER_ATT_TOKEN_BUCKET_RATE 606 #define DIAMETER_ATT_TOKEN_BUCKET_SIZE 607 #define DIAMETER_ATT_PEAK_DATA_RATE 608 #define DIAMETER_ATT_MINIMUM_POLICED_UNIT 609 #define DIAMETER_ATT_MAXIMUM_PACKET_SIZE 610 #define DIAMETER_ATT_QOS_RATE 611 #define DIAMETER_ATT_SLACK_TERM 612 #define DIAMETER_ATT_TOS_DS_VALUE 613 #define DIAMETER_ATT_INTERFACE_ADDRESS 614 #define DIAMETER_ATT_QOS_SERVICE_TYPE 615 #define DIAMETER_ATT_VOIP_CALLER 686 #define DIAMETER_ATT_VOIP_CALLEE 687 #define DIAMETER_ATT_VOIP_CHALLENGE 688 #define DIAMETER_ATT_VOIP_RESPONSE 689 #define DIAMETER_ATT_VOIP_SESSION_LENGTH 690 #define DIAMETER_ATT_COMMENT 1024 #define DIAMETER_ATT_XVALUE 1025 #define DIAMETER_ATT_XSTRING 1026 #define DIAMETER_ATT_AUTHENTICATION_TYPE 1027 #define DIAMETER_ATT_PROHIBIT 1028 #define DIAMETER_ATT_USER_CATEGORY 1029 #define DIAMETER_ATT_GROUP_NAME 1030 #define DIAMETER_ATT_ENCRYPTED_PASSWORD 1031 #define DIAMETER_ATT_EXPIRATION 1032 #define DIAMETER_ATT_PASSWORD 1033 #define DIAMETER_ATT_SIMULTANEOUS_USE 1034 #define DIAMETER_ATT_SESSION_LIMIT 1034 #define DIAMETER_ATT_SERVER_NAME 1035 #define DIAMETER_ATT_FRAMED_IP_ADDRESS_POOL_NAME 1036 #define DIAMETER_ATT_SERVICE_CLASS 1037 #define DIAMETER_ATT_DENY_MESSAGE 1038 #define DIAMETER_ATT_SOURCE_SUBNET 1039 #define DIAMETER_ATT_DESTINATION_SUBNET 1040 #define DIAMETER_ATT_MAX_QOS_RATE 1041 #define DIAMETER_ATT_ACCOUNTING_ADIF_RECORD 2000 /* Attribute to String table */ static value_string diameter_attrib_type_vals[] = { {DIAMETER_ATT_USER_NAME, "User-Name"}, {DIAMETER_ATT_USER_PASSWORD, "User-Password"}, {DIAMETER_ATT_CHAP_PASSWORD, "CHAP-Password"}, {DIAMETER_ATT_NAS_IP_ADDRESS, "NAS-IP-Address"}, {DIAMETER_ATT_NAS_PORT, "NAS-Port"}, {DIAMETER_ATT_SERVICE_TYPE, "Service-Type"}, {DIAMETER_ATT_FRAMED_PROTOCOL, "Framed-Protocol"}, {DIAMETER_ATT_FRAMED_IP_ADDRESS, "Framed-IP-Address"}, {DIAMETER_ATT_FRAMED_IP_NETMASK, "Framed-IP-Netmask"}, {DIAMETER_ATT_FRAMED_ROUTING, "Framed-Routing"}, {DIAMETER_ATT_FILTER_ID, "Filter-Id"}, {DIAMETER_ATT_FRAMED_MTU, "Framed-MTU"}, {DIAMETER_ATT_FRAMED_COMPRESSION, "Framed-Compression"}, {DIAMETER_ATT_LOGIN_IP_HOST, "Login-IP-Host"}, {DIAMETER_ATT_LOGIN_SERVICE, "Login-Service"}, {DIAMETER_ATT_LOGIN_TCP_PORT, "Login-TCP-Port"}, {DIAMETER_ATT_OLD_PASSWORD, "Old-Password"}, {DIAMETER_ATT_REPLY_MESSAGE, "Reply-Message"}, {DIAMETER_ATT_CALLBACK_NUMBER, "Callback-Number"}, {DIAMETER_ATT_CALLBACK_ID, "Callback-Id"}, {DIAMETER_ATT_FRAMED_ROUTE, "Framed-Route"}, {DIAMETER_ATT_FRAMED_IPX_NETWORK, "Framed-IPX-Network"}, {DIAMETER_ATT_STATE, "State"}, {DIAMETER_ATT_CLASS, "Class"}, {DIAMETER_ATT_SESSION_TIMEOUT, "Session-Timeout"}, {DIAMETER_ATT_IDLE_TIMEOUT, "Idle-Timeout"}, {DIAMETER_ATT_TERMINATION_ACTION, "Termination-Action"}, {DIAMETER_ATT_CALLED_STATION_ID, "Called-Station-Id"}, {DIAMETER_ATT_CALLING_STATION_ID, "Calling-Station-Id"}, {DIAMETER_ATT_NAS_IDENTIFIER, "NAS-Identifier"}, {DIAMETER_ATT_PROXY_STATE, "Proxy-State"}, {DIAMETER_ATT_LOGIN_LAT_SERVICE, "Login-LAT-Service"}, {DIAMETER_ATT_LOGIN_LAT_NODE, "Login-LAT-Node"}, {DIAMETER_ATT_LOGIN_LAT_GROUP, "Login-LAT-Group"}, {DIAMETER_ATT_FRAMED_APPLETALK_LINK, "Framed-AppleTalk-Link"}, {DIAMETER_ATT_FRAMED_APPLETALK_NETWORK, "Framed-AppleTalk-Network"}, {DIAMETER_ATT_FRAMED_APPLETALK_ZONE, "Framed-AppleTalk-Zone"}, {DIAMETER_ATT_CHAP_CHALLENGE, "CHAP-Challenge"}, {DIAMETER_ATT_NAS_PORT_TYPE, "NAS-Port-Type"}, {DIAMETER_ATT_PORT_LIMIT, "Port-Limit"}, {DIAMETER_ATT_LOGIN_LAT_PORT, "Login-LAT-Port"}, {DIAMETER_ATT_TUNNEL_TYPE, "Tunnel-Type"}, {DIAMETER_ATT_TUNNEL_MEDIUM_TYPE, "Tunnel-Medium-Type"}, {DIAMETER_ATT_ACCT_TUNNEL_CLIENT_ENDPOINT, "Acct-Tunnel-Client-Endpoint"}, {DIAMETER_ATT_TUNNEL_SERVER_ENDPOINT, "Tunnel-Server-Endpoint"}, {DIAMETER_ATT_ACCT_TUNNEL_CONNECTION_ID, "Acct-Tunnel-Connection-ID"}, {DIAMETER_ATT_TUNNEL_PASSWORD, "Tunnel-Password"}, {DIAMETER_ATT_ARAP_PASSWORD, "ARAP-Password"}, {DIAMETER_ATT_ARAP_FEATURES, "ARAP-Features"}, {DIAMETER_ATT_ARAP_ZONE_ACCESS, "ARAP-Zone-Access"}, {DIAMETER_ATT_ARAP_SECURITY, "ARAP-Security"}, {DIAMETER_ATT_ARAP_SECURITY_DATA, "ARAP-Security-Data"}, {DIAMETER_ATT_PASSWORD_RETRY, "Password-Retry"}, {DIAMETER_ATT_PROMPT, "Prompt"}, {DIAMETER_ATT_CONNECT_INFO, "Connect-Info"}, {DIAMETER_ATT_CONFIGURATION_TOKEN, "Configuration-Token"}, {DIAMETER_ATT_EAP_MESSAGE, "EAP-Message"}, {DIAMETER_ATT_SIGNATURE, "Signature"}, {DIAMETER_ATT_ACCT_STATUS_TYPE, "Acct-Status-Type"}, {DIAMETER_ATT_ACCT_DELAY_TIME, "Acct-Delay-Time"}, {DIAMETER_ATT_ACCT_INPUT_OCTETS, "Acct-Input-Octets"}, {DIAMETER_ATT_ACCT_OUTPUT_OCTETS, "Acct-Output-Octets"}, {DIAMETER_ATT_ACCT_SESSION_ID, "Acct-Session-Id"}, {DIAMETER_ATT_ACCT_AUTHENTIC, "Acct-Authentic"}, {DIAMETER_ATT_ACCT_SESSION_TIME, "Acct-Session-Time"}, {DIAMETER_ATT_ACCT_INPUT_PACKETS, "Acct-Input-Packets"}, {DIAMETER_ATT_ACCT_OUTPUT_PACKETS, "Acct-Output-Packets"}, {DIAMETER_ATT_ACCT_TERMINATE_CAUSE, "Acct-Terminate-Cause"}, {DIAMETER_ATT_ACCT_MULTI_SESSION_ID, "Acct-Multi-Session-Id"}, {DIAMETER_ATT_ACCT_LINK_COUNT, "Acct-Link-Count"}, {DIAMETER_ATT_MERIT_ENCAPSULATED, "Merit.Encapsulated"}, {DIAMETER_ATT_MERIT_REPLY_IF_ACK_MESSAGE, "Merit.Reply-If-Ack-Message"}, {DIAMETER_ATT_MERIT_LAS_START_TIME, "Merit.LAS-Start-Time"}, {DIAMETER_ATT_MERIT_LAS_CODE, "Merit.LAS-Code"}, {DIAMETER_ATT_MERIT_LAS_DURATION, "Merit.LAS-Duration"}, {DIAMETER_ATT_MERIT_LOCAL_DURATION, "Merit.Local-Duration"}, {DIAMETER_ATT_MERIT_HUNTGROUP_SERVICE, "Merit.Huntgroup-Service"}, {DIAMETER_ATT_MERIT_PORT_ENTRY, "Merit.Port-Entry"}, {DIAMETER_ATT_MERIT_PROXY_ACTION, "Merit.Proxy-Action"}, {DIAMETER_ATT_MERIT_TOKEN, "Merit.Token"}, {DIAMETER_ATT_MERIT_OWNERSHIP, "Merit.Ownership"}, {DIAMETER_ATT_MERIT_SUBGROUP, "Merit.Subgroup"}, {DIAMETER_ATT_MERIT_HUNTGROUP_NAME, "Merit.Huntgroup-Name"}, {DIAMETER_ATT_MERIT_USER_ID, "Merit.User-Id"}, {DIAMETER_ATT_MERIT_USER_REALM, "Merit.User-Realm"}, {DIAMETER_ATT_COMMAND_CODE, "Command-Code"}, {DIAMETER_ATT_EXTENSION_ID, "Extension-Id"}, {DIAMETER_ATT_INTEGRITY_CHECK_VALUE, "Integrity-Check-Value"}, {DIAMETER_ATT_ENCRYPTED_PAYLOAD, "Encrypted-Payload"}, {DIAMETER_ATT_NONCE, "Nonce"}, {DIAMETER_ATT_TIMESTAMP, "Timestamp"}, {DIAMETER_ATT_SESSION_ID, "Session-Id"}, {DIAMETER_ATT_VENDOR_NAME, "Vendor-Name"}, {DIAMETER_ATT_FIRMWARE_REVISION, "Firmware-Revision"}, {DIAMETER_ATT_RESULT_CODE, "Result-Code"}, {DIAMETER_ATT_DESTINATION_NAI, "Destination-NAI"}, {DIAMETER_ATT_REBOOT_TYPE, "Reboot-Type"}, {DIAMETER_ATT_REBOOT_TIME, "Reboot-Time"}, {DIAMETER_ATT_FAILED_AVP, "Failed-AVP"}, {DIAMETER_ATT_RECEIVE_WINDOW, "Receive-Window"}, {DIAMETER_ATT_REDIRECT_HOST, "Redirect-Host"}, {DIAMETER_ATT_IP_PORT, "IP-Port"}, {DIAMETER_ATT_ACCOUNTING_RECORD_TYPE, "Accounting-Record-Type"}, {DIAMETER_ATT_ADIF_RECORD, "ADIF-Record"}, {DIAMETER_ATT_ACCOUNTING_INTERIM_INTERVAL, "Accounting-Interim-Interval"}, {DIAMETER_ATT_ACCOUNTING_DELIVERY_MAX_BATCH, "Accounting-Delivery-Max-Batch"}, {DIAMETER_ATT_ACCOUNTING_DELIVERY_MAX_DELAY, "Accounting-Delivery-Max-Delay"}, {DIAMETER_ATT_ACCOUNTING_RECORD_NUMBER, "Accounting-Record-Number"}, {DIAMETER_ATT_MIP_REGISTRATION_REQUEST, "MIP-Registration-Request"}, {DIAMETER_ATT_MIP_REGISTRATION_REPLY, "MIP-Registration-Reply"}, {DIAMETER_ATT_MN_FA_CHALLENGE_LENGTH, "MN-FA-Challenge-Length"}, {DIAMETER_ATT_MN_FA_RESPONSE, "MN-FA-Response"}, {DIAMETER_ATT_MOBILE_NODE_ADDRESS, "Mobile-Node-Address"}, {DIAMETER_ATT_HOME_AGENT_ADDRESS, "Home-Agent-Address"}, {DIAMETER_ATT_PREVIOUS_FA_NAI, "Previous-FA-NAI"}, {DIAMETER_ATT_MN_AAA_SPI, "MN-AAA-SPI"}, {DIAMETER_ATT_FOREIGN_HA_AVAIL, "Foreign-HA-Avail"}, {DIAMETER_ATT_MN_TO_FA_KEY, "MN-to-FA-Key"}, {DIAMETER_ATT_MN_TO_HA_KEY, "MN-to-HA-Key"}, {DIAMETER_ATT_FA_TO_MN_KEY, "FA-to-MN-Key"}, {DIAMETER_ATT_FA_TO_HA_KEY, "FA-to-HA-Key"}, {DIAMETER_ATT_HA_TO_MN_KEY, "HA-to-MN-Key"}, {DIAMETER_ATT_HA_TO_FA_KEY, "HA-to-FA-Key"}, {DIAMETER_ATT_FA_MN_PREFERRED_SPI, "FA-MN-Preferred-SPI"}, {DIAMETER_ATT_FA_HA_PREFERRED_SPI, "FA-HA-Preferred-SPI"}, {DIAMETER_ATT_FILTER_RULE, "Filter-Rule"}, {DIAMETER_ATT_REQUEST_TYPE, "Request-Type"}, {DIAMETER_ATT_EAP_PAYLOAD, "EAP-Payload"}, {DIAMETER_ATT_CMS_DATA, "CMS-Data"}, {DIAMETER_ATT_RES_MGMT_INDEX, "Res-Mgmt-Index"}, {DIAMETER_ATT_RES_MGMT_TOKEN, "Res-Mgmt-Token"}, {DIAMETER_ATT_SOURCE_HOST, "Source-Host"}, {DIAMETER_ATT_DESTINATION_HOST, "Destination-Host"}, {DIAMETER_ATT_SOURCE_PORT, "Source-Port"}, {DIAMETER_ATT_DESTINATION_PORT, "Destination-Port"}, {DIAMETER_ATT_PROTOCOL, "Protocol"}, {DIAMETER_ATT_RSVP_SERVICE_TYPE, "RSVP-Service-Type"}, {DIAMETER_ATT_TOKEN_BUCKET_RATE, "Token-Bucket-Rate"}, {DIAMETER_ATT_TOKEN_BUCKET_SIZE, "Token-Bucket-Size"}, {DIAMETER_ATT_PEAK_DATA_RATE, "Peak-Data-Rate"}, {DIAMETER_ATT_MINIMUM_POLICED_UNIT, "Minimum-Policed-Unit"}, {DIAMETER_ATT_MAXIMUM_PACKET_SIZE, "Maximum-Packet-Size"}, {DIAMETER_ATT_QOS_RATE, "QOS-Rate"}, {DIAMETER_ATT_SLACK_TERM, "Slack-Term"}, {DIAMETER_ATT_TOS_DS_VALUE, "TOS-DS-Value"}, {DIAMETER_ATT_INTERFACE_ADDRESS, "Interface-Address"}, {DIAMETER_ATT_QOS_SERVICE_TYPE, "QOS-Service-Type"}, {DIAMETER_ATT_VOIP_CALLER, "Voip-Caller"}, {DIAMETER_ATT_VOIP_CALLEE, "Voip-Callee"}, {DIAMETER_ATT_VOIP_CHALLENGE, "Voip-Challenge"}, {DIAMETER_ATT_VOIP_RESPONSE, "Voip-Response"}, {DIAMETER_ATT_VOIP_SESSION_LENGTH, "Voip-Session-Length"}, {DIAMETER_ATT_COMMENT, "Comment"}, {DIAMETER_ATT_XVALUE, "Xvalue"}, {DIAMETER_ATT_XSTRING, "Xstring"}, {DIAMETER_ATT_AUTHENTICATION_TYPE, "Authentication-Type"}, {DIAMETER_ATT_PROHIBIT, "Prohibit"}, {DIAMETER_ATT_USER_CATEGORY, "User-Category"}, {DIAMETER_ATT_GROUP_NAME, "Group-Name"}, {DIAMETER_ATT_ENCRYPTED_PASSWORD, "Encrypted-Password"}, {DIAMETER_ATT_EXPIRATION, "Expiration"}, {DIAMETER_ATT_PASSWORD, "Password"}, {DIAMETER_ATT_SIMULTANEOUS_USE, "Simultaneous-Use"}, {DIAMETER_ATT_SESSION_LIMIT, "Session-Limit"}, {DIAMETER_ATT_SERVER_NAME, "Server-Name"}, {DIAMETER_ATT_FRAMED_IP_ADDRESS_POOL_NAME, "Framed-IP-Address-Pool-Name"}, {DIAMETER_ATT_SERVICE_CLASS, "Service-Class"}, {DIAMETER_ATT_DENY_MESSAGE, "Deny-Message"}, {DIAMETER_ATT_SOURCE_SUBNET, "Source-Subnet"}, {DIAMETER_ATT_DESTINATION_SUBNET, "Destination-Subnet"}, {DIAMETER_ATT_MAX_QOS_RATE, "Max-QOS-Rate"}, {DIAMETER_ATT_ACCOUNTING_ADIF_RECORD, "Accounting-Adif-Record"}, {0, (char *)NULL} }; /* Attribute to Type Table */ static value_value_pair diameter_printinfo[] = { { DIAMETER_ATT_USER_NAME, DIAMETER_STRING }, { DIAMETER_ATT_USER_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_CHAP_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_NAS_IP_ADDRESS, DIAMETER_ADDRESS }, { DIAMETER_ATT_NAS_PORT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_SERVICE_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FRAMED_PROTOCOL, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FRAMED_IP_ADDRESS, DIAMETER_ADDRESS }, { DIAMETER_ATT_FRAMED_IP_NETMASK, DIAMETER_ADDRESS }, { DIAMETER_ATT_FRAMED_ROUTING, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FILTER_ID, DIAMETER_STRING }, { DIAMETER_ATT_FRAMED_MTU, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FRAMED_COMPRESSION, DIAMETER_INTEGER32 }, { DIAMETER_ATT_LOGIN_IP_HOST, DIAMETER_ADDRESS }, { DIAMETER_ATT_LOGIN_SERVICE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_LOGIN_TCP_PORT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_OLD_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_REPLY_MESSAGE, DIAMETER_STRING }, { DIAMETER_ATT_CALLBACK_NUMBER, DIAMETER_STRING }, { DIAMETER_ATT_CALLBACK_ID, DIAMETER_STRING }, { DIAMETER_ATT_FRAMED_ROUTE, DIAMETER_STRING }, { DIAMETER_ATT_FRAMED_IPX_NETWORK, DIAMETER_INTEGER32 }, { DIAMETER_ATT_STATE, DIAMETER_STRING }, { DIAMETER_ATT_CLASS, DIAMETER_STRING }, { DIAMETER_ATT_SESSION_TIMEOUT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_IDLE_TIMEOUT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_TERMINATION_ACTION, DIAMETER_INTEGER32 }, { DIAMETER_ATT_CALLED_STATION_ID, DIAMETER_STRING }, { DIAMETER_ATT_CALLING_STATION_ID, DIAMETER_STRING }, { DIAMETER_ATT_NAS_IDENTIFIER, DIAMETER_STRING }, { DIAMETER_ATT_PROXY_STATE, DIAMETER_DATA }, { DIAMETER_ATT_LOGIN_LAT_SERVICE, DIAMETER_STRING }, { DIAMETER_ATT_LOGIN_LAT_NODE, DIAMETER_STRING }, { DIAMETER_ATT_LOGIN_LAT_GROUP, DIAMETER_STRING }, { DIAMETER_ATT_FRAMED_APPLETALK_LINK, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FRAMED_APPLETALK_NETWORK, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FRAMED_APPLETALK_ZONE, DIAMETER_STRING }, { DIAMETER_ATT_CHAP_CHALLENGE, DIAMETER_STRING }, { DIAMETER_ATT_NAS_PORT_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_PORT_LIMIT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_LOGIN_LAT_PORT, DIAMETER_STRING }, { DIAMETER_ATT_TUNNEL_TYPE, DIAMETER_STRING }, { DIAMETER_ATT_TUNNEL_MEDIUM_TYPE, DIAMETER_STRING }, { DIAMETER_ATT_ACCT_TUNNEL_CLIENT_ENDPOINT, DIAMETER_STRING }, { DIAMETER_ATT_TUNNEL_SERVER_ENDPOINT, DIAMETER_STRING }, { DIAMETER_ATT_ACCT_TUNNEL_CONNECTION_ID, DIAMETER_STRING }, { DIAMETER_ATT_TUNNEL_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_ARAP_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_ARAP_FEATURES, DIAMETER_STRING }, { DIAMETER_ATT_ARAP_ZONE_ACCESS, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ARAP_SECURITY, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ARAP_SECURITY_DATA, DIAMETER_STRING }, { DIAMETER_ATT_PASSWORD_RETRY, DIAMETER_INTEGER32 }, { DIAMETER_ATT_PROMPT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_CONNECT_INFO, DIAMETER_STRING }, { DIAMETER_ATT_CONFIGURATION_TOKEN, DIAMETER_STRING }, { DIAMETER_ATT_EAP_MESSAGE, DIAMETER_STRING }, { DIAMETER_ATT_SIGNATURE, DIAMETER_STRING }, { DIAMETER_ATT_ACCT_STATUS_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_DELAY_TIME, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_INPUT_OCTETS, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_OUTPUT_OCTETS, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_SESSION_ID, DIAMETER_STRING }, { DIAMETER_ATT_ACCT_AUTHENTIC, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_SESSION_TIME, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_INPUT_PACKETS, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_OUTPUT_PACKETS, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_TERMINATE_CAUSE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCT_MULTI_SESSION_ID, DIAMETER_STRING }, { DIAMETER_ATT_ACCT_LINK_COUNT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MERIT_ENCAPSULATED, DIAMETER_DATA }, { DIAMETER_ATT_MERIT_REPLY_IF_ACK_MESSAGE, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_LAS_START_TIME, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MERIT_LAS_CODE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MERIT_LAS_DURATION, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MERIT_LOCAL_DURATION, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MERIT_HUNTGROUP_SERVICE, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_PORT_ENTRY, DIAMETER_DATA }, { DIAMETER_ATT_MERIT_PROXY_ACTION, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_TOKEN, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_OWNERSHIP, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MERIT_SUBGROUP, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_HUNTGROUP_NAME, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_USER_ID, DIAMETER_STRING }, { DIAMETER_ATT_MERIT_USER_REALM, DIAMETER_STRING }, { DIAMETER_ATT_COMMAND_CODE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_EXTENSION_ID, DIAMETER_INTEGER32 }, { DIAMETER_ATT_INTEGRITY_CHECK_VALUE, DIAMETER_COMPLEX }, { DIAMETER_ATT_ENCRYPTED_PAYLOAD, DIAMETER_DATA }, { DIAMETER_ATT_NONCE, DIAMETER_DATA }, { DIAMETER_ATT_TIMESTAMP, DIAMETER_TIME }, { DIAMETER_ATT_SESSION_ID, DIAMETER_DATA }, { DIAMETER_ATT_VENDOR_NAME, DIAMETER_STRING }, { DIAMETER_ATT_FIRMWARE_REVISION, DIAMETER_INTEGER32 }, { DIAMETER_ATT_RESULT_CODE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_DESTINATION_NAI, DIAMETER_STRING }, { DIAMETER_ATT_REBOOT_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_REBOOT_TIME, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FAILED_AVP, DIAMETER_DATA }, { DIAMETER_ATT_RECEIVE_WINDOW, DIAMETER_INTEGER32 }, { DIAMETER_ATT_REDIRECT_HOST, DIAMETER_ADDRESS }, { DIAMETER_ATT_IP_PORT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCOUNTING_RECORD_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ADIF_RECORD, DIAMETER_DATA }, { DIAMETER_ATT_ACCOUNTING_INTERIM_INTERVAL, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCOUNTING_DELIVERY_MAX_BATCH, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCOUNTING_DELIVERY_MAX_DELAY, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCOUNTING_RECORD_NUMBER, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MIP_REGISTRATION_REQUEST, DIAMETER_DATA }, { DIAMETER_ATT_MIP_REGISTRATION_REPLY, DIAMETER_DATA }, { DIAMETER_ATT_MN_FA_CHALLENGE_LENGTH, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MN_FA_RESPONSE, DIAMETER_DATA }, { DIAMETER_ATT_MOBILE_NODE_ADDRESS, DIAMETER_ADDRESS }, { DIAMETER_ATT_HOME_AGENT_ADDRESS, DIAMETER_ADDRESS }, { DIAMETER_ATT_PREVIOUS_FA_NAI, DIAMETER_STRING }, { DIAMETER_ATT_MN_AAA_SPI, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FOREIGN_HA_AVAIL, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MN_TO_FA_KEY, DIAMETER_DATA }, { DIAMETER_ATT_MN_TO_HA_KEY, DIAMETER_DATA }, { DIAMETER_ATT_FA_TO_MN_KEY, DIAMETER_DATA }, { DIAMETER_ATT_FA_TO_HA_KEY, DIAMETER_DATA }, { DIAMETER_ATT_HA_TO_MN_KEY, DIAMETER_DATA }, { DIAMETER_ATT_HA_TO_FA_KEY, DIAMETER_DATA }, { DIAMETER_ATT_FA_MN_PREFERRED_SPI, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FA_HA_PREFERRED_SPI, DIAMETER_INTEGER32 }, { DIAMETER_ATT_FILTER_RULE, DIAMETER_STRING }, { DIAMETER_ATT_REQUEST_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_EAP_PAYLOAD, DIAMETER_DATA }, { DIAMETER_ATT_CMS_DATA, DIAMETER_DATA }, { DIAMETER_ATT_RES_MGMT_INDEX, DIAMETER_INTEGER32 }, { DIAMETER_ATT_RES_MGMT_TOKEN, DIAMETER_DATA }, { DIAMETER_ATT_SOURCE_HOST, DIAMETER_ADDRESS }, { DIAMETER_ATT_DESTINATION_HOST, DIAMETER_ADDRESS }, { DIAMETER_ATT_SOURCE_PORT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_DESTINATION_PORT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_PROTOCOL, DIAMETER_INTEGER32 }, { DIAMETER_ATT_RSVP_SERVICE_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_TOKEN_BUCKET_RATE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_TOKEN_BUCKET_SIZE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_PEAK_DATA_RATE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MINIMUM_POLICED_UNIT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_MAXIMUM_PACKET_SIZE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_QOS_RATE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_SLACK_TERM, DIAMETER_INTEGER32 }, { DIAMETER_ATT_TOS_DS_VALUE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_INTERFACE_ADDRESS, DIAMETER_ADDRESS }, { DIAMETER_ATT_QOS_SERVICE_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_VOIP_CALLER, DIAMETER_STRING }, { DIAMETER_ATT_VOIP_CALLEE, DIAMETER_STRING }, { DIAMETER_ATT_VOIP_CHALLENGE, DIAMETER_DATA }, { DIAMETER_ATT_VOIP_RESPONSE, DIAMETER_DATA }, { DIAMETER_ATT_VOIP_SESSION_LENGTH, DIAMETER_INTEGER32 }, { DIAMETER_ATT_COMMENT, DIAMETER_STRING }, { DIAMETER_ATT_XVALUE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_XSTRING, DIAMETER_STRING }, { DIAMETER_ATT_AUTHENTICATION_TYPE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_PROHIBIT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_USER_CATEGORY, DIAMETER_STRING }, { DIAMETER_ATT_GROUP_NAME, DIAMETER_STRING }, { DIAMETER_ATT_ENCRYPTED_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_EXPIRATION, DIAMETER_TIME }, { DIAMETER_ATT_PASSWORD, DIAMETER_STRING }, { DIAMETER_ATT_SIMULTANEOUS_USE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_SESSION_LIMIT, DIAMETER_INTEGER32 }, { DIAMETER_ATT_SERVER_NAME, DIAMETER_STRING }, { DIAMETER_ATT_FRAMED_IP_ADDRESS_POOL_NAME, DIAMETER_STRING }, { DIAMETER_ATT_SERVICE_CLASS, DIAMETER_STRING }, { DIAMETER_ATT_DENY_MESSAGE, DIAMETER_STRING }, { DIAMETER_ATT_SOURCE_SUBNET, DIAMETER_ADDRESS }, { DIAMETER_ATT_DESTINATION_SUBNET, DIAMETER_ADDRESS }, { DIAMETER_ATT_MAX_QOS_RATE, DIAMETER_INTEGER32 }, { DIAMETER_ATT_ACCOUNTING_ADIF_RECORD, DIAMETER_DATA }, {0, 0} }; /* Values Structures */ static value_string diameter_qos_service_type_vals[]={ {3, "Labels"}, {1, "RSVP"}, {2, "TOS"}, {0, (char *)NULL} }; static value_string diameter_service_type_vals[]={ {5, "Outbound"}, {7, "NAS-Prompt"}, {3, "Callback-Login"}, {6, "Administrative"}, {1, "Login"}, {4, "Callback-Framed"}, {9, "Callback-NAS-Prompt"}, {8, "Authenticate-Only"}, {2, "Framed"}, {0, (char *)NULL} }; static value_string diameter_prohibit_vals[]={ {0, "Dumb"}, {2, "SLIP"}, {1, "PPP"}, {3, "Auth-Only"}, {255, "All"}, {0, (char *)NULL} }; static value_string diameter_prompt_vals[]={ {0, "No-Echo"}, {1, "Echo"}, {0, (char *)NULL} }; static value_string diameter_source_port_vals[]={ {23, "ftp"}, {0, "*"}, {21, "telnet"}, {0, (char *)NULL} }; static value_string diameter_nas_port_type_vals[]={ {6, "PIAFS"}, {9, "X75"}, {7, "HDLC-Clear-Channel"}, {5, "Virtual"}, {2, "ISDN-Sync"}, {1, "Sync"}, {0, "Async"}, {4, "ISDN-Async-v110"}, {3, "ISDN-Async-v120"}, {8, "X25"}, {0, (char *)NULL} }; static value_string diameter_interface_address_vals[]={ {0, "Any-Interface"}, {0, (char *)NULL} }; static value_string diameter_framed_routing_vals[]={ {0, "None"}, {1, "Broadcast"}, {3, "Broadcast-Listen"}, {2, "Listen"}, {0, (char *)NULL} }; static value_string diameter_command_code_vals[]={ {257, "Device-Reboot-Ind"}, {258, "Device-Watchdog-Ind"}, {259, "Message-Reject-Ind"}, {260, "AA-Mobile-Node-Request"}, {261, "AA-Mobile-Node-Answer"}, {262, "Home-Agent-MIP-Request"}, {263, "Home-Agent-MIP-Answer"}, {264, "Mobile-Node-Terminate-Ind"}, {265, "AA-Request"}, {266, "AA-Answer"}, {267, "AA-Challenge-Ind"}, {268, "DIAMETER-EAP-Request"}, {269, "DIAMETER-EAP-Answer"}, {270, "DIAMETER-EAP-Ind"}, {271, "Accounting-Request"}, {272, "Accounting-Answer"}, {273, "Accounting-Poll"}, {483, "Accounting-Start-Answer"}, {511, "Ping-Req"}, {484, "Accounting-Interim-Req"}, {480, "Voip-Stop-Req"}, {512, "Ping-Answer"}, {513, "EAP-Req"}, {485, "Accounting-Interim-Answer"}, {481, "Voip-Stop-Answer"}, {478, "Voip-Start-Req"}, {486, "Accounting-Stop-Req"}, {514, "EAP-Answer"}, {515, "Domain-Discovery-Request"}, {479, "Voip-Start-Answer"}, {516, "Domain-Discovery-Answer"}, {487, "Accounting-Stop-Answer"}, {482, "Accounting-Start-Req"}, {0, (char *)NULL} }; static value_string diameter_framed_ip_address_vals[]={ {-1, "Assigned"}, {0, (char *)NULL} }; static value_string diameter_arap_zone_access_vals[]={ {4, "Exclusive-Filter"}, {2, "Inclusive-Filter"}, {1, "Default-Zone"}, {0, (char *)NULL} }; static value_string diameter_acct_authentic_vals[]={ {1, "RADIUS"}, {0, "None"}, {2, "Local"}, {0, (char *)NULL} }; static value_string diameter_framed_protocol_vals[]={ {1, "PPP"}, {260, "COMB"}, {5, "Xylogics"}, {257, "EURAW"}, {3, "ARA"}, {261, "FR"}, {2, "SLIP"}, {258, "EUUI"}, {4, "Gandalf"}, {256, "MPP"}, {255, "Ascend-ARA"}, {259, "X25"}, {0, (char *)NULL} }; static value_string diameter_framed_compression_vals[]={ {0, "None"}, {1, "Van-Jacobson-TCP-IP"}, {2, "IPX-Header-Compression"}, {0, (char *)NULL} }; static value_string diameter_authentication_type_vals[]={ {10, "File"}, {22, "LDAP"}, {21, "Slow"}, {20, "Blackhole"}, {2, "AFS-Krb"}, {6, "KCHAP"}, {4, "RADIUS"}, {13, "ACE"}, {9, "Local"}, {7, "TACACS"}, {0, "None"}, {19, "Deny"}, {23, "Unassigned"}, {8, "Realm"}, {1, "Passwd"}, {5, "MNET"}, {3, "MIT-Krb"}, {17, "Oracle"}, {1, "Unix-PW"}, {16, "ODBC"}, {11, "TACPLUS"}, {15, "SKEY"}, {12, "ARA-DES"}, {14, "DEFENDER"}, {18, "Allow"}, {0, (char *)NULL} }; static 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"}, {0, (char *)NULL} }; static value_string diameter_protocol_vals[]={ {65535, "Any"}, {17, "UDP"}, {1, "ICMP"}, {0, "IP"}, {6, "TCP"}, {0, (char *)NULL} }; static value_string diameter_destination_port_vals[]={ {10000, "vic-rsvp"}, {23, "ftp"}, {0, "*"}, {21, "telnet"}, {0, (char *)NULL} }; static value_string diameter_termination_action_vals[]={ {0, "Default"}, {1, "RADIUS-Request"}, {0, (char *)NULL} }; static value_string diameter_extension_id_vals[]={ {1, "NASREQ"}, {2, "Strong-Security"}, {4, "Mobile-IP"}, {5, "Accounting"}, {7, "VOIP"}, {8, "EAP"}, {555, "Test"}, {556, "AccountingV3"}, {0, (char *)NULL} }; static value_string diameter_merit_las_code_vals[]={ {0, "LAS-Normal"}, {1, "LAS-Reject"}, {2, "LAS-Cancel"}, {3, "LAS-Noconfirm"}, {4, "LAS-Overtime"}, {5, "LAS-Unknown"}, {6, "LAS-Notoken"}, {7, "LAS-Notlocal"}, {8, "LAS-Suspend"}, {9, "LAS-Failed"}, {10, "LAS-Authorized"}, {11, "LAS-NASreboot"}, {12, "LAS-Remote"}, {13, "LAS-Duplicate"}, {14, "LAS-Collision"}, {15, "LAS-Stop"}, {0, (char *)NULL} }; static value_string diameter_login_service_vals[]={ {0, "Telnet"}, {1, "Rlogin"}, {2, "TCP-Clear"}, {3, "PortMaster"}, {4, "LAT"}, {5, "X25-PAD"}, {6, "X25-T3POS"}, {0, (char *)NULL} }; static value_string diameter_rsvp_service_type_vals[]={ {1, "RSVP-Controlled-Load"}, {2, "RSVP-Guaranteed"}, {0, (char *)NULL} }; static value_string diameter_reboot_type_vals[]={ {1, "Reboot-Imminent"}, {2, "Reboot-Complete"}, {0, (char *)NULL} }; static 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"}, {0, (char *)NULL} }; #endif /* _PACKET_DIAMETER_H */ -------------------------------end packet-diameter.h-------------------
- Follow-Ups:
- Re: [ethereal-dev] Diameter (using new prefs.c)
- From: David Frascone
- Re: [ethereal-dev] Diameter (using new prefs.c)
- References:
- [ethereal-dev] Diameter (using new prefs.c)
- From: David Frascone
- Re: [ethereal-dev] Diameter (using new prefs.c)
- From: Gilbert Ramirez
- [ethereal-dev] Diameter (using new prefs.c)
- Prev by Date: Re: [ethereal-dev] Bits 'n' pieces
- Next by Date: Re: [ethereal-dev] Dissector question: variable length structures
- Previous by thread: Re: [ethereal-dev] Diameter (using new prefs.c)
- Next by thread: Re: [ethereal-dev] Diameter (using new prefs.c)
- Index(es):