/*
* 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.
*
#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 tipc_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 tipc_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);
}