Lines Matching refs:node

180 static void tipc_node_delete(struct tipc_node *node);
186 static void tipc_node_delete_from_list(struct tipc_node *node);
264 u32 tipc_node_get_addr(struct tipc_node *node) in tipc_node_get_addr() argument
266 return (node) ? node->addr : 0; in tipc_node_get_addr()
269 char *tipc_node_get_id_str(struct tipc_node *node) in tipc_node_get_id_str() argument
271 return node->peer_id_string; in tipc_node_get_id_str()
317 void tipc_node_put(struct tipc_node *node) in tipc_node_put() argument
319 kref_put(&node->kref, tipc_node_kref_release); in tipc_node_put()
322 void tipc_node_get(struct tipc_node *node) in tipc_node_get() argument
324 kref_get(&node->kref); in tipc_node_get()
333 struct tipc_node *node; in tipc_node_find() local
337 hlist_for_each_entry_rcu(node, &tn->node_htable[thash], hash) { in tipc_node_find()
338 if (node->addr != addr || node->preliminary) in tipc_node_find()
340 if (!kref_get_unless_zero(&node->kref)) in tipc_node_find()
341 node = NULL; in tipc_node_find()
345 return node; in tipc_node_find()
404 u32 bearer_id, node; in tipc_node_write_unlock() local
414 sk.node = tipc_own_addr(net); in tipc_node_write_unlock()
415 node = n->addr; in tipc_node_write_unlock()
425 tipc_publ_notify(net, publ_list, node, n->capabilities); in tipc_node_write_unlock()
428 tipc_named_node_up(net, node, n->capabilities); in tipc_node_write_unlock()
431 tipc_mon_peer_up(net, node, bearer_id); in tipc_node_write_unlock()
435 tipc_mon_peer_down(net, node, bearer_id); in tipc_node_write_unlock()
626 static void tipc_node_delete_from_list(struct tipc_node *node) in tipc_node_delete_from_list() argument
629 tipc_crypto_key_flush(node->crypto_rx); in tipc_node_delete_from_list()
631 list_del_rcu(&node->list); in tipc_node_delete_from_list()
632 hlist_del_rcu(&node->hash); in tipc_node_delete_from_list()
633 tipc_node_put(node); in tipc_node_delete_from_list()
636 static void tipc_node_delete(struct tipc_node *node) in tipc_node_delete() argument
638 trace_tipc_node_delete(node, true, " "); in tipc_node_delete()
639 tipc_node_delete_from_list(node); in tipc_node_delete()
641 timer_delete_sync(&node->timer); in tipc_node_delete()
642 tipc_node_put(node); in tipc_node_delete()
648 struct tipc_node *node, *t_node; in tipc_node_stop() local
651 list_for_each_entry_safe(node, t_node, &tn->node_list, list) in tipc_node_stop()
652 tipc_node_delete(node); in tipc_node_stop()
694 struct tipc_node *node; in tipc_node_add_conn() local
701 node = tipc_node_find(net, dnode); in tipc_node_add_conn()
702 if (!node) { in tipc_node_add_conn()
715 tipc_node_write_lock(node); in tipc_node_add_conn()
716 list_add_tail(&conn->list, &node->conn_sks); in tipc_node_add_conn()
717 tipc_node_write_unlock(node); in tipc_node_add_conn()
719 tipc_node_put(node); in tipc_node_add_conn()
725 struct tipc_node *node; in tipc_node_remove_conn() local
731 node = tipc_node_find(net, dnode); in tipc_node_remove_conn()
732 if (!node) in tipc_node_remove_conn()
735 tipc_node_write_lock(node); in tipc_node_remove_conn()
736 list_for_each_entry_safe(conn, safe, &node->conn_sks, list) { in tipc_node_remove_conn()
742 tipc_node_write_unlock(node); in tipc_node_remove_conn()
743 tipc_node_put(node); in tipc_node_remove_conn()
746 static void tipc_node_clear_links(struct tipc_node *node) in tipc_node_clear_links() argument
751 struct tipc_link_entry *le = &node->links[i]; in tipc_node_clear_links()
756 node->link_cnt--; in tipc_node_clear_links()
1573 struct tipc_node *node = tipc_node_find(net, addr); in tipc_node_get_linkname() local
1575 if (!node) in tipc_node_get_linkname()
1581 tipc_node_read_lock(node); in tipc_node_get_linkname()
1582 link = node->links[bearer_id].link; in tipc_node_get_linkname()
1587 tipc_node_read_unlock(node); in tipc_node_get_linkname()
1589 tipc_node_put(node); in tipc_node_get_linkname()
1594 static int __tipc_nl_add_node(struct tipc_nl_msg *msg, struct tipc_node *node) in __tipc_nl_add_node() argument
1608 if (nla_put_u32(msg->skb, TIPC_NLA_NODE_ADDR, node->addr)) in __tipc_nl_add_node()
1610 if (node_is_up(node)) in __tipc_nl_add_node()
2321 struct tipc_node *node; in tipc_nl_node_dump() local
2333 node = tipc_node_find(net, last_addr); in tipc_nl_node_dump()
2334 if (!node) { in tipc_nl_node_dump()
2346 tipc_node_put(node); in tipc_nl_node_dump()
2349 list_for_each_entry_rcu(node, &tn->node_list, list) { in tipc_nl_node_dump()
2350 if (node->preliminary) in tipc_nl_node_dump()
2353 if (node->addr == last_addr) in tipc_nl_node_dump()
2359 tipc_node_read_lock(node); in tipc_nl_node_dump()
2360 err = __tipc_nl_add_node(&msg, node); in tipc_nl_node_dump()
2362 last_addr = node->addr; in tipc_nl_node_dump()
2363 tipc_node_read_unlock(node); in tipc_nl_node_dump()
2367 tipc_node_read_unlock(node); in tipc_nl_node_dump()
2423 struct tipc_node *node; in tipc_nl_node_set_link() local
2447 node = tipc_node_find_by_name(net, name, &bearer_id); in tipc_nl_node_set_link()
2448 if (!node) in tipc_nl_node_set_link()
2451 tipc_node_read_lock(node); in tipc_nl_node_set_link()
2453 link = node->links[bearer_id].link; in tipc_nl_node_set_link()
2491 tipc_node_read_unlock(node); in tipc_nl_node_set_link()
2492 tipc_bearer_xmit(net, bearer_id, &xmitq, &node->links[bearer_id].maddr, in tipc_nl_node_set_link()
2532 struct tipc_node *node; in tipc_nl_node_get_link() local
2535 node = tipc_node_find_by_name(net, name, &bearer_id); in tipc_nl_node_get_link()
2536 if (!node) { in tipc_nl_node_get_link()
2541 tipc_node_read_lock(node); in tipc_nl_node_get_link()
2542 link = node->links[bearer_id].link; in tipc_nl_node_get_link()
2544 tipc_node_read_unlock(node); in tipc_nl_node_get_link()
2550 tipc_node_read_unlock(node); in tipc_nl_node_get_link()
2568 struct tipc_node *node; in tipc_nl_node_reset_link_stats() local
2596 list_for_each_entry_rcu(node, &tn->node_list, list) { in tipc_nl_node_reset_link_stats()
2597 tipc_node_read_lock(node); in tipc_nl_node_reset_link_stats()
2598 link = node->bc_entry.link; in tipc_nl_node_reset_link_stats()
2601 tipc_node_read_unlock(node); in tipc_nl_node_reset_link_stats()
2604 tipc_node_read_unlock(node); in tipc_nl_node_reset_link_stats()
2610 node = tipc_node_find_by_name(net, link_name, &bearer_id); in tipc_nl_node_reset_link_stats()
2611 if (!node) in tipc_nl_node_reset_link_stats()
2614 le = &node->links[bearer_id]; in tipc_nl_node_reset_link_stats()
2615 tipc_node_read_lock(node); in tipc_nl_node_reset_link_stats()
2617 link = node->links[bearer_id].link; in tipc_nl_node_reset_link_stats()
2620 tipc_node_read_unlock(node); in tipc_nl_node_reset_link_stats()
2625 tipc_node_read_unlock(node); in tipc_nl_node_reset_link_stats()
2631 struct tipc_node *node, u32 *prev_link, in __tipc_nl_add_node_links() argument
2640 if (!node->links[i].link) in __tipc_nl_add_node_links()
2644 node->links[i].link, NLM_F_MULTI); in __tipc_nl_add_node_links()
2651 err = tipc_nl_add_bc_link(net, msg, node->bc_entry.link); in __tipc_nl_add_node_links()
2667 struct tipc_node *node; in tipc_nl_node_dump_link() local
2700 node = tipc_node_find(net, prev_node); in tipc_nl_node_dump_link()
2701 if (!node) { in tipc_nl_node_dump_link()
2711 tipc_node_put(node); in tipc_nl_node_dump_link()
2713 list_for_each_entry_continue_rcu(node, &tn->node_list, in tipc_nl_node_dump_link()
2715 tipc_node_read_lock(node); in tipc_nl_node_dump_link()
2716 err = __tipc_nl_add_node_links(net, &msg, node, in tipc_nl_node_dump_link()
2718 tipc_node_read_unlock(node); in tipc_nl_node_dump_link()
2722 prev_node = node->addr; in tipc_nl_node_dump_link()
2729 list_for_each_entry_rcu(node, &tn->node_list, list) { in tipc_nl_node_dump_link()
2730 tipc_node_read_lock(node); in tipc_nl_node_dump_link()
2731 err = __tipc_nl_add_node_links(net, &msg, node, in tipc_nl_node_dump_link()
2733 tipc_node_read_unlock(node); in tipc_nl_node_dump_link()
2737 prev_node = node->addr; in tipc_nl_node_dump_link()