Chapter Contents

Previous

Next
dn_comp

dn_comp



Translates Domain Names to Compressed Format

Portability: UNIX compatible


SYNOPSIS
DESCRIPTION
RETURN VALUE
PORTABILITY
IMPLEMENTATION
RELATED FUNCTIONS


SYNOPSIS

#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>

int dn_comp(char *exp_dn, char *comp_dn, int length, char **dnptrs,
           char **lastdnptr);


DESCRIPTION

dn_comp is part of the resolver, which is a set of routines that provides a programming interface for communicating with Internet name servers. dn_comp translates domain names in conventional character string format to the compressed format used by name servers. The compression process merges common suffixes among the names included in a name server query.

exp_dn is an EBCDIC string that contains a DNS name, such as a host name. dn_comp stores the equivalent compressed string in the buffer pointed to by comp_dn . length is the size of this buffer in bytes. dn_comp also maintains a list of compressed name elements. This list is used as a reference to eliminate common suffixes during a series of calls to dn_comp when multiple names are stored in the same buffer.

dnptrs points to the beginning of an array of pointers that points to the list of compressed name elements. The calling program allocates this array by using a convenient size, such as 10 elements.

lastdnptr points to the last element of the array. dnptrs[0] should point to the beginning of the message. Initially, dnptrs[1] should be NULL .

In the interests of greater portability, the SAS/C version of dn_comp performs EBCDIC-to-ASCII translation of exp_dn before beginning its compression process. If dnptr is NULL , the domain name is not compressed. Alternatively, if lastdnptr is NULL , the list of labels is not updated.

For information on the UNIX programming interface and Internet name servers, refer to "The Domain Name System" and "The Socket Interface" in Internetworking with TCP/IP, Volume I.


RETURN VALUE

If dn_comp is successful, it returns the size of the compressed domain name. Otherwise, it returns a -1 and sets errno to indicate the type of error.


PORTABILITY

dn_comp is available on most versions of the UNIX operating system.


IMPLEMENTATION

The SAS/C version of dn_comp is a direct port from the BSD UNIX socket library. The EBCDIC-to-ASCII translation feature is the only change.


RELATED FUNCTIONS

dn_expand , res_mkquery


Chapter Contents

Previous

Next

Top of Page

Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.