Ethereal-dev: [Ethereal-dev] Diameter over SCTP finished
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, 23 Feb 2001 13:12:26 -0600
Couple of features added (prints out command type based on the flags), dictionary file (packet-diameter-defs.h) brought more up-to-date. Attached are the diffs, and some captured SCTP traffic to dissect. (Traffic was captured with snoop)
? dump1
? tcpdump.out
? sctp.out
? %1
? ethereal.out
? testone.out
? diameter.dump2
? diameter.dump3
? diff.out
? diameter.dump4
? diameter.dump5
? diameter.tcpdump.dump
? diameter.badicv
? diffs.out
Index: packet-diameter-defs.h
===================================================================
RCS file: /cvsroot/ethereal/packet-diameter-defs.h,v
retrieving revision 1.2
diff -u -r1.2 packet-diameter-defs.h
--- packet-diameter-defs.h 2001/02/19 23:14:01 1.2
+++ packet-diameter-defs.h 2001/02/23 19:08:49
@@ -3,7 +3,7 @@
* WARNING: This file was automatically generated by dict2h.pl. Modifications
* will be erased by next invocation of dictionary parser.
*
- * Generated: Fri Feb 9 14:03:07 2001
+ * Generated: Fri Feb 23 13:04:15 2001
*/
#ifndef _PACKET_DIAMETER_DEFS_H
@@ -117,9 +117,9 @@
#define DIAMETER_ATT_PROXY_ADDRESS 289
#define DIAMETER_ATT_PROXY_INFO 284
#define DIAMETER_ATT_PROXY_STATE 33
-#define DIAMETER_ATT_REDIRECT_HOST 292
#define DIAMETER_ATT_REDIRECT_HOST_ADDRESS 278
#define DIAMETER_ATT_REDIRECT_HOST_PORT 277
+#define DIAMETER_ATT_REDIRECT_HOST 292
#define DIAMETER_ATT_RESULT_CODE 268
#define DIAMETER_ATT_ROUTE_RECORD 282
#define DIAMETER_ATT_ROUTING_REALM 283
@@ -141,24 +141,24 @@
#define DIAMETER_ATT_ACCOUNTING_SESSION_TIME 46
#define DIAMETER_ATT_MIP_REG_REQUEST 320
#define DIAMETER_ATT_MIP_REG_REPLY 321
+#define DIAMETER_ATT_MIP_MN_AAA_SPI 341
+#define DIAMETER_ATT_MIP_AUTH_INPUT_DATA_LENGTH 338
+#define DIAMETER_ATT_MIP_AUTHENTICATOR_LENGTH 339
+#define DIAMETER_ATT_MIP_AUTHENTICATOR_OFFSET 340
#define DIAMETER_ATT_MIP_MN_AAA_AUTH 322
#define DIAMETER_ATT_MIP_MOBILE_NODE_ADDRESS 333
#define DIAMETER_ATT_MIP_HOME_AGENT_ADDRESS 334
#define DIAMETER_ATT_MIP_PREVIOUS_FA_NAI 335
#define DIAMETER_ATT_MIP_PREVIOUS_FA_ADDR 336
-#define DIAMETER_ATT_MIP_MN_AAA_SPI 341
-#define DIAMETER_ATT_MIP_AUTH_INPUT_DATA_LENGTH 338
-#define DIAMETER_ATT_MIP_AUTHENTICATOR_LENGTH 339
-#define DIAMETER_ATT_MIP_AUTHENTICATOR_OFFSET 340
#define DIAMETER_ATT_MIP_FEATURE_VECTOR 337
+#define DIAMETER_ATT_MIP_PEER_SPI 342
+#define DIAMETER_ATT_MIP_SESSION_KEY 343
#define DIAMETER_ATT_MIP_MN_TO_FA_KEY 325
#define DIAMETER_ATT_MIP_MN_TO_HA_KEY 331
#define DIAMETER_ATT_MIP_FA_TO_MN_KEY 326
#define DIAMETER_ATT_MIP_FA_TO_HA_KEY 328
#define DIAMETER_ATT_MIP_HA_TO_FA_KEY 329
#define DIAMETER_ATT_MIP_HA_TO_MN_KEY 332
-#define DIAMETER_ATT_MIP_PEER_SPI 999
-#define DIAMETER_ATT_MIP_SESSION_KEY 999
#define DIAMETER_ATT_MIP_FA_MN_PREFERRED_SPI 324
#define DIAMETER_ATT_MIP_FA_HA_PREFERRED_SPI 327
#define DIAMETER_ATT_FILTER_RULE 400
@@ -208,7 +208,7 @@
#define DIAMETER_ATT_SOURCE_SUBNET 1039
#define DIAMETER_ATT_DESTINATION_SUBNET 1040
#define DIAMETER_ATT_MAX_QOS_RATE 1041
-#define DIAMETER_ATT_EXAMPLE_AVP 99999
+#define DIAMETER_ATT_EXAMPLE_AVP 999999
/* Attribute to String table */
@@ -321,9 +321,9 @@
{DIAMETER_ATT_PROXY_ADDRESS, "Proxy-Address"},
{DIAMETER_ATT_PROXY_INFO, "Proxy-Info"},
{DIAMETER_ATT_PROXY_STATE, "Proxy-State"},
- {DIAMETER_ATT_REDIRECT_HOST, "Redirect-Host"},
{DIAMETER_ATT_REDIRECT_HOST_ADDRESS, "Redirect-Host-Address"},
{DIAMETER_ATT_REDIRECT_HOST_PORT, "Redirect-Host-Port"},
+ {DIAMETER_ATT_REDIRECT_HOST, "Redirect-Host"},
{DIAMETER_ATT_RESULT_CODE, "Result-Code"},
{DIAMETER_ATT_ROUTE_RECORD, "Route-Record"},
{DIAMETER_ATT_ROUTING_REALM, "Routing-Realm"},
@@ -345,24 +345,24 @@
{DIAMETER_ATT_ACCOUNTING_SESSION_TIME, "Accounting-Session-Time"},
{DIAMETER_ATT_MIP_REG_REQUEST, "MIP-Reg-Request"},
{DIAMETER_ATT_MIP_REG_REPLY, "MIP-Reg-Reply"},
+ {DIAMETER_ATT_MIP_MN_AAA_SPI, "MIP-MN-AAA-SPI"},
+ {DIAMETER_ATT_MIP_AUTH_INPUT_DATA_LENGTH, "MIP-Auth-Input-Data-Length"},
+ {DIAMETER_ATT_MIP_AUTHENTICATOR_LENGTH, "MIP-Authenticator-Length"},
+ {DIAMETER_ATT_MIP_AUTHENTICATOR_OFFSET, "MIP-Authenticator-Offset"},
{DIAMETER_ATT_MIP_MN_AAA_AUTH, "MIP-MN-AAA-Auth"},
{DIAMETER_ATT_MIP_MOBILE_NODE_ADDRESS, "MIP-Mobile-Node-Address"},
{DIAMETER_ATT_MIP_HOME_AGENT_ADDRESS, "MIP-Home-Agent-Address"},
{DIAMETER_ATT_MIP_PREVIOUS_FA_NAI, "MIP-Previous-FA-NAI"},
{DIAMETER_ATT_MIP_PREVIOUS_FA_ADDR, "MIP-Previous-FA-Addr"},
- {DIAMETER_ATT_MIP_MN_AAA_SPI, "MIP-MN-AAA-SPI"},
- {DIAMETER_ATT_MIP_AUTH_INPUT_DATA_LENGTH, "MIP-Auth-Input-Data-Length"},
- {DIAMETER_ATT_MIP_AUTHENTICATOR_LENGTH, "MIP-Authenticator-Length"},
- {DIAMETER_ATT_MIP_AUTHENTICATOR_OFFSET, "MIP-Authenticator-Offset"},
{DIAMETER_ATT_MIP_FEATURE_VECTOR, "MIP-Feature-Vector"},
+ {DIAMETER_ATT_MIP_PEER_SPI, "MIP-Peer-SPI"},
+ {DIAMETER_ATT_MIP_SESSION_KEY, "MIP-Session-Key"},
{DIAMETER_ATT_MIP_MN_TO_FA_KEY, "MIP-MN-to-FA-Key"},
{DIAMETER_ATT_MIP_MN_TO_HA_KEY, "MIP-MN-to-HA-Key"},
{DIAMETER_ATT_MIP_FA_TO_MN_KEY, "MIP-FA-to-MN-Key"},
{DIAMETER_ATT_MIP_FA_TO_HA_KEY, "MIP-FA-to-HA-Key"},
{DIAMETER_ATT_MIP_HA_TO_FA_KEY, "MIP-HA-to-FA-Key"},
{DIAMETER_ATT_MIP_HA_TO_MN_KEY, "MIP-HA-to-MN-Key"},
- {DIAMETER_ATT_MIP_PEER_SPI, "MIP-Peer-SPI"},
- {DIAMETER_ATT_MIP_SESSION_KEY, "MIP-Session-Key"},
{DIAMETER_ATT_MIP_FA_MN_PREFERRED_SPI, "MIP-FA-MN-Preferred-SPI"},
{DIAMETER_ATT_MIP_FA_HA_PREFERRED_SPI, "MIP-FA-HA-Preferred-SPI"},
{DIAMETER_ATT_FILTER_RULE, "Filter-Rule"},
@@ -526,16 +526,16 @@
{ DIAMETER_ATT_PLAINTEXT_DATA_LENGTH, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_PROXY_ADDRESS, DIAMETER_ADDRESS },
{ DIAMETER_ATT_PROXY_INFO, DIAMETER_DATA },
- { DIAMETER_ATT_PROXY_STATE, DIAMETER_DATA },
- { DIAMETER_ATT_REDIRECT_HOST, DIAMETER_DATA },
+ { DIAMETER_ATT_PROXY_STATE, DIAMETER_GROUPED },
{ DIAMETER_ATT_REDIRECT_HOST_ADDRESS, DIAMETER_ADDRESS },
{ DIAMETER_ATT_REDIRECT_HOST_PORT, DIAMETER_INTEGER32 },
+ { DIAMETER_ATT_REDIRECT_HOST, DIAMETER_GROUPED },
{ DIAMETER_ATT_RESULT_CODE, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_ROUTE_RECORD, DIAMETER_STRING },
{ DIAMETER_ATT_ROUTING_REALM, DIAMETER_STRING },
{ DIAMETER_ATT_SESSION_ID, DIAMETER_DATA },
{ DIAMETER_ATT_SESSION_TIMEOUT, DIAMETER_INTEGER32 },
- { DIAMETER_ATT_TIMESTAMP, DIAMETER_TIME },
+ { DIAMETER_ATT_TIMESTAMP, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_USER_NAME, DIAMETER_STRING },
{ DIAMETER_ATT_VENDOR_ID, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_ACCOUNTING_AUTHENTICATION_TYPE, DIAMETER_INTEGER32 },
@@ -551,23 +551,24 @@
{ DIAMETER_ATT_ACCOUNTING_SESSION_TIME, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_MIP_REG_REQUEST, DIAMETER_DATA },
{ DIAMETER_ATT_MIP_REG_REPLY, DIAMETER_DATA },
- { DIAMETER_ATT_MIP_MOBILE_NODE_ADDRESS, DIAMETER_ADDRESS },
- { DIAMETER_ATT_MIP_HOME_AGENT_ADDRESS, DIAMETER_ADDRESS },
- { DIAMETER_ATT_MIP_PREVIOUS_FA_NAI, DIAMETER_STRING },
- { DIAMETER_ATT_MIP_PREVIOUS_FA_ADDR, DIAMETER_ADDRESS },
{ DIAMETER_ATT_MIP_MN_AAA_SPI, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_MIP_AUTH_INPUT_DATA_LENGTH, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_MIP_AUTHENTICATOR_LENGTH, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_MIP_AUTHENTICATOR_OFFSET, DIAMETER_INTEGER32 },
+ { DIAMETER_ATT_MIP_MN_AAA_AUTH, DIAMETER_GROUPED },
+ { DIAMETER_ATT_MIP_MOBILE_NODE_ADDRESS, DIAMETER_ADDRESS },
+ { DIAMETER_ATT_MIP_HOME_AGENT_ADDRESS, DIAMETER_ADDRESS },
+ { DIAMETER_ATT_MIP_PREVIOUS_FA_NAI, DIAMETER_STRING },
+ { DIAMETER_ATT_MIP_PREVIOUS_FA_ADDR, DIAMETER_ADDRESS },
{ DIAMETER_ATT_MIP_FEATURE_VECTOR, DIAMETER_INTEGER32 },
- { DIAMETER_ATT_MIP_MN_TO_FA_KEY, DIAMETER_DATA },
- { DIAMETER_ATT_MIP_MN_TO_HA_KEY, DIAMETER_DATA },
- { DIAMETER_ATT_MIP_FA_TO_MN_KEY, DIAMETER_DATA },
- { DIAMETER_ATT_MIP_FA_TO_HA_KEY, DIAMETER_DATA },
- { DIAMETER_ATT_MIP_HA_TO_FA_KEY, DIAMETER_DATA },
- { DIAMETER_ATT_MIP_HA_TO_MN_KEY, DIAMETER_DATA },
{ DIAMETER_ATT_MIP_PEER_SPI, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_MIP_SESSION_KEY, DIAMETER_DATA },
+ { DIAMETER_ATT_MIP_MN_TO_FA_KEY, DIAMETER_DATA },
+ { DIAMETER_ATT_MIP_MN_TO_HA_KEY, DIAMETER_DATA },
+ { DIAMETER_ATT_MIP_FA_TO_MN_KEY, DIAMETER_GROUPED },
+ { DIAMETER_ATT_MIP_FA_TO_HA_KEY, DIAMETER_GROUPED },
+ { DIAMETER_ATT_MIP_HA_TO_FA_KEY, DIAMETER_GROUPED },
+ { DIAMETER_ATT_MIP_HA_TO_MN_KEY, DIAMETER_GROUPED },
{ DIAMETER_ATT_MIP_FA_MN_PREFERRED_SPI, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_MIP_FA_HA_PREFERRED_SPI, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_FILTER_RULE, DIAMETER_STRING },
@@ -597,7 +598,7 @@
{ DIAMETER_ATT_VOIP_CHALLENGE, DIAMETER_DATA },
{ DIAMETER_ATT_VOIP_RESPONSE, DIAMETER_DATA },
{ DIAMETER_ATT_VOIP_SESSION_LENGTH, DIAMETER_INTEGER32 },
- { DIAMETER_ATT_SUN_PING_TIMESTAMP, DIAMETER_TIME },
+ { DIAMETER_ATT_SUN_PING_TIMESTAMP, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_COMMENT, DIAMETER_STRING },
{ DIAMETER_ATT_XVALUE, DIAMETER_INTEGER32 },
{ DIAMETER_ATT_XSTRING, DIAMETER_STRING },
Index: packet-diameter.c
===================================================================
RCS file: /cvsroot/ethereal/packet-diameter.c,v
retrieving revision 1.19
diff -u -r1.19 packet-diameter.c
--- packet-diameter.c 2001/02/20 08:10:14 1.19
+++ packet-diameter.c 2001/02/23 19:08:51
@@ -71,12 +71,8 @@
#define NTP_TIME_DIFF (2208988800UL)
-#undef SCTP_DISSECTORS_ENABLED
-
#define TCP_PORT_DIAMETER 1812
-#ifdef SCTP_DISSECTORS_ENABLED
#define SCTP_PORT_DIAMETER 1812
-#endif
static int proto_diameter = -1;
static int hf_diameter_length = -1;
@@ -112,9 +108,7 @@
static char gbl_diameterString[200];
static int gbl_diameterTcpPort=TCP_PORT_DIAMETER;
-#ifdef SCTP_DISSECTORS_ENABLED
static int gbl_diameterSctpPort=SCTP_PORT_DIAMETER;
-#endif
typedef struct _e_diameterhdr {
guint8 reserved;
@@ -153,6 +147,7 @@
static gchar *rd_value_to_str(e_avphdr *avph,const u_char *input, int length);
static void dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static guint32 match_numval(guint32 val, const value_value_pair *vs);
+static gchar *DetermineMessageType(char flagsVer);
/* Code to actually dissect the packets */
@@ -208,8 +203,9 @@
if (check_col(pinfo->fd, COL_INFO)) {
col_add_fstr(pinfo->fd, COL_INFO,
- "%s%s(%d) vendor=%d (id=%d) EIR=%d%d%d",
+ "%s%s: %s(%d) vendor=%d (id=%d) EIR=%d%d%d",
(BadPacket)?"***** Bad Packet!: ":"",
+ DetermineMessageType(dh.flagsVer),
codestrval, dh.commandCode, dh.vendorId,
dh.identifier,
(dh.flagsVer & DIAM_FLAGS_E)?1:0,
@@ -235,11 +231,12 @@
hf_diameter_flags,
tvb, offset, 1,
dh.flagsVer,
- "Packet flags: 0x%02x E:%d I:%d R:%d",
+ "Packet flags: 0x%02x E:%d I:%d R:%d (%s)",
(dh.flagsVer&0xf8)>>3,
(dh.flagsVer & DIAM_FLAGS_E)?1:0,
(dh.flagsVer & DIAM_FLAGS_I)?1:0,
- (dh.flagsVer & DIAM_FLAGS_R)?1:0);
+ (dh.flagsVer & DIAM_FLAGS_R)?1:0,
+ DetermineMessageType(dh.flagsVer));
/* Version */
proto_tree_add_uint(diameter_tree,
@@ -699,30 +696,49 @@
return buffer;
} /* rd value to str */
+static gchar *
+DetermineMessageType(char flagsVer)
+{
+ /* Get rid of version */
+ flagsVer = flagsVer >> 3;
+
+ /* Mask out reserved bits */
+ flagsVer = flagsVer & 0x7;
+
+ switch (flagsVer) {
+ case 0x0: /* Indication */
+ return "Indication";
+ case 0x4: /* Request */
+ return "Request";
+ case 0x1: /* Answer */
+ return "Answer";
+ case 0x6: /* Query */
+ return "Query";
+ case 0x3: /* Reply */
+ return "Reply";
+ default:
+ return "Illegal Command Type";
+ }
+} /* DetermineMessageType */
+
void
proto_reg_handoff_diameter(void)
{
static int Initialized=FALSE;
static int TcpPort=0;
-#ifdef SCTP_DISSECTORS_ENABLED
static int SctpPort=0;
-#endif
+
if (Initialized) {
dissector_delete("tcp.port", TcpPort, dissect_diameter);
-#ifdef SCTP_DISSECTORS_ENABLED
- dissector_delete("sctp.srcport", SctpPort, dissect_diameter);
- dissector_delete("sctp.destport", SctpPort, dissect_diameter);
-#endif
+ dissector_delete("sctp.port", SctpPort, dissect_diameter);
} else {
Initialized=TRUE;
}
/* set port for future deletes */
TcpPort=gbl_diameterTcpPort;
-#ifdef SCTP_DISSECTORS_ENABLED
SctpPort=gbl_diameterSctpPort;
-#endif
strcpy(gbl_diameterString, "Diameter Protocol");
@@ -730,12 +746,8 @@
gbl_diameterTcpPort); */
dissector_add("tcp.port", gbl_diameterTcpPort, dissect_diameter,
proto_diameter);
-#ifdef SCTP_DISSECTORS_ENABLED
- dissector_add("sctp.srcport", gbl_diameterSctpPort,
- dissect_diameter, proto_diameter);
- dissector_add("sctp.destport", gbl_diameterSctpPort,
+ dissector_add("sctp.port", gbl_diameterSctpPort,
dissect_diameter, proto_diameter);
-#endif
}
/* registration with the filtering engine */
@@ -835,11 +847,9 @@
"Set the TCP port for DIAMETER messages",
10,
&gbl_diameterTcpPort);
-#ifdef SCTP_DISSECTORS_ENABLED
prefs_register_uint_preference(diameter_module, "sctp.port",
"DIAMETER SCTP Port",
"Set the SCTP port for DIAMETER messages",
10,
&gbl_diameterSctpPort);
-#endif
}
Attachment:
sctp.out
Description: Binary data
- Follow-Ups:
- Re: [Ethereal-dev] Diameter over SCTP finished
- From: Guy Harris
- Re: [Ethereal-dev] Diameter over SCTP finished
- Prev by Date: Re: [Ethereal-dev] CVS
- Next by Date: Re: [Ethereal-dev] Diameter over SCTP finished
- Previous by thread: Re: [Ethereal-dev] dissector handoff boolean
- Next by thread: Re: [Ethereal-dev] Diameter over SCTP finished
- Index(es):





