home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / n / bind / bind-4.001 / bind-4~ / bind-4.9.3-BETA9 / contrib / host / rrec.h < prev    next >
Text File  |  1994-06-20  |  6KB  |  213 lines

  1. /*
  2. ** Resource record structures.
  3. **
  4. **    These define the various resource record fields after decoding
  5. **    from the internal representation in the nameserver answer buffer.
  6. **
  7. **    @(#)rrec.h              e07@nikhef.nl (Eric Wassenaar) 940620
  8. */
  9.  
  10. #define MAXSTRING 256        /* maximum size of single encoded string */
  11. #define MAXSTRLEN MAXDLEN    /* maximum size of total  encoded string */
  12.  
  13. typedef struct rr_data {
  14.     u_char databuf[MAXDLEN];    /* generic data buffer */
  15. } rr_data_t;
  16.  
  17. /*
  18. ** Record-specific data fields.
  19. */
  20.  
  21. typedef struct a_data {
  22.     ipaddr_t address;        /* internet address of host */
  23. } a_data_t;
  24.  
  25. typedef struct ns_data {
  26.     char nameserver[MAXDNAME+1];    /* name of domain nameserver */
  27. } ns_data_t;
  28.  
  29. typedef struct md_data {
  30.     char destination[MAXDNAME+1];    /* name of mail destination */
  31. } md_data_t;
  32.  
  33. typedef struct mf_data {
  34.     char forwarder[MAXDNAME+1];    /* name of mail forwarder */
  35. } mf_data_t;
  36.  
  37. typedef struct cname_data {
  38.     char canonical[MAXDNAME+1];    /* canonical domain name */
  39. } cname_data_t;
  40.  
  41. typedef struct soa_data {
  42.     char primary[MAXDNAME+1];    /* name of primary nameserver */
  43.     char hostmaster[MAXDNAME+1];    /* name of hostmaster mailbox */
  44.     int serial;            /* serial (version) number */
  45.     int refresh;            /* refresh time in seconds */
  46.     int retry;            /* refresh retry time in seconds */
  47.     int expire;            /* expiration time in seconds */
  48.     int defttl;            /* default time_to_live */
  49. } soa_data_t;
  50.  
  51. typedef struct mb_data {
  52.     char mailhost[MAXDNAME+1];    /* name of mailbox host */
  53. } mb_data_t;
  54.  
  55. typedef struct mg_data {
  56.     char memberbox[MAXDNAME+1];    /* mailbox of mail group member */
  57. } mg_data_t;
  58.  
  59. typedef struct mr_data {
  60.     char aliasbox[MAXDNAME+1];    /* mailbox of mail alias */
  61. } mr_data_t;
  62.  
  63. typedef struct null_data {
  64.     u_char nullbuf[MAXDLEN];    /* generic data buffer */
  65. } null_data_t;
  66.  
  67. typedef struct wks_data {
  68.     ipaddr_t servaddress;        /* internet address of host */
  69.     int protocol;            /* protocol number */
  70.     u_char services[64];        /* ports 0-255 */
  71. } wks_data_t;
  72.  
  73. typedef struct ptr_data {
  74.     char domain[MAXDNAME+1];    /* domain name of pointer */
  75. } ptr_data_t;
  76.  
  77. typedef struct hinfo_data {
  78.     char cputype[MAXSTRING+1];    /* machine description */
  79.     char ostype[MAXSTRING+1];    /* operating system type */
  80. } hinfo_data_t;
  81.  
  82. typedef struct minfo_data {
  83.     char ownerbox[MAXDNAME+1];    /* name of owner mailbox */
  84.     char errorbox[MAXDNAME+1];    /* name of error mailbox */
  85. } minfo_data_t;
  86.  
  87. typedef struct mx_data {
  88.     int preference;            /* preference value */
  89.     char mxhost[MAXDNAME+1];    /* name of mx host */
  90. } mx_data_t;
  91.  
  92. typedef struct txt_data {
  93.     char text[MAXSTRLEN+1];        /* concatenated substrings */
  94. } txt_data_t;
  95.  
  96. typedef struct rp_data {
  97.     char mailbox[MAXDNAME+1];    /* name of person mailbox */
  98.     char txtinfo[MAXDNAME+1];    /* name of description txt record */
  99. } rp_data_t;
  100.  
  101. typedef struct afsdb_data {
  102.     int afstype;            /* type of afs server */
  103.     char afshost[MAXDNAME+1];    /* name of afs server */
  104. } afsdb_data_t;
  105.  
  106. typedef struct x25_data {
  107.     char psdnaddress[MAXSTRING+1];    /* x25 psdn address */
  108. } x25_data_t;
  109.  
  110. typedef struct isdn_data {
  111.     char isdnaddress[MAXSTRING+1];    /* isdn address */
  112.     char isdnsubaddr[MAXSTRING+1];    /* isdn subaddress */
  113. } isdn_data_t;
  114.  
  115. typedef struct rt_data {
  116.     int routepref;            /* preference value */
  117.     char routehost[MAXDNAME+1];    /* name of route-through host */
  118. } rt_data_t;
  119.  
  120. typedef struct nsap_data {
  121.     u_char nsapaddr[MAXDLEN];    /* binary nsap address */
  122. } nsap_data_t;
  123.  
  124. typedef struct nsapptr_data {
  125.     char nsapdomain[MAXDNAME+1];    /* domain name of nsap pointer */
  126. } nsapptr_data_t;
  127.  
  128. typedef struct uinfo_data {
  129.     char userinfo[MAXSTRLEN+1];    /* user description */
  130. } uinfo_data_t;
  131.  
  132. typedef struct uid_data {
  133.     int userid;            /* user uid */
  134. } uid_data_t;
  135.  
  136. typedef struct gid_data {
  137.     int groupid;            /* user gid */
  138. } gid_data_t;
  139.  
  140. typedef struct unspec_data {
  141.     u_char unspecbuf[MAXDLEN];    /* generic data buffer */
  142. } unspec_data_t;
  143.  
  144. /*
  145. ** Generic resource record description.
  146. */
  147.  
  148. typedef struct rrecord {
  149.     char    name[MAXDNAME+1];    /* resource record name */
  150.     int    type;            /* resource record type */
  151.     int    class;            /* resource record class */
  152.     int    ttl;            /* time_to_live value */
  153.     union {
  154.         rr_data_t    data_rr;
  155.         a_data_t    data_a;
  156.         ns_data_t    data_ns;
  157.         md_data_t    data_md;
  158.         mf_data_t    data_mf;
  159.         cname_data_t    data_cname;
  160.         soa_data_t    data_soa;
  161.         mb_data_t    data_mb;
  162.         mg_data_t    data_mg;
  163.         mr_data_t    data_mr;
  164.         null_data_t    data_null;
  165.         wks_data_t    data_wks;
  166.         ptr_data_t    data_ptr;
  167.         hinfo_data_t    data_hinfo;
  168.         minfo_data_t    data_minfo;
  169.         mx_data_t    data_mx;
  170.         txt_data_t    data_txt;
  171.         rp_data_t    data_rp;
  172.         afsdb_data_t    data_afsdb;
  173.         x25_data_t    data_x25;
  174.         isdn_data_t    data_isdn;
  175.         rt_data_t    data_rt;
  176.         nsap_data_t    data_nsap;
  177.         nsapptr_data_t    data_nsapptr;
  178.         uinfo_data_t    data_uinfo;
  179.         uid_data_t    data_uid;
  180.         gid_data_t    data_gid;
  181.         unspec_data_t    data_unspec;
  182.     } data;
  183. } rrecord_t;
  184.  
  185. #define t_rr        data.data_rr
  186. #define t_a        data.data_a
  187. #define t_ns        data.data_ns
  188. #define t_md        data.data_md
  189. #define t_mf        data.data_mf
  190. #define t_cname        data.data_cname
  191. #define t_soa        data.data_soa
  192. #define t_mb        data.data_mb
  193. #define t_mg        data.data_mg
  194. #define t_mr        data.data_mr
  195. #define t_null        data.data_null
  196. #define t_wks        data.data_wks
  197. #define t_ptr        data.data_ptr
  198. #define t_hinfo        data.data_hinfo
  199. #define t_minfo        data.data_minfo
  200. #define t_mx        data.data_mx
  201. #define t_txt        data.data_txt
  202. #define t_rp        data.data_rp
  203. #define t_afsdb        data.data_afsdb
  204. #define t_x25        data.data_x25
  205. #define t_isdn        data.data_isdn
  206. #define t_rt        data.data_rt
  207. #define t_nsap        data.data_nsap
  208. #define t_nsapptr    data.data_nsapptr
  209. #define t_uinfo        data.data_uinfo
  210. #define t_uid        data.data_uid
  211. #define t_gid        data.data_gid
  212. #define t_unspec    data.data_unspec
  213.