Changeset 745 for trunk/server/source4/torture/nbt
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source4/torture/nbt/browse.c
r414 r745 36 36 bool ret = true; 37 37 38 name.name = lp _workgroup();38 name.name = lpcfg_workgroup(); 39 39 name.type = NBT_NAME_BROWSER; 40 40 name.scope = NULL; -
trunk/server/source4/torture/nbt/dgram.c
r414 r745 22 22 #include "includes.h" 23 23 #include "libcli/dgram/libdgram.h" 24 #include "librpc/gen_ndr/samr.h"25 #include "librpc/gen_ndr/ndr_nbt.h"26 #include "librpc/gen_ndr/ndr_netlogon.h"27 24 #include "lib/socket/socket.h" 28 25 #include "lib/events/events.h" 29 #include "torture/rpc/ rpc.h"26 #include "torture/rpc/torture_rpc.h" 30 27 #include "libcli/resolve/resolve.h" 31 28 #include "system/network.h" … … 68 65 { 69 66 struct dgram_mailslot_handler *dgmslot; 70 struct nbt_dgram_socket *dgmsock = nbt_dgram_socket_init(tctx, tctx->ev, 71 lp_iconv_convenience(tctx->lp_ctx)); 67 struct nbt_dgram_socket *dgmsock = nbt_dgram_socket_init(tctx, tctx->ev); 72 68 struct socket_address *dest; 73 69 const char *myaddress; … … 85 81 struct interface *ifaces; 86 82 87 name.name = lp _workgroup(tctx->lp_ctx);83 name.name = lpcfg_workgroup(tctx->lp_ctx); 88 84 name.type = NBT_NAME_LOGON; 89 85 name.scope = NULL; … … 91 87 /* do an initial name resolution to find its IP */ 92 88 torture_assert_ntstatus_ok(tctx, 93 resolve_name(lp _resolve_context(tctx->lp_ctx), &name, tctx, &address, tctx->ev),89 resolve_name(lpcfg_resolve_context(tctx->lp_ctx), &name, tctx, &address, tctx->ev), 94 90 talloc_asprintf(tctx, "Failed to resolve %s", name.name)); 95 91 96 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);92 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 97 93 myaddress = talloc_strdup(dgmsock, iface_best_ip(ifaces, address)); 98 94 99 95 100 96 socket_address = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 101 myaddress, lp _dgram_port(tctx->lp_ctx));97 myaddress, lpcfg_dgram_port(tctx->lp_ctx)); 102 98 torture_assert(tctx, socket_address != NULL, "Error getting address"); 103 99 … … 119 115 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 120 116 netlogon_handler, NULL); 117 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 121 118 122 119 ZERO_STRUCT(logon); … … 132 129 133 130 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 134 address, lp _dgram_port(tctx->lp_ctx));131 address, lpcfg_dgram_port(tctx->lp_ctx)); 135 132 torture_assert(tctx, dest != NULL, "Error getting address"); 136 133 … … 159 156 { 160 157 struct dgram_mailslot_handler *dgmslot; 161 struct nbt_dgram_socket *dgmsock = nbt_dgram_socket_init(tctx, tctx->ev, 162 lp_iconv_convenience(tctx->lp_ctx)); 158 struct nbt_dgram_socket *dgmsock = nbt_dgram_socket_init(tctx, tctx->ev); 163 159 struct socket_address *dest; 164 160 const char *myaddress; … … 179 175 const struct dom_sid *dom_sid; 180 176 181 name.name = lp _workgroup(tctx->lp_ctx);177 name.name = lpcfg_workgroup(tctx->lp_ctx); 182 178 name.type = NBT_NAME_LOGON; 183 179 name.scope = NULL; … … 185 181 /* do an initial name resolution to find its IP */ 186 182 torture_assert_ntstatus_ok(tctx, 187 resolve_name(lp _resolve_context(tctx->lp_ctx), &name, tctx, &address, tctx->ev),183 resolve_name(lpcfg_resolve_context(tctx->lp_ctx), &name, tctx, &address, tctx->ev), 188 184 talloc_asprintf(tctx, "Failed to resolve %s", name.name)); 189 185 190 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);186 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 191 187 myaddress = talloc_strdup(dgmsock, iface_best_ip(ifaces, address)); 192 188 193 189 socket_address = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 194 myaddress, lp _dgram_port(tctx->lp_ctx));190 myaddress, lpcfg_dgram_port(tctx->lp_ctx)); 195 191 torture_assert(tctx, socket_address != NULL, "Error getting address"); 196 192 … … 212 208 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 213 209 netlogon_handler, NULL); 214 210 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 215 211 216 212 ZERO_STRUCT(logon); … … 227 223 228 224 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 229 address, lp _dgram_port(tctx->lp_ctx));225 address, lpcfg_dgram_port(tctx->lp_ctx)); 230 226 231 227 torture_assert(tctx, dest != NULL, "Error getting address"); … … 252 248 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 253 249 netlogon_handler, NULL); 250 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 254 251 255 252 ZERO_STRUCT(logon); … … 266 263 267 264 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 268 address, lp _dgram_port(tctx->lp_ctx));265 address, lpcfg_dgram_port(tctx->lp_ctx)); 269 266 270 267 torture_assert(tctx, dest != NULL, "Error getting address"); … … 294 291 torture_assert(tctx, join_ctx != NULL, 295 292 talloc_asprintf(tctx, "Failed to join domain %s as %s\n", 296 lp_workgroup(tctx->lp_ctx), TEST_NAME));293 lpcfg_workgroup(tctx->lp_ctx), TEST_NAME)); 297 294 298 295 dom_sid = torture_join_sid(join_ctx); … … 301 298 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 302 299 netlogon_handler, NULL); 300 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 303 301 304 302 ZERO_STRUCT(logon); … … 316 314 317 315 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 318 address, lp _dgram_port(tctx->lp_ctx));316 address, lpcfg_dgram_port(tctx->lp_ctx)); 319 317 320 318 torture_assert(tctx, dest != NULL, "Error getting address"); … … 341 339 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 342 340 netlogon_handler, NULL); 343 344 341 torture_assert(tctx, dgmslot != NULL, "Error getting a Mailslot for GetDC reply"); 345 342 … … 359 356 360 357 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 361 address, lp _dgram_port(tctx->lp_ctx));358 address, lpcfg_dgram_port(tctx->lp_ctx)); 362 359 363 360 torture_assert(tctx, dest != NULL, "Error getting address"); … … 398 395 399 396 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 400 address, lp _dgram_port(tctx->lp_ctx));397 address, lpcfg_dgram_port(tctx->lp_ctx)); 401 398 402 399 torture_assert(tctx, dest != NULL, "Error getting address"); … … 429 426 { 430 427 struct dgram_mailslot_handler *dgmslot; 431 struct nbt_dgram_socket *dgmsock = nbt_dgram_socket_init(tctx, tctx->ev, 432 lp_iconv_convenience(tctx->lp_ctx)); 428 struct nbt_dgram_socket *dgmsock = nbt_dgram_socket_init(tctx, tctx->ev); 433 429 struct socket_address *dest; 434 430 struct test_join *join_ctx; … … 449 445 struct interface *ifaces; 450 446 451 name.name = lp _workgroup(tctx->lp_ctx);447 name.name = lpcfg_workgroup(tctx->lp_ctx); 452 448 name.type = NBT_NAME_LOGON; 453 449 name.scope = NULL; … … 455 451 /* do an initial name resolution to find its IP */ 456 452 torture_assert_ntstatus_ok(tctx, 457 resolve_name(lp _resolve_context(tctx->lp_ctx), &name, tctx, &address, tctx->ev),453 resolve_name(lpcfg_resolve_context(tctx->lp_ctx), &name, tctx, &address, tctx->ev), 458 454 talloc_asprintf(tctx, "Failed to resolve %s", name.name)); 459 455 460 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);456 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 461 457 myaddress = talloc_strdup(dgmsock, iface_best_ip(ifaces, address)); 462 458 463 459 socket_address = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 464 myaddress, lp _dgram_port(tctx->lp_ctx));460 myaddress, lpcfg_dgram_port(tctx->lp_ctx)); 465 461 torture_assert(tctx, socket_address != NULL, "Error getting address"); 466 462 … … 485 481 torture_assert(tctx, join_ctx != NULL, 486 482 talloc_asprintf(tctx, "Failed to join domain %s as %s\n", 487 lp_workgroup(tctx->lp_ctx), TEST_NAME));483 lpcfg_workgroup(tctx->lp_ctx), TEST_NAME)); 488 484 489 485 /* setup a temporary mailslot listener for replies */ 490 486 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 491 487 netlogon_handler, NULL); 492 488 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 493 489 494 490 ZERO_STRUCT(logon); … … 508 504 509 505 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 510 address, lp _dgram_port(tctx->lp_ctx));506 address, lpcfg_dgram_port(tctx->lp_ctx)); 511 507 torture_assert(tctx, dest != NULL, "Error getting address"); 512 508 status = dgram_mailslot_netlogon_send(dgmsock, … … 535 531 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 536 532 netlogon_handler, NULL); 537 533 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 538 534 539 535 ZERO_STRUCT(logon); … … 552 548 553 549 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 554 address, lp _dgram_port(tctx->lp_ctx));550 address, lpcfg_dgram_port(tctx->lp_ctx)); 555 551 torture_assert(tctx, dest != NULL, "Error getting address"); 556 552 status = dgram_mailslot_netlogon_send(dgmsock, … … 579 575 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 580 576 netlogon_handler, NULL); 577 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 581 578 582 579 ZERO_STRUCT(logon); … … 592 589 593 590 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 594 address, lp _dgram_port(tctx->lp_ctx));591 address, lpcfg_dgram_port(tctx->lp_ctx)); 595 592 torture_assert(tctx, dest != NULL, "Error getting address"); 596 593 status = dgram_mailslot_netlogon_send(dgmsock, … … 616 613 dgmslot = dgram_mailslot_temp(dgmsock, NBT_MAILSLOT_GETDC, 617 614 netlogon_handler, NULL); 615 torture_assert(tctx, dgmslot != NULL, "Error temporary mailslot for GetDC"); 618 616 619 617 ZERO_STRUCT(logon); … … 629 627 630 628 dest = socket_address_from_strings(dgmsock, dgmsock->sock->backend_name, 631 address, lp _dgram_port(tctx->lp_ctx));629 address, lpcfg_dgram_port(tctx->lp_ctx)); 632 630 torture_assert(tctx, dest != NULL, "Error getting address"); 633 631 status = dgram_mailslot_netlogon_send(dgmsock, … … 658 656 struct torture_suite *torture_nbt_dgram(TALLOC_CTX *mem_ctx) 659 657 { 660 struct torture_suite *suite = torture_suite_create(mem_ctx, " DGRAM");658 struct torture_suite *suite = torture_suite_create(mem_ctx, "dgram"); 661 659 662 660 torture_suite_add_simple_test(suite, "netlogon", nbt_test_netlogon); -
trunk/server/source4/torture/nbt/nbt.c
r414 r745 28 28 struct nbt_name_socket *torture_init_nbt_socket(struct torture_context *tctx) 29 29 { 30 return nbt_name_socket_init(tctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));30 return nbt_name_socket_init(tctx, tctx->ev); 31 31 } 32 32 … … 40 40 /* do an initial name resolution to find its IP */ 41 41 torture_assert_ntstatus_ok(tctx, 42 resolve_name(lp _resolve_context(tctx->lp_ctx), name, tctx, address, tctx->ev),42 resolve_name(lpcfg_resolve_context(tctx->lp_ctx), name, tctx, address, tctx->ev), 43 43 talloc_asprintf(tctx, 44 44 "Failed to resolve %s", name->name)); … … 50 50 { 51 51 struct torture_suite *suite = torture_suite_create( 52 talloc_autofree_context(), " NBT");52 talloc_autofree_context(), "nbt"); 53 53 /* nbt tests */ 54 54 torture_suite_add_suite(suite, torture_nbt_register(suite)); -
trunk/server/source4/torture/nbt/query.c
r414 r745 63 63 io.in.name = name; 64 64 io.in.dest_addr = address; 65 io.in.dest_port = lp _nbt_port(tctx->lp_ctx);65 io.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 66 66 io.in.broadcast = false; 67 67 io.in.wins_lookup = false; … … 109 109 struct torture_suite *torture_bench_nbt(TALLOC_CTX *mem_ctx) 110 110 { 111 struct torture_suite *suite = torture_suite_create(mem_ctx, " BENCH");111 struct torture_suite *suite = torture_suite_create(mem_ctx, "bench"); 112 112 torture_suite_add_simple_test(suite, "namequery", bench_namequery); 113 113 -
trunk/server/source4/torture/nbt/register.c
r414 r745 55 55 return false; 56 56 57 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);57 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 58 58 59 59 myaddress = iface_best_ip(ifaces, address); … … 71 71 io.in.name = name; 72 72 io.in.dest_addr = address; 73 io.in.dest_port = lp _nbt_port(tctx->lp_ctx);73 io.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 74 74 io.in.address = myaddress; 75 75 io.in.nb_flags = NBT_NODE_B | NBT_NM_ACTIVE; … … 124 124 return false; 125 125 126 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);126 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 127 127 128 128 myaddress = iface_best_ip(ifaces, address); … … 141 141 io.in.name = name; 142 142 io.in.dest_addr = address; 143 io.in.dest_port = lp _nbt_port(tctx->lp_ctx);143 io.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 144 144 io.in.address = myaddress; 145 145 io.in.nb_flags = NBT_NODE_B | NBT_NM_ACTIVE; … … 169 169 struct torture_suite *suite; 170 170 171 suite = torture_suite_create(mem_ctx, " REGISTER");171 suite = torture_suite_create(mem_ctx, "register"); 172 172 torture_suite_add_simple_test(suite, "register_own", nbt_register_own); 173 173 torture_suite_add_simple_test(suite, "refresh_own", nbt_refresh_own); -
trunk/server/source4/torture/nbt/wins.c
r414 r745 50 50 static bool nbt_test_wins_name(struct torture_context *tctx, const char *address, 51 51 struct nbt_name *name, uint16_t nb_flags, 52 bool try_low_port) 52 bool try_low_port, 53 uint8_t register_rcode) 53 54 { 54 55 struct nbt_name_register_wins io; … … 65 66 bool low_port = try_low_port; 66 67 67 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);68 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 68 69 69 70 myaddress = talloc_strdup(tctx, iface_best_ip(ifaces, address)); … … 71 72 socket_address = socket_address_from_strings(tctx, 72 73 nbtsock->sock->backend_name, 73 myaddress, lp _nbt_port(tctx->lp_ctx));74 myaddress, lpcfg_nbt_port(tctx->lp_ctx)); 74 75 torture_assert(tctx, socket_address != NULL, 75 76 "Error getting address"); … … 98 99 torture_comment(tctx, "release the name\n"); 99 100 release.in.name = *name; 100 release.in.dest_port = lp _nbt_port(tctx->lp_ctx);101 release.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 101 102 release.in.dest_addr = address; 102 103 release.in.address = myaddress; … … 117 118 torture_comment(tctx, "register the name with a wrong address (makes the next request slow!)\n"); 118 119 io.in.name = *name; 119 io.in.wins_port = lp_nbt_port(tctx->lp_ctx); 120 io.in.wins_servers = str_list_make_single(tctx, address); 121 io.in.addresses = str_list_make_single(tctx, "127.64.64.1"); 120 io.in.wins_port = lpcfg_nbt_port(tctx->lp_ctx); 121 io.in.wins_servers = const_str_list( 122 str_list_make_single(tctx, address)); 123 io.in.addresses = const_str_list( 124 str_list_make_single(tctx, "127.64.64.1")); 122 125 io.in.nb_flags = nb_flags; 123 126 io.in.ttl = 300000; … … 138 141 torture_comment(tctx, "register the name correct address\n"); 139 142 name_register.in.name = *name; 140 name_register.in.dest_port = lp _nbt_port(tctx->lp_ctx);143 name_register.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 141 144 name_register.in.dest_addr = address; 142 145 name_register.in.address = myaddress; … … 189 192 torture_comment(tctx, "register the name correct address\n"); 190 193 io.in.name = *name; 191 io.in.wins_port = lp _nbt_port(tctx->lp_ctx);194 io.in.wins_port = lpcfg_nbt_port(tctx->lp_ctx); 192 195 io.in.wins_servers = (const char **)str_list_make_single(tctx, address); 193 196 io.in.addresses = (const char **)str_list_make_single(tctx, myaddress); … … 199 202 200 203 CHECK_STRING(tctx, io.out.wins_server, address); 201 CHECK_VALUE(tctx, io.out.rcode, 0); 204 CHECK_VALUE(tctx, io.out.rcode, register_rcode); 205 206 if (register_rcode != NBT_RCODE_OK) { 207 return true; 208 } 202 209 203 210 if (name->type != NBT_NAME_MASTER && … … 216 223 query.in.name = *name; 217 224 query.in.dest_addr = address; 218 query.in.dest_port = lp _nbt_port(tctx->lp_ctx);225 query.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 219 226 query.in.broadcast = false; 220 227 query.in.wins_lookup = true; … … 262 269 torture_comment(tctx, "refresh the name\n"); 263 270 refresh.in.name = *name; 264 refresh.in.wins_port = lp _nbt_port(tctx->lp_ctx);271 refresh.in.wins_port = lpcfg_nbt_port(tctx->lp_ctx); 265 272 refresh.in.wins_servers = (const char **)str_list_make_single(tctx, address); 266 273 refresh.in.addresses = (const char **)str_list_make_single(tctx, myaddress); … … 283 290 printf("release the name\n"); 284 291 release.in.name = *name; 285 release.in.dest_port = lp _nbt_port(tctx->lp_ctx);292 release.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 286 293 release.in.dest_addr = address; 287 294 release.in.address = myaddress; … … 311 318 torture_comment(tctx, "register the name with a wrong address (makes the next request slow!)\n"); 312 319 io.in.name = *name; 313 io.in.wins_port = lp_nbt_port(tctx->lp_ctx); 314 io.in.wins_servers = str_list_make_single(tctx, address); 315 io.in.addresses = str_list_make_single(tctx, "127.64.64.1"); 320 io.in.wins_port = lpcfg_nbt_port(tctx->lp_ctx); 321 io.in.wins_servers = const_str_list( 322 str_list_make_single(tctx, address)); 323 io.in.addresses = const_str_list( 324 str_list_make_single(tctx, "127.64.64.1")); 316 325 io.in.nb_flags = nb_flags; 317 326 io.in.ttl = 300000; … … 333 342 torture_comment(tctx, "refresh the name with the correct address\n"); 334 343 refresh.in.name = *name; 335 refresh.in.wins_port = lp_nbt_port(tctx->lp_ctx); 336 refresh.in.wins_servers = str_list_make_single(tctx, address); 337 refresh.in.addresses = str_list_make_single(tctx, myaddress); 344 refresh.in.wins_port = lpcfg_nbt_port(tctx->lp_ctx); 345 refresh.in.wins_servers = const_str_list( 346 str_list_make_single(tctx, address)); 347 refresh.in.addresses = const_str_list( 348 str_list_make_single(tctx, myaddress)); 338 349 refresh.in.nb_flags = nb_flags; 339 350 refresh.in.ttl = 12345; … … 354 365 torture_comment(tctx, "release the name\n"); 355 366 release.in.name = *name; 356 release.in.dest_port = lp _nbt_port(tctx->lp_ctx);367 release.in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 357 368 release.in.dest_addr = address; 358 369 release.in.address = myaddress; … … 395 406 396 407 408 static char *test_nbt_wins_scope_string(TALLOC_CTX *mem_ctx, uint8_t count) 409 { 410 char *res; 411 uint8_t i; 412 413 res = talloc_array(mem_ctx, char, count+1); 414 if (res == NULL) { 415 return NULL; 416 } 417 418 for (i=0; i < count; i++) { 419 switch (i) { 420 case 63: 421 case 63 + 1 + 63: 422 case 63 + 1 + 63 + 1 + 63: 423 res[i] = '.'; 424 break; 425 default: 426 res[i] = '0' + (i%10); 427 break; 428 } 429 } 430 431 res[count] = '\0'; 432 433 talloc_set_name_const(res, res); 434 435 return res; 436 } 397 437 398 438 /* … … 413 453 name.type = NBT_NAME_CLIENT; 414 454 name.scope = NULL; 415 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, true); 455 ret &= nbt_test_wins_name(tctx, address, &name, 456 NBT_NODE_H, true, NBT_RCODE_OK); 416 457 417 458 name.type = NBT_NAME_MASTER; 418 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 419 420 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H | NBT_NM_GROUP, false); 459 ret &= nbt_test_wins_name(tctx, address, &name, 460 NBT_NODE_H, false, NBT_RCODE_OK); 461 462 ret &= nbt_test_wins_name(tctx, address, &name, 463 NBT_NODE_H | NBT_NM_GROUP, false, NBT_RCODE_OK); 421 464 422 465 name.type = NBT_NAME_SERVER; 423 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, true); 466 ret &= nbt_test_wins_name(tctx, address, &name, 467 NBT_NODE_H, true, NBT_RCODE_OK); 424 468 425 469 name.type = NBT_NAME_LOGON; 426 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H | NBT_NM_GROUP, false); 470 ret &= nbt_test_wins_name(tctx, address, &name, 471 NBT_NODE_H | NBT_NM_GROUP, false, NBT_RCODE_OK); 427 472 428 473 name.type = NBT_NAME_BROWSER; 429 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H | NBT_NM_GROUP, false); 474 ret &= nbt_test_wins_name(tctx, address, &name, 475 NBT_NODE_H | NBT_NM_GROUP, false, NBT_RCODE_OK); 430 476 431 477 name.type = NBT_NAME_PDC; 432 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, true); 478 ret &= nbt_test_wins_name(tctx, address, &name, 479 NBT_NODE_H, true, NBT_RCODE_OK); 433 480 434 481 name.type = 0xBF; 435 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, true); 482 ret &= nbt_test_wins_name(tctx, address, &name, 483 NBT_NODE_H, true, NBT_RCODE_OK); 436 484 437 485 name.type = 0xBE; 438 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 486 ret &= nbt_test_wins_name(tctx, address, &name, 487 NBT_NODE_H, false, NBT_RCODE_OK); 439 488 440 489 name.scope = "example"; 441 490 name.type = 0x72; 442 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, true); 491 ret &= nbt_test_wins_name(tctx, address, &name, 492 NBT_NODE_H, true, NBT_RCODE_OK); 443 493 444 494 name.scope = "example"; 445 495 name.type = 0x71; 446 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H | NBT_NM_GROUP, false); 496 ret &= nbt_test_wins_name(tctx, address, &name, 497 NBT_NODE_H | NBT_NM_GROUP, false, NBT_RCODE_OK); 447 498 448 499 name.scope = "foo.example.com"; 449 500 name.type = 0x72; 450 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 501 ret &= nbt_test_wins_name(tctx, address, &name, 502 NBT_NODE_H, false, NBT_RCODE_OK); 451 503 452 504 name.name = talloc_asprintf(tctx, "_T\01-%5u.foo", r); 453 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 505 ret &= nbt_test_wins_name(tctx, address, &name, 506 NBT_NODE_H, false, NBT_RCODE_OK); 454 507 455 508 name.name = ""; 456 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 509 ret &= nbt_test_wins_name(tctx, address, &name, 510 NBT_NODE_H, false, NBT_RCODE_OK); 457 511 458 512 name.name = talloc_asprintf(tctx, "."); 459 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 513 ret &= nbt_test_wins_name(tctx, address, &name, 514 NBT_NODE_H, false, NBT_RCODE_OK); 460 515 461 516 name.name = talloc_asprintf(tctx, "%5u-\377\200\300FOO", r); 462 ret &= nbt_test_wins_name(tctx, address, &name, NBT_NODE_H, false); 517 ret &= nbt_test_wins_name(tctx, address, &name, 518 NBT_NODE_H, false, NBT_RCODE_OK); 519 520 name.scope = test_nbt_wins_scope_string(tctx, 237); 521 ret &= nbt_test_wins_name(tctx, address, &name, 522 NBT_NODE_H, false, NBT_RCODE_OK); 523 524 name.scope = test_nbt_wins_scope_string(tctx, 238); 525 ret &= nbt_test_wins_name(tctx, address, &name, 526 NBT_NODE_H, false, NBT_RCODE_SVR); 463 527 464 528 return ret; … … 470 534 struct torture_suite *torture_nbt_wins(TALLOC_CTX *mem_ctx) 471 535 { 472 struct torture_suite *suite = torture_suite_create(mem_ctx, " WINS");536 struct torture_suite *suite = torture_suite_create(mem_ctx, "wins"); 473 537 474 538 torture_suite_add_simple_test(suite, "wins", nbt_test_wins); -
trunk/server/source4/torture/nbt/winsbench.c
r414 r745 226 226 static bool bench_wins(struct torture_context *tctx) 227 227 { 228 struct nbt_name_socket *nbtsock = nbt_name_socket_init(tctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));228 struct nbt_name_socket *nbtsock = nbt_name_socket_init(tctx, tctx->ev); 229 229 int num_sent=0; 230 230 struct timeval tv = timeval_current(); … … 246 246 state->registered = talloc_zero_array(state, bool, state->num_names); 247 247 state->wins_server = address; 248 state->wins_port = lp _nbt_port(tctx->lp_ctx);249 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);248 state->wins_port = lpcfg_nbt_port(tctx->lp_ctx); 249 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 250 250 state->my_ip = talloc_strdup(tctx, iface_best_ip(ifaces, address)); 251 251 state->ttl = timelimit; … … 293 293 struct torture_suite *torture_bench_wins(TALLOC_CTX *mem_ctx) 294 294 { 295 struct torture_suite *suite = torture_suite_create(mem_ctx, 296 "BENCH-WINS"); 295 struct torture_suite *suite = torture_suite_create(mem_ctx, "bench-wins"); 297 296 298 297 torture_suite_add_simple_test(suite, "wins", bench_wins); -
trunk/server/source4/torture/nbt/winsreplication.c
r414 r745 25 25 #include "lib/events/events.h" 26 26 #include "lib/socket/socket.h" 27 #include "libcli/resolve/resolve.h"28 27 #include "system/network.h" 29 28 #include "lib/socket/netif.h" … … 85 84 { 86 85 bool ret = true; 87 struct wrepl_request *req;86 struct tevent_req *subreq; 88 87 struct wrepl_socket *wrepl_socket1; 89 88 struct wrepl_associate associate1; 90 89 struct wrepl_socket *wrepl_socket2; 91 90 struct wrepl_associate associate2; 92 struct wrepl_pull_table pull_table;93 91 struct wrepl_packet packet; 94 92 struct wrepl_send_ctrl ctrl; … … 98 96 struct nbt_name name; 99 97 const char *address; 98 bool ok; 100 99 101 100 if (!torture_nbt_get_name(tctx, &name, &address)) … … 104 103 torture_comment(tctx, "Test if assoc_ctx is only valid on the conection it was created on\n"); 105 104 106 wrepl_socket1 = wrepl_socket_init(tctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));107 wrepl_socket2 = wrepl_socket_init(tctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));105 wrepl_socket1 = wrepl_socket_init(tctx, tctx->ev); 106 wrepl_socket2 = wrepl_socket_init(tctx, tctx->ev); 108 107 109 108 torture_comment(tctx, "Setup 2 wrepl connections\n"); … … 134 133 ZERO_STRUCT(ctrl); 135 134 ctrl.send_only = true; 136 req = wrepl_request_send(wrepl_socket2, &packet, &ctrl); 137 status = wrepl_request_recv(req, tctx, &rep_packet); 135 subreq = wrepl_request_send(tctx, tctx->ev, wrepl_socket2, &packet, &ctrl); 136 ok = tevent_req_poll(subreq, tctx->ev); 137 if (!ok) { 138 CHECK_STATUS(tctx, NT_STATUS_INTERNAL_ERROR, NT_STATUS_OK); 139 } 140 status = wrepl_request_recv(subreq, tctx, &rep_packet); 141 TALLOC_FREE(subreq); 138 142 CHECK_STATUS(tctx, status, NT_STATUS_OK); 139 143 … … 143 147 144 148 torture_comment(tctx, "Send a replication table query, with invalid assoc (conn1), receive answer from conn2\n"); 145 pull_table.in.assoc_ctx = 0; 146 req = wrepl_pull_table_send(wrepl_socket1, &pull_table); 147 status = wrepl_request_recv(req, tctx, &rep_packet); 149 ZERO_STRUCT(packet); 150 packet.opcode = WREPL_OPCODE_BITS; 151 packet.assoc_ctx = 0; 152 packet.mess_type = WREPL_REPLICATION; 153 packet.message.replication.command = WREPL_REPL_TABLE_QUERY; 154 status = wrepl_request(wrepl_socket1, tctx, &packet, &rep_packet); 148 155 CHECK_STATUS(tctx, status, NT_STATUS_OK); 149 156 … … 187 194 torture_comment(tctx, "Test if we always get back the same assoc_ctx\n"); 188 195 189 wrepl_socket = wrepl_socket_init(tctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));196 wrepl_socket = wrepl_socket_init(tctx, tctx->ev); 190 197 191 198 torture_comment(tctx, "Setup wrepl connections\n"); … … 256 263 torture_comment(tctx, "Test one pull replication cycle\n"); 257 264 258 wrepl_socket = wrepl_socket_init(tctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));265 wrepl_socket = wrepl_socket_init(tctx, tctx->ev); 259 266 260 267 torture_comment(tctx, "Setup wrepl connections\n"); … … 274 281 status = wrepl_pull_table(wrepl_socket, tctx, &pull_table); 275 282 if (NT_STATUS_EQUAL(NT_STATUS_NETWORK_ACCESS_DENIED,status)) { 276 struct wrepl_packet packet; 277 struct wrepl_request *req; 278 279 ZERO_STRUCT(packet); 280 packet.opcode = WREPL_OPCODE_BITS; 281 packet.assoc_ctx = associate.out.assoc_ctx; 282 packet.mess_type = WREPL_STOP_ASSOCIATION; 283 packet.message.stop.reason = 0; 284 285 req = wrepl_request_send(wrepl_socket, &packet, NULL); 286 talloc_free(req); 283 struct wrepl_associate_stop assoc_stop; 284 285 assoc_stop.in.assoc_ctx = associate.out.assoc_ctx; 286 assoc_stop.in.reason = 0; 287 288 wrepl_associate_stop(wrepl_socket, &assoc_stop); 287 289 288 290 torture_fail(tctx, "We are not a valid pull partner for the server"); … … 554 556 555 557 ctx->address = address; 556 ctx->pull = wrepl_socket_init(ctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));558 ctx->pull = wrepl_socket_init(ctx, tctx->ev); 557 559 if (!ctx->pull) return NULL; 558 560 … … 611 613 talloc_free(pull_table.out.partners); 612 614 613 ctx->nbtsock = nbt_name_socket_init(ctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));615 ctx->nbtsock = nbt_name_socket_init(ctx, tctx->ev); 614 616 if (!ctx->nbtsock) return NULL; 615 617 616 load_interfaces(tctx, lp _interfaces(tctx->lp_ctx), &ifaces);618 load_interfaces(tctx, lpcfg_interfaces(tctx->lp_ctx), &ifaces); 617 619 618 620 ctx->myaddr = socket_address_from_strings(tctx, ctx->nbtsock->sock->backend_name, iface_best_ip(ifaces, address), 0); … … 629 631 if (!NT_STATUS_IS_OK(status)) return NULL; 630 632 631 ctx->nbtsock_srv = nbt_name_socket_init(ctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));633 ctx->nbtsock_srv = nbt_name_socket_init(ctx, tctx->ev); 632 634 if (!ctx->nbtsock_srv) return NULL; 633 635 634 636 /* Make a port 137 version of ctx->myaddr */ 635 nbt_srv_addr = socket_address_from_strings(tctx, ctx->nbtsock_srv->sock->backend_name, ctx->myaddr->addr, lp _nbt_port(tctx->lp_ctx));637 nbt_srv_addr = socket_address_from_strings(tctx, ctx->nbtsock_srv->sock->backend_name, ctx->myaddr->addr, lpcfg_nbt_port(tctx->lp_ctx)); 636 638 if (!nbt_srv_addr) return NULL; 637 639 … … 646 648 647 649 if (ctx->myaddr2 && ctx->nbtsock_srv) { 648 ctx->nbtsock2 = nbt_name_socket_init(ctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));650 ctx->nbtsock2 = nbt_name_socket_init(ctx, tctx->ev); 649 651 if (!ctx->nbtsock2) return NULL; 650 652 … … 652 654 if (!NT_STATUS_IS_OK(status)) return NULL; 653 655 654 ctx->nbtsock_srv2 = nbt_name_socket_init(ctx, ctx->nbtsock_srv->event_ctx , lp_iconv_convenience(tctx->lp_ctx));656 ctx->nbtsock_srv2 = nbt_name_socket_init(ctx, ctx->nbtsock_srv->event_ctx); 655 657 if (!ctx->nbtsock_srv2) return NULL; 656 658 … … 659 661 ctx->nbtsock_srv->sock->backend_name, 660 662 ctx->myaddr2->addr, 661 lp _nbt_port(tctx->lp_ctx));663 lpcfg_nbt_port(tctx->lp_ctx)); 662 664 if (!nbt_srv_addr) return NULL; 663 665 … … 723 725 NTSTATUS status; 724 726 725 wrepl_socket = wrepl_socket_init(ctx, tctx->ev , lp_iconv_convenience(tctx->lp_ctx));727 wrepl_socket = wrepl_socket_init(ctx, tctx->ev); 726 728 727 729 status = wrepl_connect(wrepl_socket, wrepl_best_ip(tctx->lp_ctx, ctx->address), ctx->address); … … 801 803 names[0].node, 802 804 names[0].is_static); 805 char *expected_scope = NULL; 803 806 CHECK_VALUE(tctx, names[0].name.type, name->name->type); 804 807 CHECK_VALUE_STRING(tctx, names[0].name.name, name->name->name); 805 CHECK_VALUE_STRING(tctx, names[0].name.scope, name->name->scope); 808 809 if (names[0].name.scope) { 810 expected_scope = talloc_strndup(tctx, 811 name->name->scope, 812 237); 813 } 814 CHECK_VALUE_STRING(tctx, names[0].name.scope, expected_scope); 806 815 CHECK_VALUE(tctx, flags, name->flags); 807 816 CHECK_VALUE_UINT64(tctx, names[0].version_id, name->id); … … 1006 1015 } 1007 1016 1017 static char *test_nbt_winsrepl_scope_string(TALLOC_CTX *mem_ctx, uint8_t count) 1018 { 1019 char *res; 1020 uint8_t i; 1021 1022 res = talloc_array(mem_ctx, char, count+1); 1023 if (res == NULL) { 1024 return NULL; 1025 } 1026 1027 for (i=0; i < count; i++) { 1028 res[i] = '0' + (i%10); 1029 } 1030 1031 res[count] = '\0'; 1032 1033 talloc_set_name_const(res, res); 1034 1035 return res; 1036 } 1037 1008 1038 static bool test_conflict_same_owner(struct torture_context *tctx, 1009 1039 struct test_wrepl_conflict_conn *ctx) 1010 1040 { 1011 static bool ret = true; 1012 struct nbt_name name; 1041 bool ret = true; 1013 1042 struct wrepl_wins_name wins_name1; 1014 1043 struct wrepl_wins_name wins_name2; … … 1017 1046 struct wrepl_wins_name *wins_name_cur; 1018 1047 uint32_t i,j; 1019 uint8_t types[] = { 0x00, 0x1C }; 1048 struct nbt_name names[] = { 1049 _NBT_NAME("_SAME_OWNER_A", 0x00, NULL), 1050 _NBT_NAME("_SAME_OWNER_A", 0x00, 1051 test_nbt_winsrepl_scope_string(tctx, 1)), 1052 _NBT_NAME("_SAME_OWNER_A", 0x00, 1053 test_nbt_winsrepl_scope_string(tctx, 2)), 1054 _NBT_NAME("_SAME_OWNER_A", 0x00, 1055 test_nbt_winsrepl_scope_string(tctx, 3)), 1056 _NBT_NAME("_SAME_OWNER_A", 0x00, 1057 test_nbt_winsrepl_scope_string(tctx, 4)), 1058 _NBT_NAME("_SAME_OWNER_A", 0x00, 1059 test_nbt_winsrepl_scope_string(tctx, 5)), 1060 _NBT_NAME("_SAME_OWNER_A", 0x00, 1061 test_nbt_winsrepl_scope_string(tctx, 6)), 1062 _NBT_NAME("_SAME_OWNER_A", 0x00, 1063 test_nbt_winsrepl_scope_string(tctx, 7)), 1064 _NBT_NAME("_SAME_OWNER_A", 0x00, 1065 test_nbt_winsrepl_scope_string(tctx, 8)), 1066 _NBT_NAME("_SAME_OWNER_A", 0x00, 1067 test_nbt_winsrepl_scope_string(tctx, 9)), 1068 _NBT_NAME("_SAME_OWNER_A", 0x00, 1069 test_nbt_winsrepl_scope_string(tctx, 237)), 1070 _NBT_NAME("_SAME_OWNER_A", 0x00, 1071 test_nbt_winsrepl_scope_string(tctx, 238)), 1072 _NBT_NAME("_SAME_OWNER_A", 0x1C, NULL), 1073 }; 1020 1074 struct { 1021 1075 enum wrepl_name_type type; … … 1114 1168 }; 1115 1169 1116 name.name = "_SAME_OWNER_A";1117 name.type = 0;1118 name.scope = NULL;1119 1120 1170 wins_name_tmp = NULL; 1121 1171 wins_name_last = &wins_name2; 1122 1172 wins_name_cur = &wins_name1; 1123 1173 1124 for (j=0; ret && j < ARRAY_SIZE(types); j++) { 1125 name.type = types[j]; 1174 for (j=0; ret && j < ARRAY_SIZE(names); j++) { 1126 1175 torture_comment(tctx, "Test Replica Conflicts with same owner[%s] for %s\n", 1127 nbt_name_string(ctx, &name ), ctx->a.address);1176 nbt_name_string(ctx, &names[j]), ctx->a.address); 1128 1177 1129 1178 for(i=0; ret && i < ARRAY_SIZE(records); i++) { … … 1144 1193 } 1145 1194 1146 wins_name_cur->name = &name ;1195 wins_name_cur->name = &names[j]; 1147 1196 wins_name_cur->flags = WREPL_NAME_FLAGS(records[i].type, 1148 1197 records[i].state, … … 1152 1201 if (wins_name_cur->flags & 2) { 1153 1202 wins_name_cur->addresses.addresses.num_ips = records[i].num_ips; 1154 wins_name_cur->addresses.addresses.ips = discard_const(records[i].ips); 1203 wins_name_cur->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 1204 records[i].ips); 1155 1205 } else { 1156 1206 wins_name_cur->addresses.ip = records[i].ips[0].ip; … … 4835 4885 if (wins_name_r1->flags & 2) { 4836 4886 wins_name_r1->addresses.addresses.num_ips = records[i].r1.num_ips; 4837 wins_name_r1->addresses.addresses.ips = discard_const(records[i].r1.ips); 4887 wins_name_r1->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 4888 records[i].r1.ips); 4838 4889 } else { 4839 4890 wins_name_r1->addresses.ip = records[i].r1.ips[0].ip; … … 4857 4908 if (wins_name_r2->flags & 2) { 4858 4909 wins_name_r2->addresses.addresses.num_ips = records[i].r2.num_ips; 4859 wins_name_r2->addresses.addresses.ips = discard_const(records[i].r2.ips); 4910 wins_name_r2->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 4911 records[i].r2.ips); 4860 4912 } else { 4861 4913 wins_name_r2->addresses.ip = records[i].r2.ips[0].ip; … … 4934 4986 wins_name_r2->id = ++records[i].r2.owner->max_version; 4935 4987 wins_name_r2->addresses.addresses.num_ips = ARRAY_SIZE(addresses_B_1); 4936 wins_name_r2->addresses.addresses.ips = discard_const(addresses_B_1); 4988 wins_name_r2->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 4989 addresses_B_1); 4937 4990 wins_name_r2->unknown = "255.255.255.255"; 4938 4991 ret &= test_wrepl_update_one(tctx, ctx, records[i].r2.owner, wins_name_r2); … … 4946 4999 wins_name_r2->id = ++records[i].r2.owner->max_version; 4947 5000 wins_name_r2->addresses.addresses.num_ips = ARRAY_SIZE(addresses_B_1); 4948 wins_name_r2->addresses.addresses.ips = discard_const(addresses_B_1); 5001 wins_name_r2->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 5002 addresses_B_1); 4949 5003 wins_name_r2->unknown = "255.255.255.255"; 4950 5004 ret &= test_wrepl_update_one(tctx, ctx, records[i].r2.owner, wins_name_r2); … … 6534 6588 name_register->in.name = records[i].name; 6535 6589 name_register->in.dest_addr = ctx->address; 6536 name_register->in.dest_port = lp _nbt_port(tctx->lp_ctx);6590 name_register->in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 6537 6591 name_register->in.address = records[i].wins.ips[0].ip; 6538 6592 name_register->in.nb_flags = records[i].wins.nb_flags; … … 6563 6617 /* release the record */ 6564 6618 release->in.name = records[i].name; 6565 release->in.dest_port = lp _nbt_port(tctx->lp_ctx);6619 release->in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 6566 6620 release->in.dest_addr = ctx->address; 6567 6621 release->in.address = records[i].wins.ips[0].ip; … … 6594 6648 if (wins_name->flags & 2) { 6595 6649 wins_name->addresses.addresses.num_ips = records[i].replica.num_ips; 6596 wins_name->addresses.addresses.ips = discard_const(records[i].replica.ips); 6650 wins_name->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 6651 records[i].replica.ips); 6597 6652 } else { 6598 6653 wins_name->addresses.ip = records[i].replica.ips[0].ip; … … 6618 6673 release->in.name = records[i].name; 6619 6674 release->in.dest_addr = ctx->address; 6620 release->in.dest_port = lp _nbt_port(tctx->lp_ctx);6675 release->in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 6621 6676 release->in.address = records[i].wins.ips[0].ip; 6622 6677 release->in.nb_flags = records[i].wins.nb_flags; … … 9159 9214 if (!ctx->nbtsock_srv) { 9160 9215 torture_comment(tctx, "SKIP: Test Replica records vs. owned active records: not bound to port[%d]\n", 9161 lp _nbt_port(tctx->lp_ctx));9216 lpcfg_nbt_port(tctx->lp_ctx)); 9162 9217 return true; 9163 9218 } … … 9221 9276 name_register->in.name = records[i].name; 9222 9277 name_register->in.dest_addr = ctx->address; 9223 name_register->in.dest_port = lp _nbt_port(tctx->lp_ctx);9278 name_register->in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 9224 9279 name_register->in.address = records[i].wins.ips[j].ip; 9225 9280 name_register->in.nb_flags = records[i].wins.nb_flags; … … 9291 9346 if (wins_name->flags & 2) { 9292 9347 wins_name->addresses.addresses.num_ips = records[i].replica.num_ips; 9293 wins_name->addresses.addresses.ips = discard_const(records[i].replica.ips); 9348 wins_name->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 9349 records[i].replica.ips); 9294 9350 } else { 9295 9351 wins_name->addresses.ip = records[i].replica.ips[0].ip; … … 9367 9423 release->in.name = records[i].name; 9368 9424 release->in.dest_addr = ctx->address; 9369 release->in.dest_port = lp _nbt_port(tctx->lp_ctx);9425 release->in.dest_port = lpcfg_nbt_port(tctx->lp_ctx); 9370 9426 release->in.address = records[i].wins.ips[j].ip; 9371 9427 release->in.nb_flags = records[i].wins.nb_flags; … … 9406 9462 wins_name->id = ++ctx->b.max_version; 9407 9463 wins_name->addresses.addresses.num_ips = ARRAY_SIZE(addresses_B_1); 9408 wins_name->addresses.addresses.ips = discard_const(addresses_B_1); 9464 wins_name->addresses.addresses.ips = discard_const_p(struct wrepl_ip, 9465 addresses_B_1); 9409 9466 wins_name->unknown = "255.255.255.255"; 9410 9467 ret &= test_wrepl_update_one(tctx, ctx, &ctx->b, wins_name); … … 9498 9555 9499 9556 /* send a positive reply */ 9500 rep_packet->operation = 9501 NBT_FLAG_REPLY | 9502 NBT_OPCODE_QUERY | 9503 NBT_FLAG_AUTHORIT IVE |9557 rep_packet->operation = 9558 NBT_FLAG_REPLY | 9559 NBT_OPCODE_QUERY | 9560 NBT_FLAG_AUTHORITATIVE | 9504 9561 NBT_FLAG_RECURSION_DESIRED | 9505 9562 NBT_FLAG_RECURSION_AVAIL; … … 9523 9580 /* send a negative reply */ 9524 9581 rep_packet->operation = 9525 NBT_FLAG_REPLY | 9526 NBT_OPCODE_QUERY | 9527 NBT_FLAG_AUTHORIT IVE |9582 NBT_FLAG_REPLY | 9583 NBT_OPCODE_QUERY | 9584 NBT_FLAG_AUTHORITATIVE | 9528 9585 NBT_RCODE_NAM; 9529 9586 … … 9543 9600 event_loop_once(nbtsock->event_ctx); 9544 9601 } 9545 msleep(1000);9602 smb_msleep(1000); 9546 9603 9547 9604 rec->defend.timeout = 0; … … 9576 9633 rep_packet->name_trn_id = req_packet->name_trn_id; 9577 9634 rep_packet->ancount = 1; 9578 rep_packet->operation = 9579 NBT_FLAG_REPLY | 9635 rep_packet->operation = 9636 NBT_FLAG_REPLY | 9580 9637 NBT_OPCODE_RELEASE | 9581 NBT_FLAG_AUTHORIT IVE;9638 NBT_FLAG_AUTHORITATIVE; 9582 9639 9583 9640 rep_packet->answers = talloc_array(rep_packet, struct nbt_res_rec, 1); … … 9600 9657 event_loop_once(nbtsock->event_ctx); 9601 9658 } 9602 msleep(1000);9659 smb_msleep(1000); 9603 9660 9604 9661 rec->defend.timeout = 0; … … 9683 9740 { 9684 9741 struct torture_suite *suite = torture_suite_create( 9685 mem_ctx, " WINSREPLICATION");9742 mem_ctx, "winsreplication"); 9686 9743 struct torture_tcase *tcase; 9687 9744 … … 9690 9747 tcase->tests->dangerous = true; 9691 9748 9692 torture_suite_add_simple_test(suite, "assoc_ctx2", 9693 test_assoc_ctx2); 9749 torture_suite_add_simple_test(suite, "assoc_ctx2", test_assoc_ctx2); 9694 9750 9695 9751 torture_suite_add_simple_test(suite, "wins_replication",
Note:
See TracChangeset
for help on using the changeset viewer.