X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=net%2Ftipc%2Fnode_subscr.c;h=8ecbd0fb6103442712626899ee59edc6470ee0e2;hb=6feeb8aad7925b4c00f785eac3039c772629b42f;hp=f271b61ecc2ee1a246fc064c1c99d551f4a73946;hpb=9da1c8b694f8e72a16f259614caaae50cbcdaf10;p=safe%2Fjmp%2Flinux-2.6 diff --git a/net/tipc/node_subscr.c b/net/tipc/node_subscr.c index f271b61..8ecbd0f 100644 --- a/net/tipc/node_subscr.c +++ b/net/tipc/node_subscr.c @@ -1,7 +1,7 @@ /* * net/tipc/node_subscr.c: TIPC "node down" subscription handling - * - * Copyright (c) 2003-2006, Ericsson AB + * + * Copyright (c) 1995-2006, Ericsson AB * Copyright (c) 2005, Wind River Systems * All rights reserved. * @@ -41,39 +41,40 @@ #include "addr.h" /** - * nodesub_subscribe - create "node down" subscription for specified node + * tipc_nodesub_subscribe - create "node down" subscription for specified node */ -void nodesub_subscribe(struct node_subscr *node_sub, u32 addr, +void tipc_nodesub_subscribe(struct node_subscr *node_sub, u32 addr, void *usr_handle, net_ev_handler handle_down) { - node_sub->node = 0; - if (addr == tipc_own_addr) - return; - if (!addr_node_valid(addr)) { - warn("node_subscr with illegal %x\n", addr); + if (addr == tipc_own_addr) { + node_sub->node = NULL; return; } + node_sub->node = tipc_node_find(addr); + if (!node_sub->node) { + warn("Node subscription rejected, unknown node 0x%x\n", addr); + return; + } node_sub->handle_node_down = handle_down; node_sub->usr_handle = usr_handle; - node_sub->node = node_find(addr); - assert(node_sub->node); - node_lock(node_sub->node); + + tipc_node_lock(node_sub->node); list_add_tail(&node_sub->nodesub_list, &node_sub->node->nsub); - node_unlock(node_sub->node); + tipc_node_unlock(node_sub->node); } /** - * nodesub_unsubscribe - cancel "node down" subscription (if any) + * tipc_nodesub_unsubscribe - cancel "node down" subscription (if any) */ -void nodesub_unsubscribe(struct node_subscr *node_sub) +void tipc_nodesub_unsubscribe(struct node_subscr *node_sub) { if (!node_sub->node) return; - node_lock(node_sub->node); + tipc_node_lock(node_sub->node); list_del_init(&node_sub->nodesub_list); - node_unlock(node_sub->node); + tipc_node_unlock(node_sub->node); }