1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _SMBSRV_DYNDNS_H 27 #define _SMBSRV_DYNDNS_H 28 29 #include <smbsrv/libsmbns.h> 30 31 /* 32 * Header section format: 33 * 34 * The header contains the following fields: 35 * 36 * 1 1 1 1 1 1 37 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 38 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 39 * | ID | 40 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 41 * |QR| Opcode |AA|TC|RD|RA| Z | RCODE | 42 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 43 * | QDCOUNT | 44 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 45 * | ANCOUNT | 46 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 47 * | NSCOUNT | 48 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 49 * | ARCOUNT | 50 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 51 * 52 * where: 53 * 54 * ID A 16 bit identifier assigned by the program that 55 * generates any kind of query. This identifier is copied 56 * the corresponding reply and can be used by the requester 57 * to match up replies to outstanding queries. 58 * 59 * QR A one bit field that specifies whether this message is a 60 * query (0), or a response (1). 61 * 62 * OPCODE A four bit field that specifies kind of query in this 63 * message. This value is set by the originator of a query 64 * and copied into the response. The values are: 65 * 66 * 0 a standard query (QUERY) 67 * 68 * 1 an inverse query (IQUERY) 69 * 70 * 2 a server status request (STATUS) 71 * 72 * 3-15 reserved for future use 73 * 74 * AA Authoritative Answer - this bit is valid in responses, 75 * and specifies that the responding name server is an 76 * authority for the domain name in question section. 77 * 78 * Note that the contents of the answer section may have 79 * multiple owner names because of aliases. The AA bit 80 * 81 * corresponds to the name which matches the query name, or 82 * the first owner name in the answer section. 83 * 84 * TC TrunCation - specifies that this message was truncated 85 * due to length greater than that permitted on the 86 * transmission channel. 87 * 88 * RD Recursion Desired - this bit may be set in a query and 89 * is copied into the response. If RD is set, it directs 90 * the name server to pursue the query recursively. 91 * Recursive query support is optional. 92 * 93 * RA Recursion Available - this be is set or cleared in a 94 * response, and denotes whether recursive query support is 95 * available in the name server. 96 * 97 * Z Reserved for future use. Must be zero in all queries 98 * and responses. 99 * 100 * RCODE Response code - this 4 bit field is set as part of 101 * responses. The values have the following 102 * interpretation: 103 * 104 * 0 No error condition 105 * 106 * 1 Format error - The name server was 107 * unable to interpret the query. 108 * 109 * 2 Server failure - The name server was 110 * unable to process this query due to a 111 * problem with the name server. 112 * 113 * 3 Name Error - Meaningful only for 114 * responses from an authoritative name 115 * server, this code signifies that the 116 * domain name referenced in the query does 117 * not exist. 118 * 119 * 4 Not Implemented - The name server does 120 * not support the requested kind of query. 121 * 122 * 5 Refused - The name server refuses to 123 * perform the specified operation for 124 * policy reasons. For example, a name 125 * server may not wish to provide the 126 * information to the particular requester, 127 * or a name server may not wish to perform 128 * a particular operation (e.g., zone 129 * 130 * transfer) for particular data. 131 * 132 * 6-15 Reserved for future use. 133 * 134 * QDCOUNT an unsigned 16 bit integer specifying the number of 135 * entries in the question section. 136 * 137 * ANCOUNT an unsigned 16 bit integer specifying the number of 138 * resource records in the answer section. 139 * 140 * NSCOUNT an unsigned 16 bit integer specifying the number of name 141 * server resource records in the authority records 142 * section. 143 * 144 * ARCOUNT an unsigned 16 bit integer specifying the number of 145 * resource records in the additional records section. 146 */ 147 148 #include <sys/types.h> 149 150 #ifdef __cplusplus 151 extern "C" { 152 #endif 153 154 /* Other definitions: */ 155 #define REQ_QUERY 1 /* DNS query request */ 156 #define REQ_UPDATE 0 /* DNS update request */ 157 #define UPDATE_FORW 1 /* Update forward lookup zone */ 158 #define UPDATE_REV 0 /* Update reverse lookup zone */ 159 #define UPDATE_ADD 1 /* Update add request */ 160 #define UPDATE_DEL 0 /* Update remove request */ 161 #define MODE_GSS_API 3 /* Key negotiation mode */ 162 163 /* Max buffer size for send and receive buffer */ 164 #define MAX_BUF_SIZE 2000 165 #define MAX_RETRIES 3 /* Max number of send retries if no response */ 166 #define TSIG_SIGNED 1 /* TSIG contains signed data */ 167 #define TSIG_UNSIGNED 0 /* TSIG does not conain signed data */ 168 #define DNS_CHECK 1 /* Check DNS for entry */ 169 #define DNS_NOCHECK 0 /* Don't check DNS for entry */ 170 #define MAX_TCP_SIZE 2000 /* max tcp DNS message size */ 171 172 /* Delete 1 entry */ 173 #define DEL_ONE 1 174 /* Delete all entries of the same resource name */ 175 #define DEL_ALL 0 176 177 #define DNSF_RECUR_SUPP 0x80 /* Server can do recursive queries */ 178 #define DNSF_RECUR_QRY 0x100 /* Query is recursive */ 179 180 #define BUFLEN_TCP(x, y) (MAX_TCP_SIZE-(x-y)) 181 #define BUFLEN_UDP(x, y) (NS_PACKETSZ-(x-y)) 182 183 /* 184 * DDNS_TTL is the time to live in DNS caches. Note that this 185 * does not affect the entry in the authoritative DNS database. 186 */ 187 #define DDNS_TTL 1200 188 189 #ifdef __cplusplus 190 } 191 #endif 192 193 #endif /* _SMBSRV_DYNDNS_H */ 194