Ethereal-dev: [Ethereal-dev] Patches for packet-diameter.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, 20 Oct 2000 12:31:55 -0500
These patches changes the default TCP port, and brings the dissector up to
spec with the most recent diameter-api document.
Specifically, the commandCode and vendorId being in the header.
One last TBD thing, is to parse the ICV in a subtree, but I'm waiting until
the aaa-wg decides if complex data types are going to be removed in favor of
nested groups.
----------------------cvs diff output------------------------------
Index: packet-diameter.c
===================================================================
RCS file: /cvsroot/ethereal/packet-diameter.c,v
retrieving revision 1.5
diff -u -r1.5 packet-diameter.c
--- packet-diameter.c 2000/08/13 14:08:08 1.5
+++ packet-diameter.c 2000/10/20 18:00:50
@@ -70,9 +70,9 @@
#undef SCTP_DISSECTORS_ENABLED
#define UDP_PORT_DIAMETER 2645
-#define TCP_PORT_DIAMETER 2645
+#define TCP_PORT_DIAMETER 1812
#ifdef SCTP_DISSECTORS_ENABLED
-#define SCTP_PORT_DIAMETER 2645
+#define SCTP_PORT_DIAMETER 1812
#endif
/* #define UDP_PORT_DIAMETER 1812 -- Compiling this in breaks RADIUS */
@@ -481,9 +481,6 @@
avph.avp_length - dataOffset, valstr);
}
offset=offset+avph.avp_length + fixAmt;
- if (avph.avp_length == 0) {
- break;
- }
}
}
@@ -522,6 +519,8 @@
dh.u.new.nextReceived = ntohs(dh.u.new.nextReceived);
nextSend = dh.u.new.nextSend;
nextReceived = dh.u.new.nextReceived;
+ } else {
+ hdrlength -= 4;
}
commandCode = dh.u.new.commandCode;
} else {
@@ -530,6 +529,8 @@
dh.u.old.nextReceived = ntohs(dh.u.old.nextReceived);
nextSend = dh.u.old.nextSend;
nextReceived = dh.u.old.nextReceived;
+ } else {
+ hdrlength -= 4;
}
memcpy(&commandCode, &pd[offset+COMMAND_CODE_OFFSET], 4);
commandCode = ntohl(commandCode);
@@ -542,15 +543,26 @@
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);
+ if (DIAM_FLAGS_W & dh.flagsVer) {
+ 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);
+ }
} else {
- sprintf(buffer,"%s(%d) (id=%d, l=%d, s=%d, r=%d)",
- codestrval,commandCode, dh.identifier, dh.pktLength,
- nextSend, nextReceived);
- }
+ if (DIAM_FLAGS_A & dh.flagsVer) {
+ sprintf(buffer,"ACK (id=%d, l=%d)",
+ dh.identifier, dh.pktLength);
+ } else {
+ sprintf(buffer,"%s(%d) (id=%d, l=%d)",
+ codestrval,commandCode,
+ dh.identifier, dh.pktLength);
+ }
+ }
col_add_fstr(fd,COL_INFO,buffer);
}
@@ -745,8 +757,10 @@
strcpy(gbl_diameterString, "Diameter Protocol");
- old_dissector_add("udp.port", gbl_diameterUdpPort, dissect_diameter);
+ /* g_warning ("Diameter: Adding tcp dissector to port %d",
+ gbl_diameterTcpPort); */
old_dissector_add("tcp.port", gbl_diameterTcpPort, dissect_diameter);
+ old_dissector_add("udp.port", gbl_diameterUdpPort, dissect_diameter);
#ifdef SCTP_DISSECTORS_ENABLED
old_dissector_add("sctp.srcport", gbl_diameterSctpPort, dissect_diameter);
old_dissector_add("sctp.destport", gbl_diameterSctpPort, dissect_diameter);
-------------------------------------------------------------------
- Follow-Ups:
- Re: [Ethereal-dev] Patches for packet-diameter.c
- From: Guy Harris
- Re: [Ethereal-dev] Patches for packet-diameter.c
- Prev by Date: Re: [Ethereal-dev] Remote online packet capture?
- Next by Date: Re: [Ethereal-dev] Remote online packet capture?
- Previous by thread: [Ethereal-dev] Package problem
- Next by thread: Re: [Ethereal-dev] Patches for packet-diameter.c
- Index(es):





