STRUCT TIPC_SOCK(9)
π 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β setsockoptTIPC_NODELAYsetting. theTIPC_NODELAYsetsockopt 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms