#include <string.h>

int __dns_parse(const unsigned char* r,
                int rlen,
                int (*callback)(void*, int, const void*, int, const void*),
                void* ctx) {
  int qdcount, ancount;
  const unsigned char* p;
  int len;

  if (rlen < 12)
    return -1;
  if ((r[3] & 15))
    return 0;
  p = r + 12;
  qdcount = r[4] * 256 + r[5];
  ancount = r[6] * 256 + r[7];
  if (qdcount + ancount > 64)
    return -1;
  while (qdcount--) {
    while (p - r < rlen && *p - 1U < 127)
      p++;
    if (*p > 193 || (*p == 193 && p[1] > 254) || p > r + rlen - 6)
      return -1;
    p += 5 + !!*p;
  }
  while (ancount--) {
    while (p - r < rlen && *p - 1U < 127)
      p++;
    if (*p > 193 || (*p == 193 && p[1] > 254) || p > r + rlen - 6)
      return -1;
    p += 1 + !!*p;
    len = p[8] * 256 + p[9];
    if (p + len > r + rlen)
      return -1;
    if (callback(ctx, p[1], p + 10, len, r) < 0)
      return -1;
    p += 10 + len;
  }
  return 0;
}
