1 // Copyright (C) 2018-2021 Internet Systems Consortium, Inc. ("ISC") 2 // 3 // This Source Code Form is subject to the terms of the Mozilla Public 4 // License, v. 2.0. If a copy of the MPL was not distributed with this 5 // file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 7 #ifndef ISC_YANG_CONFIGS_H 8 #define ISC_YANG_CONFIGS_H 9 10 #include <yang/yang_models.h> 11 #include <yang/testutils/translator_test.h> 12 13 namespace isc { 14 namespace yang { 15 namespace test { 16 17 /// @brief The test module from sysrepo tests. 18 const std::string testModel = "keatest-module"; 19 const YRTree testTree = YangRepr::buildTreeFromVector({ 20 { "/keatest-module:container", "", SR_CONTAINER_T, false }, 21 { "/keatest-module:main", "", SR_CONTAINER_T, false }, 22 { "/keatest-module:main/string", "str", SR_STRING_T, true }, 23 { "/keatest-module:main/boolean", "true", SR_BOOL_T, true }, 24 { "/keatest-module:main/ui8", "8", SR_UINT8_T, true }, 25 { "/keatest-module:main/ui16", "16", SR_UINT16_T, true }, 26 { "/keatest-module:main/ui32", "32", SR_UINT32_T, true }, 27 { "/keatest-module:main/i8", "8", SR_INT8_T, true }, 28 { "/keatest-module:main/i16", "16", SR_INT16_T, true }, 29 { "/keatest-module:main/i32", "32", SR_INT32_T, true }, 30 { "/keatest-module:main/id_ref", "keatest-module:id_1", 31 SR_IDENTITYREF_T, true }, 32 { "/keatest-module:main/enum", "maybe", SR_ENUM_T, true }, 33 { "/keatest-module:main/raw", "Zm9vYmFy", SR_BINARY_T, true }, 34 { "/keatest-module:kernel-modules", "", SR_CONTAINER_T, false } 35 }); 36 37 /// @brief A subnet with two pools with ietf-dhcpv6-server model. 38 const std::string subnetTwoPoolsModelIetf6 = IETF_DHCPV6_SERVER; 39 const YRTree subnetTwoPoolsTreeIetf6 = YangRepr::buildTreeFromVector({ 40 { "/ietf-dhcpv6-server:server", "", SR_CONTAINER_PRESENCE_T, false }, 41 { "/ietf-dhcpv6-server:server/server-config", "", SR_CONTAINER_T, false }, 42 { "/ietf-dhcpv6-server:server/server-config/network-ranges", 43 "", SR_CONTAINER_T, false }, 44 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 45 "network-range[network-range-id='111']", "", SR_LIST_T, false }, 46 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 47 "network-range[network-range-id='111']/network-range-id", 48 "111", SR_UINT32_T, false }, 49 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 50 "network-range[network-range-id='111']/network-prefix", 51 "2001:db8::/48", SR_STRING_T, true }, 52 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 53 "network-range[network-range-id='111']/address-pools/" 54 "address-pool[pool-id='0']", "", SR_LIST_T, false }, 55 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 56 "network-range[network-range-id='111']/address-pools/" 57 "address-pool[pool-id='0']/pool-id", "0", SR_UINT32_T, false }, 58 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 59 "network-range[network-range-id='111']/address-pools/" 60 "address-pool[pool-id='0']/pool-prefix", 61 "2001:db8::1:0/112", SR_STRING_T, true }, 62 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 63 "network-range[network-range-id='111']/address-pools/" 64 "address-pool[pool-id='0']/start-address", 65 "2001:db8::1:0", SR_STRING_T, true }, 66 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 67 "network-range[network-range-id='111']/address-pools/" 68 "address-pool[pool-id='0']/end-address", 69 "2001:db8::1:ffff", SR_STRING_T, true }, 70 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 71 "network-range[network-range-id='111']/address-pools/" 72 "address-pool[pool-id='0']/max-address-count", 73 "disabled", SR_ENUM_T, true }, 74 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 75 "network-range[network-range-id='111']/address-pools/" 76 "address-pool[pool-id='1']", "", SR_LIST_T, false }, 77 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 78 "network-range[network-range-id='111']/address-pools/" 79 "address-pool[pool-id='1']/pool-id", "1", SR_UINT32_T, false }, 80 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 81 "network-range[network-range-id='111']/address-pools/" 82 "address-pool[pool-id='1']/pool-prefix", 83 "2001:db8::2:0/112", SR_STRING_T, true }, 84 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 85 "network-range[network-range-id='111']/address-pools/" 86 "address-pool[pool-id='1']/start-address", 87 "2001:db8::2:0", SR_STRING_T, true }, 88 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 89 "network-range[network-range-id='111']/address-pools/" 90 "address-pool[pool-id='1']/end-address", 91 "2001:db8::2:ffff", SR_STRING_T, true }, 92 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 93 "network-range[network-range-id='111']/address-pools/" 94 "address-pool[pool-id='1']/max-address-count", 95 "disabled", SR_ENUM_T, true }, 96 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid/type-code", 97 "65535", SR_UINT16_T, false }, 98 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 99 "network-range[network-range-id='111']/address-pools", 100 "", SR_CONTAINER_T, false }, 101 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 102 "network-range[network-range-id='111']/pd-pools", 103 "", SR_CONTAINER_T, false }, 104 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 105 "network-range[network-range-id='111']/host-reservations", 106 "", SR_CONTAINER_T, false }, 107 { "/ietf-dhcpv6-server:server/server-config/serv-attributes", 108 "", SR_CONTAINER_T, false }, 109 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid", 110 "", SR_CONTAINER_T, false }, 111 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/lease-storage", 112 "", SR_CONTAINER_T, false }, 113 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/vendor-info", 114 "", SR_CONTAINER_T, false }, 115 { "/ietf-dhcpv6-server:server/server-config/option-sets", 116 "", SR_CONTAINER_T, false }, 117 { "/ietf-dhcpv6-server:server/server-config/relay-opaque-paras", 118 "", SR_CONTAINER_T, false }, 119 { "/ietf-dhcpv6-server:server/server-config/rsoo-enabled-options", 120 "", SR_CONTAINER_T, false }, 121 }); 122 123 /// @brief A subnet with timers with ietf-dhcpv6-server model. 124 const std::string subnetTimersModel = IETF_DHCPV6_SERVER; 125 const YRTree subnetTimersIetf6 = YangRepr::buildTreeFromVector({ 126 { "/ietf-dhcpv6-server:server", "", SR_CONTAINER_PRESENCE_T, false }, 127 { "/ietf-dhcpv6-server:server/server-config", "", SR_CONTAINER_T, false }, 128 { "/ietf-dhcpv6-server:server/server-config/network-ranges", 129 "", SR_CONTAINER_T, false }, 130 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 131 "network-range[network-range-id='111']", "", SR_LIST_T, false }, 132 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 133 "network-range[network-range-id='111']/network-range-id", 134 "111", SR_UINT32_T, false }, 135 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 136 "network-range[network-range-id='111']/network-prefix", 137 "2001:db8::/48", SR_STRING_T, true }, 138 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 139 "network-range[network-range-id='111']/address-pools/" 140 "address-pool[pool-id='0']", "", SR_LIST_T, false }, 141 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 142 "network-range[network-range-id='111']/address-pools/" 143 "address-pool[pool-id='0']/pool-id", "0", SR_UINT32_T, false }, 144 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 145 "network-range[network-range-id='111']/address-pools/" 146 "address-pool[pool-id='0']/pool-prefix", 147 "2001:db8::1:0/112", SR_STRING_T, true }, 148 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 149 "network-range[network-range-id='111']/address-pools/" 150 "address-pool[pool-id='0']/start-address", 151 "2001:db8::1:0", SR_STRING_T, true }, 152 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 153 "network-range[network-range-id='111']/address-pools/" 154 "address-pool[pool-id='0']/end-address", 155 "2001:db8::1:ffff", SR_STRING_T, true }, 156 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 157 "network-range[network-range-id='111']/address-pools/" 158 "address-pool[pool-id='0']/renew-time", "1000", SR_UINT32_T, true }, 159 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 160 "network-range[network-range-id='111']/address-pools/" 161 "address-pool[pool-id='0']/rebind-time", "2000", SR_UINT32_T, true }, 162 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 163 "network-range[network-range-id='111']/address-pools/" 164 "address-pool[pool-id='0']/max-address-count", 165 "disabled", SR_ENUM_T, true }, 166 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 167 "network-range[network-range-id='111']/address-pools/" 168 "address-pool[pool-id='1']", "", SR_LIST_T, false }, 169 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 170 "network-range[network-range-id='111']/address-pools/" 171 "address-pool[pool-id='1']/pool-id", "1", SR_UINT32_T, false }, 172 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 173 "network-range[network-range-id='111']/address-pools/" 174 "address-pool[pool-id='1']/pool-prefix", 175 "2001:db8::2:0/112", SR_STRING_T, true }, 176 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 177 "network-range[network-range-id='111']/address-pools/" 178 "address-pool[pool-id='1']/start-address", 179 "2001:db8::2:0", SR_STRING_T, true }, 180 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 181 "network-range[network-range-id='111']/address-pools/" 182 "address-pool[pool-id='1']/end-address", 183 "2001:db8::2:ffff", SR_STRING_T, true }, 184 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 185 "network-range[network-range-id='111']/address-pools/" 186 "address-pool[pool-id='1']/renew-time", "1000", SR_UINT32_T, true }, 187 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 188 "network-range[network-range-id='111']/address-pools/" 189 "address-pool[pool-id='1']/rebind-time", "2000", SR_UINT32_T, true }, 190 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 191 "network-range[network-range-id='111']/address-pools/" 192 "address-pool[pool-id='1']/max-address-count", 193 "disabled", SR_ENUM_T, true }, 194 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid/type-code", 195 "65535", SR_UINT16_T, false }, 196 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 197 "network-range[network-range-id='111']/address-pools", 198 "", SR_CONTAINER_T, false }, 199 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 200 "network-range[network-range-id='111']/pd-pools", 201 "", SR_CONTAINER_T, false }, 202 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 203 "network-range[network-range-id='111']/host-reservations", 204 "", SR_CONTAINER_T, false }, 205 { "/ietf-dhcpv6-server:server/server-config/serv-attributes", 206 "", SR_CONTAINER_T, false }, 207 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid", 208 "", SR_CONTAINER_T, false }, 209 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/lease-storage", 210 "", SR_CONTAINER_T, false }, 211 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/vendor-info", 212 "", SR_CONTAINER_T, false }, 213 { "/ietf-dhcpv6-server:server/server-config/option-sets", 214 "", SR_CONTAINER_T, false }, 215 { "/ietf-dhcpv6-server:server/server-config/relay-opaque-paras", 216 "", SR_CONTAINER_T, false }, 217 { "/ietf-dhcpv6-server:server/server-config/rsoo-enabled-options", 218 "", SR_CONTAINER_T, false }, 219 }); 220 221 /// @brief A subnet with two pools with ietf-dhcpv6-server model 222 /// which validates. 223 const std::string validModelIetf6 = IETF_DHCPV6_SERVER; 224 const YRTree validTreeIetf6 = YangRepr::buildTreeFromVector({ 225 { "/ietf-dhcpv6-server:server", "", SR_CONTAINER_PRESENCE_T, false }, 226 { "/ietf-dhcpv6-server:server/server-config", "", SR_CONTAINER_T, false }, 227 { "/ietf-dhcpv6-server:server/server-config/serv-attributes", 228 "", SR_CONTAINER_T, false }, 229 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/vendor-info", 230 "", SR_CONTAINER_T, false }, 231 { "/ietf-dhcpv6-server:server/server-config/serv-attributes" 232 "/vendor-info/ent-num", "2495", SR_UINT32_T, true }, 233 { "/ietf-dhcpv6-server:server/server-config/option-sets", 234 "", SR_CONTAINER_T, false }, 235 { "/ietf-dhcpv6-server:server/server-config/option-sets" 236 "/option-set[option-set-id='0']", "", SR_LIST_T, false }, 237 { "/ietf-dhcpv6-server:server/server-config/option-sets" 238 "/option-set[option-set-id='0']/option-set-id", 239 "0", SR_UINT32_T, true }, 240 { "/ietf-dhcpv6-server:server/server-config/network-ranges", 241 "", SR_CONTAINER_T, false }, 242 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 243 "network-range[network-range-id='111']", "", SR_LIST_T, false }, 244 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 245 "network-range[network-range-id='111']/network-range-id", 246 "111", SR_UINT32_T, false }, 247 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 248 "network-range[network-range-id='111']/network-description", 249 "Subnet#111", SR_STRING_T, true }, 250 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 251 "network-range[network-range-id='111']/network-prefix", 252 "2001:db8::/48", SR_STRING_T, true }, 253 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 254 "network-range[network-range-id='111']/pd-pools/" 255 "pd-pool[pool-id='0']", "", SR_LIST_T, false }, 256 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 257 "network-range[network-range-id='111']/pd-pools/" 258 "pd-pool[pool-id='0']/pool-id", "0", SR_UINT32_T, false }, 259 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 260 "network-range[network-range-id='111']/pd-pools/" 261 "pd-pool[pool-id='0']/prefix", 262 "2001:db8:1::/48", SR_STRING_T, true }, 263 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 264 "network-range[network-range-id='111']/pd-pools/" 265 "pd-pool[pool-id='0']/prefix-length", "48", SR_UINT8_T, true }, 266 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 267 "network-range[network-range-id='111']/pd-pools/" 268 "pd-pool[pool-id='0']/valid-lifetime", "4000", SR_UINT32_T, true }, 269 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 270 "network-range[network-range-id='111']/pd-pools/" 271 "pd-pool[pool-id='0']/preferred-lifetime", 272 "3000", SR_UINT32_T, true }, 273 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 274 "network-range[network-range-id='111']/pd-pools/" 275 "pd-pool[pool-id='0']/renew-time", "1000", SR_UINT32_T, true }, 276 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 277 "network-range[network-range-id='111']/pd-pools/" 278 "pd-pool[pool-id='0']/rebind-time", "2000", SR_UINT32_T, true }, 279 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 280 "network-range[network-range-id='111']/pd-pools/" 281 "pd-pool[pool-id='0']/rapid-commit", "false", SR_BOOL_T, true }, 282 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 283 "network-range[network-range-id='111']/pd-pools/" 284 "pd-pool[pool-id='0']/option-set-id", "0", SR_UINT32_T, true }, 285 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 286 "network-range[network-range-id='111']/pd-pools/" 287 "pd-pool[pool-id='0']/max-pd-space-utilization", 288 "disabled", SR_ENUM_T, true }, 289 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 290 "network-range[network-range-id='111']/pd-pools/" 291 "pd-pool[pool-id='1']", "", SR_LIST_T, false }, 292 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 293 "network-range[network-range-id='111']/pd-pools/" 294 "pd-pool[pool-id='1']/pool-id", "1", SR_UINT32_T, false }, 295 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 296 "network-range[network-range-id='111']/pd-pools/" 297 "pd-pool[pool-id='1']/prefix", 298 "2001:db8:2::/48", SR_STRING_T, true }, 299 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 300 "network-range[network-range-id='111']/pd-pools/" 301 "pd-pool[pool-id='1']/prefix-length", "48", SR_UINT8_T, true }, 302 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 303 "network-range[network-range-id='111']/pd-pools/" 304 "pd-pool[pool-id='1']/valid-lifetime", "4000", SR_UINT32_T, true }, 305 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 306 "network-range[network-range-id='111']/pd-pools/" 307 "pd-pool[pool-id='1']/preferred-lifetime", 308 "3000", SR_UINT32_T, true }, 309 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 310 "network-range[network-range-id='111']/pd-pools/" 311 "pd-pool[pool-id='1']/renew-time", "1000", SR_UINT32_T, true }, 312 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 313 "network-range[network-range-id='111']/pd-pools/" 314 "pd-pool[pool-id='1']/rebind-time", "2000", SR_UINT32_T, true }, 315 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 316 "network-range[network-range-id='111']/pd-pools/" 317 "pd-pool[pool-id='1']/rapid-commit", "false", SR_BOOL_T, true }, 318 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 319 "network-range[network-range-id='111']/pd-pools/" 320 "pd-pool[pool-id='1']/option-set-id", "0", SR_UINT32_T, true }, 321 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 322 "network-range[network-range-id='111']/pd-pools/" 323 "pd-pool[pool-id='1']/max-pd-space-utilization", 324 "disabled", SR_ENUM_T, true }, 325 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid/type-code", 326 "65535", SR_UINT16_T, false }, 327 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 328 "network-range[network-range-id='111']/address-pools", 329 "", SR_CONTAINER_T, false }, 330 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 331 "network-range[network-range-id='111']/pd-pools", 332 "", SR_CONTAINER_T, false }, 333 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 334 "network-range[network-range-id='111']/host-reservations", 335 "", SR_CONTAINER_T, false }, 336 { "/ietf-dhcpv6-server:server/server-config/serv-attributes", 337 "", SR_CONTAINER_T, false }, 338 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid", 339 "", SR_CONTAINER_T, false }, 340 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/lease-storage", 341 "", SR_CONTAINER_T, false }, 342 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/vendor-info", 343 "", SR_CONTAINER_T, false }, 344 { "/ietf-dhcpv6-server:server/server-config/option-sets", 345 "", SR_CONTAINER_T, false }, 346 { "/ietf-dhcpv6-server:server/server-config/relay-opaque-paras", 347 "", SR_CONTAINER_T, false }, 348 { "/ietf-dhcpv6-server:server/server-config/rsoo-enabled-options", 349 "", SR_CONTAINER_T, false }, 350 }); 351 352 /// @brief A subnet with a pool and option data lists with 353 /// kea-dhcp4-server:config model. 354 const std::string subnetOptionsModelKeaDhcp4 = KEA_DHCP4_SERVER; 355 const YRTree subnetOptionsTreeKeaDhcp4 = YangRepr::buildTreeFromVector({ 356 { "/kea-dhcp4-server:config", "", SR_CONTAINER_T, false }, 357 { "/kea-dhcp4-server:config/subnet4[id='111']", "", 358 SR_LIST_T, false }, 359 { "/kea-dhcp4-server:config/subnet4[id='111']/id", 360 "111", SR_UINT32_T, false }, 361 { "/kea-dhcp4-server:config/subnet4[id='111']/" 362 "option-data[code='100'][space='dns']", "", SR_LIST_T, false }, 363 { "/kea-dhcp4-server:config/subnet4[id='111']/" 364 "option-data[code='100'][space='dns']/code", 365 "100", SR_UINT8_T, false }, 366 { "/kea-dhcp4-server:config/subnet4[id='111']/" 367 "option-data[code='100'][space='dns']/space", 368 "dns", SR_STRING_T, false }, 369 { "/kea-dhcp4-server:config/subnet4[id='111']/" 370 "option-data[code='100'][space='dns']/data", 371 "12121212", SR_STRING_T, true }, 372 { "/kea-dhcp4-server:config/subnet4[id='111']/" 373 "option-data[code='100'][space='dns']/csv-format", 374 "false", SR_BOOL_T, true }, 375 { "/kea-dhcp4-server:config/subnet4[id='111']/" 376 "option-data[code='100'][space='dns']/always-send", 377 "false", SR_BOOL_T, true }, 378 { "/kea-dhcp4-server:config/subnet4[id='111']/" 379 "pool[start-address='10.0.1.0'][end-address='10.0.1.255']", 380 "", SR_LIST_T, false }, 381 { "/kea-dhcp4-server:config/subnet4[id='111']/" 382 "pool[start-address='10.0.1.0'][end-address='10.0.1.255']/start-address", 383 "10.0.1.0", SR_STRING_T, false }, 384 { "/kea-dhcp4-server:config/subnet4[id='111']/" 385 "pool[start-address='10.0.1.0'][end-address='10.0.1.255']/end-address", 386 "10.0.1.255", SR_STRING_T, false }, 387 { "/kea-dhcp4-server:config/subnet4[id='111']/" 388 "pool[start-address='10.0.1.0'][end-address='10.0.1.255']/prefix", 389 "10.0.1.0/24", SR_STRING_T, true }, 390 { "/kea-dhcp4-server:config/subnet4[id='111']/subnet", 391 "10.0.0.0/8", SR_STRING_T, true }, 392 { "/kea-dhcp4-server:config/expired-leases-processing", 393 "", SR_CONTAINER_T, false }, 394 { "/kea-dhcp4-server:config/dhcp-ddns", 395 "", SR_CONTAINER_T, false }, 396 { "/kea-dhcp4-server:config/config-control", 397 "", SR_CONTAINER_T, false }, 398 { "/kea-dhcp4-server:config/sanity-checks", 399 "", SR_CONTAINER_T, false }, 400 { "/kea-dhcp4-server:config/interfaces-config", 401 "", SR_CONTAINER_T, false }, 402 { "/kea-dhcp4-server:config/subnet4[id='111']/relay", 403 "", SR_CONTAINER_T, false }, 404 }); 405 406 /// @brief A subnet with a pool and option data lists with 407 /// kea-dhcp6-server:config model. 408 const std::string subnetOptionsModelKeaDhcp6 = KEA_DHCP6_SERVER; 409 const YRTree subnetOptionsTreeKeaDhcp6 = YangRepr::buildTreeFromVector({ 410 { "/kea-dhcp6-server:config", "", SR_CONTAINER_T, false }, 411 { "/kea-dhcp6-server:config/subnet6[id='111']", "", 412 SR_LIST_T, false }, 413 { "/kea-dhcp6-server:config/subnet6[id='111']/id", 414 "111", SR_UINT32_T, false }, 415 { "/kea-dhcp6-server:config/subnet6[id='111']/" 416 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']", 417 "", SR_LIST_T, false }, 418 { "/kea-dhcp6-server:config/subnet6[id='111']/" 419 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 420 "start-address", "2001:db8::1:0", SR_STRING_T, false }, 421 { "/kea-dhcp6-server:config/subnet6[id='111']/" 422 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 423 "end-address", "2001:db8::1:ffff", SR_STRING_T, false }, 424 { "/kea-dhcp6-server:config/subnet6[id='111']/" 425 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 426 "prefix", "2001:db8::1:0/112", SR_STRING_T, true }, 427 { "/kea-dhcp6-server:config/subnet6[id='111']/" 428 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 429 "option-data[code='100'][space='dns']", 430 "", SR_LIST_T, false }, 431 { "/kea-dhcp6-server:config/subnet6[id='111']/" 432 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 433 "option-data[code='100'][space='dns']/code", 434 "100", SR_UINT16_T, false }, 435 { "/kea-dhcp6-server:config/subnet6[id='111']/" 436 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 437 "option-data[code='100'][space='dns']/space", 438 "dns", SR_STRING_T, false }, 439 { "/kea-dhcp6-server:config/subnet6[id='111']/" 440 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 441 "option-data[code='100'][space='dns']/data", 442 "12121212", SR_STRING_T, true }, 443 { "/kea-dhcp6-server:config/subnet6[id='111']/" 444 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 445 "option-data[code='100'][space='dns']/csv-format", 446 "false", SR_BOOL_T, true }, 447 { "/kea-dhcp6-server:config/subnet6[id='111']/" 448 "pool[start-address='2001:db8::1:0'][end-address='2001:db8::1:ffff']/" 449 "option-data[code='100'][space='dns']/always-send", 450 "false", SR_BOOL_T, true }, 451 { "/kea-dhcp6-server:config/subnet6[id='111']/subnet", 452 "2001:db8::/48", SR_STRING_T, true }, 453 { "/kea-dhcp6-server:config/expired-leases-processing", 454 "", SR_CONTAINER_T, false }, 455 { "/kea-dhcp6-server:config/dhcp-ddns", 456 "", SR_CONTAINER_T, false }, 457 { "/kea-dhcp6-server:config/config-control", 458 "", SR_CONTAINER_T, false }, 459 { "/kea-dhcp6-server:config/sanity-checks", 460 "", SR_CONTAINER_T, false }, 461 { "/kea-dhcp6-server:config/interfaces-config", 462 "", SR_CONTAINER_T, false }, 463 { "/kea-dhcp6-server:config/subnet6[id='111']/relay", 464 "", SR_CONTAINER_T, false }, 465 }); 466 467 /// @brief Example from the design document. 468 const std::string designExampleModel = IETF_DHCPV6_SERVER; 469 const YRTree designExampleTree = YangRepr::buildTreeFromVector({ 470 { "/ietf-dhcpv6-server:server", "", SR_CONTAINER_PRESENCE_T, false }, 471 { "/ietf-dhcpv6-server:server/server-config", "", SR_CONTAINER_T, false }, 472 { "/ietf-dhcpv6-server:server/server-config/network-ranges", 473 "", SR_CONTAINER_T, false }, 474 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 475 "network-range[network-range-id='1']", "", SR_LIST_T, false }, 476 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 477 "network-range[network-range-id='1']/network-range-id", 478 "1", SR_UINT32_T, false }, 479 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 480 "network-range[network-range-id='1']/network-description", 481 "example", SR_STRING_T, true }, 482 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 483 "network-range[network-range-id='1']/pd-pools", 484 "", SR_CONTAINER_T, false }, 485 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 486 "network-range[network-range-id='1']/pd-pools/pd-pool[pool-id='0']", 487 "", SR_LIST_T, false }, 488 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 489 "network-range[network-range-id='1']/pd-pools/pd-pool[pool-id='0']" 490 "/pool-id", 491 "0", SR_UINT32_T, true }, 492 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 493 "network-range[network-range-id='1']/pd-pools/pd-pool[pool-id='0']" 494 "/prefix", 495 "2001:db8:20:b00::/57", SR_STRING_T, true }, 496 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 497 "network-range[network-range-id='1']/pd-pools/pd-pool[pool-id='0']" 498 "/prefix-length", 499 "57", SR_UINT8_T, true }, 500 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 501 "network-range[network-range-id='1']/pd-pools/" 502 "pd-pool[pool-id='0']/max-pd-space-utilization", 503 "disabled", SR_ENUM_T, true }, 504 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 505 "network-range[network-range-id='1']/network-prefix", 506 "2001:db8:20:b00::/56", SR_STRING_T, true }, 507 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid/type-code", 508 "65535", SR_UINT16_T, false }, 509 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 510 "network-range[network-range-id='1']/host-reservations", 511 "", SR_CONTAINER_T, false }, 512 { "/ietf-dhcpv6-server:server/server-config/serv-attributes", 513 "", SR_CONTAINER_T, false }, 514 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/duid", 515 "", SR_CONTAINER_T, false }, 516 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/lease-storage", 517 "", SR_CONTAINER_T, false }, 518 { "/ietf-dhcpv6-server:server/server-config/serv-attributes/vendor-info", 519 "", SR_CONTAINER_T, false }, 520 { "/ietf-dhcpv6-server:server/server-config/option-sets", 521 "", SR_CONTAINER_T, false }, 522 { "/ietf-dhcpv6-server:server/server-config/relay-opaque-paras", 523 "", SR_CONTAINER_T, false }, 524 { "/ietf-dhcpv6-server:server/server-config/rsoo-enabled-options", 525 "", SR_CONTAINER_T, false }, 526 { "/ietf-dhcpv6-server:server/server-config/network-ranges/" 527 "network-range[network-range-id='1']/address-pools", 528 "", SR_CONTAINER_T, false }, 529 }); 530 531 const YRTree emptyTreeKeaDhcp4 = YangRepr::buildTreeFromVector({ 532 { "/kea-dhcp4-server:config", "", SR_CONTAINER_T, false }, 533 { "/kea-dhcp4-server:config/expired-leases-processing", 534 "", SR_CONTAINER_T, false }, 535 { "/kea-dhcp4-server:config/dhcp-ddns", 536 "", SR_CONTAINER_T, false }, 537 { "/kea-dhcp4-server:config/config-control", 538 "", SR_CONTAINER_T, false }, 539 { "/kea-dhcp4-server:config/sanity-checks", 540 "", SR_CONTAINER_T, false }, 541 { "/kea-dhcp4-server:config/interfaces-config", 542 "", SR_CONTAINER_T, false }, 543 }); 544 545 const YRTree emptyTreeKeaDhcp6 = YangRepr::buildTreeFromVector({ 546 { "/kea-dhcp6-server:config", "", SR_CONTAINER_T, false }, 547 { "/kea-dhcp6-server:config/expired-leases-processing", 548 "", SR_CONTAINER_T, false }, 549 { "/kea-dhcp6-server:config/dhcp-ddns", 550 "", SR_CONTAINER_T, false }, 551 { "/kea-dhcp6-server:config/config-control", 552 "", SR_CONTAINER_T, false }, 553 { "/kea-dhcp6-server:config/sanity-checks", 554 "", SR_CONTAINER_T, false }, 555 { "/kea-dhcp6-server:config/interfaces-config", 556 "", SR_CONTAINER_T, false }, 557 }); 558 559 /// @brief Set of example configurations. 560 const std::vector<std::pair<std::string, YRTree> > test_configs = 561 { 562 { testModel, testTree }, 563 { subnetTwoPoolsModelIetf6, subnetTwoPoolsTreeIetf6 }, 564 { subnetTimersModel, subnetTimersIetf6 }, 565 { validModelIetf6, validTreeIetf6 }, 566 { subnetOptionsModelKeaDhcp4, subnetOptionsTreeKeaDhcp4 }, 567 { subnetOptionsModelKeaDhcp6, subnetOptionsTreeKeaDhcp6 }, 568 { designExampleModel, designExampleTree } 569 }; 570 571 } // namespace test 572 } // namespace yang 573 } // namespace isc 574 575 #endif // ISC_YANG_CONFIGS_H 576