dn_comp()
Compress an Internet domain name
Synopsis:
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
int dn_comp( const char * exp_dn,
u_char * comp_dn,
int length,
u_char ** dnptrs,
u_char ** lastdnptr );
Arguments:
- exp_dn
- The Internet domain name you want to compress.
- comp_dn
- A buffer where the function can store the compressed name.
- length
- The size of the array that comp_dn points to.
- dnptrs
- NULL, or an array of pointers to previously compressed names in the current message; see below.
- lastdnptr
- NULL, or the limit of the array specified by dnptrs.
Library:
libsocket
Use the -l socket option to qcc to link against this library.
Description:
The dn_comp() routine is a low-level routine used by res_query() to compress an Internet domain name. This routine compresses the domain name exp_dn and stores it in comp_dn.
The compression uses an array of pointers, dnptrs, to previously compressed names in the current message. The first pointer points to the beginning of the message and the list ends with NULL. The limit to the array is specified by lastdnptr. As a side effect, dn_comp() updates the list of pointers for labels inserted into the message as the name is compressed. If dnptrs is NULL, names aren't compressed. If lastdnptr is NULL, the list of labels isn't updated.
Based on:
RFC 974, RFC 1032, RFC 1033, RFC 1034, RFC 1035
Returns:
The size of the compressed domain name, in bytes, or -1 if an error occurs.
Classification:
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | Yes |
| Thread | Yes |
