STRUCT TIPC_SOCK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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

okay so bestie, this is the struct tipc_sock page from the Kernel API Manual, and it's literally the TIPC socket structure, no cap. it's giving kernel internals realness 🧚✨


🌸 NAME 🌸

struct tipc_sock β€” TIPC socket structure, periodt. πŸ’…


✨ SYNOPSIS ✨

struct tipc_sock {
    struct sock sk;
    u32 max_pkt;
    u32 maxnagle;
    u32 portid;
    struct tipc_msg phdr;
    struct list_head cong_links;
    struct list_head publications;
    u32 pub_count;
    atomic_t dupl_rcvcnt;
    u16 conn_timeout;
    bool probe_unacked;
    u16 cong_link_cnt;
    u16 snt_unacked;
    u16 snd_win;
    u16 peer_caps;
    u16 rcv_unacked;
    u16 rcv_win;
    struct sockaddr_tipc peer;
    struct rhash_head node;
    struct tipc_mc_method mc_method;
    struct rcu_head rcu;
    struct tipc_group *group;
    u32 oneway;
    u32 nagle_start;
    u16 snd_backlog;
    u16 msg_acc;
    u16 pkt_cnt;
    bool expect_ack;
    bool nodelay;
    bool group_is_open;
    bool published;
    u8 conn_addrtype;
};

πŸ‘― MEMBERS πŸ‘―

okay so here's the whole cast of characters, each one doing its thing:

  • sk β€” socket β€” interacts with 'port' and with user via the socket API. bestie it's the main character socket fr.
  • max_pkt β€” maximum packet size "hint" used when building messages sent by port. it's literally called a hint, so don't treat it like a promise, iykyk πŸŽ€
  • maxnagle β€” maximum size of msg which can be subject to nagle. nagle is that vibe where we batch small messages, lowkey iconic.
  • portid β€” unique port identity in TIPC socket hash table. it's the port's government name πŸ’…
  • phdr β€” preformatted message header used when sending messages. pre-formatted, so you don't have to, slay.
  • cong_links β€” list of congested links. all the links that are lowkey struggling 😭
  • publications β€” list of publications for port. the port's whole press tour, basically.
  • pub_count β€” total # of publications port has made during its lifetime. how many times it's been published, fr fr.
  • dupl_rcvcnt β€” number of bytes counted twice, in both backlog and rcv queue. double-counted bytes, not me making that mistake tho πŸ’€
  • conn_timeout β€” the time we can wait for an unresponded setup request. how long we wait before we're like "hello??" ⏳
  • probe_unacked β€” probe has not received ack yet. it's still waiting, poor thing πŸ₯Ί
  • cong_link_cnt β€” number of congested links. the count of links that are congested, obviously.
  • snt_unacked β€” # messages sent by socket, and not yet acked by peer. sent but not acked, the group chat left on read energy 😭
  • snd_win β€” send window size. how big the send window is, periodt.
  • peer_caps β€” peer capabilities mask. the peer's whole skill set, masked.
  • rcv_unacked β€” # messages read by user, but not yet acked back to peer. user read it but didn't reply, we've all been there πŸ’…
  • rcv_win β€” receive window size. the receive window, bestie.
  • peer β€” (no description in the original, it's just there, a mystery πŸ•΅οΈβ™€οΈ)
  • node β€” hash table node. it's the node in the hash table, slay.
  • mc_method β€” cookie for use between socket and broadcast layer. a literal cookie, not the edible kind (unfortunately) πŸͺ
  • rcu β€” rcu struct for tipc_sock. rcu stuff, very kernel core.
  • group β€” TIPC communications group. the group chat, but TIPC.
  • oneway β€” message count in one direction (FIXME). FIXME note is part of the lore, keep it.
  • nagle_start β€” current nagle value. the nagle value right now.
  • snd_backlog β€” send backlog count. how much send backlog there is.
  • msg_acc β€” messages accepted; used in managing backlog and nagle. accepted messages, doing double duty for backlog and nagle.
  • pkt_cnt β€” TIPC socket packet count. counting packets like it's going out of style.
  • expect_ack β€” whether this TIPC socket is expecting an ack. it's giving anxious attachment, waiting for that ack 😭
  • nodelay β€” setsockopt TIPC_NODELAY setting. the TIPC_NODELAY setsockopt setting, no delay bestie.
  • group_is_open β€” TIPC socket group is fully open (FIXME). fully open group, with a FIXME because kernel code is never finished.
  • published β€” true if port has one or more associated names. true or false, and it's true if the port has one or more associated names, periodt.
  • conn_addrtype β€” address type used when establishing connection. the address type used when establishing a connection, that's the tea.

πŸ”— SEE ALSO πŸ”—

kernel file ./net/tipc/socket.c, plus these legends: tsk_advance_rx_queue(9), tsk_rej_rx_queue(9), tipc_sk_create(9), tipc_release(9), __tipc_bind(9), tipc_getname(9), tipc_poll(9), tipc_sendmcast(9), tipc_send_group_msg(9), tipc_send_group_unicast(9), tipc_send_group_anycast(9), tipc_send_group_bcast(9), tipc_send_group_mcast(9), tipc_sk_mcast_rcv(9), tipc_sk_conn_proto_rcv(9), tipc_sendmsg(9), tipc_sendstream(9), tipc_send_packet(9), tipc_sk_set_orig_addr(9), tipc_sk_anc_data_recv(9), tipc_recvmsg(9), tipc_recvstream(9), tipc_write_space(9), tipc_data_ready(9), tipc_sk_filter_connect(9), rcvbuf_limit(9), tipc_sk_filter_rcv(9), tipc_sk_backlog_rcv(9), tipc_sk_enqueue(9), tipc_sk_rcv(9), tipc_connect(9), tipc_listen(9), tipc_accept(9), tipc_shutdown(9), tipc_setsockopt(9), tipc_getsockopt(9), tipc_socket_init(9), tipc_socket_stop(9), tipc_sk_filtering(9), tipc_sk_overlimit1(9), tipc_sk_overlimit2(9), tipc_sk_dump(9).


that's the whole page bestie πŸ’– this was from ./net/tipc, dated October 2026, and you can find it in the kernel source. stay slay, stay safe, and don't forget to ack your peers βœ¨πŸ¦‹

πŸ“¦ where this page comes from