+
+ case '$':
+ /* Guys we can't handle with one of the usual cases */
+ switch (tag) {
+
+ case TAG_NETBIOS_NODE:
+ tag = *bp++;
+ --size;
+ fputs(tok2str(nbo2str, NULL, tag), stdout);
+ break;
+
+ case TAG_OPT_OVERLOAD:
+ tag = *bp++;
+ --size;
+ fputs(tok2str(oo2str, NULL, tag), stdout);
+ break;
+
+ case TAG_CLIENT_FQDN:
+ if (*bp++)
+ printf("[svrreg]");
+ if (*bp)
+ printf("%u/%u/", *bp, *(bp+1));
+ bp += 2;
+ putchar('"');
+ (void)fn_printn(bp, size - 3, NULL);
+ putchar('"');
+ bp += size - 3;
+ size = 0;
+ break;
+
+ case TAG_CLIENT_ID:
+ { int type = *bp++;
+ size--;
+ if (type == 0) {
+ putchar('"');
+ (void)fn_printn(bp, size, NULL);
+ putchar('"');
+ bp += size;
+ size = 0;
+ break;
+ } else {
+ printf("[%s]", tok2str(arp2str, "type-%d", type));
+ }
+ while (size > 0) {
+ if (!first)
+ putchar(':');
+ printf("%02x", *bp);
+ ++bp;
+ --size;
+ first = 0;
+ }
+ break;
+ }
+
+ default:
+ printf("[unknown special tag %u, size %u]",
+ tag, size);
+ bp += size;
+ size = 0;
+ break;
+ }
+ break;