STRUCT TIPC_NODE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct tipc_node(9) πŸ’–

okay so bestie, this is a page from the Kernel API Manual and it's all about struct tipc_node β€” the TIPC node structure. it's literally the main character of TIPC's node bookkeeping, and we're gonna go through every single field together, no skipping, no cap. 🫢


✨ NAME ✨

struct tipc_node β€” the TIPC node structure. that's it, that's the vibe check. πŸ‘‘


🌸 SYNOPSIS 🌸

here's the whole struct, character for character, don't touch anything:

struct tipc_node {
    u32 addr;
    struct kref kref;
    rwlock_t lock;
    struct net *net;
    struct hlist_node hash;
    int active_links[2];
    struct tipc_link_entry links[MAX_BEARERS];
    struct tipc_bclink_entry bc_entry;
    int action_flags;
    struct list_head list;
    int state;
    bool preliminary;
    bool failover_sent;
    u16 sync_point;
    int link_cnt;
    u16 working_links;
    u16 capabilities;
    u32 signature;
    u32 link_id;
    u8 peer_id[16];
    char peer_id_string[NODE_ID_STR_LEN];
    struct list_head publ_list;
    struct list_head conn_sks;
    unsigned long keepalive_intv;
    struct timer_list timer;
    struct rcu_head rcu;
    unsigned long delete_at;
    struct net *peer_net;
    u32 peer_hash_mix;
  #ifdef CONFIG_TIPC_CRYPTO;
    struct tipc_crypto *crypto_rx;
  #endif;
 };

yes the #ifdef line has semicolons on it. that's how it is in the source. we don't question it, we respect it. πŸ’…


πŸŽ€ Members πŸŽ€

okay this is the part where we go through every single field one by one, and yes we're doing all of them:

  • addr β€” the network address of the node. its lil address, basically.
  • kref β€” reference counter to the node object. keeps track of who's still holding onto it.
  • lock β€” an rwlock_t that governs access to the structure. respect the lock bestie.
  • net β€” the applicable net namespace. the world it lives in.
  • hash β€” links to adjacent nodes in the unsorted hash chain.
  • active_links β€” the bearer ids of the active links, used as an index into the links[] array. iconique indexing behaviour.
  • links β€” array containing references to all the links to this node.
  • bc_entry β€” the broadcast link entry.
  • action_flags β€” a bit mask of the different types of node actions.
  • list β€” links to adjacent nodes in the sorted list of the cluster's nodes.
  • state β€” connectivity state vs the peer node.
  • preliminary β€” whether it's a preliminary node or not.
  • failover_sent β€” whether failover was sent or not.
  • sync_point β€” the sequence number where synch/failover is finished.
  • link_cnt β€” number of links to the node.
  • working_links β€” number of working links to the node (both active and standby). both!! πŸ’–
  • capabilities β€” a bitmap indicating the peer node's functional capabilities. it's giving rΓ©sumΓ©.
  • signature β€” the node instance identifier.
  • link_id β€” the local and remote bearer ids of the changing link, if any.
  • peer_id β€” the 128-bit ID of the peer.
  • peer_id_string β€” the ID string of the peer. the ✨aesthetic✨ version.
  • publ_list β€” list of publications.
  • conn_sks β€” list of connections (FIXME). yeah. FIXME. that's what the source says, we're just the messenger. πŸ™ˆ
  • keepalive_intv β€” the keepalive interval in milliseconds.
  • timer β€” the node's keepalive timer.
  • rcu β€” the rcu struct for tipc_node.
  • delete_at β€” indicates the time for deleting a down node.
  • peer_net β€” the peer's net namespace. its own little world πŸ¦‹
  • peer_hash_mix β€” hash for this peer (FIXME). another FIXME ngl. author left us notes and we honor them fr fr.
  • crypto_rx β€” the RX crypto handler. only around when CONFIG_TIPC_CRYPTO is defined, obviously.

🌈 SEE ALSO 🌈

go read these, they're all in the kernel file ./net/tipc/node.c, and every single one is listed here so you don't miss a thing:

tipc_node_crypto_rx(9), __tipc_node_link_up(9), tipc_node_link_up(9), tipc_node_link_failover(9), __tipc_node_link_down(9), tipc_node_get_linkname(9), tipc_node_xmit(9), tipc_node_bc_rcv(9), tipc_node_check_state(9), tipc_rcv(9), tipc_node_dump(9)


ok that's the whole page bestie, every field accounted for, nothing dropped, we ate and left no crumbs πŸ’…βœ¨

and that's a wrap on the struct tipc_node(9) page from the Kernel API Manual, brought to you by the fine folks over at ./net/tipc, dated October 2026. mwah πŸ’– πŸŽ€ 🌸

πŸ“¦ where this page comes from