+static int
+pdu_decode_7bit_str(char *dest, const unsigned char *data, int data_len, int bit_offset)
+{
+ char *orig_dest = dest;
+ int i;
+
+ for (i = 0; i < data_len; i++) {
+ int pos = (i + bit_offset) % 7;
+
+ if (pos == 0) {
+ *(dest++) = data[i] & 0x7f;
+ } else {
+ if (i)
+ *(dest++) = (data[i - 1] >> (7 + 1 - pos)) |
+ ((data[i] << pos) & 0x7f);
+
+ if (pos == 6)
+ *(dest++) = (data[i] >> 1) & 0x7f;
+ }
+ }
+ *dest = 0;
+ return dest - orig_dest;
+}
+
+static void decode_7bit_field(char *name, const unsigned char *data, int data_len)