1 /*------------------------------------------------------------------------------ 2 * 3 * Copyright (c) 2011-2021, EURid vzw. All rights reserved. 4 * The YADIFA TM software product is provided under the BSD 3-clause license: 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * * Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * * Neither the name of EURid nor the names of its contributors may be 16 * used to endorse or promote products derived from this software 17 * without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 * 31 *------------------------------------------------------------------------------ 32 * 33 */ 34 35 /** @defgroup 36 * @ingroup dnscore 37 * @brief 38 * 39 * 40 * 41 * @{ 42 * 43 *----------------------------------------------------------------------------*/ 44 45 #define HAS_DYNAMIC_PROVISIONING 1 46 47 #if HAS_DYNAMIC_PROVISIONING 48 #define TYPE_ZONE_TYPE_NAME "ZONETYPE" 49 #define TYPE_ZONE_FILE_NAME "ZONEFILE" 50 #define TYPE_ZONE_NOTIFY_NAME "ZONENOTIFY" 51 #define TYPE_ZONE_MASTER_NAME "MASTER" 52 #define TYPE_ZONE_SLAVES_NAME "SLAVES" 53 #define TYPE_ZONE_DNSSEC_NAME "DNSSEC" 54 #define TYPE_ZONE_COMMENT "COMMENT" 55 #define TYPE_SIGINTV_NAME "SIGINTV" 56 #define TYPE_SIGREGN_NAME "SIGREGN" 57 #define TYPE_SIGJITR_NAME "SIGJITR" 58 #define TYPE_NTFRC_NAME "NTFRC" 59 #define TYPE_NTFRP_NAME "NTFRP" 60 #define TYPE_NTFRPI_NAME "NTFRPI" 61 #define TYPE_NTFAUTO_NAME "NTFAUTO" 62 63 #define OPCODE_CTRL (9<<OPCODE_SHIFT) 64 65 /* 66 ACL is a chain of accept/reject triggers on IPv4 IPv6 TSIGs (...) 67 valid values are usually any, none, allow ip/mask(4/6), reject ip/mask(4/6), allow tsig 68 reject tsig does not makes sense 69 70 0 : any + 80 none 71 1 : v4 !v4 72 2 : v6 !v6 73 3 : tsig nonsense 74 75 or 76 77 [0..7] any none v4 !v4 v6 !v6 tsig 78 79 It can only be a single record because order is important 80 */ 81 82 #define TYPE_ZONE_ALLOW_QUERY "ACLQUERY" // QUERYCL ? 83 // .. 84 85 #endif 86 87 // until all code check the two defines ... 88 89 #define TYPE_CTRL_SHUTDOWN_NAME "SHUTDOWN" 90 #define TYPE_CTRL_ZONERELOAD_NAME "RELOAD" 91 #define TYPE_CTRL_LOGREOPEN_NAME "LOGREOPEN" /// @todo 20140528 gve -- needs to be removed (twice declared) 92 #define TYPE_CTRL_SRVQUERYLOG_NAME "QUERYLOG" 93 #define TYPE_CTRL_SRVLOGLEVEL_NAME "LOGLEVEL" 94 95 96 #define TYPE_CTRL_ZONEFREEZE_NAME "FREEZE" 97 #define TYPE_CTRL_ZONEUNFREEZE_NAME "UNFREEZE" 98 #define TYPE_CTRL_ZONEFREEZEALL_NAME "FREEZEALL" // NI 99 #define TYPE_CTRL_ZONEUNFREEZEALL_NAME "UNFREEZEALL" // NI 100 #define TYPE_CTRL_ZONESYNC_NAME "SYNC" 101 102 #define TYPE_CTRL_SRVLOGREOPEN_NAME "LOGREOPEN" /// @todo 20150217 gve -- needs to be removed (twice declared) 103 #define TYPE_CTRL_SRVCFGRELOAD_NAME "CFGRELOAD" 104 105 #define TYPE_CTRL_ZONENOTIFY_NAME "NOTIFY" 106 107 108 109 #define TYPE_CTRL_CFGLOAD_NAME "CFGLOAD" 110 111 112 #define TYPE_CTRL_ZONECFGRELOAD_NAME "ZONECFGRELOAD" 113 #define TYPE_CTRL_ZONECFGRELOADALL_NAME "ZONECFGRELOADALL" 114 /* 115 * CTRL UPDATE Configuration, Zone 116 */ 117 118 #define ZT_HINT 0 /**< zone file: hint */ 119 #define ZT_MASTER 1 /**< zone file: master */ 120 #define ZT_SLAVE 2 /**< zone file: slave */ 121 #define ZT_STUB 3 /**< zone file: stub */ 122 123 /* 124 125 0 1 2 3 4 5 6 7 126 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 127 | TYPE | 8 bits type 128 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 129 */ 130 131 #define TYPE_ZONE_TYPE NU16(0x2a01) 132 133 /* 134 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 135 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 136 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 137 / PATH / utf-8 text, on windows '/' are converted to '\' 138 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 139 */ 140 141 #define TYPE_ZONE_FILE NU16(0x2a02) 142 143 #define REMOTE_SERVER_FLAGS_IP_MASK 0x0f 144 #define REMOTE_SERVER_FLAGS_PORT_MASK 0x10 145 #define REMOTE_SERVER_FLAGS_KEY_MASK 0x20 146 147 /* 148 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 149 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 150 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 151 / IPVER | PORT | KEY | / 4 bits + 1 bit + 1 bit ( 8 bits ) 152 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 153 / IP / variable size (4 or 16) 154 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 155 / PORT / 156 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 157 / TSIG KEYNAME / dns formated domain name 158 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 159 160 * ALSONOTIFY 1.2.3.4#8053 my-key 161 * ALSONOTIFY ::1#8053 my-key 162 * 163 */ 164 165 #define TYPE_ZONE_NOTIFY NU16(0x2a03) 166 167 168 /* 169 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 170 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 171 +-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 172 / IPVER | PORT | KEY | / 4 bits + 1 bit + 1 bit ( 8 bits ) 173 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 174 / MASTER / 175 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 176 / PORT / 177 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 178 / TSIG KEYNAME / dns formated domain name 179 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 180 */ 181 182 #define TYPE_ZONE_MASTER NU16(0x2a04) 183 184 #define ZD_DNSSEC_NONE 0 185 #define ZD_DNSSEC_NSEC 1 186 #define ZD_DNSSEC_NSEC3 2 187 #define ZD_DNSSEC_NSEC3_OPTOUT 3 188 189 /* 190 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 191 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 192 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 193 / DNSSEC MODE / 8 bits 194 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 195 */ 196 197 #define TYPE_ZONE_DNSSEC NU16(0x2a05) /* the canonical name of a alias rfc 1035 */ 198 199 /* 200 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 201 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 202 +-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 203 / IPVER | PORT | KEY | / 4 bits + 1 bit + 1 bit ( 8 bits ) 204 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 205 / MASTER / 206 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 207 / PORT / 208 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 209 / TSIG KEYNAME / dns formated domain name 210 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 211 */ 212 213 #define TYPE_ZONE_SLAVES NU16(0x2a06) 214 215 /* 216 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 217 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 218 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 219 / VALUE / 220 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 221 */ 222 223 #define TYPE_SIGINTV NU16(0x2a07) 224 225 /* 226 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 227 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 228 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 229 / VALUE / 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 231 */ 232 233 #define TYPE_SIGREGN NU16(0x2a08) 234 235 /* 236 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 237 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 238 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 239 / VALUE / 240 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 241 */ 242 243 #define TYPE_SIGJITR NU16(0x2a09) 244 245 /* 246 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 247 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 248 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 249 / VALUE / notify request count 250 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 251 */ 252 253 #define TYPE_NTFRC NU16(0x2a0a) 254 255 /* 256 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 257 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 258 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 259 / VALUE / notify request period 260 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 261 */ 262 263 #define TYPE_NTFRP NU16(0x2a0b) 264 265 /* 266 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 267 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 268 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 269 / VALUE / notify request increment 270 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 271 */ 272 273 #define TYPE_NTFRPI NU16(0x2a0c) 274 275 /* 276 277 0 1 2 3 4 5 6 7 278 +-+-+-+-+-+-+-+-+ 279 /V| / 280 +-+-+-+-+-+-+-+-+ 281 */ 282 283 #define TYPE_NTFAUTO NU16(0x2a0d) 284 285 /* 286 * Q: . SRVSHUTDOWN CTRL 287 * C: . SRVSHUTDOWN 288 */ 289 290 #define TYPE_CTRL_SRVSHUTDOWN NU16(0x2b01) 291 292 /* 293 * Q: . SRVLOGREOPEN CTRL 294 * C: . SRVLOGREOPEN 295 */ 296 297 #define TYPE_CTRL_SRVLOGREOPEN NU16(0x2b02) 298 299 /* 300 * Q: . SRVCFGRELOAD CTRL 301 * C: . SRVCFGRELOAD 302 */ 303 304 #define TYPE_CTRL_SRVCFGRELOAD NU16(0x2b03) 305 306 /* 307 * Q: . SRVQUERYLOG CTRL 308 * C: . SRVQUERYLOG on_off 309 */ 310 311 #define TYPE_CTRL_SRVQUERYLOG NU16(0x2b04) 312 313 /* 314 * Q: . SRVLOGLEVEL CTRL 315 * C: . SRVLOGLEVEL level 316 * 317 * level is one byte, values 0->15 (4 higher bits reserved) ... or don't we set a limit ? 318 */ 319 320 #define TYPE_CTRL_SRVLOGLEVEL NU16(0x2b05) 321 322 /* 323 * Q: . ZONEFREEZE CTRL 324 * C: . ZONEFREEZE [fqdn class view] 325 * 326 * if rdata size > 0, rdata is FQDN [2 bytes] [0->n utf8/asciiz? bytes] 327 */ 328 329 #define TYPE_CTRL_ZONEFREEZE NU16(0x2b06) 330 331 /* 332 * Q: . ZONEUNFREEZE CTRL 333 * C: . ZONEUNFREEZE [fqdn class view] 334 * 335 * if rdata size > 0, rdata is FQDN [2 bytes] [0->n utf8/asciiz? bytes] 336 */ 337 338 #define TYPE_CTRL_ZONEUNFREEZE NU16(0x2b07) 339 340 /* 341 * Q: . ZONESYNC CTRL 342 * C: . ZONESYNC clean [fqdn class view] 343 * 344 * clean is one byte, values 0->1 (7 higher bits reserved) 345 * if rdata size > 0, rdata is FQDN [2 bytes] [0->n utf8/asciiz? bytes] 346 */ 347 348 #define TYPE_CTRL_ZONESYNC NU16(0x2b08) 349 350 /* 351 * Q: . ZONENOTIFY CTRL 352 * C: . ZONENOTIFY fqdn [class view] 353 * 354 * rdata is FQDN [2 bytes] [0->n utf8/asciiz? bytes] 355 */ 356 357 #define TYPE_CTRL_ZONENOTIFY NU16(0x2b09) 358 359 /* 360 * Q: . ZONERELOAD CTRL 361 * C: . ZONERELOAD fqdn class view 362 * 363 * rdata is FQDN [2 bytes] [0->n utf8/asciiz? bytes] 364 */ 365 366 #define TYPE_CTRL_ZONERELOAD NU16(0x2b0a) 367 368 /* 369 * Q: . ZONECFGRELOAD CTRL 370 * C: . ZONECFGRELOAD [fqdn [class [view]]] 371 * 372 * rdata is FQDN [2 bytes] [0->n utf8/asciiz? bytes] 373 */ 374 375 #define TYPE_CTRL_ZONECFGRELOAD NU16(0x2b0b) 376 #define TYPE_CTRL_ZONECFGRELOADALL NU16(0x2b0c) 377 378 379 /* DOMAIN NAME = zone */ 380 /* RDATASIZE = 0 */ 381 382 #define TYPE_CTRL_ZONEFREEZEALL NU16(0x2b0d) 383 384 /* DOMAIN NAME = zone */ 385 /* RDATASIZE = 0 */ 386 387 #define TYPE_CTRL_ZONEUNFREEZEALL NU16(0x2b0e) 388 389 /* DOMAIN NAME = . */ 390 /* RDATASIZE = 0 */ 391 392 393 /** 394 * @} 395 */ 396