diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2007-07-13 15:51:34 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2007-07-13 15:51:34 +0000 |
commit | c4ebb075e7479a315c38fab9b46e6f2f127df854 (patch) | |
tree | 877e6f223aff1a8fe0509322bcbe66eeeae4d07f /wiretap/catapult_dct2000.c | |
parent | 222ed488b049cb84bcc16d4445097eaa2c07298b (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.c | 14 |
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) |