File: dns_dnreverse.c

package info (click to toggle)
rbldnsd 0.996b
  • links: PTS
  • area: main
  • in suites: squeeze, wheezy
  • size: 472 kB
  • ctags: 792
  • sloc: ansic: 5,654; sh: 380; makefile: 180; awk: 33
file content (30 lines) | stat: -rw-r--r-- 795 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* $Id: dns_dnreverse.c,v 1.4 2003-05-04 21:43:15 mjt Exp $
 * dns_dnreverse() produces reverse of a domain name
 */

#include <string.h>
#include "dns.h"

/* reverse labels of the dn, return dns_dnlen() */

unsigned
dns_dnreverse(register const unsigned char *dn,
              register unsigned char *rdn,
              register unsigned len) {
  register unsigned c;	/* length of a current label */

  if (!len)		/* if no length given, compute it */
    len = dns_dnlen(dn);

  rdn += len;		/* start from the very end */
  *--rdn = '\0';	/* and null-terminate the dn */

  while((c = *dn) != 0) {	/* process each label */
    ++c;		/* include length byte */
    rdn -= c; /* this is where this label will be in rdn - back it's len */
    memcpy(rdn, dn, c);
    dn += c;
  }

  return len;
}