diff options
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r-- | net/tipc/node.c | 59 |
1 files changed, 14 insertions, 45 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index c20bd851a44a..8ffbdb33b2cb 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c | |||
@@ -333,8 +333,6 @@ static void node_established_contact(struct tipc_node *n_ptr) | |||
333 | /* Syncronize broadcast acks */ | 333 | /* Syncronize broadcast acks */ |
334 | n_ptr->bclink.acked = tipc_bclink_get_last_sent(); | 334 | n_ptr->bclink.acked = tipc_bclink_get_last_sent(); |
335 | 335 | ||
336 | if (is_slave(tipc_own_addr)) | ||
337 | return; | ||
338 | if (!in_own_cluster(n_ptr->addr)) { | 336 | if (!in_own_cluster(n_ptr->addr)) { |
339 | /* Usage case 1 (see above) */ | 337 | /* Usage case 1 (see above) */ |
340 | c_ptr = tipc_cltr_find(tipc_own_addr); | 338 | c_ptr = tipc_cltr_find(tipc_own_addr); |
@@ -347,13 +345,6 @@ static void node_established_contact(struct tipc_node *n_ptr) | |||
347 | } | 345 | } |
348 | 346 | ||
349 | c_ptr = n_ptr->owner; | 347 | c_ptr = n_ptr->owner; |
350 | if (is_slave(n_ptr->addr)) { | ||
351 | /* Usage case 2 (see above) */ | ||
352 | tipc_cltr_bcast_new_route(c_ptr, n_ptr->addr, 1, tipc_max_nodes); | ||
353 | tipc_cltr_send_local_routes(c_ptr, n_ptr->addr); | ||
354 | return; | ||
355 | } | ||
356 | |||
357 | if (n_ptr->bclink.supported) { | 348 | if (n_ptr->bclink.supported) { |
358 | tipc_nmap_add(&tipc_cltr_bcast_nodes, n_ptr->addr); | 349 | tipc_nmap_add(&tipc_cltr_bcast_nodes, n_ptr->addr); |
359 | if (n_ptr->addr < tipc_own_addr) | 350 | if (n_ptr->addr < tipc_own_addr) |
@@ -362,9 +353,6 @@ static void node_established_contact(struct tipc_node *n_ptr) | |||
362 | 353 | ||
363 | /* Case 3 (see above) */ | 354 | /* Case 3 (see above) */ |
364 | tipc_net_send_external_routes(n_ptr->addr); | 355 | tipc_net_send_external_routes(n_ptr->addr); |
365 | tipc_cltr_send_slave_routes(c_ptr, n_ptr->addr); | ||
366 | tipc_cltr_bcast_new_route(c_ptr, n_ptr->addr, LOWEST_SLAVE, | ||
367 | tipc_highest_allowed_slave); | ||
368 | } | 356 | } |
369 | 357 | ||
370 | static void node_cleanup_finished(unsigned long node_addr) | 358 | static void node_cleanup_finished(unsigned long node_addr) |
@@ -404,33 +392,20 @@ static void node_lost_contact(struct tipc_node *n_ptr) | |||
404 | } | 392 | } |
405 | 393 | ||
406 | /* Update routing tables */ | 394 | /* Update routing tables */ |
407 | if (is_slave(tipc_own_addr)) { | 395 | if (!in_own_cluster(n_ptr->addr)) { |
408 | tipc_net_remove_as_router(n_ptr->addr); | 396 | /* Case 4 (see above) */ |
397 | c_ptr = tipc_cltr_find(tipc_own_addr); | ||
398 | tipc_cltr_bcast_lost_route(c_ptr, n_ptr->addr, 1, | ||
399 | tipc_max_nodes); | ||
409 | } else { | 400 | } else { |
410 | if (!in_own_cluster(n_ptr->addr)) { | 401 | /* Case 5 (see above) */ |
411 | /* Case 4 (see above) */ | 402 | c_ptr = tipc_cltr_find(n_ptr->addr); |
412 | c_ptr = tipc_cltr_find(tipc_own_addr); | 403 | if (n_ptr->bclink.supported) { |
413 | tipc_cltr_bcast_lost_route(c_ptr, n_ptr->addr, 1, | 404 | tipc_nmap_remove(&tipc_cltr_bcast_nodes, n_ptr->addr); |
414 | tipc_max_nodes); | 405 | if (n_ptr->addr < tipc_own_addr) |
415 | } else { | 406 | tipc_own_tag--; |
416 | /* Case 5 (see above) */ | ||
417 | c_ptr = tipc_cltr_find(n_ptr->addr); | ||
418 | if (is_slave(n_ptr->addr)) { | ||
419 | tipc_cltr_bcast_lost_route(c_ptr, n_ptr->addr, 1, | ||
420 | tipc_max_nodes); | ||
421 | } else { | ||
422 | if (n_ptr->bclink.supported) { | ||
423 | tipc_nmap_remove(&tipc_cltr_bcast_nodes, | ||
424 | n_ptr->addr); | ||
425 | if (n_ptr->addr < tipc_own_addr) | ||
426 | tipc_own_tag--; | ||
427 | } | ||
428 | tipc_net_remove_as_router(n_ptr->addr); | ||
429 | tipc_cltr_bcast_lost_route(c_ptr, n_ptr->addr, | ||
430 | LOWEST_SLAVE, | ||
431 | tipc_highest_allowed_slave); | ||
432 | } | ||
433 | } | 407 | } |
408 | tipc_net_remove_as_router(n_ptr->addr); | ||
434 | } | 409 | } |
435 | if (tipc_node_has_active_routes(n_ptr)) | 410 | if (tipc_node_has_active_routes(n_ptr)) |
436 | return; | 411 | return; |
@@ -482,7 +457,7 @@ struct tipc_node *tipc_node_select_next_hop(u32 addr, u32 selector) | |||
482 | return n_ptr; | 457 | return n_ptr; |
483 | 458 | ||
484 | /* Cluster local system nodes *must* have direct links */ | 459 | /* Cluster local system nodes *must* have direct links */ |
485 | if (!is_slave(addr) && in_own_cluster(addr)) | 460 | if (in_own_cluster(addr)) |
486 | return NULL; | 461 | return NULL; |
487 | 462 | ||
488 | /* Look for cluster local router with direct link to node */ | 463 | /* Look for cluster local router with direct link to node */ |
@@ -490,11 +465,6 @@ struct tipc_node *tipc_node_select_next_hop(u32 addr, u32 selector) | |||
490 | if (router_addr) | 465 | if (router_addr) |
491 | return tipc_node_select(router_addr, selector); | 466 | return tipc_node_select(router_addr, selector); |
492 | 467 | ||
493 | /* Slave nodes can only be accessed within own cluster via a | ||
494 | known router with direct link -- if no router was found,give up */ | ||
495 | if (is_slave(addr)) | ||
496 | return NULL; | ||
497 | |||
498 | /* Inter zone/cluster -- find any direct link to remote cluster */ | 468 | /* Inter zone/cluster -- find any direct link to remote cluster */ |
499 | addr = tipc_addr(tipc_zone(addr), tipc_cluster(addr), 0); | 469 | addr = tipc_addr(tipc_zone(addr), tipc_cluster(addr), 0); |
500 | n_ptr = tipc_net_select_remote_node(addr, selector); | 470 | n_ptr = tipc_net_select_remote_node(addr, selector); |
@@ -603,8 +573,7 @@ struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space) | |||
603 | return tipc_cfg_reply_none(); | 573 | return tipc_cfg_reply_none(); |
604 | } | 574 | } |
605 | 575 | ||
606 | /* For now, get space for all other nodes | 576 | /* For now, get space for all other nodes */ |
607 | (will need to modify this when slave nodes are supported */ | ||
608 | 577 | ||
609 | payload_size = TLV_SPACE(sizeof(node_info)) * (tipc_max_nodes - 1); | 578 | payload_size = TLV_SPACE(sizeof(node_info)) * (tipc_max_nodes - 1); |
610 | if (payload_size > 32768u) { | 579 | if (payload_size > 32768u) { |