aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/catapult_dct2000.c
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2007-07-13 15:51:34 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2007-07-13 15:51:34 +0000
commitc4ebb075e7479a315c38fab9b46e6f2f127df854 (patch)
tree877e6f223aff1a8fe0509322bcbe66eeeae4d07f /wiretap/catapult_dct2000.c
parent222ed488b049cb84bcc16d4445097eaa2c07298b (diff)
Worked out properly the silly way aal header is encoded!
svn path=/trunk/; revision=22300
Diffstat (limited to 'wiretap/catapult_dct2000.c')
-rw-r--r--wiretap/catapult_dct2000.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/wiretap/catapult_dct2000.c b/wiretap/catapult_dct2000.c
index c090804c87..460df6b418 100644
--- a/wiretap/catapult_dct2000.c
+++ b/wiretap/catapult_dct2000.c
@@ -1022,19 +1022,17 @@ gboolean parse_line(gint line_length, gint *seconds, gint *useconds,
/* Read consecutive hex chars into atm header buffer */
for (;
- (isalnum((int)linebuff[n]) &&
+ ((linebuff[n] >= '0') && (linebuff[n] <= '?') &&
(n < line_length) &&
(header_chars_seen < AAL_HEADER_CHARS));
n++, header_chars_seen++)
{
aal_header_chars[header_chars_seen] = linebuff[n];
- }
-
- /* Sometimes see strange encoding of cid in last (non-digit) character */
- if (header_chars_seen == (AAL_HEADER_CHARS-1))
- {
- aal_header_chars[AAL_HEADER_CHARS-1] = linebuff[n];
- header_chars_seen++;
+ /* Next 6 characters after '9' are mapped to a->f */
+ if (!(int)isdigit(linebuff[n]))
+ {
+ aal_header_chars[header_chars_seen] = 'a' + (linebuff[n] - '9') -1;
+ }
}
if (header_chars_seen != AAL_HEADER_CHARS || n >= line_length)