8sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget#/translations/zh_CN/networking/tipcmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/zh_TW/networking/tipcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/it_IT/networking/tipcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ja_JP/networking/tipcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ko_KR/networking/tipcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/pt_BR/networking/tipcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/sp_SP/networking/tipcmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh=/var/lib/git/docbuild/linux/Documentation/networking/tipc.rsthKubhsection)}(hhh](htitle)}(hLinux Kernel TIPCh]hLinux Kernel TIPC}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXTIPC (Transparent Inter Process Communication) is a protocol that is specially designed for intra-cluster communication. It can be configured to transmit messages either on UDP or directly across Ethernet. Message delivery is sequence guaranteed, loss free and flow controlled. Latency times are shorter than with any other known protocol, while maximal throughput is comparable to that of TCP.h]hXTIPC (Transparent Inter Process Communication) is a protocol that is specially designed for intra-cluster communication. It can be configured to transmit messages either on UDP or directly across Ethernet. Message delivery is sequence guaranteed, loss free and flow controlled. Latency times are shorter than with any other known protocol, while maximal throughput is comparable to that of TCP.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(h TIPC Featuresh]h TIPC Features}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh bullet_list)}(hhh](h list_item)}(hXSCluster wide IPC service Have you ever wished you had the convenience of Unix Domain Sockets even when transmitting data between cluster nodes? Where you yourself determine the addresses you want to bind to and use? Where you don't have to perform DNS lookups and worry about IP addresses? Where you don't have to start timers to monitor the continuous existence of peer sockets? And yet without the downsides of that socket type, such as the risk of lingering inodes? Welcome to the Transparent Inter Process Communication service, TIPC in short, which gives you all of this, and a lot more. h](h)}(hCluster wide IPC serviceh]hCluster wide IPC service}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hXHave you ever wished you had the convenience of Unix Domain Sockets even when transmitting data between cluster nodes? Where you yourself determine the addresses you want to bind to and use? Where you don't have to perform DNS lookups and worry about IP addresses? Where you don't have to start timers to monitor the continuous existence of peer sockets? And yet without the downsides of that socket type, such as the risk of lingering inodes?h]hXHave you ever wished you had the convenience of Unix Domain Sockets even when transmitting data between cluster nodes? Where you yourself determine the addresses you want to bind to and use? Where you don’t have to perform DNS lookups and worry about IP addresses? Where you don’t have to start timers to monitor the continuous existence of peer sockets? And yet without the downsides of that socket type, such as the risk of lingering inodes?}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h{Welcome to the Transparent Inter Process Communication service, TIPC in short, which gives you all of this, and a lot more.h]h{Welcome to the Transparent Inter Process Communication service, TIPC in short, which gives you all of this, and a lot more.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hService Addressing A fundamental concept in TIPC is that of Service Addressing which makes it possible for a programmer to chose his own address, bind it to a server socket and let client programs use only that address for sending messages. h](h)}(hService Addressingh]hService Addressing}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjJubh)}(hA fundamental concept in TIPC is that of Service Addressing which makes it possible for a programmer to chose his own address, bind it to a server socket and let client programs use only that address for sending messages.h]hA fundamental concept in TIPC is that of Service Addressing which makes it possible for a programmer to chose his own address, bind it to a server socket and let client programs use only that address for sending messages.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjJubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXService Tracking A client wanting to wait for the availability of a server, uses the Service Tracking mechanism to subscribe for binding and unbinding/close events for sockets with the associated service address. The service tracking mechanism can also be used for Cluster Topology Tracking, i.e., subscribing for availability/non-availability of cluster nodes. Likewise, the service tracking mechanism can be used for Cluster Connectivity Tracking, i.e., subscribing for up/down events for individual links between cluster nodes. h](h)}(hService Trackingh]hService Tracking}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjpubh)}(hA client wanting to wait for the availability of a server, uses the Service Tracking mechanism to subscribe for binding and unbinding/close events for sockets with the associated service address.h]hA client wanting to wait for the availability of a server, uses the Service Tracking mechanism to subscribe for binding and unbinding/close events for sockets with the associated service address.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjpubh)}(hThe service tracking mechanism can also be used for Cluster Topology Tracking, i.e., subscribing for availability/non-availability of cluster nodes.h]hThe service tracking mechanism can also be used for Cluster Topology Tracking, i.e., subscribing for availability/non-availability of cluster nodes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjpubh)}(hLikewise, the service tracking mechanism can be used for Cluster Connectivity Tracking, i.e., subscribing for up/down events for individual links between cluster nodes.h]hLikewise, the service tracking mechanism can be used for Cluster Connectivity Tracking, i.e., subscribing for up/down events for individual links between cluster nodes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjpubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXTransmission Modes Using a service address, a client can send datagram messages to a server socket. Using the same address type, it can establish a connection towards an accepting server socket. It can also use a service address to create and join a Communication Group, which is the TIPC manifestation of a brokerless message bus. Multicast with very good performance and scalability is available both in datagram mode and in communication group mode. h](h)}(hTransmission Modesh]hTransmission Modes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubh)}(hPUsing a service address, a client can send datagram messages to a server socket.h]hPUsing a service address, a client can send datagram messages to a server socket.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubh)}(h^Using the same address type, it can establish a connection towards an accepting server socket.h]h^Using the same address type, it can establish a connection towards an accepting server socket.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubh)}(hIt can also use a service address to create and join a Communication Group, which is the TIPC manifestation of a brokerless message bus.h]hIt can also use a service address to create and join a Communication Group, which is the TIPC manifestation of a brokerless message bus.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjubh)}(hxMulticast with very good performance and scalability is available both in datagram mode and in communication group mode.h]hxMulticast with very good performance and scalability is available both in datagram mode and in communication group mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hInter Node Links Communication between any two nodes in a cluster is maintained by one or two Inter Node Links, which both guarantee data traffic integrity and monitor the peer node's availability. h](h)}(hInter Node Linksh]hInter Node Links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubh)}(hCommunication between any two nodes in a cluster is maintained by one or two Inter Node Links, which both guarantee data traffic integrity and monitor the peer node's availability.h]hCommunication between any two nodes in a cluster is maintained by one or two Inter Node Links, which both guarantee data traffic integrity and monitor the peer node’s availability.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXCluster Scalability By applying the Overlapping Ring Monitoring algorithm on the inter node links it is possible to scale TIPC clusters up to 1000 nodes with a maintained neighbor failure discovery time of 1-2 seconds. For smaller clusters this time can be made much shorter. h](h)}(hCluster Scalabilityh]hCluster Scalability}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhj(ubh)}(hBy applying the Overlapping Ring Monitoring algorithm on the inter node links it is possible to scale TIPC clusters up to 1000 nodes with a maintained neighbor failure discovery time of 1-2 seconds. For smaller clusters this time can be made much shorter.h]hBy applying the Overlapping Ring Monitoring algorithm on the inter node links it is possible to scale TIPC clusters up to 1000 nodes with a maintained neighbor failure discovery time of 1-2 seconds. For smaller clusters this time can be made much shorter.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhj(ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hNeighbor Discovery Neighbor Node Discovery in the cluster is done by Ethernet broadcast or UDP multicast, when any of those services are available. If not, configured peer IP addresses can be used. h](h)}(hNeighbor Discoveryh]hNeighbor Discovery}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjNubh)}(hNeighbor Node Discovery in the cluster is done by Ethernet broadcast or UDP multicast, when any of those services are available. If not, configured peer IP addresses can be used.h]hNeighbor Node Discovery in the cluster is done by Ethernet broadcast or UDP multicast, when any of those services are available. If not, configured peer IP addresses can be used.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjNubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXKConfiguration When running TIPC in single node mode no configuration whatsoever is needed. When running in cluster mode TIPC must as a minimum be given a node address (before Linux 4.17) and told which interface to attach to. The "tipc" configuration tool makes is possible to add and maintain many more configuration parameters. h](h)}(h Configurationh]h Configuration}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjtubh)}(hX;When running TIPC in single node mode no configuration whatsoever is needed. When running in cluster mode TIPC must as a minimum be given a node address (before Linux 4.17) and told which interface to attach to. The "tipc" configuration tool makes is possible to add and maintain many more configuration parameters.h]hX?When running TIPC in single node mode no configuration whatsoever is needed. When running in cluster mode TIPC must as a minimum be given a node address (before Linux 4.17) and told which interface to attach to. The “tipc” configuration tool makes is possible to add and maintain many more configuration parameters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjtubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hXPerformance TIPC message transfer latency times are better than in any other known protocol. Maximal byte throughput for inter-node connections is still somewhat lower than for TCP, while they are superior for intra-node and inter-container throughput on the same host. h](h)}(h Performanceh]h Performance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjubh)}(hXTIPC message transfer latency times are better than in any other known protocol. Maximal byte throughput for inter-node connections is still somewhat lower than for TCP, while they are superior for intra-node and inter-container throughput on the same host.h]hXTIPC message transfer latency times are better than in any other known protocol. Maximal byte throughput for inter-node connections is still somewhat lower than for TCP, while they are superior for intra-node and inter-container throughput on the same host.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hULanguage Support The TIPC user API has support for C, Python, Perl, Ruby, D and Go. h](h)}(hLanguage Supporth]hLanguage Support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjubh)}(hBThe TIPC user API has support for C, Python, Perl, Ruby, D and Go.h]hBThe TIPC user API has support for C, Python, Perl, Ruby, D and Go.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhhhhubeh}(h] tipc-featuresah ]h"] tipc featuresah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hMore Informationh]hMore Information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKgubj)}(hhh](j)}(h9How to set up TIPC: http://tipc.io/getting_started.html h](h)}(hHow to set up TIPC:h]hHow to set up TIPC:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihj ubh)}(h#http://tipc.io/getting_started.htmlh]h reference)}(hjh]h#http://tipc.io/getting_started.html}(hj"hhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j hjubah}(h]h ]h"]h$]h&]uh1hhhhKkhj ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h;How to program with TIPC: http://tipc.io/programming.html h](h)}(hHow to program with TIPC:h]hHow to program with TIPC:}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhj<ubh)}(hhttp://tipc.io/programming.htmlh]j!)}(hjPh]hhttp://tipc.io/programming.html}(hjRhhhNhNubah}(h]h ]h"]h$]h&]refurijPuh1j hjNubah}(h]h ]h"]h$]h&]uh1hhhhKohj<ubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h9How to contribute to TIPC: http://tipc.io/contacts.html h](h)}(hHow to contribute to TIPC:h]hHow to contribute to TIPC:}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjlubh)}(hhttp://tipc.io/contacts.htmlh]j!)}(hjh]hhttp://tipc.io/contacts.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j hj~ubah}(h]h ]h"]h$]h&]uh1hhhhKshjlubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hFMore details about TIPC specification: http://tipc.io/protocol.html h](h)}(h&More details about TIPC specification:h]h&More details about TIPC specification:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjubh)}(hhttp://tipc.io/protocol.htmlh]j!)}(hjh]hhttp://tipc.io/protocol.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j hjubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1jhhhKihjhhubeh}(h]more-informationah ]h"]more informationah$]h&]uh1hhhhhhhhKgubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hImplementationh]hImplementation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK{ubh)}(h>TIPC is implemented as a kernel module in net/tipc/ directory.h]h>TIPC is implemented as a kernel module in net/tipc/ directory.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjhhubh)}(hhh](h)}(hTIPC Base Typesh]hTIPC Base Types}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singletipc_subscription (C struct)c.tipc_subscriptionhNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(htipc_subscriptionh]hdesc_signature_line)}(hstruct tipc_subscriptionh](hdesc_sig_keyword)}(hstructh]hstruct}(hj6hhhNhNubah}(h]h ]kah"]h$]h&]uh1j4hj0hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhKubhdesc_sig_space)}(h h]h }(hjHhhhNhNubah}(h]h ]wah"]h$]h&]uh1jFhj0hhhjEhKubh desc_name)}(htipc_subscriptionh]h desc_sig_name)}(hj,h]htipc_subscription}(hj_hhhNhNubah}(h]h ]nah"]h$]h&]uh1j]hjYubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jWhj0hhhjEhKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1j.sphinx_line_type declaratorhj*hhhjEhKubah}(h]j!ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j(hjEhKhj%hhubh desc_content)}(hhh]h)}(h)TIPC network topology subscription objecth]h)TIPC network topology subscription object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK3hjhhubah}(h]h ]h"]h$]h&]uh1jhj%hhhjEhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j#hhhjhNhNubh container)}(hX**Definition**:: struct tipc_subscription { struct tipc_subscr s; struct tipc_event evt; struct kref kref; struct net *net; struct timer_list timer; struct list_head service_list; struct list_head sub_list; int conid; bool inactive; spinlock_t lock; }; **Members** ``s`` host-endian copy of the user subscription ``evt`` template for events generated by subscription ``kref`` reference count for this subscription ``net`` network namespace associated with subscription ``timer`` timer governing subscription duration (optional) ``service_list`` adjacent subscriptions in name sequence's subscription list ``sub_list`` adjacent subscriptions in subscriber's subscription list ``conid`` connection identifier of topology server ``inactive`` true if this subscription is inactive ``lock`` serialize up/down and timer eventsh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK7hjubh literal_block)}(hXstruct tipc_subscription { struct tipc_subscr s; struct tipc_event evt; struct kref kref; struct net *net; struct timer_list timer; struct list_head service_list; struct list_head sub_list; int conid; bool inactive; spinlock_t lock; };h]hXstruct tipc_subscription { struct tipc_subscr s; struct tipc_event evt; struct kref kref; struct net *net; struct timer_list timer; struct list_head service_list; struct list_head sub_list; int conid; bool inactive; spinlock_t lock; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK9hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhKFhjubhdefinition_list)}(hhh](hdefinition_list_item)}(h0``s`` host-endian copy of the user subscription h](hterm)}(h``s``h]hliteral)}(hjh]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK5hjubh definition)}(hhh]h)}(h)host-endian copy of the user subscriptionh]h)host-endian copy of the user subscription}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hK5hj(ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj%hK5hjubj)}(h6``evt`` template for events generated by subscription h](j )}(h``evt``h]j)}(hjKh]hevt}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK6hjEubj')}(hhh]h)}(h-template for events generated by subscriptionh]h-template for events generated by subscription}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hK6hjaubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhj`hK6hjubj)}(h/``kref`` reference count for this subscription h](j )}(h``kref``h]j)}(hjh]hkref}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK7hj~ubj')}(hhh]h)}(h%reference count for this subscriptionh]h%reference count for this subscription}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK7hjubah}(h]h ]h"]h$]h&]uh1j&hj~ubeh}(h]h ]h"]h$]h&]uh1jhjhK7hjubj)}(h7``net`` network namespace associated with subscription h](j )}(h``net``h]j)}(hjh]hnet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK8hjubj')}(hhh]h)}(h.network namespace associated with subscriptionh]h.network namespace associated with subscription}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK8hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjubj)}(h;``timer`` timer governing subscription duration (optional) h](j )}(h ``timer``h]j)}(hjh]htimer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK9hjubj')}(hhh]h)}(h0timer governing subscription duration (optional)h]h0timer governing subscription duration (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK9hj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hK9hjubj)}(hM``service_list`` adjacent subscriptions in name sequence's subscription list h](j )}(h``service_list``h]j)}(hj/h]h service_list}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK:hj)ubj')}(hhh]h)}(h;adjacent subscriptions in name sequence's subscription listh]h=adjacent subscriptions in name sequence’s subscription list}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhK:hjEubah}(h]h ]h"]h$]h&]uh1j&hj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhK:hjubj)}(hF``sub_list`` adjacent subscriptions in subscriber's subscription list h](j )}(h ``sub_list``h]j)}(hjhh]hsub_list}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhK;hjbubj')}(hhh]h)}(h8adjacent subscriptions in subscriber's subscription listh]h:adjacent subscriptions in subscriber’s subscription list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hK;hj~ubah}(h]h ]h"]h$]h&]uh1j&hjbubeh}(h]h ]h"]h$]h&]uh1jhj}hK;hjubj)}(h3``conid`` connection identifier of topology server h](j )}(h ``conid``h]j)}(hjh]hconid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:130: ./net/tipc/subscr.hhKhj)ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj(hK=hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_media_addr (C struct)c.tipc_media_addrhNtauh1jhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhNubj$)}(hhh](j))}(htipc_media_addrh]j/)}(hstruct tipc_media_addrh](j5)}(hj8h]hstruct}(hjnhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKubjG)}(h h]h }(hj|hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjjhhhj{hKubjX)}(htipc_media_addrh]j^)}(hjhh]htipc_media_addr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjjhhhj{hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjfhhhj{hKubah}(h]j`ah ](jjeh"]h$]h&]jj)jhuh1j(hj{hKhjchhubj)}(hhh]h)}(h(destination address used by TIPC bearersh]h(destination address used by TIPC bearers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKHhjhhubah}(h]h ]h"]h$]h&]uh1jhjchhhj{hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j#hhhjhjbhNubj)}(hX&**Definition**:: struct tipc_media_addr { u8 value[TIPC_MEDIA_INFO_SIZE]; u8 media_id; u8 broadcast; }; **Members** ``value`` address info (format defined by media) ``media_id`` TIPC media type identifier ``broadcast`` non-zero if address is a broadcast addressh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKLhjubj)}(hbstruct tipc_media_addr { u8 value[TIPC_MEDIA_INFO_SIZE]; u8 media_id; u8 broadcast; };h]hbstruct tipc_media_addr { u8 value[TIPC_MEDIA_INFO_SIZE]; u8 media_id; u8 broadcast; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKNhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKThjubj)}(hhh](j)}(h1``value`` address info (format defined by media) h](j )}(h ``value``h]j)}(hjh]hvalue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKJhjubj')}(hhh]h)}(h&address info (format defined by media)h]h&address info (format defined by media)}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKJhj3ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj2hKJhjubj)}(h(``media_id`` TIPC media type identifier h](j )}(h ``media_id``h]j)}(hjVh]hmedia_id}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKKhjPubj')}(hhh]h)}(hTIPC media type identifierh]hTIPC media type identifier}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhKKhjlubah}(h]h ]h"]h$]h&]uh1j&hjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKKhjubj)}(h8``broadcast`` non-zero if address is a broadcast addressh](j )}(h ``broadcast``h]j)}(hjh]h broadcast}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKKhjubj')}(hhh]h)}(h*non-zero if address is a broadcast addressh]h*non-zero if address is a broadcast address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKLhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhjbhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_media (C struct) c.tipc_mediahNtauh1jhjhhhjbhNubj$)}(hhh](j))}(h tipc_mediah]j/)}(hstruct tipc_mediah](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKRubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKRubjX)}(h tipc_mediah]j^)}(hjh]h tipc_media}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKRubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKRubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKRhjhhubj)}(hhh]h)}(h3Media specific info exposed to generic bearer layerh]h3Media specific info exposed to generic bearer layer}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKVhj( hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKRubeh}(h]h ](jstructeh"]h$]h&]jjjjC jjC jjjuh1j#hhhjhjbhNubj)}(hX**Definition**:: struct tipc_media { int (*send_msg)(struct net *net, struct sk_buff *buf, struct tipc_bearer *b, struct tipc_media_addr *dest); int (*enable_media)(struct net *net, struct tipc_bearer *b, struct nlattr *attr[]); void (*disable_media)(struct tipc_bearer *b); int (*addr2str)(struct tipc_media_addr *addr, char *strbuf, int bufsz); int (*addr2msg)(char *msg, struct tipc_media_addr *addr); int (*msg2addr)(struct tipc_bearer *b, struct tipc_media_addr *addr, char *msg); int (*raw2addr)(struct tipc_bearer *b, struct tipc_media_addr *addr, const char *raw); u32 priority; u32 tolerance; u32 min_win; u32 max_win; u32 mtu; u32 type_id; u32 hwaddr_len; char name[TIPC_MAX_MEDIA_NAME]; }; **Members** ``send_msg`` routine which handles buffer transmission ``enable_media`` routine which enables a media ``disable_media`` routine which disables a media ``addr2str`` convert media address format to string ``addr2msg`` convert from media addr format to discovery msg addr format ``msg2addr`` convert from discovery msg addr format to media addr format ``raw2addr`` convert from raw addr format to media addr format ``priority`` default link (and bearer) priority ``tolerance`` default time (in ms) before declaring link failure ``min_win`` minimum window (in packets) before declaring link congestion ``max_win`` maximum window (in packets) before declaring link congestion ``mtu`` max packet size bearer can support for media type not dependent on underlying device MTU ``type_id`` TIPC media identifier ``hwaddr_len`` TIPC media address len ``name`` media nameh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK ubh:}(hjK hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKZhjG ubj)}(hXstruct tipc_media { int (*send_msg)(struct net *net, struct sk_buff *buf, struct tipc_bearer *b, struct tipc_media_addr *dest); int (*enable_media)(struct net *net, struct tipc_bearer *b, struct nlattr *attr[]); void (*disable_media)(struct tipc_bearer *b); int (*addr2str)(struct tipc_media_addr *addr, char *strbuf, int bufsz); int (*addr2msg)(char *msg, struct tipc_media_addr *addr); int (*msg2addr)(struct tipc_bearer *b, struct tipc_media_addr *addr, char *msg); int (*raw2addr)(struct tipc_bearer *b, struct tipc_media_addr *addr, const char *raw); u32 priority; u32 tolerance; u32 min_win; u32 max_win; u32 mtu; u32 type_id; u32 hwaddr_len; char name[TIPC_MAX_MEDIA_NAME]; };h]hXstruct tipc_media { int (*send_msg)(struct net *net, struct sk_buff *buf, struct tipc_bearer *b, struct tipc_media_addr *dest); int (*enable_media)(struct net *net, struct tipc_bearer *b, struct nlattr *attr[]); void (*disable_media)(struct tipc_bearer *b); int (*addr2str)(struct tipc_media_addr *addr, char *strbuf, int bufsz); int (*addr2msg)(char *msg, struct tipc_media_addr *addr); int (*msg2addr)(struct tipc_bearer *b, struct tipc_media_addr *addr, char *msg); int (*raw2addr)(struct tipc_bearer *b, struct tipc_media_addr *addr, const char *raw); u32 priority; u32 tolerance; u32 min_win; u32 max_win; u32 mtu; u32 type_id; u32 hwaddr_len; char name[TIPC_MAX_MEDIA_NAME]; };}hjh sbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK\hjG ubh)}(h **Members**h]j)}(hjy h]hMembers}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKnhjG ubj)}(hhh](j)}(h7``send_msg`` routine which handles buffer transmission h](j )}(h ``send_msg``h]j)}(hj h]hsend_msg}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKXhj ubj')}(hhh]h)}(h)routine which handles buffer transmissionh]h)routine which handles buffer transmission}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKXhj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKXhj ubj)}(h/``enable_media`` routine which enables a media h](j )}(h``enable_media``h]j)}(hj h]h enable_media}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKYhj ubj')}(hhh]h)}(hroutine which enables a mediah]hroutine which enables a media}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKYhj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKYhj ubj)}(h1``disable_media`` routine which disables a media h](j )}(h``disable_media``h]j)}(hj h]h disable_media}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKZhj ubj')}(hhh]h)}(hroutine which disables a mediah]hroutine which disables a media}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKZhj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKZhj ubj)}(h4``addr2str`` convert media address format to string h](j )}(h ``addr2str``h]j)}(hjC h]haddr2str}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK[hj= ubj')}(hhh]h)}(h&convert media address format to stringh]h&convert media address format to string}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX hK[hjY ubah}(h]h ]h"]h$]h&]uh1j&hj= ubeh}(h]h ]h"]h$]h&]uh1jhjX hK[hj ubj)}(hI``addr2msg`` convert from media addr format to discovery msg addr format h](j )}(h ``addr2msg``h]j)}(hj| h]haddr2msg}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK\hjv ubj')}(hhh]h)}(h;convert from media addr format to discovery msg addr formath]h;convert from media addr format to discovery msg addr format}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK\hj ubah}(h]h ]h"]h$]h&]uh1j&hjv ubeh}(h]h ]h"]h$]h&]uh1jhj hK\hj ubj)}(hI``msg2addr`` convert from discovery msg addr format to media addr format h](j )}(h ``msg2addr``h]j)}(hj h]hmsg2addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK]hj ubj')}(hhh]h)}(h;convert from discovery msg addr format to media addr formath]h;convert from discovery msg addr format to media addr format}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK]hj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hK]hj ubj)}(h?``raw2addr`` convert from raw addr format to media addr format h](j )}(h ``raw2addr``h]j)}(hj h]hraw2addr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK^hj ubj')}(hhh]h)}(h1convert from raw addr format to media addr formath]h1convert from raw addr format to media addr format}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK^hj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hK^hj ubj)}(h0``priority`` default link (and bearer) priority h](j )}(h ``priority``h]j)}(hj' h]hpriority}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj% ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK_hj! ubj')}(hhh]h)}(h"default link (and bearer) priorityh]h"default link (and bearer) priority}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj< hK_hj= ubah}(h]h ]h"]h$]h&]uh1j&hj! ubeh}(h]h ]h"]h$]h&]uh1jhj< hK_hj ubj)}(hA``tolerance`` default time (in ms) before declaring link failure h](j )}(h ``tolerance``h]j)}(hj` h]h tolerance}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhK`hjZ ubj')}(hhh]h)}(h2default time (in ms) before declaring link failureh]h2default time (in ms) before declaring link failure}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju hK`hjv ubah}(h]h ]h"]h$]h&]uh1j&hjZ ubeh}(h]h ]h"]h$]h&]uh1jhju hK`hj ubj)}(hI``min_win`` minimum window (in packets) before declaring link congestion h](j )}(h ``min_win``h]j)}(hj h]hmin_win}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:133: ./net/tipc/bearer.hhKahj ubj')}(hhh]h)}(hpubl_list; Used by node/name distr to withdraw publications when node is lost - Local/node scope publications: in name_table->node_scope list - Local/cluster scope publications: in name_table->cluster_scope list ``binding_sock`` all publications from the same socket which bound this one Used by socket to withdraw publications when socket is unbound/released ``local_publ`` list of identical publications made from this node Used by closest_first and multicast receive lookup algorithms ``all_publ`` all publications identical to this one, whatever node and scope Used by round-robin lookup algorithm ``list`` to form a list of publications in temporal order ``rcu`` RCU callback head used for deferred freeingh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK=hjubj)}(hX;struct publication { struct tipc_service_range sr; struct tipc_socket_addr sk; u16 scope; u32 key; u32 id; struct list_head binding_node; struct list_head binding_sock; struct list_head local_publ; struct list_head all_publ; struct list_head list; struct rcu_head rcu; };h]hX;struct publication { struct tipc_service_range sr; struct tipc_socket_addr sk; u16 scope; u32 key; u32 id; struct list_head binding_node; struct list_head binding_sock; struct list_head local_publ; struct list_head all_publ; struct list_head list; struct rcu_head rcu; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK?hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKMhjubj)}(hhh](j)}(h5``sr`` service range represented by this publication h](j )}(h``sr``h]j)}(hjh]hsr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK;hjubj')}(hhh]h)}(h-service range represented by this publicationh]h-service range represented by this publication}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK;hjubj)}(h3``sk`` address of socket bound to this publication h](j )}(h``sk``h]j)}(hj+h]hsk}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKhjubj')}(hhh]h)}(h*publication key, unique across the clusterh]h*publication key, unique across the cluster}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK>hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK>hjubj)}(h``id`` publication id h](j )}(h``id``h]j)}(hjh]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK?hjubj')}(hhh]h)}(hpublication idh]hpublication id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK?hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK?hjubj)}(hX>``binding_node`` all publications from the same node which bound this one - Remote publications: in node->publ_list; Used by node/name distr to withdraw publications when node is lost - Local/node scope publications: in name_table->node_scope list - Local/cluster scope publications: in name_table->cluster_scope list h](j )}(h``binding_node``h]j)}(hjh]h binding_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKDhj ubj')}(hhh]h)}(hX,all publications from the same node which bound this one - Remote publications: in node->publ_list; Used by node/name distr to withdraw publications when node is lost - Local/node scope publications: in name_table->node_scope list - Local/cluster scope publications: in name_table->cluster_scope listh]hX,all publications from the same node which bound this one - Remote publications: in node->publ_list; Used by node/name distr to withdraw publications when node is lost - Local/node scope publications: in name_table->node_scope list - Local/cluster scope publications: in name_table->cluster_scope list}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK@hj%ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj$hKDhjubj)}(h``binding_sock`` all publications from the same socket which bound this one Used by socket to withdraw publications when socket is unbound/released h](j )}(h``binding_sock``h]j)}(hjIh]h binding_sock}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKFhjCubj')}(hhh]h)}(hall publications from the same socket which bound this one Used by socket to withdraw publications when socket is unbound/releasedh]hall publications from the same socket which bound this one Used by socket to withdraw publications when socket is unbound/released}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKEhj_ubah}(h]h ]h"]h$]h&]uh1j&hjCubeh}(h]h ]h"]h$]h&]uh1jhj^hKFhjubj)}(h``local_publ`` list of identical publications made from this node Used by closest_first and multicast receive lookup algorithms h](j )}(h``local_publ``h]j)}(hjh]h local_publ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKHhj}ubj')}(hhh]h)}(hplist of identical publications made from this node Used by closest_first and multicast receive lookup algorithmsh]hplist of identical publications made from this node Used by closest_first and multicast receive lookup algorithms}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKGhjubah}(h]h ]h"]h$]h&]uh1j&hj}ubeh}(h]h ]h"]h$]h&]uh1jhjhKHhjubj)}(hr``all_publ`` all publications identical to this one, whatever node and scope Used by round-robin lookup algorithm h](j )}(h ``all_publ``h]j)}(hjh]hall_publ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKJhjubj')}(hhh]h)}(hdall publications identical to this one, whatever node and scope Used by round-robin lookup algorithmh]hdall publications identical to this one, whatever node and scope Used by round-robin lookup algorithm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKIhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKJhjubj)}(h:``list`` to form a list of publications in temporal order h](j )}(h``list``h]j)}(hjh]hlist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKKhjubj')}(hhh]h)}(h0to form a list of publications in temporal orderh]h0to form a list of publications in temporal order}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKKhj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hKKhjubj)}(h3``rcu`` RCU callback head used for deferred freeingh](j )}(h``rcu``h]j)}(hj0h]hrcu}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKKhj*ubj')}(hhh]h)}(h+RCU callback head used for deferred freeingh]h+RCU callback head used for deferred freeing}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKLhjFubah}(h]h ]h"]h$]h&]uh1j&hj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhKKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jname_table (C struct) c.name_tablehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h name_tableh]j/)}(hstruct name_tableh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKRubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKRubjX)}(h name_tableh]j^)}(hjh]h name_table}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKRubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKRubah}(h]j}ah ](jjeh"]h$]h&]jj)jhuh1j(hjhKRhjhhubj)}(hhh]h)}(h4table containing all existing port name publicationsh]h4table containing all existing port name publications}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK\hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKRubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX**Definition**:: struct name_table { struct rcu_head rcu; struct hlist_head services[TIPC_NAMETBL_SIZE]; struct list_head node_scope; struct list_head cluster_scope; rwlock_t cluster_scope_lock; u32 local_publ_count; u32 rc_dests; u32 snd_nxt; }; **Members** ``rcu`` RCU callback head used for deferred freeing ``services`` name sequence hash lists ``node_scope`` all local publications with node scope - used by name_distr during re-init of name table ``cluster_scope`` all local publications with cluster scope - used by name_distr to send bulk updates to new nodes - used by name_distr during re-init of name table ``cluster_scope_lock`` lock for accessing **cluster_scope** ``local_publ_count`` number of publications issued by this node ``rc_dests`` destination node counter ``snd_nxt`` next sequence number to be usedh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK`hjubj)}(hXstruct name_table { struct rcu_head rcu; struct hlist_head services[TIPC_NAMETBL_SIZE]; struct list_head node_scope; struct list_head cluster_scope; rwlock_t cluster_scope_lock; u32 local_publ_count; u32 rc_dests; u32 snd_nxt; };h]hXstruct name_table { struct rcu_head rcu; struct hlist_head services[TIPC_NAMETBL_SIZE]; struct list_head node_scope; struct list_head cluster_scope; rwlock_t cluster_scope_lock; u32 local_publ_count; u32 rc_dests; u32 snd_nxt; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKbhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKmhjubj)}(hhh](j)}(h4``rcu`` RCU callback head used for deferred freeing h](j )}(h``rcu``h]j)}(hj9h]hrcu}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK^hj3ubj')}(hhh]h)}(h+RCU callback head used for deferred freeingh]h+RCU callback head used for deferred freeing}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhK^hjOubah}(h]h ]h"]h$]h&]uh1j&hj3ubeh}(h]h ]h"]h$]h&]uh1jhjNhK^hj0ubj)}(h&``services`` name sequence hash lists h](j )}(h ``services``h]j)}(hjrh]hservices}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK_hjlubj')}(hhh]h)}(hname sequence hash listsh]hname sequence hash lists}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK_hjubah}(h]h ]h"]h$]h&]uh1j&hjlubeh}(h]h ]h"]h$]h&]uh1jhjhK_hj0ubj)}(hh``node_scope`` all local publications with node scope - used by name_distr during re-init of name table h](j )}(h``node_scope``h]j)}(hjh]h node_scope}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKahjubj')}(hhh]h)}(hXall local publications with node scope - used by name_distr during re-init of name tableh]hXall local publications with node scope - used by name_distr during re-init of name table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhK`hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKahj0ubj)}(h``cluster_scope`` all local publications with cluster scope - used by name_distr to send bulk updates to new nodes - used by name_distr during re-init of name table h](j )}(h``cluster_scope``h]j)}(hjh]h cluster_scope}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKdhjubj')}(hhh]h)}(hall local publications with cluster scope - used by name_distr to send bulk updates to new nodes - used by name_distr during re-init of name tableh]hall local publications with cluster scope - used by name_distr to send bulk updates to new nodes - used by name_distr during re-init of name table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKbhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKdhj0ubj)}(h<``cluster_scope_lock`` lock for accessing **cluster_scope** h](j )}(h``cluster_scope_lock``h]j)}(hjh]hcluster_scope_lock}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKehjubj')}(hhh]h)}(h$lock for accessing **cluster_scope**h](hlock for accessing }(hj8hhhNhNubj)}(h**cluster_scope**h]h cluster_scope}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1hhj4hKehj5ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj4hKehj0ubj)}(h@``local_publ_count`` number of publications issued by this node h](j )}(h``local_publ_count``h]j)}(hjfh]hlocal_publ_count}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKfhj`ubj')}(hhh]h)}(h*number of publications issued by this nodeh]h*number of publications issued by this node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hKfhj|ubah}(h]h ]h"]h$]h&]uh1j&hj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hKfhj0ubj)}(h&``rc_dests`` destination node counter h](j )}(h ``rc_dests``h]j)}(hjh]hrc_dests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKghjubj')}(hhh]h)}(hdestination node counterh]hdestination node counter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKghjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKghj0ubj)}(h+``snd_nxt`` next sequence number to be usedh](j )}(h ``snd_nxt``h]j)}(hjh]hsnd_nxt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKghjubj')}(hhh]h)}(hnext sequence number to be usedh]hnext sequence number to be used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:136: ./net/tipc/name_table.hhKhhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKghj0ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jdistr_item (C struct) c.distr_itemhNtauh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhNubj$)}(hhh](j))}(h distr_itemh]j/)}(hstruct distr_itemh](j5)}(hj8h]hstruct}(hj3hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj/hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhKubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj/hhhj@hKubjX)}(h distr_itemh]j^)}(hj-h]h distr_item}(hjShhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjOubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj/hhhj@hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj+hhhj@hKubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1j(hj@hKhj(hhubj)}(hhh]h)}(h+publication info distributed to other nodesh]h+publication info distributed to other nodes}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK-hjrhhubah}(h]h ]h"]h$]h&]uh1jhj(hhhj@hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j#hhhjhj'hNubj)}(hXG**Definition**:: struct distr_item { __be32 type; __be32 lower; __be32 upper; __be32 port; __be32 key; }; **Members** ``type`` name sequence type ``lower`` name sequence lower bound ``upper`` name sequence upper bound ``port`` publishing port reference ``key`` publication keyh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK1hjubj)}(hlstruct distr_item { __be32 type; __be32 lower; __be32 upper; __be32 port; __be32 key; };h]hlstruct distr_item { __be32 type; __be32 lower; __be32 upper; __be32 port; __be32 key; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK3hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK;hjubj)}(hhh](j)}(h``type`` name sequence type h](j )}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK/hjubj')}(hhh]h)}(hname sequence typeh]hname sequence type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK/hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK/hjubj)}(h$``lower`` name sequence lower bound h](j )}(h ``lower``h]j)}(hjh]hlower}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK0hjubj')}(hhh]h)}(hname sequence lower boundh]hname sequence lower bound}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hK0hj1ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj0hK0hjubj)}(h$``upper`` name sequence upper bound h](j )}(h ``upper``h]j)}(hjTh]hupper}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK1hjNubj')}(hhh]h)}(hname sequence upper boundh]hname sequence upper bound}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihK1hjjubah}(h]h ]h"]h$]h&]uh1j&hjNubeh}(h]h ]h"]h$]h&]uh1jhjihK1hjubj)}(h#``port`` publishing port reference h](j )}(h``port``h]j)}(hjh]hport}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK2hjubj')}(hhh]h)}(hpublishing port referenceh]hpublishing port reference}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK2hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK2hjubj)}(h``key`` publication keyh](j )}(h``key``h]j)}(hjh]hkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK2hjubj')}(hhh]h)}(hpublication keyh]hpublication key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK3hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK2hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhj'hNubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK6hjhhubh)}(h6===> All fields are stored in network byte order. <===h]h6===> All fields are stored in network byte order. <===}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK3hjhhubh)}(hFirst 3 fields identify (name or) name sequence being published. Reference field uniquely identifies port that published name sequence. Key field uniquely identifies publication, in the event a port has multiple publications of the same name sequence.h]hFirst 3 fields identify (name or) name sequence being published. Reference field uniquely identifies port that published name sequence. Key field uniquely identifies publication, in the event a port has multiple publications of the same name sequence.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK5hjhhubh)}(h**Note**h]j)}(hj?h]hNote}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK:hjhhubh)}(hThere is no field that identifies the publishing node because it is the same for all items contained within a publication message.h]hThere is no field that identifies the publishing node because it is the same for all items contained within a publication message.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:139: ./net/tipc/name_distr.hhK;hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_bc_base (C struct)c.tipc_bc_basehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h tipc_bc_baseh]j/)}(hstruct tipc_bc_baseh](j5)}(hj8h]hstruct}(hj}hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjyhhhQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjyhhhjhKubjX)}(h tipc_bc_baseh]j^)}(hjwh]h tipc_bc_base}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjyhhhjhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjuhhhjhKubah}(h]jpah ](jjeh"]h$]h&]jj)jhuh1j(hjhKhjrhhubj)}(hhh]h)}(h/base structure for keeping broadcast send stateh]h/base structure for keeping broadcast send state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK4hjhhubah}(h]h ]h"]h$]h&]uh1jhjrhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX**Definition**:: struct tipc_bc_base { struct tipc_link *link; struct sk_buff_head inputq; int dests[MAX_BEARERS]; int primary_bearer; bool bcast_support; bool force_bcast; bool rcast_support; bool force_rcast; int rc_ratio; int bc_threshold; }; **Members** ``link`` broadcast send link structure ``inputq`` data input queue; will only carry SOCK_WAKEUP messages ``dests`` array keeping number of reachable destinations per bearer ``primary_bearer`` a bearer having links to all broadcast destinations, if any ``bcast_support`` indicates if primary bearer, if any, supports broadcast ``force_bcast`` forces broadcast for multicast traffic ``rcast_support`` indicates if all peer nodes support replicast ``force_rcast`` forces replicast for multicast traffic ``rc_ratio`` dest count as percentage of cluster size where send method changes ``bc_threshold`` calculated from rc_ratio; if dests > threshold use broadcasth](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK8hjubj)}(hX struct tipc_bc_base { struct tipc_link *link; struct sk_buff_head inputq; int dests[MAX_BEARERS]; int primary_bearer; bool bcast_support; bool force_bcast; bool rcast_support; bool force_rcast; int rc_ratio; int bc_threshold; };h]hX struct tipc_bc_base { struct tipc_link *link; struct sk_buff_head inputq; int dests[MAX_BEARERS]; int primary_bearer; bool bcast_support; bool force_bcast; bool rcast_support; bool force_rcast; int rc_ratio; int bc_threshold; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK:hjubh)}(h **Members**h]j)}(hj h]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chKGhjubj)}(hhh](j)}(h'``link`` broadcast send link structure h](j )}(h``link``h]j)}(hj,h]hlink}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK6hj&ubj')}(hhh]h)}(hbroadcast send link structureh]hbroadcast send link structure}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhK6hjBubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhK6hj#ubj)}(hB``inputq`` data input queue; will only carry SOCK_WAKEUP messages h](j )}(h ``inputq``h]j)}(hjeh]hinputq}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK7hj_ubj')}(hhh]h)}(h6data input queue; will only carry SOCK_WAKEUP messagesh]h6data input queue; will only carry SOCK_WAKEUP messages}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhK7hj{ubah}(h]h ]h"]h$]h&]uh1j&hj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhK7hj#ubj)}(hD``dests`` array keeping number of reachable destinations per bearer h](j )}(h ``dests``h]j)}(hjh]hdests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK8hjubj')}(hhh]h)}(h9array keeping number of reachable destinations per bearerh]h9array keeping number of reachable destinations per bearer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK8hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK8hj#ubj)}(hO``primary_bearer`` a bearer having links to all broadcast destinations, if any h](j )}(h``primary_bearer``h]j)}(hjh]hprimary_bearer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK9hjubj')}(hhh]h)}(h;a bearer having links to all broadcast destinations, if anyh]h;a bearer having links to all broadcast destinations, if any}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK9hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK9hj#ubj)}(hJ``bcast_support`` indicates if primary bearer, if any, supports broadcast h](j )}(h``bcast_support``h]j)}(hjh]h bcast_support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK:hj ubj')}(hhh]h)}(h7indicates if primary bearer, if any, supports broadcasth]h7indicates if primary bearer, if any, supports broadcast}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hK:hj&ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj%hK:hj#ubj)}(h7``force_bcast`` forces broadcast for multicast traffic h](j )}(h``force_bcast``h]j)}(hjIh]h force_bcast}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK;hjCubj')}(hhh]h)}(h&forces broadcast for multicast traffich]h&forces broadcast for multicast traffic}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hK;hj_ubah}(h]h ]h"]h$]h&]uh1j&hjCubeh}(h]h ]h"]h$]h&]uh1jhj^hK;hj#ubj)}(h@``rcast_support`` indicates if all peer nodes support replicast h](j )}(h``rcast_support``h]j)}(hjh]h rcast_support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chKhjubj')}(hhh]h)}(hBdest count as percentage of cluster size where send method changesh]hBdest count as percentage of cluster size where send method changes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK>hj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hK>hj#ubj)}(hM``bc_threshold`` calculated from rc_ratio; if dests > threshold use broadcasth](j )}(h``bc_threshold``h]j)}(hj-h]h bc_threshold}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1j hQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK>hj'ubj')}(hhh]h)}(h threshold use broadcasth]h threshold use broadcast}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhQ/var/lib/git/docbuild/linux/Documentation/networking/tipc:142: ./net/tipc/bcast.chK?hjCubah}(h]h ]h"]h$]h&]uh1j&hj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhK>hj#ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]tipc-base-typesah ]h"]tipc base typesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Bearer Interfacesh]hTIPC Bearer Interfaces}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_media_find (C function)c.tipc_media_findhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(h6struct tipc_media * tipc_media_find (const char *name)h]j/)}(h4struct tipc_media *tipc_media_find(const char *name)h](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKJubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKJubh)}(hhh]j^)}(h tipc_mediah]h tipc_media}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jtipc_media_findsbc.tipc_media_findasbuh1hhjhhhjhKJubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKJubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjhhhjhKJubjX)}(htipc_media_findh]j^)}(hjh]htipc_media_find}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKJubhdesc_parameterlist)}(h(const char *name)h]hdesc_parameter)}(hconst char *nameh](j5)}(hconsth]hconst}(hj*hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj&ubjG)}(h h]h }(hj8hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj&ubhdesc_sig_keyword_type)}(hcharh]hchar}(hjHhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jFhj&ubjG)}(h h]h }(hjWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj&ubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj^)}(hnameh]hname}(hjrhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKJubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKJubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKJhjhhubj)}(hhh]h)}(h&locates specified media object by nameh]h&locates specified media object by name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKJhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKJubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjvhNhNubj)}(h5**Parameters** ``const char *name`` name to locateh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKNhjubj)}(hhh]j)}(h#``const char *name`` name to locateh](j )}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKPhjubj')}(hhh]h)}(hname to locateh]hname to locate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmedia_find_id (C function)c.media_find_idhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(h+struct tipc_media * media_find_id (u8 type)h]j/)}(h)struct tipc_media *media_find_id(u8 type)h](j5)}(hj8h]hstruct}(hj7hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj3hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKYubjG)}(h h]h }(hjEhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3hhhjDhKYubh)}(hhh]j^)}(h tipc_mediah]h tipc_media}(hjVhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]j)}j media_find_idsbc.media_find_idasbuh1hhj3hhhjDhKYubjG)}(h h]h }(hjwhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3hhhjDhKYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhjDhKYubjX)}(h media_find_idh]j^)}(hjth]h media_find_id}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj3hhhjDhKYubj)}(h (u8 type)h]j%)}(hu8 typeh](h)}(hhh]j^)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jrc.media_find_idasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(htypeh]htype}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubah}(h]h ]h"]h$]h&]hhuh1jhj3hhhjDhKYubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj/hhhjDhKYubah}(h]j*ah ](jjeh"]h$]h&]jj)jhuh1j(hjDhKYhj,hhubj)}(hhh]h)}(h1locates specified media object by type identifierh]h1locates specified media object by type identifier}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKYhj hhubah}(h]h ]h"]h$]h&]uh1jhj,hhhjDhKYubeh}(h]h ](jfunctioneh"]h$]h&]jjjj" jj" jjjuh1j#hhhjvhNhNubj)}(h7**Parameters** ``u8 type`` type identifier to locateh](h)}(h**Parameters**h]j)}(hj, h]h Parameters}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj* ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chK]hj& ubj)}(hhh]j)}(h%``u8 type`` type identifier to locateh](j )}(h ``u8 type``h]j)}(hjK h]hu8 type}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chK_hjE ubj')}(hhh]h)}(htype identifier to locateh]htype identifier to locate}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKZhja ubah}(h]h ]h"]h$]h&]uh1j&hjE ubeh}(h]h ]h"]h$]h&]uh1jhj` hK_hjB ubah}(h]h ]h"]h$]h&]uh1jhj& ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_media_addr_printf (C function)c.tipc_media_addr_printfhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hJint tipc_media_addr_printf (char *buf, int len, struct tipc_media_addr *a)h]j/)}(hIint tipc_media_addr_printf(char *buf, int len, struct tipc_media_addr *a)h](jG)}(hinth]hint}(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj hhhj hKhubjX)}(htipc_media_addr_printfh]j^)}(htipc_media_addr_printfh]htipc_media_addr_printf}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj hhhj hKhubj)}(h/(char *buf, int len, struct tipc_media_addr *a)h](j%)}(h char *bufh](jG)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hbufh]hbuf}(hj !hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hint lenh](jG)}(hinth]hint}(hj$!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj !ubjG)}(h h]h }(hj2!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj !ubj^)}(hlenh]hlen}(hj@!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj !ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hstruct tipc_media_addr *ah](j5)}(hj8h]hstruct}(hjY!hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjU!ubjG)}(h h]h }(hjf!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjU!ubh)}(hhh]j^)}(htipc_media_addrh]htipc_media_addr}(hjw!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjt!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjy!modnameN classnameNjj)}j]j)}jj sbc.tipc_media_addr_printfasbuh1hhjU!ubjG)}(h h]h }(hj!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjU!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU!ubj^)}(hah]ha}(hj!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjU!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKhubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj hhhj hKhubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j(hj hKhhj hhubj)}(hhh]h)}(h$record media address in print bufferh]h$record media address in print buffer}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhhj!hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKhubeh}(h]h ](jfunctioneh"]h$]h&]jjjj!jj!jjjuh1j#hhhjvhNhNubj)}(h**Parameters** ``char *buf`` output buffer ``int len`` output buffer size remaining ``struct tipc_media_addr *a`` input media addressh](h)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKlhj!ubj)}(hhh](j)}(h``char *buf`` output buffer h](j )}(h ``char *buf``h]j)}(hj"h]h char *buf}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKihj"ubj')}(hhh]h)}(h output bufferh]h output buffer}(hj6"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2"hKihj3"ubah}(h]h ]h"]h$]h&]uh1j&hj"ubeh}(h]h ]h"]h$]h&]uh1jhj2"hKihj"ubj)}(h)``int len`` output buffer size remaining h](j )}(h ``int len``h]j)}(hjV"h]hint len}(hjX"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT"ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKjhjP"ubj')}(hhh]h)}(houtput buffer size remainingh]houtput buffer size remaining}(hjo"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk"hKjhjl"ubah}(h]h ]h"]h$]h&]uh1j&hjP"ubeh}(h]h ]h"]h$]h&]uh1jhjk"hKjhj"ubj)}(h1``struct tipc_media_addr *a`` input media addressh](j )}(h``struct tipc_media_addr *a``h]j)}(hj"h]hstruct tipc_media_addr *a}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKlhj"ubj')}(hhh]h)}(hinput media addressh]hinput media address}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKkhj"ubah}(h]h ]h"]h$]h&]uh1j&hj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hKlhj"ubeh}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!bearer_name_validate (C function)c.bearer_name_validatehNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hQint bearer_name_validate (const char *name, struct tipc_bearer_names *name_parts)h]j/)}(hPint bearer_name_validate(const char *name, struct tipc_bearer_names *name_parts)h](jG)}(hinth]hint}(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKubjG)}(h h]h }(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"hhhj"hKubjX)}(hbearer_name_validateh]j^)}(hbearer_name_validateh]hbearer_name_validate}(hj #hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj"hhhj"hKubj)}(h8(const char *name, struct tipc_bearer_names *name_parts)h](j%)}(hconst char *nameh](j5)}(hj,h]hconst}(hj&#hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj"#ubjG)}(h h]h }(hj3#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"#ubjG)}(hcharh]hchar}(hjA#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"#ubjG)}(h h]h }(hjO#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"#ubj)}(hjh]h*}(hj]#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"#ubj^)}(hnameh]hname}(hjj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj#ubj%)}(h$struct tipc_bearer_names *name_partsh](j5)}(hj8h]hstruct}(hj#hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj#ubjG)}(h h]h }(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj#ubh)}(hhh]j^)}(htipc_bearer_namesh]htipc_bearer_names}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jj #sbc.bearer_name_validateasbuh1hhj#ubjG)}(h h]h }(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj^)}(h name_partsh]h name_parts}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj#ubeh}(h]h ]h"]h$]h&]hhuh1jhj"hhhj"hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj"hhhj"hKubah}(h]j"ah ](jjeh"]h$]h&]jj)jhuh1j(hj"hKhj"hhubj)}(hhh]h)}(h/validate & (optionally) deconstruct bearer nameh]h/validate & (optionally) deconstruct bearer name}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj$hhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj"hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj$jj$jjjuh1j#hhhjvhNhNubj)}(h**Parameters** ``const char *name`` ptr to bearer name string ``struct tipc_bearer_names *name_parts`` ptr to area for bearer name components (or NULL if not needed) **Return** 1 if bearer name is valid, otherwise 0.h](h)}(h**Parameters**h]j)}(hj($h]h Parameters}(hj*$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&$ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj"$ubj)}(hhh](j)}(h/``const char *name`` ptr to bearer name string h](j )}(h``const char *name``h]j)}(hjG$h]hconst char *name}(hjI$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE$ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhjA$ubj')}(hhh]h)}(hptr to bearer name stringh]hptr to bearer name string}(hj`$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\$hKhj]$ubah}(h]h ]h"]h$]h&]uh1j&hjA$ubeh}(h]h ]h"]h$]h&]uh1jhj\$hKhj>$ubj)}(hh``struct tipc_bearer_names *name_parts`` ptr to area for bearer name components (or NULL if not needed) h](j )}(h(``struct tipc_bearer_names *name_parts``h]j)}(hj$h]h$struct tipc_bearer_names *name_parts}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~$ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhjz$ubj')}(hhh]h)}(h>ptr to area for bearer name components (or NULL if not needed)h]h>ptr to area for bearer name components (or NULL if not needed)}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1j&hjz$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKhj>$ubeh}(h]h ]h"]h$]h&]uh1jhj"$ubh)}(h **Return**h]j)}(hj$h]hReturn}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj"$ubh)}(h'1 if bearer name is valid, otherwise 0.h]h'1 if bearer name is valid, otherwise 0.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj"$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_bearer_find (C function)c.tipc_bearer_findhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hIstruct tipc_bearer * tipc_bearer_find (struct net *net, const char *name)h]j/)}(hGstruct tipc_bearer *tipc_bearer_find(struct net *net, const char *name)h](j5)}(hj8h]hstruct}(hj%hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj$hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj$hhhj %hKubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!%modnameN classnameNjj)}j]j)}jtipc_bearer_findsbc.tipc_bearer_findasbuh1hhj$hhhj %hKubjG)}(h h]h }(hj@%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj$hhhj %hKubj)}(hjh]h*}(hjN%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj %hKubjX)}(htipc_bearer_findh]j^)}(hj=%h]htipc_bearer_find}(hj_%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj[%ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj$hhhj %hKubj)}(h#(struct net *net, const char *name)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjz%hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjv%ubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjv%ubh)}(hhh]j^)}(hneth]hnet}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j;%c.tipc_bearer_findasbuh1hhjv%ubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjv%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv%ubj^)}(hneth]hnet}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjv%ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjr%ubj%)}(hconst char *nameh](j5)}(hj,h]hconst}(hj%hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj%ubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubjG)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubjG)}(h h]h }(hj&hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubj)}(hjh]h*}(hj!&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj^)}(hnameh]hname}(hj.&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjr%ubeh}(h]h ]h"]h$]h&]hhuh1jhj$hhhj %hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj$hhhj %hKubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1j(hj %hKhj$hhubj)}(hhh]h)}(h/locates bearer object with matching bearer nameh]h/locates bearer object with matching bearer name}(hjX&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhjU&hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj %hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjp&jjp&jjjuh1j#hhhjvhNhNubj)}(hp**Parameters** ``struct net *net`` the applicable net namespace ``const char *name`` bearer name to locateh](h)}(h**Parameters**h]j)}(hjz&h]h Parameters}(hj|&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjx&ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhjt&ubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hj&h]hstruct net *net}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj&ubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKhj&ubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhj&ubj)}(h*``const char *name`` bearer name to locateh](j )}(h``const char *name``h]j)}(hj&h]hconst char *name}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj&ubj')}(hhh]h)}(hbearer name to locateh]hbearer name to locate}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj&ubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKhj&ubeh}(h]h ]h"]h$]h&]uh1jhjt&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_enable_bearer (C function)c.tipc_enable_bearerhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hint tipc_enable_bearer (struct net *net, const char *name, u32 disc_domain, u32 prio, struct nlattr *attr[], struct netlink_ext_ack *extack)h]j/)}(hint tipc_enable_bearer(struct net *net, const char *name, u32 disc_domain, u32 prio, struct nlattr *attr[], struct netlink_ext_ack *extack)h](jG)}(hinth]hint}(hj,'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj('hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKubjG)}(h h]h }(hj;'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj('hhhj:'hKubjX)}(htipc_enable_bearerh]j^)}(htipc_enable_bearerh]htipc_enable_bearer}(hjM'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjI'ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj('hhhj:'hKubj)}(hu(struct net *net, const char *name, u32 disc_domain, u32 prio, struct nlattr *attr[], struct netlink_ext_ack *extack)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hji'hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hje'ubjG)}(h h]h }(hjv'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhje'ubh)}(hhh]j^)}(hneth]hnet}(hj'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]j)}jjO'sbc.tipc_enable_bearerasbuh1hhje'ubjG)}(h h]h }(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhje'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhje'ubj^)}(hneth]hnet}(hj'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hje'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hja'ubj%)}(hconst char *nameh](j5)}(hj,h]hconst}(hj'hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj'ubjG)}(h h]h }(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubjG)}(hcharh]hchar}(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj^)}(hnameh]hname}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hja'ubj%)}(hu32 disc_domainh](h)}(hhh]j^)}(hu32h]hu32}(hj;(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=(modnameN classnameNjj)}j]j'c.tipc_enable_bearerasbuh1hhj4(ubjG)}(h h]h }(hjY(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj4(ubj^)}(h disc_domainh]h disc_domain}(hjg(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj4(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hja'ubj%)}(hu32 prioh](h)}(hhh]j^)}(hu32h]hu32}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j'c.tipc_enable_bearerasbuh1hhj|(ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj|(ubj^)}(hprioh]hprio}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj|(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hja'ubj%)}(hstruct nlattr *attr[]h](j5)}(hj8h]hstruct}(hj(hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj(ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj(ubh)}(hhh]j^)}(hnlattrh]hnlattr}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j'c.tipc_enable_bearerasbuh1hhj(ubjG)}(h h]h }(hj)hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj(ubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj^)}(hattrh]hattr}(hj)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj(ubj)}(h[h]h[}(hj-)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(h]h]h]}(hj;)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hja'ubj%)}(hstruct netlink_ext_ack *extackh](j5)}(hj8h]hstruct}(hjT)hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjP)ubjG)}(h h]h }(hja)hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjP)ubh)}(hhh]j^)}(hnetlink_ext_ackh]hnetlink_ext_ack}(hjr)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjo)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjt)modnameN classnameNjj)}j]j'c.tipc_enable_bearerasbuh1hhjP)ubjG)}(h h]h }(hj)hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjP)ubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjP)ubj^)}(hextackh]hextack}(hj)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjP)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hja'ubeh}(h]h ]h"]h$]h&]hhuh1jhj('hhhj:'hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj$'hhhj:'hKubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1j(hj:'hKhj!'hhubj)}(hhh]h)}(h!enable bearer with the given nameh]h!enable bearer with the given name}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj)hhubah}(h]h ]h"]h$]h&]uh1jhj!'hhhj:'hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1j#hhhjvhNhNubj)}(hX**Parameters** ``struct net *net`` the applicable net namespace ``const char *name`` bearer name to enable ``u32 disc_domain`` bearer domain ``u32 prio`` bearer priority ``struct nlattr *attr[]`` nlattr array ``struct netlink_ext_ack *extack`` netlink extended ackh](h)}(h**Parameters**h]j)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj)ubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hj*h]hstruct net *net}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj*ubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hj/*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+*hKhj,*ubah}(h]h ]h"]h$]h&]uh1j&hj*ubeh}(h]h ]h"]h$]h&]uh1jhj+*hKhj *ubj)}(h+``const char *name`` bearer name to enable h](j )}(h``const char *name``h]j)}(hjO*h]hconst char *name}(hjQ*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM*ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhjI*ubj')}(hhh]h)}(hbearer name to enableh]hbearer name to enable}(hjh*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd*hKhje*ubah}(h]h ]h"]h$]h&]uh1j&hjI*ubeh}(h]h ]h"]h$]h&]uh1jhjd*hKhj *ubj)}(h"``u32 disc_domain`` bearer domain h](j )}(h``u32 disc_domain``h]j)}(hj*h]hu32 disc_domain}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj*ubj')}(hhh]h)}(h bearer domainh]h bearer domain}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj*ubah}(h]h ]h"]h$]h&]uh1j&hj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hKhj *ubj)}(h``u32 prio`` bearer priority h](j )}(h ``u32 prio``h]j)}(hj*h]hu32 prio}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj*ubj')}(hhh]h)}(hbearer priorityh]hbearer priority}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj*ubah}(h]h ]h"]h$]h&]uh1j&hj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hKhj *ubj)}(h'``struct nlattr *attr[]`` nlattr array h](j )}(h``struct nlattr *attr[]``h]j)}(hj*h]hstruct nlattr *attr[]}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj*ubj')}(hhh]h)}(h nlattr arrayh]h nlattr array}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj+ubah}(h]h ]h"]h$]h&]uh1j&hj*ubeh}(h]h ]h"]h$]h&]uh1jhj+hKhj *ubj)}(h7``struct netlink_ext_ack *extack`` netlink extended ackh](j )}(h"``struct netlink_ext_ack *extack``h]j)}(hj3+h]hstruct netlink_ext_ack *extack}(hj5+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1+ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhj-+ubj')}(hhh]h)}(hnetlink extended ackh]hnetlink extended ack}(hjL+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chKhjI+ubah}(h]h ]h"]h$]h&]uh1j&hj-+ubeh}(h]h ]h"]h$]h&]uh1jhjH+hKhj *ubeh}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_reset_bearer (C function)c.tipc_reset_bearerhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(h>int tipc_reset_bearer (struct net *net, struct tipc_bearer *b)h]j/)}(h=int tipc_reset_bearer(struct net *net, struct tipc_bearer *b)h](jG)}(hinth]hint}(hj+hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj+hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMyubjG)}(h h]h }(hj+hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj+hhhj+hMyubjX)}(htipc_reset_bearerh]j^)}(htipc_reset_bearerh]htipc_reset_bearer}(hj+hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj+ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj+hhhj+hMyubj)}(h((struct net *net, struct tipc_bearer *b)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj+hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj+ubjG)}(h h]h }(hj+hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj+ubh)}(hhh]j^)}(hneth]hnet}(hj+hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j)}jj+sbc.tipc_reset_bearerasbuh1hhj+ubjG)}(h h]h }(hj,hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj+ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj^)}(hneth]hnet}(hj#,hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj+ubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hj<,hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj8,ubjG)}(h h]h }(hjI,hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj8,ubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hjZ,hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjW,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\,modnameN classnameNjj)}j]j,c.tipc_reset_bearerasbuh1hhj8,ubjG)}(h h]h }(hjx,hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj8,ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8,ubj^)}(hbh]hb}(hj,hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8,ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj+ubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj+hMyubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj+hhhj+hMyubah}(h]j+ah ](jjeh"]h$]h&]jj)jhuh1j(hj+hMyhj+hhubj)}(hhh]h)}(h,Reset all links established over this bearerh]h,Reset all links established over this bearer}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMyhj,hhubah}(h]h ]h"]h$]h&]uh1jhj+hhhj+hMyubeh}(h]h ](jfunctioneh"]h$]h&]jjjj,jj,jjjuh1j#hhhjvhNhNubj)}(hq**Parameters** ``struct net *net`` the applicable net namespace ``struct tipc_bearer *b`` the target bearerh](h)}(h**Parameters**h]j)}(hj,h]h Parameters}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chM}hj,ubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hj,h]hstruct net *net}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMzhj,ubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMzhj-ubah}(h]h ]h"]h$]h&]uh1j&hj,ubeh}(h]h ]h"]h$]h&]uh1jhj-hMzhj,ubj)}(h+``struct tipc_bearer *b`` the target bearerh](j )}(h``struct tipc_bearer *b``h]j)}(hj7-h]hstruct tipc_bearer *b}(hj9-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5-ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chM|hj1-ubj')}(hhh]h)}(hthe target bearerh]hthe target bearer}(hjP-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chM{hjM-ubah}(h]h ]h"]h$]h&]uh1j&hj1-ubeh}(h]h ]h"]h$]h&]uh1jhjL-hM|hj,ubeh}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jbearer_disable (C function)c.bearer_disablehNtauh1jhjvhhhNhNubj$)}(hhh](j))}(h``struct notifier_block *nb`` the context of the notification h](j )}(h``struct notifier_block *nb``h]j)}(hj8h]hstruct notifier_block *nb}(hj!8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMhj8ubj')}(hhh]h)}(hthe context of the notificationh]hthe context of the notification}(hj88hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj48hMhj58ubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhj48hMhj8ubj)}(h(``unsigned long evt`` the type of event h](j )}(h``unsigned long evt``h]j)}(hjX8h]hunsigned long evt}(hjZ8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV8ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMhjR8ubj')}(hhh]h)}(hthe type of eventh]hthe type of event}(hjq8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm8hMhjn8ubah}(h]h ]h"]h$]h&]uh1j&hjR8ubeh}(h]h ]h"]h$]h&]uh1jhjm8hMhj8ubj)}(h3``void *ptr`` the net device that the event was on h](j )}(h ``void *ptr``h]j)}(hj8h]h void *ptr}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMhj8ubj')}(hhh]h)}(h$the net device that the event was onh]h$the net device that the event was on}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hMhj8ubeh}(h]h ]h"]h$]h&]uh1jhj7ubh)}(h**Description**h]j)}(hj8h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMhj7ubh)}(hLThis function is called by the Ethernet driver in case of link change event.h]hLThis function is called by the Ethernet driver in case of link change event.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:148: ./net/tipc/bearer.chMhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](judp_media_addr (C struct)c.udp_media_addrhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hudp_media_addrh]j/)}(hstruct udp_media_addrh](j5)}(hj8h]hstruct}(hj9hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj 9hhhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKubjG)}(h h]h }(hj9hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj 9hhhj9hKubjX)}(hudp_media_addrh]j^)}(hj 9h]hudp_media_addr}(hj19hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj-9ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj 9hhhj9hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj 9hhhj9hKubah}(h]j9ah ](jjeh"]h$]h&]jj)jhuh1j(hj9hKhj9hhubj)}(hhh]h)}(hIP/UDP addressing informationh]hIP/UDP addressing information}(hjS9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK>hjP9hhubah}(h]h ]h"]h$]h&]uh1jhj9hhhj9hKubeh}(h]h ](jstructeh"]h$]h&]jjjjk9jjk9jjjuh1j#hhhjvhNhNubj)}(hXg**Definition**:: struct udp_media_addr { __be16 proto; __be16 port; union { struct in_addr ipv4; struct in6_addr ipv6; }; }; **Members** ``proto`` Ethernet protocol in use ``port`` port being used ``{unnamed_union}`` anonymous ``ipv4`` IPv4 address of neighbor ``ipv6`` IPv6 address of neighborh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjw9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs9ubh:}(hjs9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKBhjo9ubj)}(hstruct udp_media_addr { __be16 proto; __be16 port; union { struct in_addr ipv4; struct in6_addr ipv6; }; };h]hstruct udp_media_addr { __be16 proto; __be16 port; union { struct in_addr ipv4; struct in6_addr ipv6; }; };}hj9sbah}(h]h ]h"]h$]h&]hhuh1jhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKDhjo9ubh)}(h **Members**h]j)}(hj9h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKMhjo9ubj)}(hhh](j)}(h#``proto`` Ethernet protocol in use h](j )}(h ``proto``h]j)}(hj9h]hproto}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKDhj9ubj')}(hhh]h)}(hEthernet protocol in useh]hEthernet protocol in use}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKDhj9ubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hKDhj9ubj)}(h``port`` port being used h](j )}(h``port``h]j)}(hj9h]hport}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKEhj9ubj')}(hhh]h)}(hport being usedh]hport being used}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKEhj:ubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhj:hKEhj9ubj)}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j)}(hj2:h]h{unnamed_union}}(hj4:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0:ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKhj,:ubj')}(hhh]h)}(h anonymoush]h anonymous}(hjK:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG:hKhjH:ubah}(h]h ]h"]h$]h&]uh1j&hj,:ubeh}(h]h ]h"]h$]h&]uh1jhjG:hKhj9ubj)}(h"``ipv4`` IPv4 address of neighbor h](j )}(h``ipv4``h]j)}(hjk:h]hipv4}(hjm:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji:ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKFhje:ubj')}(hhh]h)}(hIPv4 address of neighborh]hIPv4 address of neighbor}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKFhj:ubah}(h]h ]h"]h$]h&]uh1j&hje:ubeh}(h]h ]h"]h$]h&]uh1jhj:hKFhj9ubj)}(h!``ipv6`` IPv6 address of neighborh](j )}(h``ipv6``h]j)}(hj:h]hipv6}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKFhj:ubj')}(hhh]h)}(hIPv6 address of neighborh]hIPv6 address of neighbor}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKGhj:ubah}(h]h ]h"]h$]h&]uh1j&hj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hKFhj9ubeh}(h]h ]h"]h$]h&]uh1jhjo9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubh)}(h**Description**h]j)}(hj:h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKJhjvhhubh)}(hThis is the bearer level originating address used in neighbor discovery messages, and all fields should be in network byte orderh]hThis is the bearer level originating address used in neighbor discovery messages, and all fields should be in network byte order}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK?hjvhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](judp_bearer (C struct) c.udp_bearerhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(h udp_bearerh]j/)}(hstruct udp_bearerh](j5)}(hj8h]hstruct}(hj%;hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj!;hhhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKEubjG)}(h h]h }(hj3;hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj!;hhhj2;hKEubjX)}(h udp_bearerh]j^)}(hj;h]h udp_bearer}(hjE;hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjA;ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj!;hhhj2;hKEubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj;hhhj2;hKEubah}(h]j;ah ](jjeh"]h$]h&]jj)jhuh1j(hj2;hKEhj;hhubj)}(hhh]h)}(hip/udp bearer data structureh]hip/udp bearer data structure}(hjg;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKZhjd;hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhj2;hKEubeh}(h]h ](jstructeh"]h$]h&]jjjj;jj;jjjuh1j#hhhjvhNhNubj)}(hX**Definition**:: struct udp_bearer { struct tipc_bearer *bearer; struct socket *ubsock; u32 ifindex; struct work_struct work; struct udp_replicast rcast; }; **Members** ``bearer`` associated generic tipc bearer ``ubsock`` bearer associated socket ``ifindex`` local address scope ``work`` used to schedule deferred work on a bearer ``rcast`` associated udp_replicast containerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh:}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK^hj;ubj)}(hstruct udp_bearer { struct tipc_bearer *bearer; struct socket *ubsock; u32 ifindex; struct work_struct work; struct udp_replicast rcast; };h]hstruct udp_bearer { struct tipc_bearer *bearer; struct socket *ubsock; u32 ifindex; struct work_struct work; struct udp_replicast rcast; };}hj;sbah}(h]h ]h"]h$]h&]hhuh1jhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK`hj;ubh)}(h **Members**h]j)}(hj;h]hMembers}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chKhhj;ubj)}(hhh](j)}(h*``bearer`` associated generic tipc bearer h](j )}(h ``bearer``h]j)}(hj;h]hbearer}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK\hj;ubj')}(hhh]h)}(hassociated generic tipc bearerh]hassociated generic tipc bearer}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK\hj;ubah}(h]h ]h"]h$]h&]uh1j&hj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hK\hj;ubj)}(h$``ubsock`` bearer associated socket h](j )}(h ``ubsock``h]j)}(hj <h]hubsock}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj <ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK]hj<ubj')}(hhh]h)}(hbearer associated socketh]hbearer associated socket}(hj&<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"<hK]hj#<ubah}(h]h ]h"]h$]h&]uh1j&hj<ubeh}(h]h ]h"]h$]h&]uh1jhj"<hK]hj;ubj)}(h ``ifindex`` local address scope h](j )}(h ``ifindex``h]j)}(hjF<h]hifindex}(hjH<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD<ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK^hj@<ubj')}(hhh]h)}(hlocal address scopeh]hlocal address scope}(hj_<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[<hK^hj\<ubah}(h]h ]h"]h$]h&]uh1j&hj@<ubeh}(h]h ]h"]h$]h&]uh1jhj[<hK^hj;ubj)}(h4``work`` used to schedule deferred work on a bearer h](j )}(h``work``h]j)}(hj<h]hwork}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}<ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK_hjy<ubj')}(hhh]h)}(h*used to schedule deferred work on a bearerh]h*used to schedule deferred work on a bearer}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hK_hj<ubah}(h]h ]h"]h$]h&]uh1j&hjy<ubeh}(h]h ]h"]h$]h&]uh1jhj<hK_hj;ubj)}(h,``rcast`` associated udp_replicast containerh](j )}(h ``rcast``h]j)}(hj<h]hrcast}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK_hj<ubj')}(hhh]h)}(h"associated udp_replicast containerh]h"associated udp_replicast container}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chK`hj<ubah}(h]h ]h"]h$]h&]uh1j&hj<ubeh}(h]h ]h"]h$]h&]uh1jhj<hK_hj;ubeh}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_parse_udp_addr (C function)c.tipc_parse_udp_addrhNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hXint tipc_parse_udp_addr (struct nlattr *nla, struct udp_media_addr *addr, u32 *scope_id)h]j/)}(hWint tipc_parse_udp_addr(struct nlattr *nla, struct udp_media_addr *addr, u32 *scope_id)h](jG)}(hinth]hint}(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj=hhhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chM@ubjG)}(h h]h }(hj!=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj=hhhj =hM@ubjX)}(htipc_parse_udp_addrh]j^)}(htipc_parse_udp_addrh]htipc_parse_udp_addr}(hj3=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj/=ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj=hhhj =hM@ubj)}(h@(struct nlattr *nla, struct udp_media_addr *addr, u32 *scope_id)h](j%)}(hstruct nlattr *nlah](j5)}(hj8h]hstruct}(hjO=hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjK=ubjG)}(h h]h }(hj\=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjK=ubh)}(hhh]j^)}(hnlattrh]hnlattr}(hjm=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjo=modnameN classnameNjj)}j]j)}jj5=sbc.tipc_parse_udp_addrasbuh1hhjK=ubjG)}(h h]h }(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjK=ubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjK=ubj^)}(hnlah]hnla}(hj=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjK=ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjG=ubj%)}(hstruct udp_media_addr *addrh](j5)}(hj8h]hstruct}(hj=hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj=ubjG)}(h h]h }(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj=ubh)}(hhh]j^)}(hudp_media_addrh]hudp_media_addr}(hj=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j=c.tipc_parse_udp_addrasbuh1hhj=ubjG)}(h h]h }(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj=ubj)}(hjh]h*}(hj >hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj^)}(haddrh]haddr}(hj>hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjG=ubj%)}(h u32 *scope_idh](h)}(hhh]j^)}(hu32h]hu32}(hj4>hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6>modnameN classnameNjj)}j]j=c.tipc_parse_udp_addrasbuh1hhj->ubjG)}(h h]h }(hjR>hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj->ubj)}(hjh]h*}(hj`>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj->ubj^)}(hscope_idh]hscope_id}(hjm>hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj->ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjG=ubeh}(h]h ]h"]h$]h&]hhuh1jhj=hhhj =hM@ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj =hhhj =hM@ubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1j(hj =hM@hj=hhubj)}(hhh]h)}(h)build udp media address from netlink datah]h)build udp media address from netlink data}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chM@hj>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj =hM@ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj>jj>jjjuh1j#hhhjvhNhNubj)}(hX**Parameters** ``struct nlattr *nla`` netlink attribute containing sockaddr storage aligned address ``struct udp_media_addr *addr`` tipc media address to fill with address, port and protocol type ``u32 *scope_id`` IPv6 scope id pointer, not NULL indicates it's requiredh](h)}(h**Parameters**h]j)}(hj>h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMDhj>ubj)}(hhh](j)}(hU``struct nlattr *nla`` netlink attribute containing sockaddr storage aligned address h](j )}(h``struct nlattr *nla``h]j)}(hj>h]hstruct nlattr *nla}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMAhj>ubj')}(hhh]h)}(h=netlink attribute containing sockaddr storage aligned addressh]h=netlink attribute containing sockaddr storage aligned address}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hMAhj>ubah}(h]h ]h"]h$]h&]uh1j&hj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hMAhj>ubj)}(h```struct udp_media_addr *addr`` tipc media address to fill with address, port and protocol type h](j )}(h``struct udp_media_addr *addr``h]j)}(hj?h]hstruct udp_media_addr *addr}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMBhj ?ubj')}(hhh]h)}(h?tipc media address to fill with address, port and protocol typeh]h?tipc media address to fill with address, port and protocol type}(hj*?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&?hMBhj'?ubah}(h]h ]h"]h$]h&]uh1j&hj ?ubeh}(h]h ]h"]h$]h&]uh1jhj&?hMBhj>ubj)}(hI``u32 *scope_id`` IPv6 scope id pointer, not NULL indicates it's requiredh](j )}(h``u32 *scope_id``h]j)}(hjJ?h]h u32 *scope_id}(hjL?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH?ubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMDhjD?ubj')}(hhh]h)}(h7IPv6 scope id pointer, not NULL indicates it's requiredh]h9IPv6 scope id pointer, not NULL indicates it’s required}(hjc?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMChj`?ubah}(h]h ]h"]h$]h&]uh1j&hjD?ubeh}(h]h ]h"]h$]h&]uh1jhj_?hMDhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_udp_enable (C function)c.tipc_udp_enablehNtauh1jhjvhhhNhNubj$)}(hhh](j))}(hTint tipc_udp_enable (struct net *net, struct tipc_bearer *b, struct nlattr *attrs[])h]j/)}(hSint tipc_udp_enable(struct net *net, struct tipc_bearer *b, struct nlattr *attrs[])h](jG)}(hinth]hint}(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj?hhhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMubjG)}(h h]h }(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj?hhhj?hMubjX)}(htipc_udp_enableh]j^)}(htipc_udp_enableh]htipc_udp_enable}(hj?hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj?hhhj?hMubj)}(h@(struct net *net, struct tipc_bearer *b, struct nlattr *attrs[])h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj?hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj?ubjG)}(h h]h }(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj?ubh)}(hhh]j^)}(hneth]hnet}(hj?hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j)}jj?sbc.tipc_udp_enableasbuh1hhj?ubjG)}(h h]h }(hj@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj?ubj)}(hjh]h*}(hj-@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj^)}(hneth]hnet}(hj:@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj?ubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hjS@hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjO@ubjG)}(h h]h }(hj`@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjO@ubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hjq@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjn@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs@modnameN classnameNjj)}j]j@c.tipc_udp_enableasbuh1hhjO@ubjG)}(h h]h }(hj@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjO@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO@ubj^)}(hj,h]hb}(hj@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjO@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj?ubj%)}(hstruct nlattr *attrs[]h](j5)}(hj8h]hstruct}(hj@hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj@ubjG)}(h h]h }(hj@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj@ubh)}(hhh]j^)}(hnlattrh]hnlattr}(hj@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j@c.tipc_udp_enableasbuh1hhj@ubjG)}(h h]h }(hj@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj@ubj)}(hjh]h*}(hj AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj^)}(hattrsh]hattrs}(hjAhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj@ubj)}(hj/)h]h[}(hj'AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hj=)h]h]}(hj4AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj?ubeh}(h]h ]h"]h$]h&]hhuh1jhj?hhhj?hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj?hhhj?hMubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1j(hj?hMhj?hhubj)}(hhh]h)}(h,callback to create a new udp bearer instanceh]h,callback to create a new udp bearer instance}(hj]AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhjZAhhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjuAjjuAjjjuh1j#hhhjvhNhNubj)}(hX**Parameters** ``struct net *net`` network namespace ``struct tipc_bearer *b`` pointer to generic tipc_bearer ``struct nlattr *attrs[]`` netlink bearer configuration **Description** validate the bearer parameters and initialize the udp bearer rtnl_lock should be heldh](h)}(h**Parameters**h]j)}(hjAh]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Aubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhjyAubj)}(hhh](j)}(h&``struct net *net`` network namespace h](j )}(h``struct net *net``h]j)}(hjAh]hstruct net *net}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhjAubj')}(hhh]h)}(hnetwork namespaceh]hnetwork namespace}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1j&hjAubeh}(h]h ]h"]h$]h&]uh1jhjAhMhjAubj)}(h9``struct tipc_bearer *b`` pointer to generic tipc_bearer h](j )}(h``struct tipc_bearer *b``h]j)}(hjAh]hstruct tipc_bearer *b}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhjAubj')}(hhh]h)}(hpointer to generic tipc_bearerh]hpointer to generic tipc_bearer}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1j&hjAubeh}(h]h ]h"]h$]h&]uh1jhjAhMhjAubj)}(h8``struct nlattr *attrs[]`` netlink bearer configuration h](j )}(h``struct nlattr *attrs[]``h]j)}(hjBh]hstruct nlattr *attrs[]}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1j hU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhj Bubj')}(hhh]h)}(hnetlink bearer configurationh]hnetlink bearer configuration}(hj)BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%BhMhj&Bubah}(h]h ]h"]h$]h&]uh1j&hj Bubeh}(h]h ]h"]h$]h&]uh1jhj%BhMhjAubeh}(h]h ]h"]h$]h&]uh1jhjyAubh)}(h**Description**h]j)}(hjKBh]h Description}(hjMBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIBubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhjyAubh)}(hUvalidate the bearer parameters and initialize the udp bearer rtnl_lock should be heldh]hUvalidate the bearer parameters and initialize the udp bearer rtnl_lock should be held}(hjaBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/networking/tipc:151: ./net/tipc/udp_media.chMhjyAubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjvhhhNhNubeh}(h]tipc-bearer-interfacesah ]h"]tipc bearer interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Crypto Interfacesh]hTIPC Crypto Interfaces}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_tfm (C struct) c.tipc_tfmhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(htipc_tfmh]j/)}(hstruct tipc_tfmh](j5)}(hj8h]hstruct}(hjBhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjBhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKubjG)}(h h]h }(hjBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjBhhhjBhKubjX)}(htipc_tfmh]j^)}(hjBh]htipc_tfm}(hjBhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjBubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjBhhhjBhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjBhhhjBhKubah}(h]jBah ](jjeh"]h$]h&]jj)jhuh1j(hjBhKhjBhhubj)}(hhh]h)}(h)TIPC TFM structure to form a list of TFMsh]h)TIPC TFM structure to form a list of TFMs}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chK}hjBhhubah}(h]h ]h"]h$]h&]uh1jhjBhhhjBhKubeh}(h]h ](jstructeh"]h$]h&]jjjjCjjCjjjuh1j#hhhjBhNhNubj)}(h**Definition**:: struct tipc_tfm { struct crypto_aead *tfm; struct list_head list; }; **Members** ``tfm`` cipher handle/key ``list`` linked list of TFMsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Cubh:}(hj ChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjCubj)}(hLstruct tipc_tfm { struct crypto_aead *tfm; struct list_head list; };h]hLstruct tipc_tfm { struct crypto_aead *tfm; struct list_head list; };}hj(Csbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjCubh)}(h **Members**h]j)}(hj9Ch]hMembers}(hj;ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7Cubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjCubj)}(hhh](j)}(h``tfm`` cipher handle/key h](j )}(h``tfm``h]j)}(hjXCh]htfm}(hjZChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVCubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjRCubj')}(hhh]h)}(hcipher handle/keyh]hcipher handle/key}(hjqChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmChKhjnCubah}(h]h ]h"]h$]h&]uh1j&hjRCubeh}(h]h ]h"]h$]h&]uh1jhjmChKhjOCubj)}(h``list`` linked list of TFMsh](j )}(h``list``h]j)}(hjCh]hlist}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjCubj')}(hhh]h)}(hlinked list of TFMsh]hlinked list of TFMs}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjCubah}(h]h ]h"]h$]h&]uh1j&hjCubeh}(h]h ]h"]h$]h&]uh1jhjChKhjOCubeh}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_aead (C struct) c.tipc_aeadhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(h tipc_aeadh]j/)}(hstruct tipc_aeadh](j5)}(hj8h]hstruct}(hjChhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjChhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjChhhjChKubjX)}(h tipc_aeadh]j^)}(hjCh]h tipc_aead}(hj DhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjChhhjChKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjChhhjChKubah}(h]jCah ](jjeh"]h$]h&]jj)jhuh1j(hjChKhjChhubj)}(hhh]h)}(hTIPC AEAD key structureh]hTIPC AEAD key structure}(hj-DhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj*Dhhubah}(h]h ]h"]h$]h&]uh1jhjChhhjChKubeh}(h]h ](jstructeh"]h$]h&]jjjjEDjjEDjjjuh1j#hhhjBhNhNubj)}(hX**Definition**:: struct tipc_aead { #define TIPC_AEAD_HINT_LEN (5); struct tipc_tfm * __percpu *tfm_entry; struct tipc_crypto *crypto; struct tipc_aead *cloned; atomic_t users; u32 salt; u8 authsize; u8 mode; char hint[2 * TIPC_AEAD_HINT_LEN + 1]; struct rcu_head rcu; struct tipc_aead_key *key; u16 gen; atomic64_t seqno; refcount_t refcnt; }; **Members** ``tfm_entry`` per-cpu pointer to one entry in TFM list ``crypto`` TIPC crypto owns this key ``cloned`` reference to the source key in case cloning ``users`` the number of the key users (TX/RX) ``salt`` the key's SALT value ``authsize`` authentication tag size (max = 16) ``mode`` crypto mode is applied to the key ``hint`` a hint for user key ``rcu`` struct rcu_head ``key`` the aead key ``gen`` the key's generation ``seqno`` the key seqno (cluster scope) ``refcnt`` the key reference counterh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjQDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMDubh:}(hjMDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIDubj)}(hX{struct tipc_aead { #define TIPC_AEAD_HINT_LEN (5); struct tipc_tfm * __percpu *tfm_entry; struct tipc_crypto *crypto; struct tipc_aead *cloned; atomic_t users; u32 salt; u8 authsize; u8 mode; char hint[2 * TIPC_AEAD_HINT_LEN + 1]; struct rcu_head rcu; struct tipc_aead_key *key; u16 gen; atomic64_t seqno; refcount_t refcnt; };h]hX{struct tipc_aead { #define TIPC_AEAD_HINT_LEN (5); struct tipc_tfm * __percpu *tfm_entry; struct tipc_crypto *crypto; struct tipc_aead *cloned; atomic_t users; u32 salt; u8 authsize; u8 mode; char hint[2 * TIPC_AEAD_HINT_LEN + 1]; struct rcu_head rcu; struct tipc_aead_key *key; u16 gen; atomic64_t seqno; refcount_t refcnt; };}hjjDsbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIDubh)}(h **Members**h]j)}(hj{Dh]hMembers}(hj}DhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyDubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIDubj)}(hhh](j)}(h7``tfm_entry`` per-cpu pointer to one entry in TFM list h](j )}(h ``tfm_entry``h]j)}(hjDh]h tfm_entry}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjDubj')}(hhh]h)}(h(per-cpu pointer to one entry in TFM listh]h(per-cpu pointer to one entry in TFM list}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKhjDubah}(h]h ]h"]h$]h&]uh1j&hjDubeh}(h]h ]h"]h$]h&]uh1jhjDhKhjDubj)}(h%``crypto`` TIPC crypto owns this key h](j )}(h ``crypto``h]j)}(hjDh]hcrypto}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjDubj')}(hhh]h)}(hTIPC crypto owns this keyh]hTIPC crypto owns this key}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKhjDubah}(h]h ]h"]h$]h&]uh1j&hjDubeh}(h]h ]h"]h$]h&]uh1jhjDhKhjDubj)}(h7``cloned`` reference to the source key in case cloning h](j )}(h ``cloned``h]j)}(hj Eh]hcloned}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Eubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjEubj')}(hhh]h)}(h+reference to the source key in case cloningh]h+reference to the source key in case cloning}(hj%EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!EhKhj"Eubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhj!EhKhjDubj)}(h.``users`` the number of the key users (TX/RX) h](j )}(h ``users``h]j)}(hjEEh]husers}(hjGEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCEubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj?Eubj')}(hhh]h)}(h#the number of the key users (TX/RX)h]h#the number of the key users (TX/RX)}(hj^EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZEhKhj[Eubah}(h]h ]h"]h$]h&]uh1j&hj?Eubeh}(h]h ]h"]h$]h&]uh1jhjZEhKhjDubj)}(h``salt`` the key's SALT value h](j )}(h``salt``h]j)}(hj~Eh]hsalt}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Eubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjxEubj')}(hhh]h)}(hthe key's SALT valueh]hthe key’s SALT value}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjEubah}(h]h ]h"]h$]h&]uh1j&hjxEubeh}(h]h ]h"]h$]h&]uh1jhjEhKhjDubj)}(h0``authsize`` authentication tag size (max = 16) h](j )}(h ``authsize``h]j)}(hjEh]hauthsize}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjEubj')}(hhh]h)}(h"authentication tag size (max = 16)h]h"authentication tag size (max = 16)}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjEubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhjEhKhjDubj)}(h+``mode`` crypto mode is applied to the key h](j )}(h``mode``h]j)}(hjEh]hmode}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjEubj')}(hhh]h)}(h!crypto mode is applied to the keyh]h!crypto mode is applied to the key}(hj FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKhjFubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhjFhKhjDubj)}(h``hint`` a hint for user key h](j )}(h``hint``h]j)}(hj)Fh]hhint}(hj+FhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'Fubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj#Fubj')}(hhh]h)}(ha hint for user keyh]ha hint for user key}(hjBFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>FhKhj?Fubah}(h]h ]h"]h$]h&]uh1j&hj#Fubeh}(h]h ]h"]h$]h&]uh1jhj>FhKhjDubj)}(h``rcu`` struct rcu_head h](j )}(h``rcu``h]j)}(hjbFh]hrcu}(hjdFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`Fubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj\Fubj')}(hhh]h)}(hstruct rcu_headh]hstruct rcu_head}(hj{FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwFhKhjxFubah}(h]h ]h"]h$]h&]uh1j&hj\Fubeh}(h]h ]h"]h$]h&]uh1jhjwFhKhjDubj)}(h``key`` the aead key h](j )}(h``key``h]j)}(hjFh]hkey}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjFubj')}(hhh]h)}(h the aead keyh]h the aead key}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKhjFubah}(h]h ]h"]h$]h&]uh1j&hjFubeh}(h]h ]h"]h$]h&]uh1jhjFhKhjDubj)}(h``gen`` the key's generation h](j )}(h``gen``h]j)}(hjFh]hgen}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjFubj')}(hhh]h)}(hthe key's generationh]hthe key’s generation}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKhjFubah}(h]h ]h"]h$]h&]uh1j&hjFubeh}(h]h ]h"]h$]h&]uh1jhjFhKhjDubj)}(h(``seqno`` the key seqno (cluster scope) h](j )}(h ``seqno``h]j)}(hj Gh]hseqno}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Gubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjGubj')}(hhh]h)}(hthe key seqno (cluster scope)h]hthe key seqno (cluster scope)}(hj&GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"GhKhj#Gubah}(h]h ]h"]h$]h&]uh1j&hjGubeh}(h]h ]h"]h$]h&]uh1jhj"GhKhjDubj)}(h$``refcnt`` the key reference counterh](j )}(h ``refcnt``h]j)}(hjFGh]hrefcnt}(hjHGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDGubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj@Gubj')}(hhh]h)}(hthe key reference counterh]hthe key reference counter}(hj_GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj\Gubah}(h]h ]h"]h$]h&]uh1j&hj@Gubeh}(h]h ]h"]h$]h&]uh1jhj[GhKhjDubeh}(h]h ]h"]h$]h&]uh1jhjIDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_crypto_stats (C struct)c.tipc_crypto_statshNtauh1jhjBhhhNhNubj$)}(hhh](j))}(htipc_crypto_statsh]j/)}(hstruct tipc_crypto_statsh](j5)}(hj8h]hstruct}(hjGhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjGhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKubjG)}(h h]h }(hjGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGhhhjGhKubjX)}(htipc_crypto_statsh]j^)}(hjGh]htipc_crypto_stats}(hjGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjGubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjGhhhjGhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjGhhhjGhKubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1j(hjGhKhjGhhubj)}(hhh]h)}(hTIPC Crypto statisticsh]hTIPC Crypto statistics}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjGhhubah}(h]h ]h"]h$]h&]uh1jhjGhhhjGhKubeh}(h]h ](jstructeh"]h$]h&]jjjjGjjGjjjuh1j#hhhjBhNhNubj)}(h**Definition**:: struct tipc_crypto_stats { unsigned int stat[MAX_STATS]; }; **Members** ``stat`` array of crypto statisticsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubh:}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjGubj)}(h?struct tipc_crypto_stats { unsigned int stat[MAX_STATS]; };h]h?struct tipc_crypto_stats { unsigned int stat[MAX_STATS]; };}hjHsbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjGubh)}(h **Members**h]j)}(hj0Hh]hMembers}(hj2HhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.Hubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjGubj)}(hhh]j)}(h#``stat`` array of crypto statisticsh](j )}(h``stat``h]j)}(hjOHh]hstat}(hjQHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMHubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIHubj')}(hhh]h)}(harray of crypto statisticsh]harray of crypto statistics}(hjhHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjeHubah}(h]h ]h"]h$]h&]uh1j&hjIHubeh}(h]h ]h"]h$]h&]uh1jhjdHhKhjFHubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_crypto (C struct) c.tipc_cryptohNtauh1jhjBhhhNhNubj$)}(hhh](j))}(h tipc_cryptoh]j/)}(hstruct tipc_cryptoh](j5)}(hj8h]hstruct}(hjHhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjHhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKubjG)}(h h]h }(hjHhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjHhhhjHhKubjX)}(h tipc_cryptoh]j^)}(hjHh]h tipc_crypto}(hjHhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjHubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjHhhhjHhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjHhhhjHhKubah}(h]jHah ](jjeh"]h$]h&]jj)jhuh1j(hjHhKhjHhhubj)}(hhh]h)}(hTIPC TX/RX crypto structureh]hTIPC TX/RX crypto structure}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjHhhubah}(h]h ]h"]h$]h&]uh1jhjHhhhjHhKubeh}(h]h ](jstructeh"]h$]h&]jjjjIjjIjjjuh1j#hhhjBhNhNubj)}(hX2**Definition**:: struct tipc_crypto { struct net *net; struct tipc_node *node; struct tipc_aead *aead[KEY_MAX + 1]; atomic_t peer_rx_active; u16 key_gen; struct tipc_key key; u8 skey_mode; struct tipc_aead_key *skey; struct workqueue_struct *wq; struct delayed_work work; #define KEY_DISTR_SCHED 1; #define KEY_DISTR_COMPL 2; atomic_t key_distr; u32 rekeying_intv; struct tipc_crypto_stats __percpu *stats; char name[48]; atomic64_t sndnxt; unsigned long timer1; unsigned long timer2; union { struct { u8 working:1; u8 key_master:1; u8 legacy_user:1; u8 nokey: 1; }; u8 flags; }; spinlock_t lock; }; **Members** ``net`` struct net ``node`` TIPC node (RX) ``aead`` array of pointers to AEAD keys for encryption/decryption ``peer_rx_active`` replicated peer RX active key index ``key_gen`` TX/RX key generation ``key`` the key states ``skey_mode`` session key's mode ``skey`` received session key ``wq`` common workqueue on TX crypto ``work`` delayed work sched for TX/RX ``key_distr`` key distributing state ``rekeying_intv`` rekeying interval (in minutes) ``stats`` the crypto statistics ``name`` the crypto name ``sndnxt`` the per-peer sndnxt (TX) ``timer1`` general timer 1 (jiffies) ``timer2`` general timer 2 (jiffies) ``{unnamed_union}`` anonymous ``{unnamed_struct}`` anonymous ``working`` the crypto is working or not ``key_master`` flag indicates if master key exists ``legacy_user`` flag indicates if a peer joins w/o master key (for bwd comp.) ``nokey`` no key indication ``flags`` combined flags field ``lock`` tipc_key lockh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Iubh:}(hj IhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIubj)}(hXstruct tipc_crypto { struct net *net; struct tipc_node *node; struct tipc_aead *aead[KEY_MAX + 1]; atomic_t peer_rx_active; u16 key_gen; struct tipc_key key; u8 skey_mode; struct tipc_aead_key *skey; struct workqueue_struct *wq; struct delayed_work work; #define KEY_DISTR_SCHED 1; #define KEY_DISTR_COMPL 2; atomic_t key_distr; u32 rekeying_intv; struct tipc_crypto_stats __percpu *stats; char name[48]; atomic64_t sndnxt; unsigned long timer1; unsigned long timer2; union { struct { u8 working:1; u8 key_master:1; u8 legacy_user:1; u8 nokey: 1; }; u8 flags; }; spinlock_t lock; };h]hXstruct tipc_crypto { struct net *net; struct tipc_node *node; struct tipc_aead *aead[KEY_MAX + 1]; atomic_t peer_rx_active; u16 key_gen; struct tipc_key key; u8 skey_mode; struct tipc_aead_key *skey; struct workqueue_struct *wq; struct delayed_work work; #define KEY_DISTR_SCHED 1; #define KEY_DISTR_COMPL 2; atomic_t key_distr; u32 rekeying_intv; struct tipc_crypto_stats __percpu *stats; char name[48]; atomic64_t sndnxt; unsigned long timer1; unsigned long timer2; union { struct { u8 working:1; u8 key_master:1; u8 legacy_user:1; u8 nokey: 1; }; u8 flags; }; spinlock_t lock; };}hj(Isbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIubh)}(h **Members**h]j)}(hj9Ih]hMembers}(hj;IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7Iubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIubj)}(hhh](j)}(h``net`` struct net h](j )}(h``net``h]j)}(hjXIh]hnet}(hjZIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVIubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjRIubj')}(hhh]h)}(h struct neth]h struct net}(hjqIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmIhKhjnIubah}(h]h ]h"]h$]h&]uh1j&hjRIubeh}(h]h ]h"]h$]h&]uh1jhjmIhKhjOIubj)}(h``node`` TIPC node (RX) h](j )}(h``node``h]j)}(hjIh]hnode}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIubj')}(hhh]h)}(hTIPC node (RX)h]hTIPC node (RX)}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhKhjIubah}(h]h ]h"]h$]h&]uh1j&hjIubeh}(h]h ]h"]h$]h&]uh1jhjIhKhjOIubj)}(hB``aead`` array of pointers to AEAD keys for encryption/decryption h](j )}(h``aead``h]j)}(hjIh]haead}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIubj')}(hhh]h)}(h8array of pointers to AEAD keys for encryption/decryptionh]h8array of pointers to AEAD keys for encryption/decryption}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhKhjIubah}(h]h ]h"]h$]h&]uh1j&hjIubeh}(h]h ]h"]h$]h&]uh1jhjIhKhjOIubj)}(h7``peer_rx_active`` replicated peer RX active key index h](j )}(h``peer_rx_active``h]j)}(hjJh]hpeer_rx_active}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjIubj')}(hhh]h)}(h#replicated peer RX active key indexh]h#replicated peer RX active key index}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjJubah}(h]h ]h"]h$]h&]uh1j&hjIubeh}(h]h ]h"]h$]h&]uh1jhjJhKhjOIubj)}(h!``key_gen`` TX/RX key generation h](j )}(h ``key_gen``h]j)}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:Jubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj6Jubj')}(hhh]h)}(hTX/RX key generationh]hTX/RX key generation}(hjUJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQJhKhjRJubah}(h]h ]h"]h$]h&]uh1j&hj6Jubeh}(h]h ]h"]h$]h&]uh1jhjQJhKhjOIubj)}(h``key`` the key states h](j )}(h``key``h]j)}(hjuJh]hkey}(hjwJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsJubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjoJubj')}(hhh]h)}(hthe key statesh]hthe key states}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjJubah}(h]h ]h"]h$]h&]uh1j&hjoJubeh}(h]h ]h"]h$]h&]uh1jhjJhKhjOIubj)}(h!``skey_mode`` session key's mode h](j )}(h ``skey_mode``h]j)}(hjJh]h skey_mode}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjJubj')}(hhh]h)}(hsession key's modeh]hsession key’s mode}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjJubah}(h]h ]h"]h$]h&]uh1j&hjJubeh}(h]h ]h"]h$]h&]uh1jhjJhKhjOIubj)}(h``skey`` received session key h](j )}(h``skey``h]j)}(hjJh]hskey}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjJubj')}(hhh]h)}(hreceived session keyh]hreceived session key}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjJubah}(h]h ]h"]h$]h&]uh1j&hjJubeh}(h]h ]h"]h$]h&]uh1jhjJhKhjOIubj)}(h%``wq`` common workqueue on TX crypto h](j )}(h``wq``h]j)}(hj Kh]hwq}(hj"KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjKubj')}(hhh]h)}(hcommon workqueue on TX cryptoh]hcommon workqueue on TX crypto}(hj9KhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5KhKhj6Kubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhj5KhKhjOIubj)}(h&``work`` delayed work sched for TX/RX h](j )}(h``work``h]j)}(hjYKh]hwork}(hj[KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWKubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjSKubj')}(hhh]h)}(hdelayed work sched for TX/RXh]hdelayed work sched for TX/RX}(hjrKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnKhKhjoKubah}(h]h ]h"]h$]h&]uh1j&hjSKubeh}(h]h ]h"]h$]h&]uh1jhjnKhKhjOIubj)}(h%``key_distr`` key distributing state h](j )}(h ``key_distr``h]j)}(hjKh]h key_distr}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjKubj')}(hhh]h)}(hkey distributing stateh]hkey distributing state}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhKhjKubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhjKhKhjOIubj)}(h1``rekeying_intv`` rekeying interval (in minutes) h](j )}(h``rekeying_intv``h]j)}(hjKh]h rekeying_intv}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjKubj')}(hhh]h)}(hrekeying interval (in minutes)h]hrekeying interval (in minutes)}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhKhjKubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhjKhKhjOIubj)}(h ``stats`` the crypto statistics h](j )}(h ``stats``h]j)}(hjLh]hstats}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjKubj')}(hhh]h)}(hthe crypto statisticsh]hthe crypto statistics}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhKhjLubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhjLhKhjOIubj)}(h``name`` the crypto name h](j )}(h``name``h]j)}(hj=Lh]hname}(hj?LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;Lubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhj7Lubj')}(hhh]h)}(hthe crypto nameh]hthe crypto name}(hjVLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRLhKhjSLubah}(h]h ]h"]h$]h&]uh1j&hj7Lubeh}(h]h ]h"]h$]h&]uh1jhjRLhKhjOIubj)}(h$``sndnxt`` the per-peer sndnxt (TX) h](j )}(h ``sndnxt``h]j)}(hjvLh]hsndnxt}(hjxLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtLubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjpLubj')}(hhh]h)}(hthe per-peer sndnxt (TX)h]hthe per-peer sndnxt (TX)}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhKhjLubah}(h]h ]h"]h$]h&]uh1j&hjpLubeh}(h]h ]h"]h$]h&]uh1jhjLhKhjOIubj)}(h%``timer1`` general timer 1 (jiffies) h](j )}(h ``timer1``h]j)}(hjLh]htimer1}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjLubj')}(hhh]h)}(hgeneral timer 1 (jiffies)h]hgeneral timer 1 (jiffies)}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhKhjLubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjLhKhjOIubj)}(h%``timer2`` general timer 2 (jiffies) h](j )}(h ``timer2``h]j)}(hjLh]htimer2}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjLubj')}(hhh]h)}(hgeneral timer 2 (jiffies)h]hgeneral timer 2 (jiffies)}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhKhjLubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjLhKhjOIubj)}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j)}(hj!Mh]h{unnamed_union}}(hj#MhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjMubj')}(hhh]h)}(h anonymoush]h anonymous}(hj:MhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6MhKhj7Mubah}(h]h ]h"]h$]h&]uh1j&hjMubeh}(h]h ]h"]h$]h&]uh1jhj6MhKhjOIubj)}(h``{unnamed_struct}`` anonymous h](j )}(h``{unnamed_struct}``h]j)}(hjZMh]h{unnamed_struct}}(hj\MhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXMubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjTMubj')}(hhh]h)}(h anonymoush]h anonymous}(hjsMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoMhKhjpMubah}(h]h ]h"]h$]h&]uh1j&hjTMubeh}(h]h ]h"]h$]h&]uh1jhjoMhKhjOIubj)}(h)``working`` the crypto is working or not h](j )}(h ``working``h]j)}(hjMh]hworking}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjMubj')}(hhh]h)}(hthe crypto is working or noth]hthe crypto is working or not}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhKhjMubah}(h]h ]h"]h$]h&]uh1j&hjMubeh}(h]h ]h"]h$]h&]uh1jhjMhKhjOIubj)}(h3``key_master`` flag indicates if master key exists h](j )}(h``key_master``h]j)}(hjMh]h key_master}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjMubj')}(hhh]h)}(h#flag indicates if master key existsh]h#flag indicates if master key exists}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhKhjMubah}(h]h ]h"]h$]h&]uh1j&hjMubeh}(h]h ]h"]h$]h&]uh1jhjMhKhjOIubj)}(hN``legacy_user`` flag indicates if a peer joins w/o master key (for bwd comp.) h](j )}(h``legacy_user``h]j)}(hjNh]h legacy_user}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chKhjMubj')}(hhh]h)}(h=flag indicates if a peer joins w/o master key (for bwd comp.)h]h=flag indicates if a peer joins w/o master key (for bwd comp.)}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhKhjNubah}(h]h ]h"]h$]h&]uh1j&hjMubeh}(h]h ]h"]h$]h&]uh1jhjNhKhjOIubj)}(h``nokey`` no key indication h](j )}(h ``nokey``h]j)}(hj>Nh]hnokey}(hj@NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjstruct crypto_aead *tipc_aead_tfm_next(struct tipc_aead *aead)h](j5)}(hj8h]hstruct}(hjShhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjShhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjShhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjShhhjShMubh)}(hhh]j^)}(h crypto_aeadh]h crypto_aead}(hj ThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj TmodnameN classnameNjj)}j]j)}jtipc_aead_tfm_nextsbc.tipc_aead_tfm_nextasbuh1hhjShhhjShMubjG)}(h h]h }(hj*ThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjShhhjShMubj)}(hjh]h*}(hj8ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhjShMubjX)}(htipc_aead_tfm_nexth]j^)}(hj'Th]htipc_aead_tfm_next}(hjIThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjETubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjShhhjShMubj)}(h(struct tipc_aead *aead)h]j%)}(hstruct tipc_aead *aeadh](j5)}(hj8h]hstruct}(hjdThhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj`TubjG)}(h h]h }(hjqThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj`Tubh)}(hhh]j^)}(h tipc_aeadh]h tipc_aead}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j%Tc.tipc_aead_tfm_nextasbuh1hhj`TubjG)}(h h]h }(hjThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj`Tubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`Tubj^)}(haeadh]haead}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj`Tubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj\Tubah}(h]h ]h"]h$]h&]hhuh1jhjShhhjShMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjShhhjShMubah}(h]jSah ](jjeh"]h$]h&]jj)jhuh1j(hjShMhjShhubj)}(hhh]h)}(h4Move TFM entry to the next one in list and return ith]h4Move TFM entry to the next one in list and return it}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjThhubah}(h]h ]h"]h$]h&]uh1jhjShhhjShMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1j#hhhjBhNhNubj)}(hA**Parameters** ``struct tipc_aead *aead`` the AEAD key pointerh](h)}(h**Parameters**h]j)}(hjUh]h Parameters}(hj UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjUubj)}(hhh]j)}(h/``struct tipc_aead *aead`` the AEAD key pointerh](j )}(h``struct tipc_aead *aead``h]j)}(hj&Uh]hstruct tipc_aead *aead}(hj(UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$Uubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj Uubj')}(hhh]h)}(hthe AEAD key pointerh]hthe AEAD key pointer}(hj?UhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj(struct tipc_aead **aead, struct tipc_aead_key *ukey, u8 mode)h](j%)}(hstruct tipc_aead **aeadh](j5)}(hj8h]hstruct}(hjUhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjUubjG)}(h h]h }(hjUhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjUubh)}(hhh]j^)}(h tipc_aeadh]h tipc_aead}(hjUhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]j)}jjUsbc.tipc_aead_initasbuh1hhjUubjG)}(h h]h }(hjUhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjUubj)}(hjh]h*}(hj VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj^)}(haeadh]haead}(hj#VhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubj%)}(hstruct tipc_aead_key *ukeyh](j5)}(hj8h]hstruct}(hj``struct tipc_media_addr *dst`` the destination media address h](j )}(h``struct tipc_media_addr *dst``h]j)}(hjch]hstruct tipc_media_addr *dst}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjbubj')}(hhh]h)}(hthe destination media addressh]hthe destination media address}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMhjcubah}(h]h ]h"]h$]h&]uh1j&hjbubeh}(h]h ]h"]h$]h&]uh1jhjchMhjObubj)}(h8``struct tipc_node *__dnode`` TIPC dest node if "known" h](j )}(h``struct tipc_node *__dnode``h]j)}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:cubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj6cubj')}(hhh]h)}(hTIPC dest node if "known"h]hTIPC dest node if “known”}(hjUchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQchMhjRcubah}(h]h ]h"]h$]h&]uh1j&hj6cubeh}(h]h ]h"]h$]h&]uh1jhjQchMhjObubeh}(h]h ]h"]h$]h&]uh1jhj3bubh)}(h **Return**h]j)}(hjwch]hReturn}(hjychhhNhNubah}(h]h ]h"]h$]h&]uh1jhjucubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj3bubj)}(hhh](j)}(h50 : if the encryption has completedh]h)}(hjch]h50 : if the encryption has completed}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjcubah}(h]h ]h"]h$]h&]uh1jhjcubj)}(h5-EINPROGRESS/-EBUSY : if a callback will be performedh]h)}(hjch]h5-EINPROGRESS/-EBUSY : if a callback will be performed}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjcubah}(h]h ]h"]h$]h&]uh1jhjcubj)}(h/< 0 : the encryption has failedh]h)}(hjch]h/< 0 : the encryption has failed}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjcubah}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]jjuh1jhjchMhj3bubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_aead_decrypt (C function)c.tipc_aead_decrypthNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hkint tipc_aead_decrypt (struct net *net, struct tipc_aead *aead, struct sk_buff *skb, struct tipc_bearer *b)h]j/)}(hjint tipc_aead_decrypt(struct net *net, struct tipc_aead *aead, struct sk_buff *skb, struct tipc_bearer *b)h](jG)}(hinth]hint}(hjchhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjchhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMbubjG)}(h h]h }(hj dhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjchhhj dhMbubjX)}(htipc_aead_decrypth]j^)}(htipc_aead_decrypth]htipc_aead_decrypt}(hjdhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjchhhj dhMbubj)}(hU(struct net *net, struct tipc_aead *aead, struct sk_buff *skb, struct tipc_bearer *b)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj;dhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj7dubjG)}(h h]h }(hjHdhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7dubh)}(hhh]j^)}(hneth]hnet}(hjYdhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjVdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[dmodnameN classnameNjj)}j]j)}jj!dsbc.tipc_aead_decryptasbuh1hhj7dubjG)}(h h]h }(hjydhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7dubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7dubj^)}(hneth]hnet}(hjdhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj7dubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3dubj%)}(hstruct tipc_aead *aeadh](j5)}(hj8h]hstruct}(hjdhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjdubjG)}(h h]h }(hjdhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjdubh)}(hhh]j^)}(h tipc_aeadh]h tipc_aead}(hjdhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]judc.tipc_aead_decryptasbuh1hhjdubjG)}(h h]h }(hjdhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjdubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubj^)}(haeadh]haead}(hjehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3dubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjehhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjeubjG)}(h h]h }(hj*ehhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj;ehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8eubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=emodnameN classnameNjj)}j]judc.tipc_aead_decryptasbuh1hhjeubjG)}(h h]h }(hjYehhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubj)}(hjh]h*}(hjgehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj^)}(hskbh]hskb}(hjtehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3dubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hjehhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjeubjG)}(h h]h }(hjehhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hjehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]judc.tipc_aead_decryptasbuh1hhjeubjG)}(h h]h }(hjehhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj^)}(hj,h]hb}(hjehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3dubeh}(h]h ]h"]h$]h&]hhuh1jhjchhhj dhMbubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjchhhj dhMbubah}(h]jcah ](jjeh"]h$]h&]jj)jhuh1j(hj dhMbhjchhubj)}(hhh]h)}(hDecrypt an encrypted messageh]hDecrypt an encrypted message}(hj fhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMbhj fhhubah}(h]h ]h"]h$]h&]uh1jhjchhhj dhMbubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%fjj%fjjjuh1j#hhhjBhNhNubj)}(hX**Parameters** ``struct net *net`` struct net ``struct tipc_aead *aead`` TIPC AEAD for the message decryption ``struct sk_buff *skb`` the input/output skb ``struct tipc_bearer *b`` TIPC bearer where the message has been received **Return** * 0 : if the decryption has completed * -EINPROGRESS/-EBUSY : if a callback will be performed * < 0 : the decryption has failedh](h)}(h**Parameters**h]j)}(hj/fh]h Parameters}(hj1fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-fubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMfhj)fubj)}(hhh](j)}(h``struct net *net`` struct net h](j )}(h``struct net *net``h]j)}(hjNfh]hstruct net *net}(hjPfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMchjHfubj')}(hhh]h)}(h struct neth]h struct net}(hjgfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcfhMchjdfubah}(h]h ]h"]h$]h&]uh1j&hjHfubeh}(h]h ]h"]h$]h&]uh1jhjcfhMchjEfubj)}(h@``struct tipc_aead *aead`` TIPC AEAD for the message decryption h](j )}(h``struct tipc_aead *aead``h]j)}(hjfh]hstruct tipc_aead *aead}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMdhjfubj')}(hhh]h)}(h$TIPC AEAD for the message decryptionh]h$TIPC AEAD for the message decryption}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMdhjfubah}(h]h ]h"]h$]h&]uh1j&hjfubeh}(h]h ]h"]h$]h&]uh1jhjfhMdhjEfubj)}(h-``struct sk_buff *skb`` the input/output skb h](j )}(h``struct sk_buff *skb``h]j)}(hjfh]hstruct sk_buff *skb}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMehjfubj')}(hhh]h)}(hthe input/output skbh]hthe input/output skb}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMehjfubah}(h]h ]h"]h$]h&]uh1j&hjfubeh}(h]h ]h"]h$]h&]uh1jhjfhMehjEfubj)}(hJ``struct tipc_bearer *b`` TIPC bearer where the message has been received h](j )}(h``struct tipc_bearer *b``h]j)}(hjfh]hstruct tipc_bearer *b}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMfhjfubj')}(hhh]h)}(h/TIPC bearer where the message has been receivedh]h/TIPC bearer where the message has been received}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMfhjgubah}(h]h ]h"]h$]h&]uh1j&hjfubeh}(h]h ]h"]h$]h&]uh1jhjghMfhjEfubeh}(h]h ]h"]h$]h&]uh1jhj)fubh)}(h **Return**h]j)}(hj4gh]hReturn}(hj6ghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2gubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhhj)fubj)}(hhh](j)}(h50 : if the decryption has completedh]h)}(hjOgh]h50 : if the decryption has completed}(hjQghhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhhjMgubah}(h]h ]h"]h$]h&]uh1jhjJgubj)}(h5-EINPROGRESS/-EBUSY : if a callback will be performedh]h)}(hjggh]h5-EINPROGRESS/-EBUSY : if a callback will be performed}(hjighhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMihjegubah}(h]h ]h"]h$]h&]uh1jhjJgubj)}(h/< 0 : the decryption has failedh]h)}(hjgh]h/< 0 : the decryption has failed}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMjhj}gubah}(h]h ]h"]h$]h&]uh1jhjJgubeh}(h]h ]h"]h$]h&]jjuh1jhj^ghMhhj)fubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_ehdr_validate (C function)c.tipc_ehdr_validatehNtauh1jhjBhhhNhNubj$)}(hhh](j))}(h-bool tipc_ehdr_validate (struct sk_buff *skb)h]j/)}(h,bool tipc_ehdr_validate(struct sk_buff *skb)h](jG)}(hboolh]hbool}(hjghhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjghhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjghhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjghhhjghMubjX)}(htipc_ehdr_validateh]j^)}(htipc_ehdr_validateh]htipc_ehdr_validate}(hjghhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjgubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjghhhjghMubj)}(h(struct sk_buff *skb)h]j%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjghhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjgubjG)}(h h]h }(hjhhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjgubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjhmodnameN classnameNjj)}j]j)}jjgsbc.tipc_ehdr_validateasbuh1hhjgubjG)}(h h]h }(hj6hhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjgubj)}(hjh]h*}(hjDhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgubj^)}(hskbh]hskb}(hjQhhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjgubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjgubah}(h]h ]h"]h$]h&]hhuh1jhjghhhjghMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjghhhjghMubah}(h]jgah ](jjeh"]h$]h&]jj)jhuh1j(hjghMhjghhubj)}(hhh]h)}(hValidate an encryption messageh]hValidate an encryption message}(hj{hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjxhhhubah}(h]h ]h"]h$]h&]uh1jhjghhhjghMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjhjjhjjjuh1j#hhhjBhNhNubj)}(h**Parameters** ``struct sk_buff *skb`` the message buffer **Return** "true" if this is a valid encryption message, otherwise "false"h](h)}(h**Parameters**h]j)}(hjhh]h Parameters}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjhubj)}(hhh]j)}(h+``struct sk_buff *skb`` the message buffer h](j )}(h``struct sk_buff *skb``h]j)}(hjhh]hstruct sk_buff *skb}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjhubj')}(hhh]h)}(hthe message bufferh]hthe message buffer}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMhjhubah}(h]h ]h"]h$]h&]uh1j&hjhubeh}(h]h ]h"]h$]h&]uh1jhjhhMhjhubah}(h]h ]h"]h$]h&]uh1jhjhubh)}(h **Return**h]j)}(hjhh]hReturn}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjhubh)}(h?"true" if this is a valid encryption message, otherwise "false"h]hG“true” if this is a valid encryption message, otherwise “false”}(hj ihhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_ehdr_build (C function)c.tipc_ehdr_buildhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hwint tipc_ehdr_build (struct net *net, struct tipc_aead *aead, u8 tx_key, struct sk_buff *skb, struct tipc_crypto *__rx)h]j/)}(hvint tipc_ehdr_build(struct net *net, struct tipc_aead *aead, u8 tx_key, struct sk_buff *skb, struct tipc_crypto *__rx)h](jG)}(hinth]hint}(hjnhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjmubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnmubj%)}(hu8 modeh](h)}(hhh]j^)}(hu8h]hu8}(hjZnhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\nmodnameN classnameNjj)}j]jmc.tipc_crypto_key_initasbuh1hhjSnubjG)}(h h]h }(hjxnhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjSnubj^)}(hmodeh]hmode}(hjnhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSnubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnmubj%)}(hbool master_keyh](jG)}(hjgh]hbool}(hjnhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjnubjG)}(h h]h }(hjnhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjnubj^)}(h master_keyh]h master_key}(hjnhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjnubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnmubeh}(h]h ]h"]h$]h&]hhuh1jhj5mhhhjGmhMTubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj1mhhhjGmhMTubah}(h]j,mah ](jjeh"]h$]h&]jj)jhuh1j(hjGmhMThj.mhhubj)}(hhh]h)}(hInitiate a new user / AEAD keyh]hInitiate a new user / AEAD key}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMThjnhhubah}(h]h ]h"]h$]h&]uh1jhj.mhhhjGmhMTubeh}(h]h ](jfunctioneh"]h$]h&]jjjjnjjnjjjuh1j#hhhjBhNhNubj)}(hX**Parameters** ``struct tipc_crypto *c`` TIPC crypto to which new key is attached ``struct tipc_aead_key *ukey`` the user key ``u8 mode`` the key mode (CLUSTER_KEY or PER_NODE_KEY) ``bool master_key`` specify this is a cluster master key **Description** A new TIPC AEAD key will be allocated and initiated with the specified user key, then attached to the TIPC crypto. **Return** new key id in case of success, otherwise: < 0h](h)}(h**Parameters**h]j)}(hjoh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMXhjoubj)}(hhh](j)}(hC``struct tipc_crypto *c`` TIPC crypto to which new key is attached h](j )}(h``struct tipc_crypto *c``h]j)}(hj%oh]hstruct tipc_crypto *c}(hj'ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#oubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMUhjoubj')}(hhh]h)}(h(TIPC crypto to which new key is attachedh]h(TIPC crypto to which new key is attached}(hj>ohhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:ohMUhj;oubah}(h]h ]h"]h$]h&]uh1j&hjoubeh}(h]h ]h"]h$]h&]uh1jhj:ohMUhjoubj)}(h,``struct tipc_aead_key *ukey`` the user key h](j )}(h``struct tipc_aead_key *ukey``h]j)}(hj^oh]hstruct tipc_aead_key *ukey}(hj`ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\oubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMVhjXoubj')}(hhh]h)}(h the user keyh]h the user key}(hjwohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsohMVhjtoubah}(h]h ]h"]h$]h&]uh1j&hjXoubeh}(h]h ]h"]h$]h&]uh1jhjsohMVhjoubj)}(h7``u8 mode`` the key mode (CLUSTER_KEY or PER_NODE_KEY) h](j )}(h ``u8 mode``h]j)}(hjoh]hu8 mode}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMWhjoubj')}(hhh]h)}(h*the key mode (CLUSTER_KEY or PER_NODE_KEY)h]h*the key mode (CLUSTER_KEY or PER_NODE_KEY)}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMWhjoubah}(h]h ]h"]h$]h&]uh1j&hjoubeh}(h]h ]h"]h$]h&]uh1jhjohMWhjoubj)}(h9``bool master_key`` specify this is a cluster master key h](j )}(h``bool master_key``h]j)}(hjoh]hbool master_key}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMXhjoubj')}(hhh]h)}(h$specify this is a cluster master keyh]h$specify this is a cluster master key}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMXhjoubah}(h]h ]h"]h$]h&]uh1j&hjoubeh}(h]h ]h"]h$]h&]uh1jhjohMXhjoubeh}(h]h ]h"]h$]h&]uh1jhjoubh)}(h**Description**h]j)}(hj ph]h Description}(hj phhhNhNubah}(h]h ]h"]h$]h&]uh1jhj pubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMZhjoubh)}(hrA new TIPC AEAD key will be allocated and initiated with the specified user key, then attached to the TIPC crypto.h]hrA new TIPC AEAD key will be allocated and initiated with the specified user key, then attached to the TIPC crypto.}(hj!phhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMYhjoubh)}(h **Return**h]j)}(hj2ph]hReturn}(hj4phhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0pubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM\hjoubh)}(h-new key id in case of success, otherwise: < 0h]h-new key id in case of success, otherwise: < 0}(hjHphhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM]hjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_crypto_key_attach (C function)c.tipc_crypto_key_attachhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hcint tipc_crypto_key_attach (struct tipc_crypto *c, struct tipc_aead *aead, u8 pos, bool master_key)h]j/)}(hbint tipc_crypto_key_attach(struct tipc_crypto *c, struct tipc_aead *aead, u8 pos, bool master_key)h](jG)}(hinth]hint}(hjwphhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsphhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMsubjG)}(h h]h }(hjphhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsphhhjphMsubjX)}(htipc_crypto_key_attachh]j^)}(htipc_crypto_key_attachh]htipc_crypto_key_attach}(hjphhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjpubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjsphhhjphMsubj)}(hH(struct tipc_crypto *c, struct tipc_aead *aead, u8 pos, bool master_key)h](j%)}(hstruct tipc_crypto *ch](j5)}(hj8h]hstruct}(hjphhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjpubjG)}(h h]h }(hjphhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjpubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hjphhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpmodnameN classnameNjj)}j]j)}jjpsbc.tipc_crypto_key_attachasbuh1hhjpubjG)}(h h]h }(hjphhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjpubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj^)}(hjh]hc}(hj qhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpubj%)}(hstruct tipc_aead *aeadh](j5)}(hj8h]hstruct}(hj%qhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj!qubjG)}(h h]h }(hj2qhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj!qubh)}(hhh]j^)}(h tipc_aeadh]h tipc_aead}(hjCqhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj@qubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEqmodnameN classnameNjj)}j]jpc.tipc_crypto_key_attachasbuh1hhj!qubjG)}(h h]h }(hjaqhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj!qubj)}(hjh]h*}(hjoqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!qubj^)}(haeadh]haead}(hj|qhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj!qubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpubj%)}(hu8 posh](h)}(hhh]j^)}(hu8h]hu8}(hjqhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]jpc.tipc_crypto_key_attachasbuh1hhjqubjG)}(h h]h }(hjqhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjqubj^)}(hposh]hpos}(hjqhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpubj%)}(hbool master_keyh](jG)}(hjgh]hbool}(hjqhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjqubjG)}(h h]h }(hjqhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjqubj^)}(h master_keyh]h master_key}(hjqhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpubeh}(h]h ]h"]h$]h&]hhuh1jhjsphhhjphMsubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjophhhjphMsubah}(h]jjpah ](jjeh"]h$]h&]jj)jhuh1j(hjphMshjlphhubj)}(hhh]h)}(h$Attach a new AEAD key to TIPC cryptoh]h$Attach a new AEAD key to TIPC crypto}(hj"rhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMshjrhhubah}(h]h ]h"]h$]h&]uh1jhjlphhhjphMsubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:rjj:rjjjuh1j#hhhjBhNhNubj)}(hXN**Parameters** ``struct tipc_crypto *c`` TIPC crypto to which the new AEAD key is attached ``struct tipc_aead *aead`` the new AEAD key pointer ``u8 pos`` desired slot in the crypto key array, = 0 if any! ``bool master_key`` specify this is a cluster master key **Return** new key id in case of success, otherwise: -EBUSYh](h)}(h**Parameters**h]j)}(hjDrh]h Parameters}(hjFrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBrubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMwhj>rubj)}(hhh](j)}(hL``struct tipc_crypto *c`` TIPC crypto to which the new AEAD key is attached h](j )}(h``struct tipc_crypto *c``h]j)}(hjcrh]hstruct tipc_crypto *c}(hjerhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjarubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMthj]rubj')}(hhh]h)}(h1TIPC crypto to which the new AEAD key is attachedh]h1TIPC crypto to which the new AEAD key is attached}(hj|rhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxrhMthjyrubah}(h]h ]h"]h$]h&]uh1j&hj]rubeh}(h]h ]h"]h$]h&]uh1jhjxrhMthjZrubj)}(h4``struct tipc_aead *aead`` the new AEAD key pointer h](j )}(h``struct tipc_aead *aead``h]j)}(hjrh]hstruct tipc_aead *aead}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMuhjrubj')}(hhh]h)}(hthe new AEAD key pointerh]hthe new AEAD key pointer}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMuhjrubah}(h]h ]h"]h$]h&]uh1j&hjrubeh}(h]h ]h"]h$]h&]uh1jhjrhMuhjZrubj)}(h=``u8 pos`` desired slot in the crypto key array, = 0 if any! h](j )}(h ``u8 pos``h]j)}(hjrh]hu8 pos}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMvhjrubj')}(hhh]h)}(h1desired slot in the crypto key array, = 0 if any!h]h1desired slot in the crypto key array, = 0 if any!}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMvhjrubah}(h]h ]h"]h$]h&]uh1j&hjrubeh}(h]h ]h"]h$]h&]uh1jhjrhMvhjZrubj)}(h9``bool master_key`` specify this is a cluster master key h](j )}(h``bool master_key``h]j)}(hjsh]hbool master_key}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhj subah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMwhjsubj')}(hhh]h)}(h$specify this is a cluster master keyh]h$specify this is a cluster master key}(hj'shhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#shMwhj$subah}(h]h ]h"]h$]h&]uh1j&hjsubeh}(h]h ]h"]h$]h&]uh1jhj#shMwhjZrubeh}(h]h ]h"]h$]h&]uh1jhj>rubh)}(h **Return**h]j)}(hjIsh]hReturn}(hjKshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGsubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMyhj>rubh)}(h0new key id in case of success, otherwise: -EBUSYh]h0new key id in case of success, otherwise: -EBUSY}(hj_shhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMyhj>rubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&tipc_crypto_key_try_align (C function)c.tipc_crypto_key_try_alignhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hGbool tipc_crypto_key_try_align (struct tipc_crypto *rx, u8 new_pending)h]j/)}(hFbool tipc_crypto_key_try_align(struct tipc_crypto *rx, u8 new_pending)h](jG)}(hjgh]hbool}(hjshhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjshhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjshhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjshhhjshMubjX)}(htipc_crypto_key_try_alignh]j^)}(htipc_crypto_key_try_alignh]htipc_crypto_key_try_align}(hjshhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjsubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjshhhjshMubj)}(h((struct tipc_crypto *rx, u8 new_pending)h](j%)}(hstruct tipc_crypto *rxh](j5)}(hj8h]hstruct}(hjshhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjsubjG)}(h h]h }(hjshhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hjshhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]j)}jjssbc.tipc_crypto_key_try_alignasbuh1hhjsubjG)}(h h]h }(hjthhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsubj)}(hjh]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj^)}(hrxh]hrx}(hj#thhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjsubj%)}(hu8 new_pendingh](h)}(hhh]j^)}(hu8h]hu8}(hj?thhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjzubjG)}(h h]h }(hjOzhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>zubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj`zhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj]zubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbzmodnameN classnameNjj)}j]j zc.tipc_crypto_key_synchasbuh1hhj>zubjG)}(h h]h }(hj~zhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>zubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>zubj^)}(hskbh]hskb}(hjzhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj>zubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjyubeh}(h]h ]h"]h$]h&]hhuh1jhjyhhhjyhMWubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjyhhhjyhMWubah}(h]jyah ](jjeh"]h$]h&]jj)jhuh1j(hjyhMWhjyhhubj)}(hhh]h)}(h/Synch own key data according to peer key statush]h/Synch own key data according to peer key status}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMWhjzhhubah}(h]h ]h"]h$]h&]uh1jhjyhhhjyhMWubeh}(h]h ](jfunctioneh"]h$]h&]jjjjzjjzjjjuh1j#hhhjBhNhNubj)}(hX8**Parameters** ``struct tipc_crypto *rx`` RX crypto handle ``struct sk_buff *skb`` TIPCv2 message buffer (incl. the ehdr from peer) **Description** This function updates the peer node related data as the peer RX active key has changed, so the number of TX keys' users on this node are increased and decreased correspondingly. It also considers if peer has no key, then we need to make own master key (if any) taking over i.e. starting grace period and also trigger key distributing process. The "per-peer" sndnxt is also reset when the peer key has switched.h](h)}(h**Parameters**h]j)}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM[hjzubj)}(hhh](j)}(h,``struct tipc_crypto *rx`` RX crypto handle h](j )}(h``struct tipc_crypto *rx``h]j)}(hj{h]hstruct tipc_crypto *rx}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMXhjzubj')}(hhh]h)}(hRX crypto handleh]hRX crypto handle}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMXhj{ubah}(h]h ]h"]h$]h&]uh1j&hjzubeh}(h]h ]h"]h$]h&]uh1jhj{hMXhjzubj)}(hI``struct sk_buff *skb`` TIPCv2 message buffer (incl. the ehdr from peer) h](j )}(h``struct sk_buff *skb``h]j)}(hj={h]hstruct sk_buff *skb}(hj?{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;{ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMYhj7{ubj')}(hhh]h)}(h0TIPCv2 message buffer (incl. the ehdr from peer)h]h0TIPCv2 message buffer (incl. the ehdr from peer)}(hjV{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjR{hMYhjS{ubah}(h]h ]h"]h$]h&]uh1j&hj7{ubeh}(h]h ]h"]h$]h&]uh1jhjR{hMYhjzubeh}(h]h ]h"]h$]h&]uh1jhjzubh)}(h**Description**h]j)}(hjx{h]h Description}(hjz{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv{ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM[hjzubh)}(hThis function updates the peer node related data as the peer RX active key has changed, so the number of TX keys' users on this node are increased and decreased correspondingly.h]hThis function updates the peer node related data as the peer RX active key has changed, so the number of TX keys’ users on this node are increased and decreased correspondingly.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMZhjzubh)}(hIt also considers if peer has no key, then we need to make own master key (if any) taking over i.e. starting grace period and also trigger key distributing process.h]hIt also considers if peer has no key, then we need to make own master key (if any) taking over i.e. starting grace period and also trigger key distributing process.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM^hjzubh)}(hCThe "per-peer" sndnxt is also reset when the peer key has switched.h]hGThe “per-peer” sndnxt is also reset when the peer key has switched.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMbhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_crypto_xmit (C function)c.tipc_crypto_xmithNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hint tipc_crypto_xmit (struct net *net, struct sk_buff **skb, struct tipc_bearer *b, struct tipc_media_addr *dst, struct tipc_node *__dnode)h]j/)}(hint tipc_crypto_xmit(struct net *net, struct sk_buff **skb, struct tipc_bearer *b, struct tipc_media_addr *dst, struct tipc_node *__dnode)h](jG)}(hinth]hint}(hj{hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj{hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMzubjG)}(h h]h }(hj{hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj{hhhj{hMzubjX)}(htipc_crypto_xmith]j^)}(htipc_crypto_xmith]htipc_crypto_xmit}(hj{hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj{ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj{hhhj{hMzubj)}(hv(struct net *net, struct sk_buff **skb, struct tipc_bearer *b, struct tipc_media_addr *dst, struct tipc_node *__dnode)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj|hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj|ubjG)}(h h]h }(hj%|hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj|ubh)}(hhh]j^)}(hneth]hnet}(hj6|hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj3|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8|modnameN classnameNjj)}j]j)}jj{sbc.tipc_crypto_xmitasbuh1hhj|ubjG)}(h h]h }(hjV|hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj|ubj)}(hjh]h*}(hjd|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj^)}(hneth]hnet}(hjq|hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubj%)}(hstruct sk_buff **skbh](j5)}(hj8h]hstruct}(hj|hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj|ubjG)}(h h]h }(hj|hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj|ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj|hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]jR|c.tipc_crypto_xmitasbuh1hhj|ubjG)}(h h]h }(hj|hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj^)}(hskbh]hskb}(hj|hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hj}hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj}ubjG)}(h h]h }(hj}hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj}ubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hj%}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'}modnameN classnameNjj)}j]jR|c.tipc_crypto_xmitasbuh1hhj}ubjG)}(h h]h }(hjC}hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj}ubj)}(hjh]h*}(hjQ}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj^)}(hj,h]hb}(hj^}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubj%)}(hstruct tipc_media_addr *dsth](j5)}(hj8h]hstruct}(hjv}hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjr}ubjG)}(h h]h }(hj}hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjr}ubh)}(hhh]j^)}(htipc_media_addrh]htipc_media_addr}(hj}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]jR|c.tipc_crypto_xmitasbuh1hhjr}ubjG)}(h h]h }(hj}hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjr}ubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjr}ubj^)}(hdsth]hdst}(hj}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjr}ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubj%)}(hstruct tipc_node *__dnodeh](j5)}(hj8h]hstruct}(hj}hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj}ubjG)}(h h]h }(hj}hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj}ubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hj~hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]jR|c.tipc_crypto_xmitasbuh1hhj}ubjG)}(h h]h }(hj"~hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj}ubj)}(hjh]h*}(hj0~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj^)}(h__dnodeh]h__dnode}(hj=~hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubeh}(h]h ]h"]h$]h&]hhuh1jhj{hhhj{hMzubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj{hhhj{hMzubah}(h]j{ah ](jjeh"]h$]h&]jj)jhuh1j(hj{hMzhj{hhubj)}(hhh]h)}(h%Build & encrypt TIPC message for xmith]h%Build & encrypt TIPC message for xmit}(hjg~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMzhjd~hhubah}(h]h ]h"]h$]h&]uh1jhj{hhhj{hMzubeh}(h]h ](jfunctioneh"]h$]h&]jjjj~jj~jjjuh1j#hhhjBhNhNubj)}(hX**Parameters** ``struct net *net`` struct net ``struct sk_buff **skb`` input/output message skb pointer ``struct tipc_bearer *b`` bearer used for xmit later ``struct tipc_media_addr *dst`` destination media address ``struct tipc_node *__dnode`` destination node for reference if any **Description** First, build an encryption message header on the top of the message, then encrypt the original TIPC message by using the pending, master or active key with this preference order. If the encryption is successful, the encrypted skb is returned directly or via the callback. Otherwise, the skb is freed! **Return** * 0 : the encryption has succeeded (or no encryption) * -EINPROGRESS/-EBUSY : the encryption is ongoing, a callback will be made * -ENOKEK : the encryption has failed due to no key * -EKEYREVOKED : the encryption has failed due to key revoked * -ENOMEM : the encryption has failed due to no memory * < 0 : the encryption has failed due to other reasonsh](h)}(h**Parameters**h]j)}(hj~h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM~hj~ubj)}(hhh](j)}(h``struct net *net`` struct net h](j )}(h``struct net *net``h]j)}(hj~h]hstruct net *net}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM{hj~ubj')}(hhh]h)}(h struct neth]h struct net}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hM{hj~ubah}(h]h ]h"]h$]h&]uh1j&hj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hM{hj~ubj)}(h:``struct sk_buff **skb`` input/output message skb pointer h](j )}(h``struct sk_buff **skb``h]j)}(hj~h]hstruct sk_buff **skb}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM|hj~ubj')}(hhh]h)}(h input/output message skb pointerh]h input/output message skb pointer}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hM|hj~ubah}(h]h ]h"]h$]h&]uh1j&hj~ubeh}(h]h ]h"]h$]h&]uh1jhj~hM|hj~ubj)}(h5``struct tipc_bearer *b`` bearer used for xmit later h](j )}(h``struct tipc_bearer *b``h]j)}(hjh]hstruct tipc_bearer *b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM}hjubj')}(hhh]h)}(hbearer used for xmit laterh]hbearer used for xmit later}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hM}hj0ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj/hM}hj~ubj)}(h:``struct tipc_media_addr *dst`` destination media address h](j )}(h``struct tipc_media_addr *dst``h]j)}(hjSh]hstruct tipc_media_addr *dst}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM~hjMubj')}(hhh]h)}(hdestination media addressh]hdestination media address}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhM~hjiubah}(h]h ]h"]h$]h&]uh1j&hjMubeh}(h]h ]h"]h$]h&]uh1jhjhhM~hj~ubj)}(hD``struct tipc_node *__dnode`` destination node for reference if any h](j )}(h``struct tipc_node *__dnode``h]j)}(hjh]hstruct tipc_node *__dnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h%destination node for reference if anyh]h%destination node for reference if any}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj~ubeh}(h]h ]h"]h$]h&]uh1jhj~ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj~ubh)}(hX,First, build an encryption message header on the top of the message, then encrypt the original TIPC message by using the pending, master or active key with this preference order. If the encryption is successful, the encrypted skb is returned directly or via the callback. Otherwise, the skb is freed!h]hX,First, build an encryption message header on the top of the message, then encrypt the original TIPC message by using the pending, master or active key with this preference order. If the encryption is successful, the encrypted skb is returned directly or via the callback. Otherwise, the skb is freed!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj~ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj~ubj)}(hhh](j)}(hE0 : the encryption has succeeded (or no encryption)h]h)}(hj h]hE0 : the encryption has succeeded (or no encryption)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hH-EINPROGRESS/-EBUSY : the encryption is ongoing, a callback will be madeh]h)}(hj!h]hH-EINPROGRESS/-EBUSY : the encryption is ongoing, a callback will be made}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h=-ENOKEK : the encryption has failed due to no keyh]h option_list)}(hhh]hoption_list_item)}(hhh](h option_group)}(hhh]hoption)}(h-ENOKEKh](h option_string)}(h-Eh]h-E}hjRsbah}(h]h ]h"]h$]h&]uh1jPhjLubhoption_argument)}(hNOKEKh]hNOKEK}(hjbhhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j`hjLubeh}(h]h ]h"]h$]h&]uh1jJhjGubah}(h]h ]h"]h$]h&]uh1jEhjBubh description)}(h): the encryption has failed due to no keyh]h)}(hjh]h): the encryption has failed due to no key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubah}(h]h ]h"]h$]h&]uh1j}hjBubeh}(h]h ]h"]h$]h&]uh1j@hj=ubah}(h]h ]h"]h$]h&]uh1j;hjhMhj7ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hB-EKEYREVOKED : the encryption has failed due to key revokedh]j<)}(hhh]jA)}(hhh](jF)}(hhh]jK)}(h -EKEYREVOKEDh](jQ)}(h-Eh]h-E}hjsbah}(h]h ]h"]h$]h&]uh1jPhjubja)}(h KEYREVOKEDh]h KEYREVOKED}(hjȀhhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j`hjubeh}(h]h ]h"]h$]h&]uh1jJhjubah}(h]h ]h"]h$]h&]uh1jEhjubj~)}(h.: the encryption has failed due to key revokedh]h)}(hjh]h.: the encryption has failed due to key revoked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j;hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h@-ENOMEM : the encryption has failed due to no memoryh]j<)}(hhh]jA)}(hhh](jF)}(hhh]jK)}(h-ENOMEMh](jQ)}(h-Eh]h-E}hjsbah}(h]h ]h"]h$]h&]uh1jPhjubja)}(hNOMEMh]hNOMEM}(hj,hhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j`hjubeh}(h]h ]h"]h$]h&]uh1jJhjubah}(h]h ]h"]h$]h&]uh1jEhjubj~)}(h,: the encryption has failed due to no memoryh]h)}(hjIh]h,: the encryption has failed due to no memory}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjGubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j;hjXhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hD< 0 : the encryption has failed due to other reasonsh]h)}(hjsh]hD< 0 : the encryption has failed due to other reasons}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjqubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhMhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_crypto_rcv (C function)c.tipc_crypto_rcvhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hjint tipc_crypto_rcv (struct net *net, struct tipc_crypto *rx, struct sk_buff **skb, struct tipc_bearer *b)h]j/)}(hiint tipc_crypto_rcv(struct net *net, struct tipc_crypto *rx, struct sk_buff **skb, struct tipc_bearer *b)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_crypto_rcvh]j^)}(htipc_crypto_rcvh]htipc_crypto_rcv}(hjЁhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj́ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(hV(struct net *net, struct tipc_crypto *rx, struct sk_buff **skb, struct tipc_bearer *b)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hneth]hnet}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjҁsbc.tipc_crypto_rcvasbuh1hhjubjG)}(h h]h }(hj*hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hneth]hnet}(hjEhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_crypto *rxh](j5)}(hj8h]hstruct}(hj^hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjZubjG)}(h h]h }(hjkhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjZubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hj|hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j&c.tipc_crypto_rcvasbuh1hhjZubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj^)}(hrxh]hrx}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff **skbh](j5)}(hj8h]hstruct}(hj΂hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjʂubjG)}(h h]h }(hjۂhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjʂubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j&c.tipc_crypto_rcvasbuh1hhjʂubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjʂubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʂubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʂubj^)}(hskbh]hskb}(hj2hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjʂubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hjKhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjGubjG)}(h h]h }(hjXhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hjihhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjfubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjkmodnameN classnameNjj)}j]j&c.tipc_crypto_rcvasbuh1hhjGubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj^)}(hj,h]hb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(h+Decrypt an encrypted TIPC message from peerh]h+Decrypt an encrypted TIPC message from peer}(hj˃hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjȃhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjBhNhNubj)}(hX**Parameters** ``struct net *net`` struct net ``struct tipc_crypto *rx`` RX crypto handle ``struct sk_buff **skb`` input/output message skb pointer ``struct tipc_bearer *b`` bearer where the message has been received **Description** If the decryption is successful, the decrypted skb is returned directly or as the callback, the encryption header and auth tag will be trimmed out before forwarding to tipc_rcv() via the tipc_crypto_rcv_complete(). Otherwise, the skb will be freed! **Note** RX key(s) can be re-aligned, or in case of no key suitable, TX cluster key(s) can be taken for decryption (- recursive). **Return** * 0 : the decryption has successfully completed * -EINPROGRESS/-EBUSY : the decryption is ongoing, a callback will be made * -ENOKEY : the decryption has failed due to no key * -EBADMSG : the decryption has failed due to bad message * -ENOMEM : the decryption has failed due to no memory * < 0 : the decryption has failed due to other reasonsh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj)}(hhh](j)}(h``struct net *net`` struct net h](j )}(h``struct net *net``h]j)}(hj h]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h struct neth]h struct net}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj"ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj!hMhjubj)}(h,``struct tipc_crypto *rx`` RX crypto handle h](j )}(h``struct tipc_crypto *rx``h]j)}(hjEh]hstruct tipc_crypto *rx}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj?ubj')}(hhh]h)}(hRX crypto handleh]hRX crypto handle}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1j&hj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjubj)}(h:``struct sk_buff **skb`` input/output message skb pointer h](j )}(h``struct sk_buff **skb``h]j)}(hj~h]hstruct sk_buff **skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjxubj')}(hhh]h)}(h input/output message skb pointerh]h input/output message skb pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjxubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hE``struct tipc_bearer *b`` bearer where the message has been received h](j )}(h``struct tipc_bearer *b``h]j)}(hjh]hstruct tipc_bearer *b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h*bearer where the message has been receivedh]h*bearer where the message has been received}(hjЄhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj̄hMhj̈́ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj̄hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(hIf the decryption is successful, the decrypted skb is returned directly or as the callback, the encryption header and auth tag will be trimmed out before forwarding to tipc_rcv() via the tipc_crypto_rcv_complete(). Otherwise, the skb will be freed!h]hIf the decryption is successful, the decrypted skb is returned directly or as the callback, the encryption header and auth tag will be trimmed out before forwarding to tipc_rcv() via the tipc_crypto_rcv_complete(). Otherwise, the skb will be freed!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(hxRX key(s) can be re-aligned, or in case of no key suitable, TX cluster key(s) can be taken for decryption (- recursive).h]hxRX key(s) can be re-aligned, or in case of no key suitable, TX cluster key(s) can be taken for decryption (- recursive).}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(h **Return**h]j)}(hj@h]hReturn}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj)}(hhh](j)}(h?0 : the decryption has successfully completedh]h)}(hj[h]h?0 : the decryption has successfully completed}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjYubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(hH-EINPROGRESS/-EBUSY : the decryption is ongoing, a callback will be madeh]h)}(hjsh]hH-EINPROGRESS/-EBUSY : the decryption is ongoing, a callback will be made}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjqubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(h=-ENOKEY : the decryption has failed due to no keyh]j<)}(hhh]jA)}(hhh](jF)}(hhh]jK)}(h-ENOKEYh](jQ)}(h-Eh]h-E}hjsbah}(h]h ]h"]h$]h&]uh1jPhjubja)}(hNOKEYh]hNOKEY}(hjhhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j`hjubeh}(h]h ]h"]h$]h&]uh1jJhjubah}(h]h ]h"]h$]h&]uh1jEhjubj~)}(h): the decryption has failed due to no keyh]h)}(hjŅh]h): the decryption has failed due to no key}(hjDžhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjÅubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j;hjԅhMhjubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(hB-EBADMSG : the decryption has failed due to bad messageh]j<)}(hhh]jA)}(hhh](jF)}(hhh]jK)}(h-EBADMSGh](jQ)}(h-Eh]h-E}hjsbah}(h]h ]h"]h$]h&]uh1jPhjubja)}(hBADMSGh]hBADMSG}(hj hhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j`hjubeh}(h]h ]h"]h$]h&]uh1jJhjubah}(h]h ]h"]h$]h&]uh1jEhjubj~)}(h.: the decryption has failed due to bad messageh]h)}(hj)h]h.: the decryption has failed due to bad message}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhj'ubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j;hj8hMhjubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(h@-ENOMEM : the decryption has failed due to no memoryh]j<)}(hhh]jA)}(hhh](jF)}(hhh]jK)}(h-ENOMEMh](jQ)}(h-Eh]h-E}hjbsbah}(h]h ]h"]h$]h&]uh1jPhj^ubja)}(hNOMEMh]hNOMEM}(hjphhhNhNubah}(h]h ]h"]h$]h&] delimiterhuh1j`hj^ubeh}(h]h ]h"]h$]h&]uh1jJhj[ubah}(h]h ]h"]h$]h&]uh1jEhjXubj~)}(h,: the decryption has failed due to no memoryh]h)}(hjh]h,: the decryption has failed due to no memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM hjubah}(h]h ]h"]h$]h&]uh1j}hjXubeh}(h]h ]h"]h$]h&]uh1j@hjUubah}(h]h ]h"]h$]h&]uh1j;hjhM hjQubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(hD< 0 : the decryption has failed due to other reasonsh]h)}(hjh]hD< 0 : the decryption has failed due to other reasons}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM hjubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]jjuh1jhjjhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_crypto_msg_rcv (C function)c.tipc_crypto_msg_rcvhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(h?void tipc_crypto_msg_rcv (struct net *net, struct sk_buff *skb)h]j/)}(h>void tipc_crypto_msg_rcv(struct net *net, struct sk_buff *skb)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMgubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMgubjX)}(htipc_crypto_msg_rcvh]j^)}(htipc_crypto_msg_rcvh]htipc_crypto_msg_rcv}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMgubj)}(h&(struct net *net, struct sk_buff *skb)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj0hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj,ubjG)}(h h]h }(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,ubh)}(hhh]j^)}(hneth]hnet}(hjNhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jjsbc.tipc_crypto_msg_rcvasbuh1hhj,ubjG)}(h h]h }(hjnhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj‡modnameN classnameNjj)}j]jjc.tipc_crypto_msg_rcvasbuh1hhjubjG)}(h h]h }(hjއhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMgubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMgubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMghjhhubj)}(hhh]h)}(h$Common 'MSG_CRYPTO' processing pointh]h(Common ‘MSG_CRYPTO’ processing point}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMghj hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMgubeh}(h]h ](jfunctioneh"]h$]h&]jjjj;jj;jjjuh1j#hhhjBhNhNubj)}(hl**Parameters** ``struct net *net`` the struct net ``struct sk_buff *skb`` the receiving message bufferh](h)}(h**Parameters**h]j)}(hjEh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMkhj?ubj)}(hhh](j)}(h#``struct net *net`` the struct net h](j )}(h``struct net *net``h]j)}(hjdh]hstruct net *net}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhhj^ubj')}(hhh]h)}(hthe struct neth]hthe struct net}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhhjzubah}(h]h ]h"]h$]h&]uh1j&hj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhMhhj[ubj)}(h4``struct sk_buff *skb`` the receiving message bufferh](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMjhjubj')}(hhh]h)}(hthe receiving message bufferh]hthe receiving message buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMihjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMjhj[ubeh}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_crypto_key_distr (C function)c.tipc_crypto_key_distrhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hRint tipc_crypto_key_distr (struct tipc_crypto *tx, u8 key, struct tipc_node *dest)h]j/)}(hQint tipc_crypto_key_distr(struct tipc_crypto *tx, u8 key, struct tipc_node *dest)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_crypto_key_distrh]j^)}(htipc_crypto_key_distrh]htipc_crypto_key_distr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(h8(struct tipc_crypto *tx, u8 key, struct tipc_node *dest)h](j%)}(hstruct tipc_crypto *txh](j5)}(hj8h]hstruct}(hj4hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj0ubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj0ubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hjRhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j)}jjsbc.tipc_crypto_key_distrasbuh1hhj0ubjG)}(h h]h }(hjrhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj0ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj^)}(htxh]htx}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj,ubj%)}(hu8 keyh](h)}(hhh]j^)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jnc.tipc_crypto_key_distrasbuh1hhjubjG)}(h h]h }(hjljhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hkeyh]hkey}(hjՉhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj,ubj%)}(hstruct tipc_node *desth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jnc.tipc_crypto_key_distrasbuh1hhjubjG)}(h h]h }(hj*hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hdesth]hdest}(hjEhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj,ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(hDistribute a TX keyh]hDistribute a TX key}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjlhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjBhNhNubj)}(h**Parameters** ``struct tipc_crypto *tx`` the TX crypto ``u8 key`` the key's index ``struct tipc_node *dest`` the destination tipc node, = NULL if distributing to all nodes **Return** 0 in case of success, otherwise < 0h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj)}(hhh](j)}(h)``struct tipc_crypto *tx`` the TX crypto h](j )}(h``struct tipc_crypto *tx``h]j)}(hjh]hstruct tipc_crypto *tx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h the TX cryptoh]h the TX crypto}(hjɊhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjŊhMhjƊubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjŊhMhjubj)}(h``u8 key`` the key's index h](j )}(h ``u8 key``h]j)}(hjh]hu8 key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(hthe key's indexh]hthe key’s index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hZ``struct tipc_node *dest`` the destination tipc node, = NULL if distributing to all nodes h](j )}(h``struct tipc_node *dest``h]j)}(hj"h]hstruct tipc_node *dest}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h>the destination tipc node, = NULL if distributing to all nodesh]h>the destination tipc node, = NULL if distributing to all nodes}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj8ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj7hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj]h]hReturn}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(h#0 in case of success, otherwise < 0h]h#0 in case of success, otherwise < 0}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!tipc_crypto_key_xmit (C function)c.tipc_crypto_key_xmithNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hcint tipc_crypto_key_xmit (struct net *net, struct tipc_aead_key *skey, u16 gen, u8 mode, u32 dnode)h]j/)}(hbint tipc_crypto_key_xmit(struct net *net, struct tipc_aead_key *skey, u16 gen, u8 mode, u32 dnode)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_crypto_key_xmith]j^)}(htipc_crypto_key_xmith]htipc_crypto_key_xmit}(hjËhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(hJ(struct net *net, struct tipc_aead_key *skey, u16 gen, u8 mode, u32 dnode)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjߋhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjۋubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjۋubh)}(hhh]j^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjŋsbc.tipc_crypto_key_xmitasbuh1hhjۋubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjۋubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjۋubj^)}(hneth]hnet}(hj8hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjۋubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj׋ubj%)}(hstruct tipc_aead_key *skeyh](j5)}(hj8h]hstruct}(hjQhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjMubjG)}(h h]h }(hj^hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjMubh)}(hhh]j^)}(h tipc_aead_keyh]h tipc_aead_key}(hjohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]jc.tipc_crypto_key_xmitasbuh1hhjMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubj^)}(hskeyh]hskey}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj׋ubj%)}(hu16 genh](h)}(hhh]j^)}(hu16h]hu16}(hjČhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjƌmodnameN classnameNjj)}j]jc.tipc_crypto_key_xmitasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hgenh]hgen}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj׋ubj%)}(hu8 modeh](h)}(hhh]j^)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_crypto_key_xmitasbuh1hhjubjG)}(h h]h }(hj*hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmodeh]hmode}(hj8hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj׋ubj%)}(h u32 dnodeh](h)}(hhh]j^)}(hu32h]hu32}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]jc.tipc_crypto_key_xmitasbuh1hhjMubjG)}(h h]h }(hjrhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjMubj^)}(hdnodeh]hdnode}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj׋ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(hSend a session keyh]hSend a session key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjBhNhNubj)}(hX**Parameters** ``struct net *net`` the struct net ``struct tipc_aead_key *skey`` the session key to be sent ``u16 gen`` the key's generation ``u8 mode`` the key's mode ``u32 dnode`` the destination node address, = 0 if broadcasting to all nodes **Description** The session key 'skey' is packed in a TIPC v2 'MSG_CRYPTO/KEY_DISTR_MSG' as its data section, then xmit-ed through the uc/bc link. **Return** 0 in case of success, otherwise < 0h](h)}(h**Parameters**h]j)}(hj̍h]h Parameters}(hj΍hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjʍubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjƍubj)}(hhh](j)}(h#``struct net *net`` the struct net h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(hthe struct neth]hthe struct net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h:``struct tipc_aead_key *skey`` the session key to be sent h](j )}(h``struct tipc_aead_key *skey``h]j)}(hj$h]hstruct tipc_aead_key *skey}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(hthe session key to be senth]hthe session key to be sent}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj:ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj9hMhjubj)}(h!``u16 gen`` the key's generation h](j )}(h ``u16 gen``h]j)}(hj]h]hu16 gen}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjWubj')}(hhh]h)}(hthe key's generationh]hthe key’s generation}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubah}(h]h ]h"]h$]h&]uh1j&hjWubeh}(h]h ]h"]h$]h&]uh1jhjrhMhjubj)}(h``u8 mode`` the key's mode h](j )}(h ``u8 mode``h]j)}(hjh]hu8 mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(hthe key's modeh]hthe key’s mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hM``u32 dnode`` the destination node address, = 0 if broadcasting to all nodes h](j )}(h ``u32 dnode``h]j)}(hjώh]h u32 dnode}(hjюhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj͎ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjɎubj')}(hhh]h)}(h>the destination node address, = 0 if broadcasting to all nodesh]h>the destination node address, = 0 if broadcasting to all nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjɎubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjƍubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjƍubh)}(hThe session key 'skey' is packed in a TIPC v2 'MSG_CRYPTO/KEY_DISTR_MSG' as its data section, then xmit-ed through the uc/bc link.h]hThe session key ‘skey’ is packed in a TIPC v2 ‘MSG_CRYPTO/KEY_DISTR_MSG’ as its data section, then xmit-ed through the uc/bc link.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjƍubh)}(h **Return**h]j)}(hj1h]hReturn}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjƍubh)}(h#0 in case of success, otherwise < 0h]h#0 in case of success, otherwise < 0}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjƍubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_crypto_key_rcv (C function)c.tipc_crypto_key_rcvhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hGbool tipc_crypto_key_rcv (struct tipc_crypto *rx, struct tipc_msg *hdr)h]j/)}(hFbool tipc_crypto_key_rcv(struct tipc_crypto *rx, struct tipc_msg *hdr)h](jG)}(hjgh]hbool}(hjvhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrhhhjhMubjX)}(htipc_crypto_key_rcvh]j^)}(htipc_crypto_key_rcvh]htipc_crypto_key_rcv}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjrhhhjhMubj)}(h.(struct tipc_crypto *rx, struct tipc_msg *hdr)h](j%)}(hstruct tipc_crypto *rxh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hjЏhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj͏ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjҏmodnameN classnameNjj)}j]j)}jjsbc.tipc_crypto_key_rcvasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hrxh]hrx}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_msg *hdrh](j5)}(hj8h]hstruct}(hj$hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubjG)}(h h]h }(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hjBhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jc.tipc_crypto_key_rcvasbuh1hhj ubjG)}(h h]h }(hj`hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hhdrh]hhdr}(hj{hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjrhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjnhhhjhMubah}(h]jiah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjkhhubj)}(hhh]h)}(hReceive a session keyh]hReceive a session key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjkhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjBhNhNubj)}(hX**Parameters** ``struct tipc_crypto *rx`` the RX crypto ``struct tipc_msg *hdr`` the TIPC v2 message incl. the receiving session key in its data **Description** This function retrieves the session key in the message from peer, then schedules a RX work to attach the key to the corresponding RX crypto. **Return** "true" if the key has been scheduled for attaching, otherwise "false".h](h)}(h**Parameters**h]j)}(hjǐh]h Parameters}(hjɐhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjŐubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj)}(hhh](j)}(h)``struct tipc_crypto *rx`` the RX crypto h](j )}(h``struct tipc_crypto *rx``h]j)}(hjh]hstruct tipc_crypto *rx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h the RX cryptoh]h the RX crypto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjݐubj)}(hY``struct tipc_msg *hdr`` the TIPC v2 message incl. the receiving session key in its data h](j )}(h``struct tipc_msg *hdr``h]j)}(hjh]hstruct tipc_msg *hdr}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubj')}(hhh]h)}(h?the TIPC v2 message incl. the receiving session key in its datah]h?the TIPC v2 message incl. the receiving session key in its data}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hMhj5ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj4hMhjݐubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjZh]h Description}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(hThis function retrieves the session key in the message from peer, then schedules a RX work to attach the key to the corresponding RX crypto.h]hThis function retrieves the session key in the message from peer, then schedules a RX work to attach the key to the corresponding RX crypto.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubh)}(hF"true" if the key has been scheduled for attaching, otherwise "false".h]hN“true” if the key has been scheduled for attaching, otherwise “false”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_crypto_work_rx (C function)c.tipc_crypto_work_rxhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(h3void tipc_crypto_work_rx (struct work_struct *work)h]j/)}(h2void tipc_crypto_work_rx(struct work_struct *work)h](jG)}(hvoidh]hvoid}(hjƑhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj‘hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM$ ubjG)}(h h]h }(hjՑhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj‘hhhjԑhM$ ubjX)}(htipc_crypto_work_rxh]j^)}(htipc_crypto_work_rxh]htipc_crypto_work_rx}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj‘hhhjԑhM$ ubj)}(h(struct work_struct *work)h]j%)}(hstruct work_struct *workh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h work_structh]h work_struct}(hj!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jjsbc.tipc_crypto_work_rxasbuh1hhjubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hworkh]hwork}(hj\hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubah}(h]h ]h"]h$]h&]hhuh1jhj‘hhhjԑhM$ ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjԑhM$ ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjԑhM$ hjhhubj)}(hhh]h)}(hScheduled RX works handlerh]hScheduled RX works handler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM$ hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjԑhM$ ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjBhNhNubj)}(h**Parameters** ``struct work_struct *work`` the struct RX work **Description** The function processes the previous scheduled works i.e. distributing TX key or attaching a received session key on RX crypto.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM( hjubj)}(hhh]j)}(h0``struct work_struct *work`` the struct RX work h](j )}(h``struct work_struct *work``h]j)}(hjǒh]hstruct work_struct *work}(hjɒhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjŒubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM% hjubj')}(hhh]h)}(hthe struct RX workh]hthe struct RX work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjܒhM% hjݒubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjܒhM% hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM' hjubh)}(h~The function processes the previous scheduled works i.e. distributing TX key or attaching a received session key on RX crypto.h]h~The function processes the previous scheduled works i.e. distributing TX key or attaching a received session key on RX crypto.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM& hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'tipc_crypto_rekeying_sched (C function)c.tipc_crypto_rekeying_schedhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(hTvoid tipc_crypto_rekeying_sched (struct tipc_crypto *tx, bool changed, u32 new_intv)h]j/)}(hSvoid tipc_crypto_rekeying_sched(struct tipc_crypto *tx, bool changed, u32 new_intv)h](jG)}(hvoidh]hvoid}(hjGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjChhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMa ubjG)}(h h]h }(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjChhhjUhMa ubjX)}(htipc_crypto_rekeying_schedh]j^)}(htipc_crypto_rekeying_schedh]htipc_crypto_rekeying_sched}(hjhhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjChhhjUhMa ubj)}(h4(struct tipc_crypto *tx, bool changed, u32 new_intv)h](j%)}(hstruct tipc_crypto *txh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjjsbc.tipc_crypto_rekeying_schedasbuh1hhjubjG)}(h h]h }(hj“hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjГhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(htxh]htx}(hjݓhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubj%)}(h bool changedh](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hchangedh]hchanged}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubj%)}(h u32 new_intvh](h)}(hhh]j^)}(hu32h]hu32}(hj-hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]jc.tipc_crypto_rekeying_schedasbuh1hhj&ubjG)}(h h]h }(hjKhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj&ubj^)}(hnew_intvh]hnew_intv}(hjYhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj|ubeh}(h]h ]h"]h$]h&]hhuh1jhjChhhjUhMa ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj?hhhjUhMa ubah}(h]j:ah ](jjeh"]h$]h&]jj)jhuh1j(hjUhMa hj<hhubj)}(hhh]h)}(h&(Re)schedule rekeying w/o new intervalh]h&(Re)schedule rekeying w/o new interval}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMa hjhhubah}(h]h ]h"]h$]h&]uh1jhj<hhhjUhMa ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjBhNhNubj)}(h**Parameters** ``struct tipc_crypto *tx`` TX crypto ``bool changed`` if the rekeying needs to be rescheduled with new interval ``u32 new_intv`` new rekeying interval (when "changed" = true)h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMe hjubj)}(hhh](j)}(h%``struct tipc_crypto *tx`` TX crypto h](j )}(h``struct tipc_crypto *tx``h]j)}(hjĔh]hstruct tipc_crypto *tx}(hjƔhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj”ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMb hjubj')}(hhh]h)}(h TX cryptoh]h TX crypto}(hjݔhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjٔhMb hjڔubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjٔhMb hjubj)}(hK``bool changed`` if the rekeying needs to be rescheduled with new interval h](j )}(h``bool changed``h]j)}(hjh]h bool changed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMc hjubj')}(hhh]h)}(h9if the rekeying needs to be rescheduled with new intervalh]h9if the rekeying needs to be rescheduled with new interval}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMc hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMc hjubj)}(h>``u32 new_intv`` new rekeying interval (when "changed" = true)h](j )}(h``u32 new_intv``h]j)}(hj6h]h u32 new_intv}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMe hj0ubj')}(hhh]h)}(h-new rekeying interval (when "changed" = true)h]h1new rekeying interval (when “changed” = true)}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chMd hjLubah}(h]h ]h"]h$]h&]uh1j&hj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhMe hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_crypto_work_tx (C function)c.tipc_crypto_work_txhNtauh1jhjBhhhNhNubj$)}(hhh](j))}(h3void tipc_crypto_work_tx (struct work_struct *work)h]j/)}(h2void tipc_crypto_work_tx(struct work_struct *work)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM{ ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM{ ubjX)}(htipc_crypto_work_txh]j^)}(htipc_crypto_work_txh]htipc_crypto_work_tx}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM{ ubj)}(h(struct work_struct *work)h]j%)}(hstruct work_struct *workh](j5)}(hj8h]hstruct}(hj͕hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjɕubjG)}(h h]h }(hjڕhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjɕubh)}(hhh]j^)}(h work_structh]h work_struct}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_crypto_work_txasbuh1hhjɕubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjɕubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjɕubj^)}(hworkh]hwork}(hj&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjɕubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjŕubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM{ ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM{ ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM{ hjhhubj)}(hhh]h)}(hScheduled TX works handlerh]hScheduled TX works handler}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM{ hjMhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM{ ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjhjjhjjjuh1j#hhhjBhNhNubj)}(hXF**Parameters** ``struct work_struct *work`` the struct TX work **Description** The function processes the previous scheduled work, i.e. key rekeying, by generating a new session key based on current one, then attaching it to the TX crypto and finally distributing it to peers. It also re-schedules the rekeying if needed.h](h)}(h**Parameters**h]j)}(hjrh]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM hjlubj)}(hhh]j)}(h0``struct work_struct *work`` the struct TX work h](j )}(h``struct work_struct *work``h]j)}(hjh]hstruct work_struct *work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM| hjubj')}(hhh]h)}(hthe struct TX workh]hthe struct TX work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM| hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM| hjubah}(h]h ]h"]h$]h&]uh1jhjlubh)}(h**Description**h]j)}(hj̖h]h Description}(hjΖhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjʖubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM~ hjlubh)}(hThe function processes the previous scheduled work, i.e. key rekeying, by generating a new session key based on current one, then attaching it to the TX crypto and finally distributing it to peers. It also re-schedules the rekeying if needed.h]hThe function processes the previous scheduled work, i.e. key rekeying, by generating a new session key based on current one, then attaching it to the TX crypto and finally distributing it to peers. It also re-schedules the rekeying if needed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:157: ./net/tipc/crypto.chM} hjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjBhhhNhNubeh}(h]tipc-crypto-interfacesah ]h"]tipc crypto interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Discoverer Interfacesh]hTIPC Discoverer Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_discoverer (C struct)c.tipc_discovererhNtauh1jhjhhhNhNubj$)}(hhh](j))}(htipc_discovererh]j/)}(hstruct tipc_discovererh](j5)}(hj8h]hstruct}(hj*hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj&hhhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKubjG)}(h h]h }(hj8hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj&hhhj7hKubjX)}(htipc_discovererh]j^)}(hj$h]htipc_discoverer}(hjJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjFubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj&hhhj7hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj"hhhj7hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj7hKhjhhubj)}(hhh]h)}(h/information about an ongoing link setup requesth]h/information about an ongoing link setup request}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK3hjihhubah}(h]h ]h"]h$]h&]uh1jhjhhhj7hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX!**Definition**:: struct tipc_discoverer { u32 bearer_id; struct tipc_media_addr dest; struct net *net; u32 domain; int num_nodes; spinlock_t lock; struct sk_buff *skb; struct timer_list timer; unsigned long timer_intv; }; **Members** ``bearer_id`` identity of bearer issuing requests ``dest`` destination address for request messages ``net`` network namespace instance ``domain`` network domain to which links can be established ``num_nodes`` number of nodes currently discovered (i.e. with an active link) ``lock`` spinlock for controlling access to requests ``skb`` request message to be (repeatedly) sent ``timer`` timer governing period between requests ``timer_intv`` current interval between requests (in ms)h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK7hjubj)}(hstruct tipc_discoverer { u32 bearer_id; struct tipc_media_addr dest; struct net *net; u32 domain; int num_nodes; spinlock_t lock; struct sk_buff *skb; struct timer_list timer; unsigned long timer_intv; };h]hstruct tipc_discoverer { u32 bearer_id; struct tipc_media_addr dest; struct net *net; u32 domain; int num_nodes; spinlock_t lock; struct sk_buff *skb; struct timer_list timer; unsigned long timer_intv; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK9hjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKEhjubj)}(hhh](j)}(h2``bearer_id`` identity of bearer issuing requests h](j )}(h ``bearer_id``h]j)}(hjٗh]h bearer_id}(hjۗhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjחubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK5hjӗubj')}(hhh]h)}(h#identity of bearer issuing requestsh]h#identity of bearer issuing requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK5hjubah}(h]h ]h"]h$]h&]uh1j&hjӗubeh}(h]h ]h"]h$]h&]uh1jhjhK5hjЗubj)}(h2``dest`` destination address for request messages h](j )}(h``dest``h]j)}(hjh]hdest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK7hj ubj')}(hhh]h)}(h(destination address for request messagesh]h(destination address for request messages}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hK7hj(ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj'hK7hjЗubj)}(h#``net`` network namespace instance h](j )}(h``net``h]j)}(hjKh]hnet}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK6hjEubj')}(hhh]h)}(hnetwork namespace instanceh]hnetwork namespace instance}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hK6hjaubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhj`hK6hjЗubj)}(h<``domain`` network domain to which links can be established h](j )}(h ``domain``h]j)}(hjh]hdomain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK8hj~ubj')}(hhh]h)}(h0network domain to which links can be establishedh]h0network domain to which links can be established}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK8hjubah}(h]h ]h"]h$]h&]uh1j&hj~ubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjЗubj)}(hN``num_nodes`` number of nodes currently discovered (i.e. with an active link) h](j )}(h ``num_nodes``h]j)}(hjh]h num_nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK9hjubj')}(hhh]h)}(h?number of nodes currently discovered (i.e. with an active link)h]h?number of nodes currently discovered (i.e. with an active link)}(hj֘hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjҘhK9hjӘubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjҘhK9hjЗubj)}(h5``lock`` spinlock for controlling access to requests h](j )}(h``lock``h]j)}(hjh]hlock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK:hjubj')}(hhh]h)}(h+spinlock for controlling access to requestsh]h+spinlock for controlling access to requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK:hj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hK:hjЗubj)}(h0``skb`` request message to be (repeatedly) sent h](j )}(h``skb``h]j)}(hj/h]hskb}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK;hj)ubj')}(hhh]h)}(h'request message to be (repeatedly) senth]h'request message to be (repeatedly) sent}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhK;hjEubah}(h]h ]h"]h$]h&]uh1j&hj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhK;hjЗubj)}(h2``timer`` timer governing period between requests h](j )}(h ``timer``h]j)}(hjhh]htimer}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKmodnameN classnameNjj)}j]jc.disc_dupl_alertasbuh1hhjubjG)}(h h]h }(hjZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h media_addrh]h media_addr}(hjuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj]ubeh}(h]h ]h"]h$]h&]hhuh1jhj$hhhj6hKyubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj hhhj6hKyubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj6hKyhjhhubj)}(hhh]h)}(h$issue node address duplication alerth]h$issue node address duplication alert}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKyhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj6hKyubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct tipc_bearer *b`` pointer to bearer detecting duplication ``u32 node_addr`` duplicated node address ``struct tipc_media_addr *media_addr`` media address advertised by duplicated nodeh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjÞhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK}hjubj)}(hhh](j)}(hB``struct tipc_bearer *b`` pointer to bearer detecting duplication h](j )}(h``struct tipc_bearer *b``h]j)}(hjh]hstruct tipc_bearer *b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjޞubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKzhjڞubj')}(hhh]h)}(h'pointer to bearer detecting duplicationh]h'pointer to bearer detecting duplication}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKzhjubah}(h]h ]h"]h$]h&]uh1j&hjڞubeh}(h]h ]h"]h$]h&]uh1jhjhKzhjמubj)}(h*``u32 node_addr`` duplicated node address h](j )}(h``u32 node_addr``h]j)}(hjh]h u32 node_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK{hjubj')}(hhh]h)}(hduplicated node addressh]hduplicated node address}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hK{hj/ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj.hK{hjמubj)}(hR``struct tipc_media_addr *media_addr`` media address advertised by duplicated nodeh](j )}(h&``struct tipc_media_addr *media_addr``h]j)}(hjRh]h"struct tipc_media_addr *media_addr}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK}hjLubj')}(hhh]h)}(h+media address advertised by duplicated nodeh]h+media address advertised by duplicated node}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chK|hjhubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjghK}hjמubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_disc_rcv (C function)c.tipc_disc_rcvhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hPvoid tipc_disc_rcv (struct net *net, struct sk_buff *skb, struct tipc_bearer *b)h]j/)}(hOvoid tipc_disc_rcv(struct net *net, struct sk_buff *skb, struct tipc_bearer *b)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKubjX)}(h tipc_disc_rcvh]j^)}(h tipc_disc_rcvh]h tipc_disc_rcv}(hj͟hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjɟubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKubj)}(h=(struct net *net, struct sk_buff *skb, struct tipc_bearer *b)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjϟsbc.tipc_disc_rcvasbuh1hhjubjG)}(h h]h }(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hneth]hnet}(hjBhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hj[hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjWubjG)}(h h]h }(hjhhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjWubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj{modnameN classnameNjj)}j]j#c.tipc_disc_rcvasbuh1hhjWubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjWubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hjˠhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjǠubjG)}(h h]h }(hjؠhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjǠubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j#c.tipc_disc_rcvasbuh1hhjǠubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjǠubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjǠubj^)}(hj,h]hb}(hj"hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjǠubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKhjhhubj)}(hhh]h)}(h7handle incoming discovery message (request or response)h]h7handle incoming discovery message (request or response)}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKhjHhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjcjjcjjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct net *net`` applicable net namespace ``struct sk_buff *skb`` buffer containing message ``struct tipc_bearer *b`` bearer that message arrived onh](h)}(h**Parameters**h]j)}(hjmh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKhjgubj)}(hhh](j)}(h-``struct net *net`` applicable net namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKhjubj')}(hhh]h)}(happlicable net namespaceh]happlicable net namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h2``struct sk_buff *skb`` buffer containing message h](j )}(h``struct sk_buff *skb``h]j)}(hjšh]hstruct sk_buff *skb}(hjǡhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjáubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKhjubj')}(hhh]h)}(hbuffer containing messageh]hbuffer containing message}(hjޡhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjڡhKhjۡubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjڡhKhjubj)}(h8``struct tipc_bearer *b`` bearer that message arrived onh](j )}(h``struct tipc_bearer *b``h]j)}(hjh]hstruct tipc_bearer *b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKhjubj')}(hhh]h)}(hbearer that message arrived onh]hbearer that message arrived on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_disc_create (C function)c.tipc_disc_createhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hqint tipc_disc_create (struct net *net, struct tipc_bearer *b, struct tipc_media_addr *dest, struct sk_buff **skb)h]j/)}(hpint tipc_disc_create(struct net *net, struct tipc_bearer *b, struct tipc_media_addr *dest, struct sk_buff **skb)h](jG)}(hinth]hint}(hjXhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjThhhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMVubjG)}(h h]h }(hjghhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjThhhjfhMVubjX)}(htipc_disc_createh]j^)}(htipc_disc_createh]htipc_disc_create}(hjyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjuubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjThhhjfhMVubj)}(h\(struct net *net, struct tipc_bearer *b, struct tipc_media_addr *dest, struct sk_buff **skb)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj{sbc.tipc_disc_createasbuh1hhjubjG)}(h h]h }(hjӢhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]jϢc.tipc_disc_createasbuh1hhjubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj,h]hb}(hj^hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_media_addr *desth](j5)}(hj8h]hstruct}(hjvhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjrubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubh)}(hhh]j^)}(htipc_media_addrh]htipc_media_addr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jϢc.tipc_disc_createasbuh1hhjrubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj^)}(hdesth]hdest}(hjͣhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff **skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jϢc.tipc_disc_createasbuh1hhjubjG)}(h h]h }(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjThhhjfhMVubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjPhhhjfhMVubah}(h]jKah ](jjeh"]h$]h&]jj)jhuh1j(hjfhMVhjMhhubj)}(hhh]h)}(h2create object to send periodic link setup requestsh]h2create object to send periodic link setup requests}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMVhjqhhubah}(h]h ]h"]h$]h&]uh1jhjMhhhjfhMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX0**Parameters** ``struct net *net`` the applicable net namespace ``struct tipc_bearer *b`` ptr to bearer issuing requests ``struct tipc_media_addr *dest`` destination address for request messages ``struct sk_buff **skb`` pointer to created frame **Return** 0 if successful, otherwise -errno.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMZhjubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMWhjubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hjΤhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjʤhMWhjˤubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjʤhMWhjubj)}(h9``struct tipc_bearer *b`` ptr to bearer issuing requests h](j )}(h``struct tipc_bearer *b``h]j)}(hjh]hstruct tipc_bearer *b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMXhjubj')}(hhh]h)}(hptr to bearer issuing requestsh]hptr to bearer issuing requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMXhjubj)}(hJ``struct tipc_media_addr *dest`` destination address for request messages h](j )}(h ``struct tipc_media_addr *dest``h]j)}(hj'h]hstruct tipc_media_addr *dest}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMYhj!ubj')}(hhh]h)}(h(destination address for request messagesh]h(destination address for request messages}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMYhj=ubah}(h]h ]h"]h$]h&]uh1j&hj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hMYhjubj)}(h2``struct sk_buff **skb`` pointer to created frame h](j )}(h``struct sk_buff **skb``h]j)}(hj`h]hstruct sk_buff **skb}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMZhjZubj')}(hhh]h)}(hpointer to created frameh]hpointer to created frame}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMZhjvubah}(h]h ]h"]h$]h&]uh1j&hjZubeh}(h]h ]h"]h$]h&]uh1jhjuhMZhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chM\hjubh)}(h"0 if successful, otherwise -errno.h]h"0 if successful, otherwise -errno.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chM\hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_disc_delete (C function)c.tipc_disc_deletehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h1void tipc_disc_delete (struct tipc_discoverer *d)h]j/)}(h0void tipc_disc_delete(struct tipc_discoverer *d)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjܥhhhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjܥhhhjhMubjX)}(htipc_disc_deleteh]j^)}(htipc_disc_deleteh]htipc_disc_delete}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjܥhhhjhMubj)}(h(struct tipc_discoverer *d)h]j%)}(hstruct tipc_discoverer *dh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj*hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_discovererh]htipc_discoverer}(hj;hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jjsbc.tipc_disc_deleteasbuh1hhjubjG)}(h h]h }(hj[hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hdh]hd}(hjvhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubah}(h]h ]h"]h$]h&]hhuh1jhjܥhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjإhhhjhMubah}(h]jӥah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjեhhubj)}(hhh]h)}(h3destroy object sending periodic link setup requestsh]h3destroy object sending periodic link setup requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjեhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hJ**Parameters** ``struct tipc_discoverer *d`` ptr to link dest structureh](h)}(h**Parameters**h]j)}(hj¦h]h Parameters}(hjĦhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMhjubj)}(hhh]j)}(h8``struct tipc_discoverer *d`` ptr to link dest structureh](j )}(h``struct tipc_discoverer *d``h]j)}(hjh]hstruct tipc_discoverer *d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjߦubah}(h]h ]h"]h$]h&]uh1j hT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMhjۦubj')}(hhh]h)}(hptr to link dest structureh]hptr to link dest structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhT/var/lib/git/docbuild/linux/Documentation/networking/tipc:163: ./net/tipc/discover.chMhjubah}(h]h ]h"]h$]h&]uh1j&hjۦubeh}(h]h ]h"]h$]h&]uh1jhjhMhjئubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_disc_reset (C function)c.tipc_disc_resethNtauh1jhjhhhNhNubj$)}(hhh](j))}(h=void tipc_disc_reset (struct net *net, struct tipc_bearer *b)h]j/)}(hubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK[hj:ubj')}(hhh]h)}(h:# of unacknowledged continuity probes needed to reset linkh]h:# of unacknowledged continuity probes needed to reset link}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhK[hjVubah}(h]h ]h"]h$]h&]uh1j&hj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhK[hjubj)}(h$``state`` current state of link FSM h](j )}(h ``state``h]j)}(hjyh]hstate}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK\hjsubj')}(hhh]h)}(hcurrent state of link FSMh]hcurrent state of link FSM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK\hjubah}(h]h ]h"]h$]h&]uh1j&hjsubeh}(h]h ]h"]h$]h&]uh1jhjhK\hjubj)}(h:``peer_caps`` bitmap describing capabilities of peer node h](j )}(h ``peer_caps``h]j)}(hjh]h peer_caps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK]hjubj')}(hhh]h)}(h+bitmap describing capabilities of peer nodeh]h+bitmap describing capabilities of peer node}(hjˬhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjǬhK]hjȬubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjǬhK]hjubj)}(h4``in_session`` have received ACTIVATE_MSG from peer h](j )}(h``in_session``h]j)}(hjh]h in_session}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKphjubj')}(hhh]h)}(h$have received ACTIVATE_MSG from peerh]h$have received ACTIVATE_MSG from peer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKphjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKphjubj)}(h``active`` link is active h](j )}(h ``active``h]j)}(hj$h]hactive}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKqhjubj')}(hhh]h)}(hlink is activeh]hlink is active}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKqhj:ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj9hKqhjubj)}(hI``silent_intv_cnt`` # of timer intervals without any reception from peer h](j )}(h``silent_intv_cnt``h]j)}(hj]h]hsilent_intv_cnt}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK^hjWubj')}(hhh]h)}(h4# of timer intervals without any reception from peerh]h4# of timer intervals without any reception from peer}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhK^hjsubah}(h]h ]h"]h$]h&]uh1j&hjWubeh}(h]h ]h"]h$]h&]uh1jhjrhK^hjubj)}(h&``if_name`` associated interface name h](j )}(h ``if_name``h]j)}(hjh]hif_name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKrhjubj')}(hhh]h)}(hassociated interface nameh]hassociated interface name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKrhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKrhjubj)}(h#``priority`` current link priority h](j )}(h ``priority``h]j)}(hjϭh]hpriority}(hjѭhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjͭubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK_hjɭubj')}(hhh]h)}(hcurrent link priorityh]hcurrent link priority}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK_hjubah}(h]h ]h"]h$]h&]uh1j&hjɭubeh}(h]h ]h"]h$]h&]uh1jhjhK_hjubj)}(h;``net_plane`` current link network plane ('A' through 'H') h](j )}(h ``net_plane``h]j)}(hjh]h net_plane}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK`hjubj')}(hhh]h)}(h,current link network plane ('A' through 'H')h]h4current link network plane (‘A’ through ‘H’)}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK`hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK`hjubj)}(h=``mon_state`` cookie with information needed by link monitor h](j )}(h ``mon_state``h]j)}(hjAh]h mon_state}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKahj;ubj')}(hhh]h)}(h.cookie with information needed by link monitorh]h.cookie with information needed by link monitor}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKahjWubah}(h]h ]h"]h$]h&]uh1j&hj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKahjubj)}(h``rst_cnt`` link reset counter h](j )}(h ``rst_cnt``h]j)}(hjzh]hrst_cnt}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKshjtubj')}(hhh]h)}(hlink reset counterh]hlink reset counter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKshjubah}(h]h ]h"]h$]h&]uh1j&hjtubeh}(h]h ]h"]h$]h&]uh1jhjhKshjubj)}(h8``drop_point`` seq number for failover handling (FIXME) h](j )}(h``drop_point``h]j)}(hjh]h drop_point}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKthjubj')}(hhh]h)}(h(seq number for failover handling (FIXME)h]h(seq number for failover handling (FIXME)}(hj̮hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjȮhKthjɮubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjȮhKthjubj)}(h6``failover_reasm_skb`` saved failover msg ptr (FIXME) h](j )}(h``failover_reasm_skb``h]j)}(hjh]hfailover_reasm_skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKuhjubj')}(hhh]h)}(hsaved failover msg ptr (FIXME)h]hsaved failover msg ptr (FIXME)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKuhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKuhjubj)}(hL``failover_deferdq`` deferred message queue for failover processing (FIXME) h](j )}(h``failover_deferdq``h]j)}(hj%h]hfailover_deferdq}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKvhjubj')}(hhh]h)}(h6deferred message queue for failover processing (FIXME)h]h6deferred message queue for failover processing (FIXME)}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hKvhj;ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj:hKvhjubj)}(h2``mtu`` current maximum packet size for this link h](j )}(h``mtu``h]j)}(hj^h]hmtu}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKbhjXubj')}(hhh]h)}(h)current maximum packet size for this linkh]h)current maximum packet size for this link}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshKbhjtubah}(h]h ]h"]h$]h&]uh1j&hjXubeh}(h]h ]h"]h$]h&]uh1jhjshKbhjubj)}(hE``advertised_mtu`` advertised own mtu when link is being established h](j )}(h``advertised_mtu``h]j)}(hjh]hadvertised_mtu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKchjubj')}(hhh]h)}(h1advertised own mtu when link is being establishedh]h1advertised own mtu when link is being established}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKchjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKchjubj)}(h&``transmq`` the link's transmit queue h](j )}(h ``transmq``h]j)}(hjЯh]htransmq}(hjүhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjίubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKwhjʯubj')}(hhh]h)}(hthe link's transmit queueh]hthe link’s transmit queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKwhjubah}(h]h ]h"]h$]h&]uh1j&hjʯubeh}(h]h ]h"]h$]h&]uh1jhjhKwhjubj)}(h3``backlogq`` queue for messages waiting to be sent h](j )}(h ``backlogq``h]j)}(hj h]hbacklogq}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKdhjubj')}(hhh]h)}(h%queue for messages waiting to be senth]h%queue for messages waiting to be sent}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKdhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKdhjubj)}(h4``backlog`` link's backlog by priority (importance) h](j )}(h ``backlog``h]j)}(hjBh]hbacklog}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKxhj<ubj')}(hhh]h)}(h'link's backlog by priority (importance)h]h)link’s backlog by priority (importance)}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhKxhjXubah}(h]h ]h"]h$]h&]uh1j&hj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhKxhjubj)}(h,``snd_nxt`` next sequence number to be used h](j )}(h ``snd_nxt``h]j)}(hj{h]hsnd_nxt}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKyhjuubj')}(hhh]h)}(hnext sequence number to be usedh]hnext sequence number to be used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKyhjubah}(h]h ]h"]h$]h&]uh1j&hjuubeh}(h]h ]h"]h$]h&]uh1jhjhKyhjubj)}(h@``rcv_nxt`` next sequence number to expect for inbound messages h](j )}(h ``rcv_nxt``h]j)}(hjh]hrcv_nxt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKghjubj')}(hhh]h)}(h3next sequence number to expect for inbound messagesh]h3next sequence number to expect for inbound messages}(hjͰhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjɰhKghjʰubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjɰhKghjubj)}(hH``rcv_unacked`` # messages read by user, but not yet acked back to peer h](j )}(h``rcv_unacked``h]j)}(hjh]h rcv_unacked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKzhjubj')}(hhh]h)}(h7# messages read by user, but not yet acked back to peerh]h7# messages read by user, but not yet acked back to peer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKzhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKzhjubj)}(h#``deferdq`` deferred receive queue h](j )}(h ``deferdq``h]j)}(hj&h]hdeferdq}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chK{hj ubj')}(hhh]h)}(hdeferred receive queueh]hdeferred receive queue}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK{hj<ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj;hK{hjubj)}(h=``inputq`` buffer queue for messages to be delivered upwards h](j )}(h ``inputq``h]j)}(hj_h]hinputq}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhhjYubj')}(hhh]h)}(h1buffer queue for messages to be delivered upwardsh]h1buffer queue for messages to be delivered upwards}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthKhhjuubah}(h]h ]h"]h$]h&]uh1j&hjYubeh}(h]h ]h"]h$]h&]uh1jhjthKhhjubj)}(hH``namedq`` buffer queue for name table messages to be delivered upwards h](j )}(h ``namedq``h]j)}(hjh]hnamedq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKihjubj')}(hhh]h)}(h``checkpoint`` seq number for congestion window size handling h](j )}(h``checkpoint``h]j)}(hj'h]h checkpoint}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhj!ubj')}(hhh]h)}(h.seq number for congestion window size handlingh]h.seq number for congestion window size handling}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKhj=ubah}(h]h ]h"]h$]h&]uh1j&hj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hKhjubj)}(hF``reasm_buf`` head of partially reassembled inbound message fragments h](j )}(h ``reasm_buf``h]j)}(hj`h]h reasm_buf}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKkhjZubj')}(hhh]h)}(h7head of partially reassembled inbound message fragmentsh]h7head of partially reassembled inbound message fragments}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhKkhjvubah}(h]h ]h"]h$]h&]uh1j&hjZubeh}(h]h ]h"]h$]h&]uh1jhjuhKkhjubj)}(hK``reasm_tnlmsg`` fragmentation/reassembly area for tunnel protocol message h](j )}(h``reasm_tnlmsg``h]j)}(hjh]h reasm_tnlmsg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhjubj')}(hhh]h)}(h9fragmentation/reassembly area for tunnel protocol messageh]h9fragmentation/reassembly area for tunnel protocol message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hN``ackers`` # of peers that needs to ack each packet before it can be released h](j )}(h ``ackers``h]j)}(hjҳh]hackers}(hjԳhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjгubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKehj̳ubj')}(hhh]h)}(hB# of peers that needs to ack each packet before it can be releasedh]hB# of peers that needs to ack each packet before it can be released}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKehjubah}(h]h ]h"]h$]h&]uh1j&hj̳ubeh}(h]h ]h"]h$]h&]uh1jhjhKehjubj)}(hE``acked`` # last packet acked by a certain peer. Used for broadcast. h](j )}(h ``acked``h]j)}(hj h]hacked}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKfhjubj')}(hhh]h)}(h:# last packet acked by a certain peer. Used for broadcast.h]h:# last packet acked by a certain peer. Used for broadcast.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKfhj!ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hKfhjubj)}(h3``last_gap`` last gap ack blocks for bcast (FIXME) h](j )}(h ``last_gap``h]j)}(hjDh]hlast_gap}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhj>ubj')}(hhh]h)}(h%last gap ack blocks for bcast (FIXME)h]h%last gap ack blocks for bcast (FIXME)}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhKhjZubah}(h]h ]h"]h$]h&]uh1j&hj>ubeh}(h]h ]h"]h$]h&]uh1jhjYhKhjubj)}(h"``last_ga`` ptr to gap ack blocks h](j )}(h ``last_ga``h]j)}(hj}h]hlast_ga}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhjwubj')}(hhh]h)}(hptr to gap ack blocksh]hptr to gap ack blocks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjwubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hC``bc_rcvlink`` the peer specific link used for broadcast reception h](j )}(h``bc_rcvlink``h]j)}(hjh]h bc_rcvlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhjubj')}(hhh]h)}(h3the peer specific link used for broadcast receptionh]h3the peer specific link used for broadcast reception}(hjϴhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj˴hKhj̴ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj˴hKhjubj)}(hD``bc_sndlink`` the namespace global link used for broadcast sending h](j )}(h``bc_sndlink``h]j)}(hjh]h bc_sndlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhjubj')}(hhh]h)}(h4the namespace global link used for broadcast sendingh]h4the namespace global link used for broadcast sending}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h ``nack_state`` bcast nack state h](j )}(h``nack_state``h]j)}(hj(h]h nack_state}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhj"ubj')}(hhh]h)}(hbcast nack stateh]hbcast nack state}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKhj>ubah}(h]h ]h"]h$]h&]uh1j&hj"ubeh}(h]h ]h"]h$]h&]uh1jhj=hKhjubj)}(h4``bc_peer_is_up`` peer has acked the bcast init msg h](j )}(h``bc_peer_is_up``h]j)}(hjah]h bc_peer_is_up}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKhj[ubj')}(hhh]h)}(h!peer has acked the bcast init msgh]h!peer has acked the bcast init msg}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhKhjwubah}(h]h ]h"]h$]h&]uh1j&hj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhKhjubj)}(h5``stats`` collects statistics regarding link activityh](j )}(h ``stats``h]j)}(hjh]hstats}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKkhjubj')}(hhh]h)}(h+collects statistics regarding link activityh]h+collects statistics regarding link activity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chKlhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKkhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_link_create (C function)c.tipc_link_createhNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hXabool tipc_link_create (struct net *net, char *if_name, int bearer_id, int tolerance, char net_plane, u32 mtu, int priority, u32 min_win, u32 max_win, u32 session, u32 self, u32 peer, u8 *peer_id, u16 peer_caps, struct tipc_link *bc_sndlink, struct tipc_link *bc_rcvlink, struct sk_buff_head *inputq, struct sk_buff_head *namedq, struct tipc_link **link)h]j/)}(hX`bool tipc_link_create(struct net *net, char *if_name, int bearer_id, int tolerance, char net_plane, u32 mtu, int priority, u32 min_win, u32 max_win, u32 session, u32 self, u32 peer, u8 *peer_id, u16 peer_caps, struct tipc_link *bc_sndlink, struct tipc_link *bc_rcvlink, struct sk_buff_head *inputq, struct sk_buff_head *namedq, struct tipc_link **link)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_link_createh]j^)}(htipc_link_createh]htipc_link_create}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(hXK(struct net *net, char *if_name, int bearer_id, int tolerance, char net_plane, u32 mtu, int priority, u32 min_win, u32 max_win, u32 session, u32 self, u32 peer, u8 *peer_id, u16 peer_caps, struct tipc_link *bc_sndlink, struct tipc_link *bc_rcvlink, struct sk_buff_head *inputq, struct sk_buff_head *namedq, struct tipc_link **link)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj0hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj,ubjG)}(h h]h }(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,ubh)}(hhh]j^)}(hneth]hnet}(hjNhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jjsbc.tipc_link_createasbuh1hhj,ubjG)}(h h]h }(hjnhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h char *if_nameh](jG)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hif_nameh]hif_name}(hj˶hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h int bearer_idh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(h bearer_idh]h bearer_id}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h int toleranceh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(h toleranceh]h tolerance}(hj5hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hchar net_planeh](jG)}(hcharh]hchar}(hjNhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjJubjG)}(h h]h }(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjJubj^)}(h net_planeh]h net_plane}(hjjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjJubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hu32 mtuh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmtuh]hmtu}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h int priorityh](jG)}(hinth]hint}(hj˷hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjǷubjG)}(h h]h }(hjٷhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjǷubj^)}(hpriorityh]hpriority}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjǷubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h u32 min_winh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hj!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmin_winh]hmin_win}(hj/hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h u32 max_winh](h)}(hhh]j^)}(hu32h]hu32}(hjKhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjDubjG)}(h h]h }(hjihhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjDubj^)}(hmax_winh]hmax_win}(hjwhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h u32 sessionh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hsessionh]hsession}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hu32 selfh](h)}(hhh]j^)}(hu32h]hu32}(hj۸hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjظubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjݸmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjԸubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjԸubj^)}(hselfh]hself}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjԸubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hu32 peerh](h)}(hhh]j^)}(hu32h]hu32}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hpeerh]hpeer}(hjOhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h u8 *peer_idh](h)}(hhh]j^)}(hu8h]hu8}(hjkhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjdubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjdubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubj^)}(hpeer_idh]hpeer_id}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(h u16 peer_capsh](h)}(hhh]j^)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj¹modnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hj޹hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(h peer_capsh]h peer_caps}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hstruct tipc_link *bc_sndlinkh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h bc_sndlinkh]h bc_sndlink}(hj\hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hstruct tipc_link *bc_rcvlinkh](j5)}(hj8h]hstruct}(hjuhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjqubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjqubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjqubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjqubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj^)}(h bc_rcvlinkh]h bc_rcvlink}(hj̺hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hstruct sk_buff_head *inputqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hj!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hinputqh]hinputq}(hj<hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hstruct sk_buff_head *namedqh](j5)}(hj8h]hstruct}(hjUhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjQubjG)}(h h]h }(hjbhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjQubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjshhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjQubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj^)}(hnamedqh]hnamedq}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubj%)}(hstruct tipc_link **linkh](j5)}(hj8h]hstruct}(hjŻhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjһhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.tipc_link_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hlinkh]hlink}(hj)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj(ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(hcreate a new linkh]hcreate a new link}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjPhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjkjjkjjjuh1j#hhhj-hNhNubj)}(hX**Parameters** ``struct net *net`` pointer to associated network namespace ``char *if_name`` associated interface name ``int bearer_id`` id (index) of associated bearer ``int tolerance`` link tolerance to be used by link ``char net_plane`` network plane (A,B,c..) this link belongs to ``u32 mtu`` mtu to be advertised by link ``int priority`` priority to be used by link ``u32 min_win`` minimal send window to be used by link ``u32 max_win`` maximal send window to be used by link ``u32 session`` session to be used by link ``u32 self`` local unicast link id ``u32 peer`` node id of peer node ``u8 *peer_id`` 128-bit ID of peer ``u16 peer_caps`` bitmap describing peer node capabilities ``struct tipc_link *bc_sndlink`` the namespace global link used for broadcast sending ``struct tipc_link *bc_rcvlink`` the peer specific link used for broadcast reception ``struct sk_buff_head *inputq`` queue to put messages ready for delivery ``struct sk_buff_head *namedq`` queue to put binding table update messages ready for delivery ``struct tipc_link **link`` return value, pointer to put the created link **Return** true if link was created, otherwise falseh](h)}(h**Parameters**h]j)}(hjuh]h Parameters}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjoubj)}(hhh](j)}(h<``struct net *net`` pointer to associated network namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h'pointer to associated network namespaceh]h'pointer to associated network namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h,``char *if_name`` associated interface name h](j )}(h``char *if_name``h]j)}(hjͼh]h char *if_name}(hjϼhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj˼ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjǼubj')}(hhh]h)}(hassociated interface nameh]hassociated interface name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjǼubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h2``int bearer_id`` id (index) of associated bearer h](j )}(h``int bearer_id``h]j)}(hjh]h int bearer_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hid (index) of associated bearerh]hid (index) of associated bearer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h4``int tolerance`` link tolerance to be used by link h](j )}(h``int tolerance``h]j)}(hj?h]h int tolerance}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj9ubj')}(hhh]h)}(h!link tolerance to be used by linkh]h!link tolerance to be used by link}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThMhjUubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMhjubj)}(h@``char net_plane`` network plane (A,B,c..) this link belongs to h](j )}(h``char net_plane``h]j)}(hjxh]hchar net_plane}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjrubj')}(hhh]h)}(h,network plane (A,B,c..) this link belongs toh]h,network plane (A,B,c..) this link belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjrubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h)``u32 mtu`` mtu to be advertised by link h](j )}(h ``u32 mtu``h]j)}(hjh]hu32 mtu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hmtu to be advertised by linkh]hmtu to be advertised by link}(hjʽhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjƽhMhjǽubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjƽhMhjubj)}(h-``int priority`` priority to be used by link h](j )}(h``int priority``h]j)}(hjh]h int priority}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hpriority to be used by linkh]hpriority to be used by link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h7``u32 min_win`` minimal send window to be used by link h](j )}(h``u32 min_win``h]j)}(hj#h]h u32 min_win}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h&minimal send window to be used by linkh]h&minimal send window to be used by link}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj9ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj8hMhjubj)}(h7``u32 max_win`` maximal send window to be used by link h](j )}(h``u32 max_win``h]j)}(hj\h]h u32 max_win}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjVubj')}(hhh]h)}(h&maximal send window to be used by linkh]h&maximal send window to be used by link}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjrubah}(h]h ]h"]h$]h&]uh1j&hjVubeh}(h]h ]h"]h$]h&]uh1jhjqhMhjubj)}(h+``u32 session`` session to be used by link h](j )}(h``u32 session``h]j)}(hjh]h u32 session}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hsession to be used by linkh]hsession to be used by link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h#``u32 self`` local unicast link id h](j )}(h ``u32 self``h]j)}(hjξh]hu32 self}(hjоhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj̾ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjȾubj')}(hhh]h)}(hlocal unicast link idh]hlocal unicast link id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjȾubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h"``u32 peer`` node id of peer node h](j )}(h ``u32 peer``h]j)}(hjh]hu32 peer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hnode id of peer nodeh]hnode id of peer node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h#``u8 *peer_id`` 128-bit ID of peer h](j )}(h``u8 *peer_id``h]j)}(hj@h]h u8 *peer_id}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj:ubj')}(hhh]h)}(h128-bit ID of peerh]h128-bit ID of peer}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjVubah}(h]h ]h"]h$]h&]uh1j&hj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhMhjubj)}(h;``u16 peer_caps`` bitmap describing peer node capabilities h](j )}(h``u16 peer_caps``h]j)}(hjyh]h u16 peer_caps}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjsubj')}(hhh]h)}(h(bitmap describing peer node capabilitiesh]h(bitmap describing peer node capabilities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjsubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hV``struct tipc_link *bc_sndlink`` the namespace global link used for broadcast sending h](j )}(h ``struct tipc_link *bc_sndlink``h]j)}(hjh]hstruct tipc_link *bc_sndlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h4the namespace global link used for broadcast sendingh]h4the namespace global link used for broadcast sending}(hj˿hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjǿhMhjȿubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjǿhMhjubj)}(hU``struct tipc_link *bc_rcvlink`` the peer specific link used for broadcast reception h](j )}(h ``struct tipc_link *bc_rcvlink``h]j)}(hjh]hstruct tipc_link *bc_rcvlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h3the peer specific link used for broadcast receptionh]h3the peer specific link used for broadcast reception}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hI``struct sk_buff_head *inputq`` queue to put messages ready for delivery h](j )}(h``struct sk_buff_head *inputq``h]j)}(hj$h]hstruct sk_buff_head *inputq}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h(queue to put messages ready for deliveryh]h(queue to put messages ready for delivery}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj:ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj9hMhjubj)}(h^``struct sk_buff_head *namedq`` queue to put binding table update messages ready for delivery h](j )}(h``struct sk_buff_head *namedq``h]j)}(hj]h]hstruct sk_buff_head *namedq}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjWubj')}(hhh]h)}(h=queue to put binding table update messages ready for deliveryh]h=queue to put binding table update messages ready for delivery}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubah}(h]h ]h"]h$]h&]uh1j&hjWubeh}(h]h ]h"]h$]h&]uh1jhjrhMhjubj)}(hJ``struct tipc_link **link`` return value, pointer to put the created link h](j )}(h``struct tipc_link **link``h]j)}(hjh]hstruct tipc_link **link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h-return value, pointer to put the created linkh]h-return value, pointer to put the created link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjoubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjoubh)}(h)true if link was created, otherwise falseh]h)true if link was created, otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_link_bc_create (C function)c.tipc_link_bc_createhNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hbool tipc_link_bc_create (struct net *net, u32 ownnode, u32 peer, u8 *peer_id, int mtu, u32 min_win, u32 max_win, u16 peer_caps, struct sk_buff_head *inputq, struct sk_buff_head *namedq, struct tipc_link *bc_sndlink, struct tipc_link **link)h]j/)}(hbool tipc_link_bc_create(struct net *net, u32 ownnode, u32 peer, u8 *peer_id, int mtu, u32 min_win, u32 max_win, u16 peer_caps, struct sk_buff_head *inputq, struct sk_buff_head *namedq, struct tipc_link *bc_sndlink, struct tipc_link **link)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMubjG)}(h h]h }(hj$hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj#hMubjX)}(htipc_link_bc_createh]j^)}(htipc_link_bc_createh]htipc_link_bc_create}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj2ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj#hMubj)}(h(struct net *net, u32 ownnode, u32 peer, u8 *peer_id, int mtu, u32 min_win, u32 max_win, u16 peer_caps, struct sk_buff_head *inputq, struct sk_buff_head *namedq, struct tipc_link *bc_sndlink, struct tipc_link **link)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjRhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjNubjG)}(h h]h }(hj_hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNubh)}(hhh]j^)}(hneth]hnet}(hjphhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNjj)}j]j)}jj8sbc.tipc_link_bc_createasbuh1hhjNubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(h u32 ownnodeh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hownnodeh]hownnode}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hu32 peerh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjubjG)}(h h]h }(hj-hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hpeerh]hpeer}(hj;hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(h u8 *peer_idh](h)}(hhh]j^)}(hu8h]hu8}(hjWhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjYmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjPubjG)}(h h]h }(hjuhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjPubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj^)}(hpeer_idh]hpeer_id}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hint mtuh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmtuh]hmtu}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(h u32 min_winh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmin_winh]hmin_win}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(h u32 max_winh](h)}(hhh]j^)}(hu32h]hu32}(hj)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhj"ubjG)}(h h]h }(hjGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"ubj^)}(hmax_winh]hmax_win}(hjUhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(h u16 peer_capsh](h)}(hhh]j^)}(hu16h]hu16}(hjqhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjjubj^)}(h peer_capsh]h peer_caps}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hstruct sk_buff_head *inputqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hinputqh]hinputq}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hstruct sk_buff_head *namedqh](j5)}(hj8h]hstruct}(hj&hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj"ubjG)}(h h]h }(hj3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"ubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjDhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhj"ubjG)}(h h]h }(hjbhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"ubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj^)}(hnamedqh]hnamedq}(hj}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hstruct tipc_link *bc_sndlinkh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h bc_sndlinkh]h bc_sndlink}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hstruct tipc_link **linkh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hj$hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]jc.tipc_link_bc_createasbuh1hhjubjG)}(h h]h }(hjBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hlinkh]hlink}(hjjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj#hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j(hj#hMhj hhubj)}(hhh]h)}(h(create new link to be used for broadcasth]h(create new link to be used for broadcast}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj#hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(hX0**Parameters** ``struct net *net`` pointer to associated network namespace ``u32 ownnode`` identity of own node ``u32 peer`` node id of peer node ``u8 *peer_id`` 128-bit ID of peer ``int mtu`` mtu to be used initially if no peers ``u32 min_win`` minimal send window to be used by link ``u32 max_win`` maximal send window to be used by link ``u16 peer_caps`` bitmap describing peer node capabilities ``struct sk_buff_head *inputq`` queue to put messages ready for delivery ``struct sk_buff_head *namedq`` queue to put binding table update messages ready for delivery ``struct tipc_link *bc_sndlink`` the namespace global link used for broadcast sending ``struct tipc_link **link`` return value, pointer to put the created link **Return** true if link was created, otherwise falseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj)}(hhh](j)}(h<``struct net *net`` pointer to associated network namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h'pointer to associated network namespaceh]h'pointer to associated network namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h%``u32 ownnode`` identity of own node h](j )}(h``u32 ownnode``h]j)}(hjh]h u32 ownnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM!hjubj')}(hhh]h)}(hidentity of own nodeh]hidentity of own node}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hM!hj$ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj#hM!hjubj)}(h"``u32 peer`` node id of peer node h](j )}(h ``u32 peer``h]j)}(hjGh]hu32 peer}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM"hjAubj')}(hhh]h)}(hnode id of peer nodeh]hnode id of peer node}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hM"hj]ubah}(h]h ]h"]h$]h&]uh1j&hjAubeh}(h]h ]h"]h$]h&]uh1jhj\hM"hjubj)}(h#``u8 *peer_id`` 128-bit ID of peer h](j )}(h``u8 *peer_id``h]j)}(hjh]h u8 *peer_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM#hjzubj')}(hhh]h)}(h128-bit ID of peerh]h128-bit ID of peer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM#hjubah}(h]h ]h"]h$]h&]uh1j&hjzubeh}(h]h ]h"]h$]h&]uh1jhjhM#hjubj)}(h1``int mtu`` mtu to be used initially if no peers h](j )}(h ``int mtu``h]j)}(hjh]hint mtu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h$mtu to be used initially if no peersh]h$mtu to be used initially if no peers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h7``u32 min_win`` minimal send window to be used by link h](j )}(h``u32 min_win``h]j)}(hjh]h u32 min_win}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h&minimal send window to be used by linkh]h&minimal send window to be used by link}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h7``u32 max_win`` maximal send window to be used by link h](j )}(h``u32 max_win``h]j)}(hj+h]h u32 max_win}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj%ubj')}(hhh]h)}(h&maximal send window to be used by linkh]h&maximal send window to be used by link}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMhjAubah}(h]h ]h"]h$]h&]uh1j&hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hMhjubj)}(h;``u16 peer_caps`` bitmap describing peer node capabilities h](j )}(h``u16 peer_caps``h]j)}(hjdh]h u16 peer_caps}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM$hj^ubj')}(hhh]h)}(h(bitmap describing peer node capabilitiesh]h(bitmap describing peer node capabilities}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhM$hjzubah}(h]h ]h"]h$]h&]uh1j&hj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhM$hjubj)}(hI``struct sk_buff_head *inputq`` queue to put messages ready for delivery h](j )}(h``struct sk_buff_head *inputq``h]j)}(hjh]hstruct sk_buff_head *inputq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h(queue to put messages ready for deliveryh]h(queue to put messages ready for delivery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h^``struct sk_buff_head *namedq`` queue to put binding table update messages ready for delivery h](j )}(h``struct sk_buff_head *namedq``h]j)}(hjh]hstruct sk_buff_head *namedq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h=queue to put binding table update messages ready for deliveryh]h=queue to put binding table update messages ready for delivery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hV``struct tipc_link *bc_sndlink`` the namespace global link used for broadcast sending h](j )}(h ``struct tipc_link *bc_sndlink``h]j)}(hjh]hstruct tipc_link *bc_sndlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM%hj ubj')}(hhh]h)}(h4the namespace global link used for broadcast sendingh]h4the namespace global link used for broadcast sending}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hM%hj%ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj$hM%hjubj)}(hJ``struct tipc_link **link`` return value, pointer to put the created link h](j )}(h``struct tipc_link **link``h]j)}(hjHh]hstruct tipc_link **link}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM hjBubj')}(hhh]h)}(h-return value, pointer to put the created linkh]h-return value, pointer to put the created link}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hM hj^ubah}(h]h ]h"]h$]h&]uh1j&hjBubeh}(h]h ]h"]h$]h&]uh1jhj]hM hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM"hjubh)}(h)true if link was created, otherwise falseh]h)true if link was created, otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM'hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_link_fsm_evt (C function)c.tipc_link_fsm_evthNtauh1jhj-hhhNhNubj$)}(hhh](j))}(h4int tipc_link_fsm_evt (struct tipc_link *l, int evt)h]j/)}(h3int tipc_link_fsm_evt(struct tipc_link *l, int evt)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMUubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMUubjX)}(htipc_link_fsm_evth]j^)}(htipc_link_fsm_evth]htipc_link_fsm_evt}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMUubj)}(h(struct tipc_link *l, int evt)h](j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j)}jjsbc.tipc_link_fsm_evtasbuh1hhjubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hlh]hl}(hj^hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint evth](jG)}(hinth]hint}(hjwhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsubj^)}(hevth]hevt}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMUubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMUubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMUhjhhubj)}(hhh]h)}(hlink finite state machineh]hlink finite state machine}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMUhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMUubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(hl**Parameters** ``struct tipc_link *l`` pointer to link ``int evt`` state machine event to be processedh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMYhjubj)}(hhh](j)}(h(``struct tipc_link *l`` pointer to link h](j )}(h``struct tipc_link *l``h]j)}(hjh]hstruct tipc_link *l}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMVhjubj')}(hhh]h)}(hpointer to linkh]hpointer to link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMVhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMVhjubj)}(h/``int evt`` state machine event to be processedh](j )}(h ``int evt``h]j)}(hj7h]hint evt}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMXhj1ubj')}(hhh]h)}(h#state machine event to be processedh]h#state machine event to be processed}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMWhjMubah}(h]h ]h"]h$]h&]uh1j&hj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhMXhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!tipc_link_too_silent (C function)c.tipc_link_too_silenthNtauh1jhj-hhhNhNubj$)}(hhh](j))}(h/bool tipc_link_too_silent (struct tipc_link *l)h]j/)}(h.bool tipc_link_too_silent(struct tipc_link *l)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM#ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM#ubjX)}(htipc_link_too_silenth]j^)}(htipc_link_too_silenth]htipc_link_too_silent}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM#ubj)}(h(struct tipc_link *l)h]j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_link_too_silentasbuh1hhjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hj&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM#ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM#ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM#hjhhubj)}(hhh]h)}(hcheck if link is "too silent"h]h!check if link is “too silent”}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM#hjLhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM#ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjgjjgjjjuh1j#hhhj-hNhNubj)}(h**Parameters** ``struct tipc_link *l`` tipc link to be checked **Return** true if the link 'silent_intv_cnt' is about to reach the 'abort_limit' value, otherwise falseh](h)}(h**Parameters**h]j)}(hjqh]h Parameters}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM'hjkubj)}(hhh]j)}(h0``struct tipc_link *l`` tipc link to be checked h](j )}(h``struct tipc_link *l``h]j)}(hjh]hstruct tipc_link *l}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM$hjubj')}(hhh]h)}(htipc link to be checkedh]htipc link to be checked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM$hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM$hjubah}(h]h ]h"]h$]h&]uh1jhjkubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM&hjkubh)}(h]true if the link 'silent_intv_cnt' is about to reach the 'abort_limit' value, otherwise falseh]hetrue if the link ‘silent_intv_cnt’ is about to reach the ‘abort_limit’ value, otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM&hjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jlink_schedule_user (C function)c.link_schedule_userhNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hBint link_schedule_user (struct tipc_link *l, struct tipc_msg *hdr)h]j/)}(hAint link_schedule_user(struct tipc_link *l, struct tipc_msg *hdr)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj hhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMlubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj hhhjhMlubjX)}(hlink_schedule_userh]j^)}(hlink_schedule_userh]hlink_schedule_user}(hj1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj-ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj hhhjhMlubj)}(h+(struct tipc_link *l, struct tipc_msg *hdr)h](j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjMhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjIubjG)}(h h]h }(hjZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjkhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]j)}jj3sbc.link_schedule_userasbuh1hhjIubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj^)}(hj`h]hl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjIubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjEubj%)}(hstruct tipc_msg *hdrh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.link_schedule_userasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hhdrh]hhdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjEubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhjhMlubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMlubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMlhjhhubj)}(hhh]h)}(h5schedule a message sender for wakeup after congestionh]h5schedule a message sender for wakeup after congestion}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMlhj<hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMlubeh}(h]h ](jfunctioneh"]h$]h&]jjjjWjjWjjjuh1j#hhhj-hNhNubj)}(h**Parameters** ``struct tipc_link *l`` congested link ``struct tipc_msg *hdr`` header of message that is being sent Create pseudo msg to send back to user when congestion abatesh](h)}(h**Parameters**h]j)}(hjah]h Parameters}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMphj[ubj)}(hhh](j)}(h'``struct tipc_link *l`` congested link h](j )}(h``struct tipc_link *l``h]j)}(hjh]hstruct tipc_link *l}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMmhjzubj')}(hhh]h)}(hcongested linkh]hcongested link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1j&hjzubeh}(h]h ]h"]h$]h&]uh1jhjhMmhjwubj)}(h{``struct tipc_msg *hdr`` header of message that is being sent Create pseudo msg to send back to user when congestion abatesh](j )}(h``struct tipc_msg *hdr``h]j)}(hjh]hstruct tipc_msg *hdr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMnhjubj')}(hhh]h)}(hbheader of message that is being sent Create pseudo msg to send back to user when congestion abatesh]hbheader of message that is being sent Create pseudo msg to send back to user when congestion abates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMnhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMnhjwubeh}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j link_prepare_wakeup (C function)c.link_prepare_wakeuphNtauh1jhj-hhhNhNubj$)}(hhh](j))}(h.void link_prepare_wakeup (struct tipc_link *l)h]j/)}(h-void link_prepare_wakeup(struct tipc_link *l)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMubjG)}(h h]h }(hj!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj hMubjX)}(hlink_prepare_wakeuph]j^)}(hlink_prepare_wakeuph]hlink_prepare_wakeup}(hj3hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj/ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj hMubj)}(h(struct tipc_link *l)h]j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjOhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjKubjG)}(h h]h }(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjmhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]j)}jj5sbc.link_prepare_wakeupasbuh1hhjKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj^)}(hj`h]hl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjGubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj hhhj hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj hMhjhhubj)}(hhh]h)}(h)prepare users for wakeup after congestionh]h)prepare users for wakeup after congestion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(h**Parameters** ``struct tipc_link *l`` congested link Wake up a number of waiting users, as permitted by available space in the send queueh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj)}(hhh]j)}(h{``struct tipc_link *l`` congested link Wake up a number of waiting users, as permitted by available space in the send queueh](j )}(h``struct tipc_link *l``h]j)}(hjh]hstruct tipc_link *l}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj ubj')}(hhh]h)}(hccongested link Wake up a number of waiting users, as permitted by available space in the send queueh]hccongested link Wake up a number of waiting users, as permitted by available space in the send queue}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj(ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j.tipc_link_set_skb_retransmit_time (C function)#c.tipc_link_set_skb_retransmit_timehNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hQvoid tipc_link_set_skb_retransmit_time (struct sk_buff *skb, struct tipc_link *l)h]j/)}(hPvoid tipc_link_set_skb_retransmit_time(struct sk_buff *skb, struct tipc_link *l)h](jG)}(hvoidh]hvoid}(hjlhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMubjG)}(h h]h }(hj{hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhhjzhMubjX)}(h!tipc_link_set_skb_retransmit_timeh]j^)}(h!tipc_link_set_skb_retransmit_timeh]h!tipc_link_set_skb_retransmit_time}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhhjzhMubj)}(h*(struct sk_buff *skb, struct tipc_link *l)h](j%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb#c.tipc_link_set_skb_retransmit_timeasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hj9hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]j#c.tipc_link_set_skb_retransmit_timeasbuh1hhjubjG)}(h h]h }(hjWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hjrhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhjzhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjdhhhjzhMubah}(h]j_ah ](jjeh"]h$]h&]jj)jhuh1j(hjzhMhjahhubj)}(hhh]h)}(hNset the time at which retransmission of the given skb should be next attemptedh]hNset the time at which retransmission of the given skb should be next attempted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjahhhjzhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(h**Parameters** ``struct sk_buff *skb`` skb to set a future retransmission time for ``struct tipc_link *l`` link the skb will be transmitted onh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj)}(hhh](j)}(hD``struct sk_buff *skb`` skb to set a future retransmission time for h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h+skb to set a future retransmission time forh]h+skb to set a future retransmission time for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h;``struct tipc_link *l`` link the skb will be transmitted onh](j )}(h``struct tipc_link *l``h]j)}(hjh]hstruct tipc_link *l}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h#link the skb will be transmitted onh]h#link the skb will be transmitted on}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj+ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj*hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_link_xmit (C function)c.tipc_link_xmithNtauh1jhj-hhhNhNubj$)}(hhh](j))}(h_int tipc_link_xmit (struct tipc_link *l, struct sk_buff_head *list, struct sk_buff_head *xmitq)h]j/)}(h^int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list, struct sk_buff_head *xmitq)h](jG)}(hinth]hint}(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjkhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMubjG)}(h h]h }(hj~hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjkhhhj}hMubjX)}(htipc_link_xmith]j^)}(htipc_link_xmith]htipc_link_xmit}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjkhhhj}hMubj)}(hL(struct tipc_link *l, struct sk_buff_head *list, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_link_xmitasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *listh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj*hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj;hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]jc.tipc_link_xmitasbuh1hhjubjG)}(h h]h }(hjYhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hlisth]hlist}(hjthhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_xmitasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hxmitqh]hxmitq}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjkhhhj}hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjghhhj}hMubah}(h]jbah ](jjeh"]h$]h&]jj)jhuh1j(hj}hMhjdhhubj)}(hhh]h)}(h0enqueue buffer list according to queue situationh]h0enqueue buffer list according to queue situation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj hhubah}(h]h ]h"]h$]h&]uh1jhjdhhhj}hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&jj&jjjuh1j#hhhj-hNhNubj)}(hXu**Parameters** ``struct tipc_link *l`` link to use ``struct sk_buff_head *list`` chain of buffers containing message ``struct sk_buff_head *xmitq`` returned list of packets to be sent by caller **Description** Consumes the buffer chain. Messages at TIPC_SYSTEM_IMPORTANCE are always accepted **Return** 0 if success, or errno: -ELINKCONG, -EMSGSIZE or -ENOBUFSh](h)}(h**Parameters**h]j)}(hj0h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj*ubj)}(hhh](j)}(h$``struct tipc_link *l`` link to use h](j )}(h``struct tipc_link *l``h]j)}(hjOh]hstruct tipc_link *l}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjIubj')}(hhh]h)}(h link to useh]h link to use}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMhjeubah}(h]h ]h"]h$]h&]uh1j&hjIubeh}(h]h ]h"]h$]h&]uh1jhjdhMhjFubj)}(hB``struct sk_buff_head *list`` chain of buffers containing message h](j )}(h``struct sk_buff_head *list``h]j)}(hjh]hstruct sk_buff_head *list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h#chain of buffers containing messageh]h#chain of buffers containing message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjFubj)}(hM``struct sk_buff_head *xmitq`` returned list of packets to be sent by caller h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjh]hstruct sk_buff_head *xmitq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h-returned list of packets to be sent by callerh]h-returned list of packets to be sent by caller}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjFubeh}(h]h ]h"]h$]h&]uh1jhj*ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj*ubh)}(hQConsumes the buffer chain. Messages at TIPC_SYSTEM_IMPORTANCE are always acceptedh]hQConsumes the buffer chain. Messages at TIPC_SYSTEM_IMPORTANCE are always accepted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj*ubh)}(h **Return**h]j)}(hj#h]hReturn}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj*ubh)}(h90 if success, or errno: -ELINKCONG, -EMSGSIZE or -ENOBUFSh]h90 if success, or errno: -ELINKCONG, -EMSGSIZE or -ENOBUFS}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$link_retransmit_failure (C function)c.link_retransmit_failurehNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hPbool link_retransmit_failure (struct tipc_link *l, struct tipc_link *r, int *rc)h]j/)}(hObool link_retransmit_failure(struct tipc_link *l, struct tipc_link *r, int *rc)h](jG)}(hjgh]hbool}(hjhhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjdhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMubjG)}(h h]h }(hjvhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjdhhhjuhMubjX)}(hlink_retransmit_failureh]j^)}(hlink_retransmit_failureh]hlink_retransmit_failure}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjdhhhjuhMubj)}(h3(struct tipc_link *l, struct tipc_link *r, int *rc)h](j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.link_retransmit_failureasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_link *rh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hj3hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]jc.link_retransmit_failureasbuh1hhjubjG)}(h h]h }(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hrh]hr}(hjlhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint *rch](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hrch]hrc}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjdhhhjuhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj`hhhjuhMubah}(h]j[ah ](jjeh"]h$]h&]jj)jhuh1j(hjuhMhj]hhubj)}(hhh]h)}(h#Detect repeated retransmit failuresh]h#Detect repeated retransmit failures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj]hhhjuhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(h**Parameters** ``struct tipc_link *l`` tipc link sender ``struct tipc_link *r`` tipc link receiver (= l in case of unicast) ``int *rc`` returned code **Return** true if the repeated retransmit failures happens, otherwise falseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj)}(hhh](j)}(h)``struct tipc_link *l`` tipc link sender h](j )}(h``struct tipc_link *l``h]j)}(hjh]hstruct tipc_link *l}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(htipc link senderh]htipc link sender}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhj/ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj.hMhjubj)}(hD``struct tipc_link *r`` tipc link receiver (= l in case of unicast) h](j )}(h``struct tipc_link *r``h]j)}(hjRh]hstruct tipc_link *r}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjLubj')}(hhh]h)}(h+tipc link receiver (= l in case of unicast)h]h+tipc link receiver (= l in case of unicast)}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjhubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjghMhjubj)}(h``int *rc`` returned code h](j )}(h ``int *rc``h]j)}(hjh]hint *rc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(h returned codeh]h returned code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubh)}(hAtrue if the repeated retransmit failures happens, otherwise falseh]hAtrue if the repeated retransmit failures happens, otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_get_gap_ack_blks (C function)c.tipc_get_gap_ack_blkshNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hmu16 tipc_get_gap_ack_blks (struct tipc_gap_ack_blks **ga, struct tipc_link *l, struct tipc_msg *hdr, bool uc)h]j/)}(hlu16 tipc_get_gap_ack_blks(struct tipc_gap_ack_blks **ga, struct tipc_link *l, struct tipc_msg *hdr, bool uc)h](h)}(hhh]j^)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jtipc_get_gap_ack_blkssbc.tipc_get_gap_ack_blksasbuh1hhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM~ubjG)}(h h]h }(hj0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj/hM~ubjX)}(htipc_get_gap_ack_blksh]j^)}(hj,h]htipc_get_gap_ack_blks}(hjBhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj>ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj/hM~ubj)}(hS(struct tipc_gap_ack_blks **ga, struct tipc_link *l, struct tipc_msg *hdr, bool uc)h](j%)}(hstruct tipc_gap_ack_blks **gah](j5)}(hj8h]hstruct}(hj]hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjYubjG)}(h h]h }(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYubh)}(hhh]j^)}(htipc_gap_ack_blksh]htipc_gap_ack_blks}(hj{hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j*c.tipc_get_gap_ack_blksasbuh1hhjYubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj^)}(hgah]hga}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubj%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j*c.tipc_get_gap_ack_blksasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hj1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubj%)}(hstruct tipc_msg *hdrh](j5)}(hj8h]hstruct}(hjIhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjEubjG)}(h h]h }(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjEubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hjghhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]j*c.tipc_get_gap_ack_blksasbuh1hhjEubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjEubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj^)}(hhdrh]hhdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubj%)}(hbool uch](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(huch]huc}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj/hM~ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj/hM~ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj/hM~hjhhubj)}(hhh]h)}(h*get Gap ACK blocks from PROTOCOL/STATE_MSGh]h*get Gap ACK blocks from PROTOCOL/STATE_MSG}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM~hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj/hM~ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(hXA**Parameters** ``struct tipc_gap_ack_blks **ga`` returned pointer to the Gap ACK blocks if any ``struct tipc_link *l`` the tipc link ``struct tipc_msg *hdr`` the PROTOCOL/STATE_MSG header ``bool uc`` desired Gap ACK blocks type, i.e. unicast (= 1) or broadcast (= 0) **Return** the total Gap ACK blocks sizeh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj)}(hhh](j)}(hP``struct tipc_gap_ack_blks **ga`` returned pointer to the Gap ACK blocks if any h](j )}(h!``struct tipc_gap_ack_blks **ga``h]j)}(hj?h]hstruct tipc_gap_ack_blks **ga}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhj9ubj')}(hhh]h)}(h-returned pointer to the Gap ACK blocks if anyh]h-returned pointer to the Gap ACK blocks if any}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThMhjUubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMhj6ubj)}(h&``struct tipc_link *l`` the tipc link h](j )}(h``struct tipc_link *l``h]j)}(hjxh]hstruct tipc_link *l}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjrubj')}(hhh]h)}(h the tipc linkh]h the tipc link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjrubeh}(h]h ]h"]h$]h&]uh1jhjhMhj6ubj)}(h7``struct tipc_msg *hdr`` the PROTOCOL/STATE_MSG header h](j )}(h``struct tipc_msg *hdr``h]j)}(hjh]hstruct tipc_msg *hdr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hthe PROTOCOL/STATE_MSG headerh]hthe PROTOCOL/STATE_MSG header}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj6ubj)}(hO``bool uc`` desired Gap ACK blocks type, i.e. unicast (= 1) or broadcast (= 0) h](j )}(h ``bool uc``h]j)}(hjh]hbool uc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubj')}(hhh]h)}(hBdesired Gap ACK blocks type, i.e. unicast (= 1) or broadcast (= 0)h]hBdesired Gap ACK blocks type, i.e. unicast (= 1) or broadcast (= 0)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj6ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj%h]hReturn}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubh)}(hthe total Gap ACK blocks sizeh]hthe total Gap ACK blocks size}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'tipc_link_failover_prepare (C function)c.tipc_link_failover_preparehNtauh1jhj-hhhNhNubj$)}(hhh](j))}(hhvoid tipc_link_failover_prepare (struct tipc_link *l, struct tipc_link *tnl, struct sk_buff_head *xmitq)h]j/)}(hgvoid tipc_link_failover_prepare(struct tipc_link *l, struct tipc_link *tnl, struct sk_buff_head *xmitq)h](jG)}(hvoidh]hvoid}(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjfhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM/ubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjfhhhjxhM/ubjX)}(htipc_link_failover_prepareh]j^)}(htipc_link_failover_prepareh]htipc_link_failover_prepare}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjfhhhjxhM/ubj)}(hH(struct tipc_link *l, struct tipc_link *tnl, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_link_failover_prepareasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_link *tnlh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j]jc.tipc_link_failover_prepareasbuh1hhjubjG)}(h h]h }(hjThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(htnlh]htnl}(hjohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_link_failover_prepareasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hxmitqh]hxmitq}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjfhhhjxhM/ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjbhhhjxhM/ubah}(h]j]ah ](jjeh"]h$]h&]jj)jhuh1j(hjxhM/hj_hhubj)}(hhh]h)}(hprepare tnl for link failoverh]hprepare tnl for link failover}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM/hjhhubah}(h]h ]h"]h$]h&]uh1jhj_hhhjxhM/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj!jj!jjjuh1j#hhhj-hNhNubj)}(hX(**Parameters** ``struct tipc_link *l`` failover link ``struct tipc_link *tnl`` tunnel link ``struct sk_buff_head *xmitq`` queue for messages to be xmited **Description** This is a special version of the precursor - tipc_link_tnl_prepare(), see the tipc_node_link_failover() for detailsh](h)}(h**Parameters**h]j)}(hj+h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM3hj%ubj)}(hhh](j)}(h&``struct tipc_link *l`` failover link h](j )}(h``struct tipc_link *l``h]j)}(hjJh]hstruct tipc_link *l}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM4hjDubj')}(hhh]h)}(h failover linkh]h failover link}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hM4hj`ubah}(h]h ]h"]h$]h&]uh1j&hjDubeh}(h]h ]h"]h$]h&]uh1jhj_hM4hjAubj)}(h&``struct tipc_link *tnl`` tunnel link h](j )}(h``struct tipc_link *tnl``h]j)}(hjh]hstruct tipc_link *tnl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM5hj}ubj')}(hhh]h)}(h tunnel linkh]h tunnel link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM5hjubah}(h]h ]h"]h$]h&]uh1j&hj}ubeh}(h]h ]h"]h$]h&]uh1jhjhM5hjAubj)}(h?``struct sk_buff_head *xmitq`` queue for messages to be xmited h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjh]hstruct sk_buff_head *xmitq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM6hjubj')}(hhh]h)}(hqueue for messages to be xmitedh]hqueue for messages to be xmited}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM6hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM6hjAubeh}(h]h ]h"]h$]h&]uh1jhj%ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM8hj%ubh)}(hsThis is a special version of the precursor - tipc_link_tnl_prepare(), see the tipc_node_link_failover() for detailsh]hsThis is a special version of the precursor - tipc_link_tnl_prepare(), see the tipc_node_link_failover() for details}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM0hj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_link_reset_stats (C function)c.tipc_link_reset_statshNtauh1jhj-hhhNhNubj$)}(hhh](j))}(h0void tipc_link_reset_stats (struct tipc_link *l)h]j/)}(h/void tipc_link_reset_stats(struct tipc_link *l)h](jG)}(hvoidh]hvoid}(hj<hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj8hhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM ubjG)}(h h]h }(hjKhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj8hhhjJhM ubjX)}(htipc_link_reset_statsh]j^)}(htipc_link_reset_statsh]htipc_link_reset_stats}(hj]hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj8hhhjJhM ubj)}(h(struct tipc_link *l)h]j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjyhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjuubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjuubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj_sbc.tipc_link_reset_statsasbuh1hhjuubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjuubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj^)}(hj`h]hl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjuubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjqubah}(h]h ]h"]h$]h&]hhuh1jhj8hhhjJhM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj4hhhjJhM ubah}(h]j/ah ](jjeh"]h$]h&]jj)jhuh1j(hjJhM hj1hhubj)}(hhh]h)}(hreset link statisticsh]hreset link statistics}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhj1hhhjJhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(h9**Parameters** ``struct tipc_link *l`` pointer to linkh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM hjubj)}(hhh]j)}(h'``struct tipc_link *l`` pointer to linkh](j )}(h``struct tipc_link *l``h]j)}(hj<h]hstruct tipc_link *l}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM hj6ubj')}(hhh]h)}(hpointer to linkh]hpointer to link}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chM hjRubah}(h]h ]h"]h$]h&]uh1j&hj6ubeh}(h]h ]h"]h$]h&]uh1jhjQhM hj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_link_dump (C function)c.tipc_link_dumphNtauh1jhj-hhhNhNubj$)}(hhh](j))}(h@int tipc_link_dump (struct tipc_link *l, u16 dqueues, char *buf)h]j/)}(h?int tipc_link_dump(struct tipc_link *l, u16 dqueues, char *buf)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chME ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhME ubjX)}(htipc_link_dumph]j^)}(htipc_link_dumph]htipc_link_dump}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhME ubj)}(h-(struct tipc_link *l, u16 dqueues, char *buf)h](j%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_link_dumpasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hj`h]hl}(hj,hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h u16 dqueuesh](h)}(hhh]j^)}(hu16h]hu16}(hjGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]j c.tipc_link_dumpasbuh1hhj@ubjG)}(h h]h }(hjehhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj@ubj^)}(hdqueuesh]hdqueues}(hjshhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h char *bufh](jG)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hbufh]hbuf}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhME ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhME ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhME hjhhubj)}(hhh]h)}(hdump TIPC link datah]hdump TIPC link data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chME hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhME ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj-hNhNubj)}(hX**Parameters** ``struct tipc_link *l`` tipc link to be dumped ``u16 dqueues`` bitmask to decide if any link queue to be dumped? - TIPC_DUMP_NONE: don't dump link queues - TIPC_DUMP_TRANSMQ: dump link transmq queue - TIPC_DUMP_BACKLOGQ: dump link backlog queue - TIPC_DUMP_DEFERDQ: dump link deferd queue - TIPC_DUMP_INPUTQ: dump link input queue - TIPC_DUMP_WAKEUP: dump link wakeup queue - TIPC_DUMP_ALL: dump all the link queues above ``char *buf`` returned buffer of dump data in formath](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMI hjubj)}(hhh](j)}(h/``struct tipc_link *l`` tipc link to be dumped h](j )}(h``struct tipc_link *l``h]j)}(hj h]hstruct tipc_link *l}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMF hjubj')}(hhh]h)}(htipc link to be dumpedh]htipc link to be dumped}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMF hj6ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj5hMF hjubj)}(hXw``u16 dqueues`` bitmask to decide if any link queue to be dumped? - TIPC_DUMP_NONE: don't dump link queues - TIPC_DUMP_TRANSMQ: dump link transmq queue - TIPC_DUMP_BACKLOGQ: dump link backlog queue - TIPC_DUMP_DEFERDQ: dump link deferd queue - TIPC_DUMP_INPUTQ: dump link input queue - TIPC_DUMP_WAKEUP: dump link wakeup queue - TIPC_DUMP_ALL: dump all the link queues above h](j )}(h``u16 dqueues``h]j)}(hjYh]h u16 dqueues}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMN hjSubj')}(hhh]h)}(hXfbitmask to decide if any link queue to be dumped? - TIPC_DUMP_NONE: don't dump link queues - TIPC_DUMP_TRANSMQ: dump link transmq queue - TIPC_DUMP_BACKLOGQ: dump link backlog queue - TIPC_DUMP_DEFERDQ: dump link deferd queue - TIPC_DUMP_INPUTQ: dump link input queue - TIPC_DUMP_WAKEUP: dump link wakeup queue - TIPC_DUMP_ALL: dump all the link queues aboveh]hXhbitmask to decide if any link queue to be dumped? - TIPC_DUMP_NONE: don’t dump link queues - TIPC_DUMP_TRANSMQ: dump link transmq queue - TIPC_DUMP_BACKLOGQ: dump link backlog queue - TIPC_DUMP_DEFERDQ: dump link deferd queue - TIPC_DUMP_INPUTQ: dump link input queue - TIPC_DUMP_WAKEUP: dump link wakeup queue - TIPC_DUMP_ALL: dump all the link queues above}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMG hjoubah}(h]h ]h"]h$]h&]uh1j&hjSubeh}(h]h ]h"]h$]h&]uh1jhjnhMN hjubj)}(h4``char *buf`` returned buffer of dump data in formath](j )}(h ``char *buf``h]j)}(hjh]h char *buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMP hjubj')}(hhh]h)}(h&returned buffer of dump data in formath]h&returned buffer of dump data in format}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:169: ./net/tipc/link.chMO hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMP hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj-hhhNhNubeh}(h]tipc-link-interfacesah ]h"]tipc link interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC msg Interfacesh]hTIPC msg Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_buf_acquire (C function)c.tipc_buf_acquirehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h7struct sk_buff * tipc_buf_acquire (u32 size, gfp_t gfp)h]j/)}(h5struct sk_buff *tipc_buf_acquire(u32 size, gfp_t gfp)h](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK:ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhK:ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]j)}jtipc_buf_acquiresbc.tipc_buf_acquireasbuh1hhjhhhjhK:ubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhK:ubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK:ubjX)}(htipc_buf_acquireh]j^)}(hjCh]htipc_buf_acquire}(hjehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjaubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhK:ubj)}(h(u32 size, gfp_t gfp)h](j%)}(hu32 sizeh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jAc.tipc_buf_acquireasbuh1hhj|ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj|ubj^)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjxubj%)}(h gfp_t gfph](h)}(hhh]j^)}(hgfp_th]hgfp_t}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jAc.tipc_buf_acquireasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hgfph]hgfp}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjxubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK:ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhK:ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhK:hjhhubj)}(hhh]h)}(hcreates a TIPC message bufferh]hcreates a TIPC message buffer}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK:hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK:ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9jj9jjjuh1j#hhhjhNhNubj)}(hXC**Parameters** ``u32 size`` message size (including TIPC header) ``gfp_t gfp`` memory allocation flags **Return** a new buffer with data pointers set to the specified size. **NOTE** Headroom is reserved to allow prepending of a data link header. There may also be unrequested tailroom present at the buffer's end.h](h)}(h**Parameters**h]j)}(hjCh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK>hj=ubj)}(hhh](j)}(h2``u32 size`` message size (including TIPC header) h](j )}(h ``u32 size``h]j)}(hjbh]hu32 size}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK;hj\ubj')}(hhh]h)}(h$message size (including TIPC header)h]h$message size (including TIPC header)}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhK;hjxubah}(h]h ]h"]h$]h&]uh1j&hj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhK;hjYubj)}(h&``gfp_t gfp`` memory allocation flags h](j )}(h ``gfp_t gfp``h]j)}(hjh]h gfp_t gfp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhj=ubh)}(h:a new buffer with data pointers set to the specified size.h]h:a new buffer with data pointers set to the specified size.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK>hj=ubh)}(h**NOTE**h]j)}(hjh]hNOTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK@hj=ubh)}(hHeadroom is reserved to allow prepending of a data link header. There may also be unrequested tailroom present at the buffer's end.h]hHeadroom is reserved to allow prepending of a data link header. There may also be unrequested tailroom present at the buffer’s end.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chK@hj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_msg_append (C function)c.tipc_msg_appendhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hjint tipc_msg_append (struct tipc_msg *_hdr, struct msghdr *m, int dlen, int mss, struct sk_buff_head *txq)h]j/)}(hiint tipc_msg_append(struct tipc_msg *_hdr, struct msghdr *m, int dlen, int mss, struct sk_buff_head *txq)h](jG)}(hinth]hint}(hjBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>hhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKubjG)}(h h]h }(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>hhhjPhKubjX)}(htipc_msg_appendh]j^)}(htipc_msg_appendh]htipc_msg_append}(hjchhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj_ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj>hhhjPhKubj)}(hV(struct tipc_msg *_hdr, struct msghdr *m, int dlen, int mss, struct sk_buff_head *txq)h](j%)}(hstruct tipc_msg *_hdrh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj{ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj{ubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjesbc.tipc_msg_appendasbuh1hhj{ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj^)}(h_hdrh]h_hdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjwubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_appendasbuh1hhjubjG)}(h h]h }(hj-hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hmh]hm}(hjHhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjwubj%)}(hint dlenh](jG)}(hinth]hint}(hjahhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj]ubjG)}(h h]h }(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj]ubj^)}(hdlenh]hdlen}(hj}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjwubj%)}(hint mssh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmssh]hmss}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjwubj%)}(hstruct sk_buff_head *txqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_appendasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(htxqh]htxq}(hj"hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjwubeh}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj:hhhjPhKubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1j(hjPhKhj7hhubj)}(hhh]h)}(h/Append data to tail of an existing buffer queueh]h/Append data to tail of an existing buffer queue}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjIhhubah}(h]h ]h"]h$]h&]uh1jhj7hhhjPhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdjjdjjjuh1j#hhhjhNhNubj)}(hX5**Parameters** ``struct tipc_msg *_hdr`` header to be used ``struct msghdr *m`` the data to be appended ``int dlen`` size of data to be appended ``int mss`` max allowable size of buffer ``struct sk_buff_head *txq`` queue to append to **Return** the number of 1k blocks appended or errno valueh](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjhubj)}(hhh](j)}(h,``struct tipc_msg *_hdr`` header to be used h](j )}(h``struct tipc_msg *_hdr``h]j)}(hjh]hstruct tipc_msg *_hdr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjubj')}(hhh]h)}(hheader to be usedh]hheader to be used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h-``struct msghdr *m`` the data to be appended h](j )}(h``struct msghdr *m``h]j)}(hjh]hstruct msghdr *m}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjubj')}(hhh]h)}(hthe data to be appendedh]hthe data to be appended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h)``int dlen`` size of data to be appended h](j )}(h ``int dlen``h]j)}(hjh]hint dlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjubj')}(hhh]h)}(hsize of data to be appendedh]hsize of data to be appended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h)``int mss`` max allowable size of buffer h](j )}(h ``int mss``h]j)}(hj8h]hint mss}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhj2ubj')}(hhh]h)}(hmax allowable size of bufferh]hmax allowable size of buffer}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhKhjNubah}(h]h ]h"]h$]h&]uh1j&hj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhKhjubj)}(h0``struct sk_buff_head *txq`` queue to append to h](j )}(h``struct sk_buff_head *txq``h]j)}(hjqh]hstruct sk_buff_head *txq}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjkubj')}(hhh]h)}(hqueue to append toh]hqueue to append to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjkubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjhubh)}(h/the number of 1k blocks appended or errno valueh]h/the number of 1k blocks appended or errno value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chKhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_msg_fragment (C function)c.tipc_msg_fragmenthNtauh1jhjhhhNhNubj$)}(hhh](j))}(hoint tipc_msg_fragment (struct sk_buff *skb, const struct tipc_msg *hdr, int pktmax, struct sk_buff_head *frags)h]j/)}(hnint tipc_msg_fragment(struct sk_buff *skb, const struct tipc_msg *hdr, int pktmax, struct sk_buff_head *frags)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM8ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM8ubjX)}(htipc_msg_fragmenth]j^)}(htipc_msg_fragmenth]htipc_msg_fragment}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM8ubj)}(hY(struct sk_buff *skb, const struct tipc_msg *hdr, int pktmax, struct sk_buff_head *frags)h](j%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hj.hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj*ubjG)}(h h]h }(hj;hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj*ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjLhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]j)}jjsbc.tipc_msg_fragmentasbuh1hhj*ubjG)}(h h]h }(hjlhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj*ubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj&ubj%)}(hconst struct tipc_msg *hdrh](j5)}(hj,h]hconst}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jhc.tipc_msg_fragmentasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hhdrh]hhdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj&ubj%)}(h int pktmaxh](jG)}(hinth]hint}(hj+hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubjG)}(h h]h }(hj9hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubj^)}(hpktmaxh]hpktmax}(hjGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj&ubj%)}(hstruct sk_buff_head *fragsh](j5)}(hj8h]hstruct}(hj`hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj\ubjG)}(h h]h }(hjmhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj\ubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj~hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jhc.tipc_msg_fragmentasbuh1hhj\ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj\ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj^)}(hfragsh]hfrags}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj&ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM8ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM8ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM8hjhhubj)}(hhh]h)}(h*build a fragment skb list for TIPC messageh]h*build a fragment skb list for TIPC message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM8hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM8ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX^**Parameters** ``struct sk_buff *skb`` TIPC message skb ``const struct tipc_msg *hdr`` internal msg header to be put on the top of the fragments ``int pktmax`` max size of a fragment incl. the header ``struct sk_buff_head *frags`` returned fragment skb list **Return** 0 if the fragmentation is successful, otherwise: -EINVAL or -ENOMEMh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM<hjubj)}(hhh](j)}(h)``struct sk_buff *skb`` TIPC message skb h](j )}(h``struct sk_buff *skb``h]j)}(hj"h]hstruct sk_buff *skb}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM:hjubj')}(hhh]h)}(hTIPC message skbh]hTIPC message skb}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hM:hj8ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj7hM:hjubj)}(hY``const struct tipc_msg *hdr`` internal msg header to be put on the top of the fragments h](j )}(h``const struct tipc_msg *hdr``h]j)}(hj[h]hconst struct tipc_msg *hdr}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM;hjUubj')}(hhh]h)}(h9internal msg header to be put on the top of the fragmentsh]h9internal msg header to be put on the top of the fragments}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphM;hjqubah}(h]h ]h"]h$]h&]uh1j&hjUubeh}(h]h ]h"]h$]h&]uh1jhjphM;hjubj)}(h7``int pktmax`` max size of a fragment incl. the header h](j )}(h``int pktmax``h]j)}(hjh]h int pktmax}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM<hjubj')}(hhh]h)}(h'max size of a fragment incl. the headerh]h'max size of a fragment incl. the header}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM<hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM<hjubj)}(h:``struct sk_buff_head *frags`` returned fragment skb list h](j )}(h``struct sk_buff_head *frags``h]j)}(hjh]hstruct sk_buff_head *frags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM=hjubj')}(hhh]h)}(hreturned fragment skb listh]hreturned fragment skb list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM=hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM=hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM?hjubh)}(hC0 if the fragmentation is successful, otherwise: -EINVAL or -ENOMEMh]hC0 if the fragmentation is successful, otherwise: -EINVAL or -ENOMEM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM?hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_msg_build (C function)c.tipc_msg_buildhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hxint tipc_msg_build (struct tipc_msg *mhdr, struct msghdr *m, int offset, int dsz, int pktmax, struct sk_buff_head *list)h]j/)}(hwint tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, int offset, int dsz, int pktmax, struct sk_buff_head *list)h](jG)}(hinth]hint}(hjMhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMsubjG)}(h h]h }(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIhhhj[hMsubjX)}(htipc_msg_buildh]j^)}(htipc_msg_buildh]htipc_msg_build}(hjnhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjIhhhj[hMsubj)}(he(struct tipc_msg *mhdr, struct msghdr *m, int offset, int dsz, int pktmax, struct sk_buff_head *list)h](j%)}(hstruct tipc_msg *mhdrh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjpsbc.tipc_msg_buildasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hmhdrh]hmhdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_buildasbuh1hhjubjG)}(h h]h }(hj8hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hjJh]hm}(hjShhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h int offseth](jG)}(hinth]hint}(hjkhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjgubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjgubj^)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjgubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint dszh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hdszh]hdsz}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h int pktmaxh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hpktmaxh]hpktmax}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *listh](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]jc.tipc_msg_buildasbuh1hhjubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hlisth]hlist}(hjahhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjIhhhj[hMsubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjEhhhj[hMsubah}(h]j@ah ](jjeh"]h$]h&]jj)jhuh1j(hj[hMshjBhhubj)}(hhh]h)}(h8create buffer chain containing specified header and datah]h8create buffer chain containing specified header and data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMshjhhubah}(h]h ]h"]h$]h&]uh1jhjBhhhj[hMsubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX%**Parameters** ``struct tipc_msg *mhdr`` Message header, to be prepended to data ``struct msghdr *m`` User message ``int offset`` buffer offset for fragmented messages (FIXME) ``int dsz`` Total length of user data ``int pktmax`` Max packet size that can be used ``struct sk_buff_head *list`` Buffer or chain of buffers to be returned to caller **Description** Note that the recursive call we are making here is safe, since it can logically go only one further level down. **Return** message data size or errno: -ENOMEM, -EFAULTh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMwhjubj)}(hhh](j)}(hB``struct tipc_msg *mhdr`` Message header, to be prepended to data h](j )}(h``struct tipc_msg *mhdr``h]j)}(hjh]hstruct tipc_msg *mhdr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMthjubj')}(hhh]h)}(h'Message header, to be prepended to datah]h'Message header, to be prepended to data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMthjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMthjubj)}(h"``struct msghdr *m`` User message h](j )}(h``struct msghdr *m``h]j)}(hjh]hstruct msghdr *m}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMuhjubj')}(hhh]h)}(h User messageh]h User message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMuhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMuhjubj)}(h=``int offset`` buffer offset for fragmented messages (FIXME) h](j )}(h``int offset``h]j)}(hj>h]h int offset}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMvhj8ubj')}(hhh]h)}(h-buffer offset for fragmented messages (FIXME)h]h-buffer offset for fragmented messages (FIXME)}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMvhjTubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMvhjubj)}(h&``int dsz`` Total length of user data h](j )}(h ``int dsz``h]j)}(hjwh]hint dsz}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMwhjqubj')}(hhh]h)}(hTotal length of user datah]hTotal length of user data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMwhjubah}(h]h ]h"]h$]h&]uh1j&hjqubeh}(h]h ]h"]h$]h&]uh1jhjhMwhjubj)}(h0``int pktmax`` Max packet size that can be used h](j )}(h``int pktmax``h]j)}(hjh]h int pktmax}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMxhjubj')}(hhh]h)}(h Max packet size that can be usedh]h Max packet size that can be used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMxhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMxhjubj)}(hR``struct sk_buff_head *list`` Buffer or chain of buffers to be returned to caller h](j )}(h``struct sk_buff_head *list``h]j)}(hjh]hstruct sk_buff_head *list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMyhjubj')}(hhh]h)}(h3Buffer or chain of buffers to be returned to callerh]h3Buffer or chain of buffers to be returned to caller}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMyhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMyhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj$h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM{hjubh)}(hoNote that the recursive call we are making here is safe, since it can logically go only one further level down.h]hoNote that the recursive call we are making here is safe, since it can logically go only one further level down.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMzhjubh)}(h **Return**h]j)}(hjKh]hReturn}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM}hjubh)}(h,message data size or errno: -ENOMEM, -EFAULTh]h,message data size or errno: -ENOMEM, -EFAULT}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM~hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_msg_bundle (C function)c.tipc_msg_bundlehNtauh1jhjhhhNhNubj$)}(hhh](j))}(hJbool tipc_msg_bundle (struct sk_buff *bskb, struct tipc_msg *msg, u32 max)h]j/)}(hIbool tipc_msg_bundle(struct sk_buff *bskb, struct tipc_msg *msg, u32 max)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_msg_bundleh]j^)}(htipc_msg_bundleh]htipc_msg_bundle}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(h5(struct sk_buff *bskb, struct tipc_msg *msg, u32 max)h](j%)}(hstruct sk_buff *bskbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_msg_bundleasbuh1hhjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hbskbh]hbskb}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_msg *msgh](j5)}(hj8h]hstruct}(hj>hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj:ubjG)}(h h]h }(hjKhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj:ubh)}(hhh]j^)}(htipc_msgh]htipc_msg}(hj\hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]jc.tipc_msg_bundleasbuh1hhj:ubjG)}(h h]h }(hjzhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj^)}(hmsgh]hmsg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hu32 maxh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_bundleasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hmaxh]hmax}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(h6Append contents of a buffer to tail of an existing oneh]h6Append contents of a buffer to tail of an existing one}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct sk_buff *bskb`` the bundle buffer to append to ``struct tipc_msg *msg`` message to be appended ``u32 max`` max allowable size for the bundle buffer **Return** "true" if bundling has been performed, otherwise "false"h](h)}(h**Parameters**h]j)}(hj)h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhj#ubj)}(hhh](j)}(h8``struct sk_buff *bskb`` the bundle buffer to append to h](j )}(h``struct sk_buff *bskb``h]j)}(hjHh]hstruct sk_buff *bskb}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjBubj')}(hhh]h)}(hthe bundle buffer to append toh]hthe bundle buffer to append to}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj^ubah}(h]h ]h"]h$]h&]uh1j&hjBubeh}(h]h ]h"]h$]h&]uh1jhj]hMhj?ubj)}(h0``struct tipc_msg *msg`` message to be appended h](j )}(h``struct tipc_msg *msg``h]j)}(hjh]hstruct tipc_msg *msg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhj{ubj')}(hhh]h)}(hmessage to be appendedh]hmessage to be appended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hj{ubeh}(h]h ]h"]h$]h&]uh1jhjhMhj?ubj)}(h5``u32 max`` max allowable size for the bundle buffer h](j )}(h ``u32 max``h]j)}(hjh]hu32 max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjubj')}(hhh]h)}(h(max allowable size for the bundle bufferh]h(max allowable size for the bundle buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj?ubeh}(h]h ]h"]h$]h&]uh1jhj#ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhj#ubh)}(h8"true" if bundling has been performed, otherwise "false"h]h@“true” if bundling has been performed, otherwise “false”}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_msg_try_bundle (C function)c.tipc_msg_try_bundlehNtauh1jhjhhhNhNubj$)}(hhh](j))}(hkbool tipc_msg_try_bundle (struct sk_buff *tskb, struct sk_buff **skb, u32 mss, u32 dnode, bool *new_bundle)h]j/)}(hjbool tipc_msg_try_bundle(struct sk_buff *tskb, struct sk_buff **skb, u32 mss, u32 dnode, bool *new_bundle)h](jG)}(hjgh]hbool}(hj:hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj6hhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMubjG)}(h h]h }(hjHhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj6hhhjGhMubjX)}(htipc_msg_try_bundleh]j^)}(htipc_msg_try_bundleh]htipc_msg_try_bundle}(hjZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjVubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj6hhhjGhMubj)}(hR(struct sk_buff *tskb, struct sk_buff **skb, u32 mss, u32 dnode, bool *new_bundle)h](j%)}(hstruct sk_buff *tskbh](j5)}(hj8h]hstruct}(hjvhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjrubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj\sbc.tipc_msg_try_bundleasbuh1hhjrubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj^)}(htskbh]htskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnubj%)}(hstruct sk_buff **skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_try_bundleasbuh1hhjubjG)}(h h]h }(hj$hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjLhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnubj%)}(hu32 mssh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjjmodnameN classnameNjj)}j]jc.tipc_msg_try_bundleasbuh1hhjaubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjaubj^)}(hmssh]hmss}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjaubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnubj%)}(h u32 dnodeh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_try_bundleasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hdnodeh]hdnode}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnubj%)}(hbool *new_bundleh](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h- }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h new_bundleh]h new_bundle}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjnubeh}(h]h ]h"]h$]h&]hhuh1jhj6hhhjGhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj2hhhjGhMubah}(h]j-ah ](jjeh"]h$]h&]jj)jhuh1j(hjGhMhj/hhubj)}(hhh]h)}(h+Try to bundle a new message to the last oneh]h+Try to bundle a new message to the last one}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjDhhubah}(h]h ]h"]h$]h&]uh1jhj/hhhjGhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_jj_jjjuh1j#hhhjhNhNubj)}(hX2**Parameters** ``struct sk_buff *tskb`` the last/target message to which the new one will be appended ``struct sk_buff **skb`` the new message skb pointer ``u32 mss`` max message size (header inclusive) ``u32 dnode`` destination node for the message ``bool *new_bundle`` if this call made a new bundle or not **Return** "true" if the new message skb is potential for bundling this time or later, in the case a bundling has been done this time, the skb is consumed (the skb pointer = NULL). Otherwise, "false" if the skb cannot be bundled at all.h](h)}(h**Parameters**h]j)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM hjcubj)}(hhh](j)}(hW``struct sk_buff *tskb`` the last/target message to which the new one will be appended h](j )}(h``struct sk_buff *tskb``h]j)}(hjh]hstruct sk_buff *tskb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM hjubj')}(hhh]h)}(h=the last/target message to which the new one will be appendedh]h=the last/target message to which the new one will be appended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h5``struct sk_buff **skb`` the new message skb pointer h](j )}(h``struct sk_buff **skb``h]j)}(hjh]hstruct sk_buff **skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM hjubj')}(hhh]h)}(hthe new message skb pointerh]hthe new message skb pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h0``u32 mss`` max message size (header inclusive) h](j )}(h ``u32 mss``h]j)}(hjh]hu32 mss}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM hjubj')}(hhh]h)}(h#max message size (header inclusive)h]h#max message size (header inclusive)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h/``u32 dnode`` destination node for the message h](j )}(h ``u32 dnode``h]j)}(hj3h]h u32 dnode}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM hj-ubj')}(hhh]h)}(h destination node for the messageh]h destination node for the message}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhM hjIubah}(h]h ]h"]h$]h&]uh1j&hj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhM hjubj)}(h;``bool *new_bundle`` if this call made a new bundle or not h](j )}(h``bool *new_bundle``h]j)}(hjlh]hbool *new_bundle}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM hjfubj')}(hhh]h)}(h%if this call made a new bundle or noth]h%if this call made a new bundle or not}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjfubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjcubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjcubh)}(h"true" if the new message skb is potential for bundling this time or later, in the case a bundling has been done this time, the skb is consumed (the skb pointer = NULL). Otherwise, "false" if the skb cannot be bundled at all.h]h“true” if the new message skb is potential for bundling this time or later, in the case a bundling has been done this time, the skb is consumed (the skb pointer = NULL). Otherwise, “false” if the skb cannot be bundled at all.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_msg_extract (C function)c.tipc_msg_extracthNtauh1jhjhhhNhNubj$)}(hhh](j))}(hLbool tipc_msg_extract (struct sk_buff *skb, struct sk_buff **iskb, int *pos)h]j/)}(hKbool tipc_msg_extract(struct sk_buff *skb, struct sk_buff **iskb, int *pos)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMIubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMIubjX)}(htipc_msg_extracth]j^)}(htipc_msg_extracth]htipc_msg_extract}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMIubj)}(h6(struct sk_buff *skb, struct sk_buff **iskb, int *pos)h](j%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hj(hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj$ubjG)}(h h]h }(hj5hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj$ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjFhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjCubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNjj)}j]j)}jjsbc.tipc_msg_extractasbuh1hhj$ubjG)}(h h]h }(hjfhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj$ubj)}(hjh]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hstruct sk_buff **iskbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jbc.tipc_msg_extractasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hiskbh]hiskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hint *posh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hposh]hpos}(hj@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMIubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMIubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMIhjhhubj)}(hhh]h)}(h(extract bundled inner packet from bufferh]h(extract bundled inner packet from buffer}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMIhjghhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMIubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hXd**Parameters** ``struct sk_buff *skb`` buffer to be extracted from. ``struct sk_buff **iskb`` extracted inner buffer, to be returned ``int *pos`` position in outer message of msg to be extracted. Returns position of next msg. Consumes outer buffer when last packet extracted **Return** true when there is an extracted buffer, otherwise falseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMMhjubj)}(hhh](j)}(h5``struct sk_buff *skb`` buffer to be extracted from. h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMJhjubj')}(hhh]h)}(hbuffer to be extracted from.h]hbuffer to be extracted from.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjubj)}(hA``struct sk_buff **iskb`` extracted inner buffer, to be returned h](j )}(h``struct sk_buff **iskb``h]j)}(hjh]hstruct sk_buff **iskb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMKhjubj')}(hhh]h)}(h&extracted inner buffer, to be returnedh]h&extracted inner buffer, to be returned}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMKhjubj)}(h``int *pos`` position in outer message of msg to be extracted. Returns position of next msg. Consumes outer buffer when last packet extracted h](j )}(h ``int *pos``h]j)}(hjh]hint *pos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMNhjubj')}(hhh]h)}(hposition in outer message of msg to be extracted. Returns position of next msg. Consumes outer buffer when last packet extractedh]hposition in outer message of msg to be extracted. Returns position of next msg. Consumes outer buffer when last packet extracted}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMLhj3ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj2hMNhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjYh]hReturn}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMPhjubh)}(h7true when there is an extracted buffer, otherwise falseh]h7true when there is an extracted buffer, otherwise false}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMOhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_msg_reverse (C function)c.tipc_msg_reversehNtauh1jhjhhhNhNubj$)}(hhh](j))}(hCbool tipc_msg_reverse (u32 own_node, struct sk_buff **skb, int err)h]j/)}(hBbool tipc_msg_reverse(u32 own_node, struct sk_buff **skb, int err)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMvubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMvubjX)}(htipc_msg_reverseh]j^)}(htipc_msg_reverseh]htipc_msg_reverse}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMvubj)}(h-(u32 own_node, struct sk_buff **skb, int err)h](j%)}(h u32 own_nodeh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_msg_reverseasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hown_nodeh]hown_node}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff **skbh](j5)}(hj8h]hstruct}(hj$hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubjG)}(h h]h }(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjBhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jc.tipc_msg_reverseasbuh1hhj ubjG)}(h h]h }(hj`hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint errh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(herrh]herr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMvubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMvubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMvhjhhubj)}(hhh]h)}(h8swap source and destination addresses and add error codeh]h8swap source and destination addresses and add error code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMvhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMvubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX?**Parameters** ``u32 own_node`` originating node id for reversed message ``struct sk_buff **skb`` buffer containing message to be reversed; will be consumed ``int err`` error code to be set in message, if any Replaces consumed buffer with new one when successful **Return** true if success, otherwise falseh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMzhjubj)}(hhh](j)}(h:``u32 own_node`` originating node id for reversed message h](j )}(h``u32 own_node``h]j)}(hj(h]h u32 own_node}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMwhj"ubj')}(hhh]h)}(h(originating node id for reversed messageh]h(originating node id for reversed message}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMwhj>ubah}(h]h ]h"]h$]h&]uh1j&hj"ubeh}(h]h ]h"]h$]h&]uh1jhj=hMwhjubj)}(hT``struct sk_buff **skb`` buffer containing message to be reversed; will be consumed h](j )}(h``struct sk_buff **skb``h]j)}(hjah]hstruct sk_buff **skb}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMxhj[ubj')}(hhh]h)}(h:buffer containing message to be reversed; will be consumedh]h:buffer containing message to be reversed; will be consumed}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMxhjwubah}(h]h ]h"]h$]h&]uh1j&hj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhMxhjubj)}(hj``int err`` error code to be set in message, if any Replaces consumed buffer with new one when successful h](j )}(h ``int err``h]j)}(hjh]hint err}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMzhjubj')}(hhh]h)}(h]error code to be set in message, if any Replaces consumed buffer with new one when successfulh]h]error code to be set in message, if any Replaces consumed buffer with new one when successful}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMyhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMzhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM|hjubh)}(h true if success, otherwise falseh]h true if success, otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chM{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!tipc_msg_lookup_dest (C function)c.tipc_msg_lookup_desthNtauh1jhjhhhNhNubj$)}(hhh](j))}(hJbool tipc_msg_lookup_dest (struct net *net, struct sk_buff *skb, int *err)h]j/)}(hIbool tipc_msg_lookup_dest(struct net *net, struct sk_buff *skb, int *err)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMubjG)}(h h]h }(hj)hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj(hMubjX)}(htipc_msg_lookup_desth]j^)}(htipc_msg_lookup_desth]htipc_msg_lookup_dest}(hj;hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj7ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj(hMubj)}(h0(struct net *net, struct sk_buff *skb, int *err)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjWhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjSubjG)}(h h]h }(hjdhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjSubh)}(hhh]j^)}(hneth]hnet}(hjuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]j)}jj=sbc.tipc_msg_lookup_destasbuh1hhjSubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjSubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjOubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_msg_lookup_destasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjOubj%)}(hint *errh](jG)}(hinth]hint}(hj9hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj5ubjG)}(h h]h }(hjGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj5ubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj^)}(herrh]herr}(hjbhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjOubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj(hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj(hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj(hMhjhhubj)}(hhh]h)}(h-try to find new destination for named messageh]h-try to find new destination for named message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj(hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX"**Parameters** ``struct net *net`` pointer to associated network namespace ``struct sk_buff *skb`` the buffer containing the message. ``int *err`` error code to be used by caller if lookup fails Does not consume buffer **Return** true if a destination is found, false otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjubj)}(hhh](j)}(h<``struct net *net`` pointer to associated network namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjubj')}(hhh]h)}(h'pointer to associated network namespaceh]h'pointer to associated network namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h;``struct sk_buff *skb`` the buffer containing the message. h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjubj')}(hhh]h)}(h"the buffer containing the message.h]h"the buffer containing the message.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hU``int *err`` error code to be used by caller if lookup fails Does not consume buffer h](j )}(h ``int *err``h]j)}(hj?h]hint *err}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1j hO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhj9ubj')}(hhh]h)}(hGerror code to be used by caller if lookup fails Does not consume bufferh]hGerror code to be used by caller if lookup fails Does not consume buffer}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjUubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhjThMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj{h]hReturn}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjubh)}(h/true if a destination is found, false otherwiseh]h/true if a destination is found, false otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhO/var/lib/git/docbuild/linux/Documentation/networking/tipc:175: ./net/tipc/msg.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]tipc-msg-interfacesah ]h"]tipc msg interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Name Interfacesh]hTIPC Name Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jservice_range (C struct)c.service_rangehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h service_rangeh]j/)}(hstruct service_rangeh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKubjX)}(h service_rangeh]j^)}(hjh]h service_range}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKhjhhubj)}(hhh]h)}(h-container for all bindings of a service rangeh]h-container for all bindings of a service range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK4hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj3jj3jjjuh1j#hhhjhNhNubj)}(hXz**Definition**:: struct service_range { u32 lower; u32 upper; struct rb_node tree_node; u32 max; struct list_head local_publ; struct list_head all_publ; }; **Members** ``lower`` service range lower bound ``upper`` service range upper bound ``tree_node`` member of service range RB tree ``max`` largest 'upper' in this node subtree ``local_publ`` list of identical publications made from this node Used by closest_first lookup and multicast lookup algorithm ``all_publ`` all publications identical to this one, whatever node and scope Used by round-robin lookup algorithmh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh:}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK8hj7ubj)}(hstruct service_range { u32 lower; u32 upper; struct rb_node tree_node; u32 max; struct list_head local_publ; struct list_head all_publ; };h]hstruct service_range { u32 lower; u32 upper; struct rb_node tree_node; u32 max; struct list_head local_publ; struct list_head all_publ; };}hjXsbah}(h]h ]h"]h$]h&]hhuh1jhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK:hj7ubh)}(h **Members**h]j)}(hjih]hMembers}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKChj7ubj)}(hhh](j)}(h$``lower`` service range lower bound h](j )}(h ``lower``h]j)}(hjh]hlower}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK6hjubj')}(hhh]h)}(hservice range lower boundh]hservice range lower bound}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK6hjubj)}(h$``upper`` service range upper bound h](j )}(h ``upper``h]j)}(hjh]hupper}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK7hjubj')}(hhh]h)}(hservice range upper boundh]hservice range upper bound}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK7hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK7hjubj)}(h.``tree_node`` member of service range RB tree h](j )}(h ``tree_node``h]j)}(hjh]h tree_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK8hjubj')}(hhh]h)}(hmember of service range RB treeh]hmember of service range RB tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK8hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK8hjubj)}(h-``max`` largest 'upper' in this node subtree h](j )}(h``max``h]j)}(hj3h]hmax}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK9hj-ubj')}(hhh]h)}(h$largest 'upper' in this node subtreeh]h(largest ‘upper’ in this node subtree}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhK9hjIubah}(h]h ]h"]h$]h&]uh1j&hj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhK9hjubj)}(h~``local_publ`` list of identical publications made from this node Used by closest_first lookup and multicast lookup algorithm h](j )}(h``local_publ``h]j)}(hjlh]h local_publ}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK;hjfubj')}(hhh]h)}(hnlist of identical publications made from this node Used by closest_first lookup and multicast lookup algorithmh]hnlist of identical publications made from this node Used by closest_first lookup and multicast lookup algorithm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK:hjubah}(h]h ]h"]h$]h&]uh1j&hjfubeh}(h]h ]h"]h$]h&]uh1jhjhK;hjubj)}(hq``all_publ`` all publications identical to this one, whatever node and scope Used by round-robin lookup algorithmh](j )}(h ``all_publ``h]j)}(hjh]hall_publ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hKCubeh}(h]h ](jstructeh"]h$]h&]jjjjYjjYjjjuh1j#hhhjhNhNubj)}(hX**Definition**:: struct tipc_service { u32 type; u32 publ_cnt; struct rb_root ranges; struct hlist_node service_list; struct list_head subscriptions; spinlock_t lock; struct rcu_head rcu; }; **Members** ``type`` 32 bit 'type' value for service ``publ_cnt`` increasing counter for publications in this service ``ranges`` rb tree containing all service ranges for this service ``service_list`` links to adjacent name ranges in hash chain ``subscriptions`` list of subscriptions for this service type ``lock`` spinlock controlling access to pertaining service ranges/publications ``rcu`` RCU callback head used for deferred freeingh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubh:}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKLhj]ubj)}(hstruct tipc_service { u32 type; u32 publ_cnt; struct rb_root ranges; struct hlist_node service_list; struct list_head subscriptions; spinlock_t lock; struct rcu_head rcu; };h]hstruct tipc_service { u32 type; u32 publ_cnt; struct rb_root ranges; struct hlist_node service_list; struct list_head subscriptions; spinlock_t lock; struct rcu_head rcu; };}hj~sbah}(h]h ]h"]h$]h&]hhuh1jhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKNhj]ubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKXhj]ubj)}(hhh](j)}(h)``type`` 32 bit 'type' value for service h](j )}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKJhjubj')}(hhh]h)}(h32 bit 'type' value for serviceh]h#32 bit ‘type’ value for service}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKJhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKJhjubj)}(hA``publ_cnt`` increasing counter for publications in this service h](j )}(h ``publ_cnt``h]j)}(hjh]hpubl_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKKhjubj')}(hhh]h)}(h3increasing counter for publications in this serviceh]h3increasing counter for publications in this service}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKKhjubj)}(hB``ranges`` rb tree containing all service ranges for this service h](j )}(h ``ranges``h]j)}(hj h]hranges}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKLhjubj')}(hhh]h)}(h6rb tree containing all service ranges for this serviceh]h6rb tree containing all service ranges for this service}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKLhj6ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj5hKLhjubj)}(h=``service_list`` links to adjacent name ranges in hash chain h](j )}(h``service_list``h]j)}(hjYh]h service_list}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKMhjSubj')}(hhh]h)}(h+links to adjacent name ranges in hash chainh]h+links to adjacent name ranges in hash chain}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhKMhjoubah}(h]h ]h"]h$]h&]uh1j&hjSubeh}(h]h ]h"]h$]h&]uh1jhjnhKMhjubj)}(h>``subscriptions`` list of subscriptions for this service type h](j )}(h``subscriptions``h]j)}(hjh]h subscriptions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKNhjubj')}(hhh]h)}(h+list of subscriptions for this service typeh]h+list of subscriptions for this service type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKNhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKNhjubj)}(hO``lock`` spinlock controlling access to pertaining service ranges/publications h](j )}(h``lock``h]j)}(hjh]hlock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKOhjubj')}(hhh]h)}(hEspinlock controlling access to pertaining service ranges/publicationsh]hEspinlock controlling access to pertaining service ranges/publications}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKOhjubj)}(h3``rcu`` RCU callback head used for deferred freeingh](j )}(h``rcu``h]j)}(hjh]hrcu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKOhjubj')}(hhh]h)}(h+RCU callback head used for deferred freeingh]h+RCU callback head used for deferred freeing}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKPhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKOhjubeh}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%service_range_foreach_match (C macro)c.service_range_foreach_matchhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hservice_range_foreach_matchh]j/)}(hservice_range_foreach_matchh]jX)}(hservice_range_foreach_matchh]j^)}(hjXh]hservice_range_foreach_match}(hjbhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj^ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjZhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKgubah}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjVhhhjuhKgubah}(h]jQah ](jjeh"]h$]h&]jj)jhuh1j(hjuhKghjShhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjShhhjuhKgubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubh)}(h4``service_range_foreach_match (sr, sc, start, end)``h]j)}(hjh]h0service_range_foreach_match (sr, sc, start, end)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKihjhhubh block_quote)}(h6iterate over tipc service rbtree for each range match h]h)}(h5iterate over tipc service rbtree for each range matchh]h5iterate over tipc service rbtree for each range match}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKghjubah}(h]h ]h"]h$]h&]uh1jhjhKghjhhubj)}(hX**Parameters** ``sr`` the service range pointer as a loop cursor ``sc`` the pointer to tipc service which holds the service range rbtree ``start`` beginning of the search range (end >= start) for matching ``end`` end of the search range (end >= start) for matchingh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKkhjubj)}(hhh](j)}(h2``sr`` the service range pointer as a loop cursor h](j )}(h``sr``h]j)}(hjh]hsr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKihjubj')}(hhh]h)}(h*the service range pointer as a loop cursorh]h*the service range pointer as a loop cursor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKihjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKihjubj)}(hH``sc`` the pointer to tipc service which holds the service range rbtree h](j )}(h``sc``h]j)}(hj#h]hsc}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKjhjubj')}(hhh]h)}(h@the pointer to tipc service which holds the service range rbtreeh]h@the pointer to tipc service which holds the service range rbtree}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKjhj9ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj8hKjhjubj)}(hD``start`` beginning of the search range (end >= start) for matching h](j )}(h ``start``h]j)}(hj\h]hstart}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKkhjVubj')}(hhh]h)}(h9beginning of the search range (end >= start) for matchingh]h9beginning of the search range (end >= start) for matching}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKkhjrubah}(h]h ]h"]h$]h&]uh1j&hjVubeh}(h]h ]h"]h$]h&]uh1jhjqhKkhjubj)}(h;``end`` end of the search range (end >= start) for matchingh](j )}(h``end``h]j)}(hjh]hend}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKmhjubj')}(hhh]h)}(h3end of the search range (end >= start) for matchingh]h3end of the search range (end >= start) for matching}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKlhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKmhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j&service_range_match_first (C function)c.service_range_match_firsthNtauh1jhjhhhNhNubj$)}(hhh](j))}(hXstruct service_range * service_range_match_first (struct rb_node *n, u32 start, u32 end)h]j/)}(hVstruct service_range *service_range_match_first(struct rb_node *n, u32 start, u32 end)h](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKxubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKxubh)}(hhh]j^)}(h service_rangeh]h service_range}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jservice_range_match_firstsbc.service_range_match_firstasbuh1hhjhhhjhKxubjG)}(h h]h }(hj/hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKxubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKxubjX)}(hservice_range_match_firsth]j^)}(hj,h]hservice_range_match_first}(hjNhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjJubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKxubj)}(h'(struct rb_node *n, u32 start, u32 end)h](j%)}(hstruct rb_node *nh](j5)}(hj8h]hstruct}(hjihhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjeubjG)}(h h]h }(hjvhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubh)}(hhh]j^)}(hrb_nodeh]hrb_node}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j*c.service_range_match_firstasbuh1hhjeubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj^)}(hjih]hn}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjaubj%)}(h u32 starth](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j*c.service_range_match_firstasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjaubj%)}(hu32 endh](h)}(hhh]j^)}(hu32h]hu32}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j*c.service_range_match_firstasbuh1hhjubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hendh]hend}(hjOhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjaubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKxubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKxubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKxhjhhubj)}(hhh]h)}(h)find first service range matching a rangeh]h)find first service range matching a range}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKxhjvhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKxubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hXf**Parameters** ``struct rb_node *n`` the root node of service range rbtree for searching ``u32 start`` beginning of the search range (end >= start) for matching ``u32 end`` end of the search range (end >= start) for matching **Return** the leftmost service range node in the rbtree that overlaps the specific range if any. Otherwise, returns NULL.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK|hjubj)}(hhh](j)}(hJ``struct rb_node *n`` the root node of service range rbtree for searching h](j )}(h``struct rb_node *n``h]j)}(hjh]hstruct rb_node *n}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKyhjubj')}(hhh]h)}(h3the root node of service range rbtree for searchingh]h3the root node of service range rbtree for searching}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKyhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKyhjubj)}(hH``u32 start`` beginning of the search range (end >= start) for matching h](j )}(h ``u32 start``h]j)}(hjh]h u32 start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKzhjubj')}(hhh]h)}(h9beginning of the search range (end >= start) for matchingh]h9beginning of the search range (end >= start) for matching}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKzhj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKzhjubj)}(h@``u32 end`` end of the search range (end >= start) for matching h](j )}(h ``u32 end``h]j)}(hj,h]hu32 end}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK{hj&ubj')}(hhh]h)}(h3end of the search range (end >= start) for matchingh]h3end of the search range (end >= start) for matching}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhK{hjBubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhK{hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjgh]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK}hjubh)}(hothe leftmost service range node in the rbtree that overlaps the specific range if any. Otherwise, returns NULL.h]hothe leftmost service range node in the rbtree that overlaps the specific range if any. Otherwise, returns NULL.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chK}hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%service_range_match_next (C function)c.service_range_match_nexthNtauh1jhjhhhNhNubj$)}(hhh](j))}(hWstruct service_range * service_range_match_next (struct rb_node *n, u32 start, u32 end)h]j/)}(hUstruct service_range *service_range_match_next(struct rb_node *n, u32 start, u32 end)h](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKubh)}(hhh]j^)}(h service_rangeh]h service_range}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jservice_range_match_nextsbc.service_range_match_nextasbuh1hhjhhhjhKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubjX)}(hservice_range_match_nexth]j^)}(hjh]hservice_range_match_next}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKubj)}(h'(struct rb_node *n, u32 start, u32 end)h](j%)}(hstruct rb_node *nh](j5)}(hj8h]hstruct}(hj&hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj"ubjG)}(h h]h }(hj3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"ubh)}(hhh]j^)}(hrb_nodeh]hrb_node}(hjDhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]jc.service_range_match_nextasbuh1hhj"ubjG)}(h h]h }(hjbhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"ubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj^)}(hjih]hn}(hj}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h u32 starth](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.service_range_match_nextasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hu32 endh](h)}(hhh]j^)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.service_range_match_nextasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hendh]hend}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKhjhhubj)}(hhh]h)}(h(find next service range matching a rangeh]h(find next service range matching a range}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj3hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjNjjNjjjuh1j#hhhjhNhNubj)}(hX**Parameters** ``struct rb_node *n`` a node in service range rbtree from which the searching starts ``u32 start`` beginning of the search range (end >= start) for matching ``u32 end`` end of the search range (end >= start) for matching **Return** the next service range node to the given node in the rbtree that overlaps the specific range if any. Otherwise, returns NULL.h](h)}(h**Parameters**h]j)}(hjXh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjRubj)}(hhh](j)}(hU``struct rb_node *n`` a node in service range rbtree from which the searching starts h](j )}(h``struct rb_node *n``h]j)}(hjwh]hstruct rb_node *n}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjqubj')}(hhh]h)}(h>a node in service range rbtree from which the searching startsh]h>a node in service range rbtree from which the searching starts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjqubeh}(h]h ]h"]h$]h&]uh1jhjhKhjnubj)}(hH``u32 start`` beginning of the search range (end >= start) for matching h](j )}(h ``u32 start``h]j)}(hjh]h u32 start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjubj')}(hhh]h)}(h9beginning of the search range (end >= start) for matchingh]h9beginning of the search range (end >= start) for matching}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjnubj)}(h@``u32 end`` end of the search range (end >= start) for matching h](j )}(h ``u32 end``h]j)}(hjh]hu32 end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjubj')}(hhh]h)}(h3end of the search range (end >= start) for matchingh]h3end of the search range (end >= start) for matching}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjnubeh}(h]h ]h"]h$]h&]uh1jhjRubh)}(h **Return**h]j)}(hj$h]hReturn}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjRubh)}(h}the next service range node to the given node in the rbtree that overlaps the specific range if any. Otherwise, returns NULL.h]h}the next service range node to the given node in the rbtree that overlaps the specific range if any. Otherwise, returns NULL.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_publ_create (C function)c.tipc_publ_createhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hcstruct publication * tipc_publ_create (struct tipc_uaddr *ua, struct tipc_socket_addr *sk, u32 key)h]j/)}(hastruct publication *tipc_publ_create(struct tipc_uaddr *ua, struct tipc_socket_addr *sk, u32 key)h](j5)}(hj8h]hstruct}(hjihhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjehhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKubjG)}(h h]h }(hjwhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjehhhjvhKubh)}(hhh]j^)}(h publicationh]h publication}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jtipc_publ_createsbc.tipc_publ_createasbuh1hhjehhhjvhKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjehhhjvhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjehhhjvhKubjX)}(htipc_publ_createh]j^)}(hjh]htipc_publ_create}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjehhhjvhKubj)}(h=(struct tipc_uaddr *ua, struct tipc_socket_addr *sk, u32 key)h](j%)}(hstruct tipc_uaddr *uah](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_uaddrh]h tipc_uaddr}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.tipc_publ_createasbuh1hhjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj- hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(huah]hua}(hj: hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_socket_addr *skh](j5)}(hj8h]hstruct}(hjS hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjO ubjG)}(h h]h }(hj` hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjO ubh)}(hhh]j^)}(htipc_socket_addrh]htipc_socket_addr}(hjq hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjn ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs modnameN classnameNjj)}j]jc.tipc_publ_createasbuh1hhjO ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjO ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO ubj^)}(hskh]hsk}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjO ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hu32 keyh](h)}(hhh]j^)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.tipc_publ_createasbuh1hhj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj^)}(hkeyh]hkey}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjehhhjvhKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjahhhjvhKubah}(h]j\ah ](jjeh"]h$]h&]jj)jhuh1j(hjvhKhj^hhubj)}(hhh]h)}(hcreate a publication structureh]hcreate a publication structure}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj hhubah}(h]h ]h"]h$]h&]uh1jhj^hhhjvhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4 jj4 jjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct tipc_uaddr *ua`` the service range the user is binding to ``struct tipc_socket_addr *sk`` the address of the socket that is bound ``u32 key`` publication keyh](h)}(h**Parameters**h]j)}(hj> h]h Parameters}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj< ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj8 ubj)}(hhh](j)}(hC``struct tipc_uaddr *ua`` the service range the user is binding to h](j )}(h``struct tipc_uaddr *ua``h]j)}(hj] h]hstruct tipc_uaddr *ua}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhjW ubj')}(hhh]h)}(h(the service range the user is binding toh]h(the service range the user is binding to}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr hKhjs ubah}(h]h ]h"]h$]h&]uh1j&hjW ubeh}(h]h ]h"]h$]h&]uh1jhjr hKhjT ubj)}(hH``struct tipc_socket_addr *sk`` the address of the socket that is bound h](j )}(h``struct tipc_socket_addr *sk``h]j)}(hj h]hstruct tipc_socket_addr *sk}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubj')}(hhh]h)}(h'the address of the socket that is boundh]h'the address of the socket that is bound}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjT ubj)}(h``u32 key`` publication keyh](j )}(h ``u32 key``h]j)}(hj h]hu32 key}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubj')}(hhh]h)}(hpublication keyh]hpublication key}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjT ubeh}(h]h ]h"]h$]h&]uh1jhj8 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_service_create (C function)c.tipc_service_createhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hRstruct tipc_service * tipc_service_create (struct net *net, struct tipc_uaddr *ua)h]j/)}(hPstruct tipc_service *tipc_service_create(struct net *net, struct tipc_uaddr *ua)h](j5)}(hj8h]hstruct}(hj) hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj% hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKubjG)}(h h]h }(hj7 hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj% hhhj6 hKubh)}(hhh]j^)}(h tipc_serviceh]h tipc_service}(hjH hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjE ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJ modnameN classnameNjj)}j]j)}jtipc_service_createsbc.tipc_service_createasbuh1hhj% hhhj6 hKubjG)}(h h]h }(hji hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj% hhhj6 hKubj)}(hjh]h*}(hjw hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj% hhhj6 hKubjX)}(htipc_service_createh]j^)}(hjf h]htipc_service_create}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj% hhhj6 hKubj)}(h((struct net *net, struct tipc_uaddr *ua)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh)}(hhh]j^)}(hneth]hnet}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jd c.tipc_service_createasbuh1hhj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hneth]hnet}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hstruct tipc_uaddr *uah](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh)}(hhh]j^)}(h tipc_uaddrh]h tipc_uaddr}(hj1 hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj. ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3 modnameN classnameNjj)}j]jd c.tipc_service_createasbuh1hhj ubjG)}(h h]h }(hjO hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(huah]hua}(hjj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubeh}(h]h ]h"]h$]h&]hhuh1jhj% hhhj6 hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj! hhhj6 hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j(hj6 hKhj hhubj)}(hhh]h)}(h3create a service structure for the specified 'type'h]h7create a service structure for the specified ‘type’}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj6 hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct net *net`` network namespace ``struct tipc_uaddr *ua`` address representing the service to be bound **Description** Allocates a single range structure and sets it to all 0's.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubj)}(hhh](j)}(h&``struct net *net`` network namespace h](j )}(h``struct net *net``h]j)}(hj h]hstruct net *net}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubj')}(hhh]h)}(hnetwork namespaceh]hnetwork namespace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(hG``struct tipc_uaddr *ua`` address representing the service to be bound h](j )}(h``struct tipc_uaddr *ua``h]j)}(hj h]hstruct tipc_uaddr *ua}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubj')}(hhh]h)}(h,address representing the service to be boundh]h,address representing the service to be bound}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj# hKhj$ ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj# hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjI h]h Description}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chKhj ubh)}(h:Allocates a single range structure and sets it to all 0's.h]hnode' indicates the node where we want lookup to be performed, which may not be this one. On exit: - If lookup is deferred to another node, leave 'sk->node' unchanged and return 'true'. - If lookup is successful, set the 'sk->node' and 'sk->ref' (== portid) which represent the bound socket and return 'true'. - If lookup fails, return 'false' Note that for legacy users (node configured with Z.C.N address format) the 'closest-first' lookup algorithm must be maintained, i.e., if sk.node is 0 we must look in the local binding list firsth](h)}(h**Parameters**h]j)}(hj$h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM+hjubj)}(hhh](j)}(h&``struct net *net`` network namespace h](j )}(h``struct net *net``h]j)}(hjCh]hstruct net *net}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM(hj=ubj')}(hhh]h)}(hnetwork namespaceh]hnetwork namespace}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhM(hjYubah}(h]h ]h"]h$]h&]uh1j&hj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhM(hj:ubj)}(h5``struct tipc_uaddr *ua`` service address to look up h](j )}(h``struct tipc_uaddr *ua``h]j)}(hj|h]hstruct tipc_uaddr *ua}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM)hjvubj')}(hhh]h)}(hservice address to look uph]hservice address to look up}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1j&hjvubeh}(h]h ]h"]h$]h&]uh1jhjhM)hj:ubj)}(hB``struct tipc_socket_addr *sk`` address to socket we want to find h](j )}(h``struct tipc_socket_addr *sk``h]j)}(hjh]hstruct tipc_socket_addr *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM*hjubj')}(hhh]h)}(h!address to socket we want to findh]h!address to socket we want to find}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM*hj:ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM,hjubh)}(hsOn entry, a non-zero 'sk->node' indicates the node where we want lookup to be performed, which may not be this one.h]hwOn entry, a non-zero ‘sk->node’ indicates the node where we want lookup to be performed, which may not be this one.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM+hjubh)}(hOn exit:h]hOn exit:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM.hjubj)}(hhh](j)}(hTIf lookup is deferred to another node, leave 'sk->node' unchanged and return 'true'.h]h)}(hTIf lookup is deferred to another node, leave 'sk->node' unchanged and return 'true'.h]h\If lookup is deferred to another node, leave ‘sk->node’ unchanged and return ‘true’.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM0hj'ubah}(h]h ]h"]h$]h&]uh1jhj$ubj)}(hyIf lookup is successful, set the 'sk->node' and 'sk->ref' (== portid) which represent the bound socket and return 'true'.h]h)}(hyIf lookup is successful, set the 'sk->node' and 'sk->ref' (== portid) which represent the bound socket and return 'true'.h]hIf lookup is successful, set the ‘sk->node’ and ‘sk->ref’ (== portid) which represent the bound socket and return ‘true’.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM2hj@ubah}(h]h ]h"]h$]h&]uh1jhj$ubj)}(h If lookup fails, return 'false' h]h)}(hIf lookup fails, return 'false'h]h#If lookup fails, return ‘false’}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM4hjYubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]jjuh1jhj9hM0hjubh)}(hNote that for legacy users (node configured with Z.C.N address format) the 'closest-first' lookup algorithm must be maintained, i.e., if sk.node is 0 we must look in the local binding list firsth]hNote that for legacy users (node configured with Z.C.N address format) the ‘closest-first’ lookup algorithm must be maintained, i.e., if sk.node is 0 we must look in the local binding list first}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM6hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_nametbl_withdraw (C function)c.tipc_nametbl_withdrawhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hivoid tipc_nametbl_withdraw (struct net *net, struct tipc_uaddr *ua, struct tipc_socket_addr *sk, u32 key)h]j/)}(hhvoid tipc_nametbl_withdraw(struct net *net, struct tipc_uaddr *ua, struct tipc_socket_addr *sk, u32 key)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_nametbl_withdrawh]j^)}(htipc_nametbl_withdrawh]htipc_nametbl_withdraw}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(hN(struct net *net, struct tipc_uaddr *ua, struct tipc_socket_addr *sk, u32 key)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_nametbl_withdrawasbuh1hhjubjG)}(h h]h }(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hneth]hnet}(hj=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_uaddr *uah](j5)}(hj8h]hstruct}(hjVhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjRubjG)}(h h]h }(hjchhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjRubh)}(hhh]j^)}(h tipc_uaddrh]h tipc_uaddr}(hjthhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]jc.tipc_nametbl_withdrawasbuh1hhjRubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj^)}(huah]hua}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_socket_addr *skh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_socket_addrh]htipc_socket_addr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_nametbl_withdrawasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskh]hsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hu32 keyh](h)}(hhh]j^)}(hu32h]hu32}(hj9hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]jc.tipc_nametbl_withdrawasbuh1hhj2ubjG)}(h h]h }(hjWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj2ubj^)}(hkeyh]hkey}(hjehhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(hwithdraw a service bindingh]hwithdraw a service binding}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct net *net`` network namespace ``struct tipc_uaddr *ua`` service address/range being unbound ``struct tipc_socket_addr *sk`` address of the socket being unbound from ``u32 key`` target publication keyh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjubj)}(hhh](j)}(h&``struct net *net`` network namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjubj')}(hhh]h)}(hnetwork namespaceh]hnetwork namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``struct tipc_uaddr *ua`` service address/range being unbound h](j )}(h``struct tipc_uaddr *ua``h]j)}(hj h]hstruct tipc_uaddr *ua}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjubj')}(hhh]h)}(h#service address/range being unboundh]h#service address/range being unbound}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hI``struct tipc_socket_addr *sk`` address of the socket being unbound from h](j )}(h``struct tipc_socket_addr *sk``h]j)}(hjBh]hstruct tipc_socket_addr *sk}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhj<ubj')}(hhh]h)}(h(address of the socket being unbound fromh]h(address of the socket being unbound from}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhMhjXubah}(h]h ]h"]h$]h&]uh1j&hj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhMhjubj)}(h"``u32 key`` target publication keyh](j )}(h ``u32 key``h]j)}(hj{h]hu32 key}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjuubj')}(hhh]h)}(htarget publication keyh]htarget publication key}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjubah}(h]h ]h"]h$]h&]uh1j&hjuubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_nametbl_subscribe (C function)c.tipc_nametbl_subscribehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h;bool tipc_nametbl_subscribe (struct tipc_subscription *sub)h]j/)}(h:bool tipc_nametbl_subscribe(struct tipc_subscription *sub)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM:ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM:ubjX)}(htipc_nametbl_subscribeh]j^)}(htipc_nametbl_subscribeh]htipc_nametbl_subscribe}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM:ubj)}(h(struct tipc_subscription *sub)h]j%)}(hstruct tipc_subscription *subh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh)}(hhh]j^)}(htipc_subscriptionh]htipc_subscription}(hj/hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]j)}jjsbc.tipc_nametbl_subscribeasbuh1hhj ubjG)}(h h]h }(hjOhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hsubh]hsub}(hjjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM:ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM:ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM:hjhhubj)}(hhh]h)}(h+add a subscription object to the name tableh]h+add a subscription object to the name table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM:hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM:ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hG**Parameters** ``struct tipc_subscription *sub`` subscription to addh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM>hjubj)}(hhh]j)}(h5``struct tipc_subscription *sub`` subscription to addh](j )}(h!``struct tipc_subscription *sub``h]j)}(hjh]hstruct tipc_subscription *sub}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM@hjubj')}(hhh]h)}(hsubscription to addh]hsubscription to add}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM;hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j%tipc_nametbl_unsubscribe (C function)c.tipc_nametbl_unsubscribehNtauh1jhjhhhNhNubj$)}(hhh](j))}(h=void tipc_nametbl_unsubscribe (struct tipc_subscription *sub)h]j/)}(hhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj+hhhj=hMYubjX)}(htipc_nametbl_unsubscribeh]j^)}(htipc_nametbl_unsubscribeh]htipc_nametbl_unsubscribe}(hjPhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjLubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj+hhhj=hMYubj)}(h(struct tipc_subscription *sub)h]j%)}(hstruct tipc_subscription *subh](j5)}(hj8h]hstruct}(hjlhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhubh)}(hhh]j^)}(htipc_subscriptionh]htipc_subscription}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjRsbc.tipc_nametbl_unsubscribeasbuh1hhjhubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj^)}(hsubh]hsub}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjdubah}(h]h ]h"]h$]h&]hhuh1jhj+hhhj=hMYubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj'hhhj=hMYubah}(h]j"ah ](jjeh"]h$]h&]jj)jhuh1j(hj=hMYhj$hhubj)}(hhh]h)}(h,remove a subscription object from name tableh]h,remove a subscription object from name table}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMYhjhhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj=hMYubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hJ**Parameters** ``struct tipc_subscription *sub`` subscription to removeh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM]hj ubj)}(hhh]j)}(h8``struct tipc_subscription *sub`` subscription to removeh](j )}(h!``struct tipc_subscription *sub``h]j)}(hj0h]hstruct tipc_subscription *sub}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chM_hj*ubj')}(hhh]h)}(hsubscription to removeh]hsubscription to remove}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMZhjFubah}(h]h ]h"]h$]h&]uh1j&hj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhM_hj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_service_delete (C function)c.tipc_service_deletehNtauh1jhjhhhNhNubj$)}(hhh](j))}(hCvoid tipc_service_delete (struct net *net, struct tipc_service *sc)h]j/)}(hBvoid tipc_service_delete(struct net *net, struct tipc_service *sc)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_service_deleteh]j^)}(htipc_service_deleteh]htipc_service_delete}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(h*(struct net *net, struct tipc_service *sc)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_service_deleteasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hneth]hnet}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct tipc_service *sch](j5)}(hj8h]hstruct}(hj9hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj5ubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj5ubh)}(hhh]j^)}(h tipc_serviceh]h tipc_service}(hjWhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjYmodnameN classnameNjj)}j]jc.tipc_service_deleteasbuh1hhj5ubjG)}(h h]h }(hjuhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj5ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj^)}(hsch]hsc}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]j}ah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(h2purge all publications for a service and delete ith]h2purge all publications for a service and delete it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(h|**Parameters** ``struct net *net`` the associated network namespace ``struct tipc_service *sc`` tipc_service to deleteh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hjh]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h2``struct tipc_service *sc`` tipc_service to deleteh](j )}(h``struct tipc_service *sc``h]j)}(hj4h]hstruct tipc_service *sc}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhj.ubj')}(hhh]h)}(htipc_service to deleteh]htipc_service to delete}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:181: ./net/tipc/name_table.chMhjJubah}(h]h ]h"]h$]h&]uh1j&hj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jpubl_to_item (C function)c.publ_to_itemhNtauh1jhjhhhNhNubj$)}(hhh](j))}(h?void publ_to_item (struct distr_item *i, struct publication *p)h]j/)}(h>void publ_to_item(struct distr_item *i, struct publication *p)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK-ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhK-ubjX)}(h publ_to_itemh]j^)}(h publ_to_itemh]h publ_to_item}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhK-ubj)}(h-(struct distr_item *i, struct publication *p)h](j%)}(hstruct distr_item *ih](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h distr_itemh]h distr_item}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.publ_to_itemasbuh1hhjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hih]hi}(hj$hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct publication *ph](j5)}(hj8h]hstruct}(hj=hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj9ubjG)}(h h]h }(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj9ubh)}(hhh]j^)}(h publicationh]h publication}(hj[hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]jc.publ_to_itemasbuh1hhj9ubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj9ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj^)}(hjh]hp}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK-ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhK-ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhK-hjhhubj)}(hhh]h)}(h-add publication info to a publication messageh]h-add publication info to a publication message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK-hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK-ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hx**Parameters** ``struct distr_item *i`` location of item in the message ``struct publication *p`` publication infoh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK1hjubj)}(hhh](j)}(h9``struct distr_item *i`` location of item in the message h](j )}(h``struct distr_item *i``h]j)}(hjh]hstruct distr_item *i}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK/hjubj')}(hhh]h)}(hlocation of item in the messageh]hlocation of item in the message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK/hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK/hjubj)}(h*``struct publication *p`` publication infoh](j )}(h``struct publication *p``h]j)}(hj7h]hstruct publication *p}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK1hj1ubj')}(hhh]h)}(hpublication infoh]hpublication info}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK.hjMubah}(h]h ]h"]h$]h&]uh1j&hj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhK1hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jnamed_prepare_buf (C function)c.named_prepare_bufhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hRstruct sk_buff * named_prepare_buf (struct net *net, u32 type, u32 size, u32 dest)h]j/)}(hPstruct sk_buff *named_prepare_buf(struct net *net, u32 type, u32 size, u32 dest)h](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK;ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhK;ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jnamed_prepare_bufsbc.named_prepare_bufasbuh1hhjhhhjhK;ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhK;ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK;ubjX)}(hnamed_prepare_bufh]j^)}(hjh]hnamed_prepare_buf}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhK;ubj)}(h/(struct net *net, u32 type, u32 size, u32 dest)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh)}(hhh]j^)}(hneth]hnet}(hj) hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj& ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+ modnameN classnameNjj)}j]jc.named_prepare_bufasbuh1hhj ubjG)}(h h]h }(hjG hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hjU hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(hneth]hnet}(hjb hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hu32 typeh](h)}(hhh]j^)}(hu32h]hu32}(hj~ hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj{ ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.named_prepare_bufasbuh1hhjw ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjw ubj^)}(htypeh]htype}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjw ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hu32 sizeh](h)}(hhh]j^)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.named_prepare_bufasbuh1hhj ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj^)}(hsizeh]hsize}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubj%)}(hu32 desth](h)}(hhh]j^)}(hu32h]hu32}(hj!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj !ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]jc.named_prepare_bufasbuh1hhj!ubjG)}(h h]h }(hj,!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj!ubj^)}(hdesth]hdest}(hj:!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK;ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhK;ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhK;hjhhubj)}(hhh]h)}(h+allocate & initialize a publication messageh]h+allocate & initialize a publication message}(hjd!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK;hja!hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK;ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|!jj|!jjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct net *net`` the associated network namespace ``u32 type`` message type ``u32 size`` payload size ``u32 dest`` destination node **Description** The buffer returned is of size INT_H_SIZE + payload sizeh](h)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK?hj!ubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj!h]hstruct net *net}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKhj"ubj')}(hhh]h)}(h payload sizeh]h payload size}(hj0"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,"hK>hj-"ubah}(h]h ]h"]h$]h&]uh1j&hj"ubeh}(h]h ]h"]h$]h&]uh1jhj,"hK>hj!ubj)}(h``u32 dest`` destination node h](j )}(h ``u32 dest``h]j)}(hjP"h]hu32 dest}(hjR"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN"ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK?hjJ"ubj')}(hhh]h)}(hdestination nodeh]hdestination node}(hji"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje"hK?hjf"ubah}(h]h ]h"]h$]h&]uh1j&hjJ"ubeh}(h]h ]h"]h$]h&]uh1jhje"hK?hj!ubeh}(h]h ]h"]h$]h&]uh1jhj!ubh)}(h**Description**h]j)}(hj"h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKAhj!ubh)}(h8The buffer returned is of size INT_H_SIZE + payload sizeh]h8The buffer returned is of size INT_H_SIZE + payload size}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chK@hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_named_publish (C function)c.tipc_named_publishhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hLstruct sk_buff * tipc_named_publish (struct net *net, struct publication *p)h]j/)}(hJstruct sk_buff *tipc_named_publish(struct net *net, struct publication *p)h](j5)}(hj8h]hstruct}(hj"hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj"hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKTubjG)}(h h]h }(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"hhhj"hKTubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj"hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j)}jtipc_named_publishsbc.tipc_named_publishasbuh1hhj"hhhj"hKTubjG)}(h h]h }(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"hhhj"hKTubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"hhhj"hKTubjX)}(htipc_named_publishh]j^)}(hj #h]htipc_named_publish}(hj/#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj+#ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj"hhhj"hKTubj)}(h((struct net *net, struct publication *p)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjJ#hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjF#ubjG)}(h h]h }(hjW#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjF#ubh)}(hhh]j^)}(hneth]hnet}(hjh#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hje#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjj#modnameN classnameNjj)}j]j #c.tipc_named_publishasbuh1hhjF#ubjG)}(h h]h }(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjF#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF#ubj^)}(hneth]hnet}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjF#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjB#ubj%)}(hstruct publication *ph](j5)}(hj8h]hstruct}(hj#hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj#ubjG)}(h h]h }(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj#ubh)}(hhh]j^)}(h publicationh]h publication}(hj#hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j #c.tipc_named_publishasbuh1hhj#ubjG)}(h h]h }(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj#ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj^)}(hjh]hp}(hj$hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjB#ubeh}(h]h ]h"]h$]h&]hhuh1jhj"hhhj"hKTubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj"hhhj"hKTubah}(h]j"ah ](jjeh"]h$]h&]jj)jhuh1j(hj"hKThj"hhubj)}(hhh]h)}(h5tell other nodes about a new publication by this nodeh]h5tell other nodes about a new publication by this node}(hj:$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKThj7$hhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj"hKTubeh}(h]h ](jfunctioneh"]h$]h&]jjjjR$jjR$jjjuh1j#hhhjhNhNubj)}(hw**Parameters** ``struct net *net`` the associated network namespace ``struct publication *p`` the new publicationh](h)}(h**Parameters**h]j)}(hj\$h]h Parameters}(hj^$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ$ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKXhjV$ubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj{$h]hstruct net *net}(hj}$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy$ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKUhju$ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKUhj$ubah}(h]h ]h"]h$]h&]uh1j&hju$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKUhjr$ubj)}(h-``struct publication *p`` the new publicationh](j )}(h``struct publication *p``h]j)}(hj$h]hstruct publication *p}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKWhj$ubj')}(hhh]h)}(hthe new publicationh]hthe new publication}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKVhj$ubah}(h]h ]h"]h$]h&]uh1j&hj$ubeh}(h]h ]h"]h$]h&]uh1jhj$hKWhjr$ubeh}(h]h ]h"]h$]h&]uh1jhjV$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_named_withdraw (C function)c.tipc_named_withdrawhNtauh1jhjhhhNhNubj$)}(hhh](j))}(hMstruct sk_buff * tipc_named_withdraw (struct net *net, struct publication *p)h]j/)}(hKstruct sk_buff *tipc_named_withdraw(struct net *net, struct publication *p)h](j5)}(hj8h]hstruct}(hj%hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj %hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKrubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj %hhhj%hKrubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj-%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj*%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/%modnameN classnameNjj)}j]j)}jtipc_named_withdrawsbc.tipc_named_withdrawasbuh1hhj %hhhj%hKrubjG)}(h h]h }(hjN%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj %hhhj%hKrubj)}(hjh]h*}(hj\%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj %hhhj%hKrubjX)}(htipc_named_withdrawh]j^)}(hjK%h]htipc_named_withdraw}(hjm%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hji%ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj %hhhj%hKrubj)}(h((struct net *net, struct publication *p)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj%hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj%ubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubh)}(hhh]j^)}(hneth]hnet}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]jI%c.tipc_named_withdrawasbuh1hhj%ubjG)}(h h]h }(hj%hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj^)}(hneth]hnet}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj%ubj%)}(hstruct publication *ph](j5)}(hj8h]hstruct}(hj%hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj%ubjG)}(h h]h }(hj&hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubh)}(hhh]j^)}(h publicationh]h publication}(hj&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]jI%c.tipc_named_withdrawasbuh1hhj%ubjG)}(h h]h }(hj4&hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%ubj)}(hjh]h*}(hjB&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj^)}(hjh]hp}(hjO&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj%ubeh}(h]h ]h"]h$]h&]hhuh1jhj %hhhj%hKrubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj%hhhj%hKrubah}(h]j%ah ](jjeh"]h$]h&]jj)jhuh1j(hj%hKrhj%hhubj)}(hhh]h)}(h;tell other nodes about a withdrawn publication by this nodeh]h;tell other nodes about a withdrawn publication by this node}(hjx&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKrhju&hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj%hKrubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&jj&jjjuh1j#hhhjhNhNubj)}(h}**Parameters** ``struct net *net`` the associated network namespace ``struct publication *p`` the withdrawn publicationh](h)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKvhj&ubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj&h]hstruct net *net}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKshj&ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hKshj&ubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhj&hKshj&ubj)}(h3``struct publication *p`` the withdrawn publicationh](j )}(h``struct publication *p``h]j)}(hj&h]hstruct publication *p}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKuhj&ubj')}(hhh]h)}(hthe withdrawn publicationh]hthe withdrawn publication}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKthj'ubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhj'hKuhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jnamed_distribute (C function)c.named_distributehNtauh1jhjhhhNhNubj$)}(hhh](j))}(hovoid named_distribute (struct net *net, struct sk_buff_head *list, u32 dnode, struct list_head *pls, u16 seqno)h]j/)}(hnvoid named_distribute(struct net *net, struct sk_buff_head *list, u32 dnode, struct list_head *pls, u16 seqno)h](jG)}(hvoidh]hvoid}(hjL'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjH'hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKubjG)}(h h]h }(hj['hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjH'hhhjZ'hKubjX)}(hnamed_distributeh]j^)}(hnamed_distributeh]hnamed_distribute}(hjm'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hji'ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjH'hhhjZ'hKubj)}(hY(struct net *net, struct sk_buff_head *list, u32 dnode, struct list_head *pls, u16 seqno)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj'hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj'ubjG)}(h h]h }(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubh)}(hhh]j^)}(hneth]hnet}(hj'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]j)}jjo'sbc.named_distributeasbuh1hhj'ubjG)}(h h]h }(hj'hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj^)}(hneth]hnet}(hj'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj'ubj%)}(hstruct sk_buff_head *listh](j5)}(hj8h]hstruct}(hj'hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj'ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j'c.named_distributeasbuh1hhj'ubjG)}(h h]h }(hj7(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj'ubj)}(hjh]h*}(hjE(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj^)}(hlisth]hlist}(hjR(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj'ubj%)}(h u32 dnodeh](h)}(hhh]j^)}(hu32h]hu32}(hjn(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjk(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjp(modnameN classnameNjj)}j]j'c.named_distributeasbuh1hhjg(ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjg(ubj^)}(hdnodeh]hdnode}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjg(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj'ubj%)}(hstruct list_head *plsh](j5)}(hj8h]hstruct}(hj(hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj(ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj(ubh)}(hhh]j^)}(h list_headh]h list_head}(hj(hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j'c.named_distributeasbuh1hhj(ubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj^)}(hplsh]hpls}(hj )hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj'ubj%)}(h u16 seqnoh](h)}(hhh]j^)}(hu16h]hu16}(hj&)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj()modnameN classnameNjj)}j]j'c.named_distributeasbuh1hhj)ubjG)}(h h]h }(hjD)hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj)ubj^)}(hseqnoh]hseqno}(hjR)hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj'ubeh}(h]h ]h"]h$]h&]hhuh1jhjH'hhhjZ'hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjD'hhhjZ'hKubah}(h]j?'ah ](jjeh"]h$]h&]jj)jhuh1j(hjZ'hKhjA'hhubj)}(hhh]h)}(h7prepare name info for bulk distribution to another nodeh]h7prepare name info for bulk distribution to another node}(hj|)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKhjy)hhubah}(h]h ]h"]h$]h&]uh1jhjA'hhhjZ'hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1j#hhhjhNhNubj)}(hXW**Parameters** ``struct net *net`` the associated network namespace ``struct sk_buff_head *list`` list of messages (buffers) to be returned from this function ``u32 dnode`` node to be updated ``struct list_head *pls`` linked list of publication items to be packed into buffer chain ``u16 seqno`` sequence number for this messageh](h)}(h**Parameters**h]j)}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKhj)ubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj)h]hstruct net *net}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKhj)ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hKhj)ubah}(h]h ]h"]h$]h&]uh1j&hj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hKhj)ubj)}(h[``struct sk_buff_head *list`` list of messages (buffers) to be returned from this function h](j )}(h``struct sk_buff_head *list``h]j)}(hj)h]hstruct sk_buff_head *list}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chKhj)ubj')}(hhh]h)}(h0hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj:0ubjG)}(h h]h }(hjK0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj:0ubh)}(hhh]j^)}(hneth]hnet}(hj\0hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjY0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^0modnameN classnameNjj)}j]j)}jj$0sbc.tipc_update_nametblasbuh1hhj:0ubjG)}(h h]h }(hj|0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj:0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:0ubj^)}(hneth]hnet}(hj0hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj:0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj60ubj%)}(hstruct distr_item *ih](j5)}(hj8h]hstruct}(hj0hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj0ubjG)}(h h]h }(hj0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj0ubh)}(hhh]j^)}(h distr_itemh]h distr_item}(hj0hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]jx0c.tipc_update_nametblasbuh1hhj0ubjG)}(h h]h }(hj0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj^)}(hj&h]hi}(hj1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj60ubj%)}(hu32 nodeh](h)}(hhh]j^)}(hu32h]hu32}(hj"1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$1modnameN classnameNjj)}j]jx0c.tipc_update_nametblasbuh1hhj1ubjG)}(h h]h }(hj@1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1ubj^)}(hnodeh]hnode}(hjN1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj60ubj%)}(h u32 dtypeh](h)}(hhh]j^)}(hu32h]hu32}(hjj1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjg1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjl1modnameN classnameNjj)}j]jx0c.tipc_update_nametblasbuh1hhjc1ubjG)}(h h]h }(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjc1ubj^)}(hdtypeh]hdtype}(hj1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjc1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj60ubeh}(h]h ]h"]h$]h&]hhuh1jhj/hhhj0hM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj/hhhj0hM ubah}(h]j/ah ](jjeh"]h$]h&]jj)jhuh1j(hj0hM hj/hhubj)}(hhh]h)}(h8try to process a nametable update and notify subscribersh]h8try to process a nametable update and notify subscribers}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chM hj1hhubah}(h]h ]h"]h$]h&]uh1jhj/hhhj0hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1jjjuh1j#hhhjhNhNubj)}(hXA**Parameters** ``struct net *net`` the associated network namespace ``struct distr_item *i`` location of item in the message ``u32 node`` node address ``u32 dtype`` name distributor message type **Description** tipc_nametbl_lock must be held. **Return** the publication item if successful, otherwise NULL.h](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj1ubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj2h]hstruct net *net}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj1ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1j&hj1ubeh}(h]h ]h"]h$]h&]uh1jhj2hMhj1ubj)}(h9``struct distr_item *i`` location of item in the message h](j )}(h``struct distr_item *i``h]j)}(hj:2h]hstruct distr_item *i}(hj<2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj82ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj42ubj')}(hhh]h)}(hlocation of item in the messageh]hlocation of item in the message}(hjS2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO2hMhjP2ubah}(h]h ]h"]h$]h&]uh1j&hj42ubeh}(h]h ]h"]h$]h&]uh1jhjO2hMhj1ubj)}(h``u32 node`` node address h](j )}(h ``u32 node``h]j)}(hjs2h]hu32 node}(hju2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq2ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhjm2ubj')}(hhh]h)}(h node addressh]h node address}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1j&hjm2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMhj1ubj)}(h,``u32 dtype`` name distributor message type h](j )}(h ``u32 dtype``h]j)}(hj2h]h u32 dtype}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj2ubj')}(hhh]h)}(hname distributor message typeh]hname distributor message type}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1j&hj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hMhj1ubeh}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h**Description**h]j)}(hj2h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj1ubh)}(htipc_nametbl_lock must be held.h]htipc_nametbl_lock must be held.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj1ubh)}(h **Return**h]j)}(hj3h]hReturn}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 3ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj1ubh)}(h3the publication item if successful, otherwise NULL.h]h3the publication item if successful, otherwise NULL.}(hj$3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_named_rcv (C function)c.tipc_named_rcvhNtauh1jhjhhhNhNubj$)}(hhh](j))}(h\void tipc_named_rcv (struct net *net, struct sk_buff_head *namedq, u16 *rcv_nxt, bool *open)h]j/)}(h[void tipc_named_rcv(struct net *net, struct sk_buff_head *namedq, u16 *rcv_nxt, bool *open)h](jG)}(hvoidh]hvoid}(hjS3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjO3hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMfubjG)}(h h]h }(hjb3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjO3hhhja3hMfubjX)}(htipc_named_rcvh]j^)}(htipc_named_rcvh]htipc_named_rcv}(hjt3hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjp3ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjO3hhhja3hMfubj)}(hH(struct net *net, struct sk_buff_head *namedq, u16 *rcv_nxt, bool *open)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj3hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj3ubjG)}(h h]h }(hj3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3ubh)}(hhh]j^)}(hneth]hnet}(hj3hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j)}jjv3sbc.tipc_named_rcvasbuh1hhj3ubjG)}(h h]h }(hj3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj^)}(hneth]hnet}(hj3hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3ubj%)}(hstruct sk_buff_head *namedqh](j5)}(hj8h]hstruct}(hj4hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj3ubjG)}(h h]h }(hj4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3ubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj 4hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"4modnameN classnameNjj)}j]j3c.tipc_named_rcvasbuh1hhj3ubjG)}(h h]h }(hj>4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3ubj)}(hjh]h*}(hjL4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj^)}(hnamedqh]hnamedq}(hjY4hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3ubj%)}(h u16 *rcv_nxth](h)}(hhh]j^)}(hu16h]hu16}(hju4hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjr4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjw4modnameN classnameNjj)}j]j3c.tipc_named_rcvasbuh1hhjn4ubjG)}(h h]h }(hj4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjn4ubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn4ubj^)}(hrcv_nxth]hrcv_nxt}(hj4hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjn4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3ubj%)}(h bool *openh](jG)}(hjgh]hbool}(hj4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj4ubjG)}(h h]h }(hj4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj4ubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj^)}(hopenh]hopen}(hj4hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj3ubeh}(h]h ]h"]h$]h&]hhuh1jhjO3hhhja3hMfubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjK3hhhja3hMfubah}(h]jF3ah ](jjeh"]h$]h&]jj)jhuh1j(hja3hMfhjH3hhubj)}(hhh]h)}(h7process name table update messages sent by another nodeh]h7process name table update messages sent by another node}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMfhj5hhubah}(h]h ]h"]h$]h&]uh1jhjH3hhhja3hMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjj15jj15jjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct net *net`` the associated network namespace ``struct sk_buff_head *namedq`` queue to receive from ``u16 *rcv_nxt`` store last received seqno here ``bool *open`` last bulk msg was received (FIXME)h](h)}(h**Parameters**h]j)}(hj;5h]h Parameters}(hj=5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj95ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMjhj55ubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hjZ5h]hstruct net *net}(hj\5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX5ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMghjT5ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hjs5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo5hMghjp5ubah}(h]h ]h"]h$]h&]uh1j&hjT5ubeh}(h]h ]h"]h$]h&]uh1jhjo5hMghjQ5ubj)}(h6``struct sk_buff_head *namedq`` queue to receive from h](j )}(h``struct sk_buff_head *namedq``h]j)}(hj5h]hstruct sk_buff_head *namedq}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhhj5ubj')}(hhh]h)}(hqueue to receive fromh]hqueue to receive from}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMhhj5ubah}(h]h ]h"]h$]h&]uh1j&hj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hMhhjQ5ubj)}(h0``u16 *rcv_nxt`` store last received seqno here h](j )}(h``u16 *rcv_nxt``h]j)}(hj5h]h u16 *rcv_nxt}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMihj5ubj')}(hhh]h)}(hstore last received seqno hereh]hstore last received seqno here}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMihj5ubah}(h]h ]h"]h$]h&]uh1j&hj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hMihjQ5ubj)}(h1``bool *open`` last bulk msg was received (FIXME)h](j )}(h``bool *open``h]j)}(hj6h]h bool *open}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMkhj5ubj')}(hhh]h)}(h"last bulk msg was received (FIXME)h]h"last bulk msg was received (FIXME)}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMjhj6ubah}(h]h ]h"]h$]h&]uh1j&hj5ubeh}(h]h ]h"]h$]h&]uh1jhj6hMkhjQ5ubeh}(h]h ]h"]h$]h&]uh1jhj55ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_named_reinit (C function)c.tipc_named_reinithNtauh1jhjhhhNhNubj$)}(hhh](j))}(h(void tipc_named_reinit (struct net *net)h]j/)}(h'void tipc_named_reinit(struct net *net)h](jG)}(hvoidh]hvoid}(hj_6hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj[6hhhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMubjG)}(h h]h }(hjn6hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj[6hhhjm6hMubjX)}(htipc_named_reinith]j^)}(htipc_named_reinith]htipc_named_reinit}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj|6ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj[6hhhjm6hMubj)}(h(struct net *net)h]j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj6hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj6ubjG)}(h h]h }(hj6hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj6ubh)}(hhh]j^)}(hneth]hnet}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j)}jj6sbc.tipc_named_reinitasbuh1hhj6ubjG)}(h h]h }(hj6hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj6ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj^)}(hneth]hnet}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj6ubah}(h]h ]h"]h$]h&]hhuh1jhj[6hhhjm6hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjW6hhhjm6hMubah}(h]jR6ah ](jjeh"]h$]h&]jj)jhuh1j(hjm6hMhjT6hhubj)}(hhh]h)}(h re-initialize local publicationsh]h re-initialize local publications}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj7hhubah}(h]h ]h"]h$]h&]uh1jhjT6hhhjm6hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj77jj77jjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct net *net`` the associated network namespace **Description** This routine is called whenever TIPC networking is enabled. All name table entries published by this node are updated to reflect the node's new network address.h](h)}(h**Parameters**h]j)}(hjA7h]h Parameters}(hjC7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?7ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj;7ubj)}(hhh]j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj`7h]hstruct net *net}(hjb7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^7ubah}(h]h ]h"]h$]h&]uh1j hV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhjZ7ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hjy7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju7hMhjv7ubah}(h]h ]h"]h$]h&]uh1j&hjZ7ubeh}(h]h ]h"]h$]h&]uh1jhju7hMhjW7ubah}(h]h ]h"]h$]h&]uh1jhj;7ubh)}(h**Description**h]j)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj;7ubh)}(hThis routine is called whenever TIPC networking is enabled. All name table entries published by this node are updated to reflect the node's new network address.h]hThis routine is called whenever TIPC networking is enabled. All name table entries published by this node are updated to reflect the node’s new network address.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/networking/tipc:184: ./net/tipc/name_distr.chMhj;7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]tipc-name-interfacesah ]h"]tipc name interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Node Management Interfacesh]hTIPC Node Management Interfaces}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_node (C struct) c.tipc_nodehNtauh1jhj7hhhNhNubj$)}(hhh](j))}(h tipc_nodeh]j/)}(hstruct tipc_nodeh](j5)}(hj8h]hstruct}(hj7hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj7hhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKubjG)}(h h]h }(hj8hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7hhhj8hKubjX)}(h tipc_nodeh]j^)}(hj7h]h tipc_node}(hj8hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj7hhhj8hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj7hhhj8hKubah}(h]j7ah ](jjeh"]h$]h&]jj)jhuh1j(hj8hKhj7hhubj)}(hhh]h)}(hTIPC node structureh]hTIPC node structure}(hj;8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKShj88hhubah}(h]h ]h"]h$]h&]uh1jhj7hhhj8hKubeh}(h]h ](jstructeh"]h$]h&]jjjjS8jjS8jjjuh1j#hhhj7hNhNubj)}(hX **Definition**:: 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; }; **Members** ``addr`` network address of node ``kref`` reference counter to node object ``lock`` rwlock governing access to structure ``net`` the applicable net namespace ``hash`` links to adjacent nodes in unsorted hash chain ``active_links`` bearer ids of active links, used as index into links[] array ``links`` array containing references to all links to node ``bc_entry`` broadcast link entry ``action_flags`` bit mask of different types of node actions ``list`` links to adjacent nodes in sorted list of cluster's nodes ``state`` connectivity state vs peer node ``preliminary`` a preliminary node or not ``failover_sent`` failover sent or not ``sync_point`` sequence number where synch/failover is finished ``link_cnt`` number of links to node ``working_links`` number of working links to node (both active and standby) ``capabilities`` bitmap, indicating peer node's functional capabilities ``signature`` node instance identifier ``link_id`` local and remote bearer ids of changing link, if any ``peer_id`` 128-bit ID of peer ``peer_id_string`` ID string of peer ``publ_list`` list of publications ``conn_sks`` list of connections (FIXME) ``keepalive_intv`` keepalive interval in milliseconds ``timer`` node's keepalive timer ``rcu`` rcu struct for tipc_node ``delete_at`` indicates the time for deleting a down node ``peer_net`` peer's net namespace ``peer_hash_mix`` hash for this peer (FIXME) ``crypto_rx`` RX crypto handlerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj_8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[8ubh:}(hj[8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKWhjW8ubj)}(hX: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; };h]hX: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; };}hjx8sbah}(h]h ]h"]h$]h&]hhuh1jhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKYhjW8ubh)}(h **Members**h]j)}(hj8h]hMembers}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chK|hjW8ubj)}(hhh](j)}(h!``addr`` network address of node h](j )}(h``addr``h]j)}(hj8h]haddr}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKUhj8ubj')}(hhh]h)}(hnetwork address of nodeh]hnetwork address of node}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKUhj8ubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKUhj8ubj)}(h*``kref`` reference counter to node object h](j )}(h``kref``h]j)}(hj8h]hkref}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKVhj8ubj')}(hhh]h)}(h reference counter to node objecth]h reference counter to node object}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKVhj8ubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKVhj8ubj)}(h.``lock`` rwlock governing access to structure h](j )}(h``lock``h]j)}(hj9h]hlock}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKWhj9ubj')}(hhh]h)}(h$rwlock governing access to structureh]h$rwlock governing access to structure}(hj39hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/9hKWhj09ubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhj/9hKWhj8ubj)}(h%``net`` the applicable net namespace h](j )}(h``net``h]j)}(hjS9h]hnet}(hjU9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ9ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKXhjM9ubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hjl9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh9hKXhji9ubah}(h]h ]h"]h$]h&]uh1j&hjM9ubeh}(h]h ]h"]h$]h&]uh1jhjh9hKXhj8ubj)}(h8``hash`` links to adjacent nodes in unsorted hash chain h](j )}(h``hash``h]j)}(hj9h]hhash}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKYhj9ubj')}(hhh]h)}(h.links to adjacent nodes in unsorted hash chainh]h.links to adjacent nodes in unsorted hash chain}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKYhj9ubah}(h]h ]h"]h$]h&]uh1j&hj9ubeh}(h]h ]h"]h$]h&]uh1jhj9hKYhj8ubj)}(hN``active_links`` bearer ids of active links, used as index into links[] array h](j )}(h``active_links``h]j)}(hj9h]h active_links}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKZhj9ubj')}(hhh]h)}(hh]htimer}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKlhj=ubj')}(hhh]h)}(hnode's keepalive timerh]hnode’s keepalive timer}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKlhj>ubah}(h]h ]h"]h$]h&]uh1j&hj=ubeh}(h]h ]h"]h$]h&]uh1jhj>hKlhj8ubj)}(h!``rcu`` rcu struct for tipc_node h](j )}(h``rcu``h]j)}(hj9>h]hrcu}(hj;>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7>ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKnhj3>ubj')}(hhh]h)}(hrcu struct for tipc_nodeh]hrcu struct for tipc_node}(hjR>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN>hKnhjO>ubah}(h]h ]h"]h$]h&]uh1j&hj3>ubeh}(h]h ]h"]h$]h&]uh1jhjN>hKnhj8ubj)}(h:``delete_at`` indicates the time for deleting a down node h](j )}(h ``delete_at``h]j)}(hjr>h]h delete_at}(hjt>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp>ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKohjl>ubj')}(hhh]h)}(h+indicates the time for deleting a down nodeh]h+indicates the time for deleting a down node}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKohj>ubah}(h]h ]h"]h$]h&]uh1j&hjl>ubeh}(h]h ]h"]h$]h&]uh1jhj>hKohj8ubj)}(h"``peer_net`` peer's net namespace h](j )}(h ``peer_net``h]j)}(hj>h]hpeer_net}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKphj>ubj')}(hhh]h)}(hpeer's net namespaceh]hpeer’s net namespace}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKphj>ubah}(h]h ]h"]h$]h&]uh1j&hj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hKphj8ubj)}(h-``peer_hash_mix`` hash for this peer (FIXME) h](j )}(h``peer_hash_mix``h]j)}(hj>h]h peer_hash_mix}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKqhj>ubj')}(hhh]h)}(hhash for this peer (FIXME)h]hhash for this peer (FIXME)}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKqhj>ubah}(h]h ]h"]h$]h&]uh1j&hj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hKqhj8ubj)}(h``crypto_rx`` RX crypto handlerh](j )}(h ``crypto_rx``h]j)}(hj?h]h crypto_rx}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKqhj?ubj')}(hhh]h)}(hRX crypto handlerh]hRX crypto handler}(hj6?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chKrhj3?ubah}(h]h ]h"]h$]h&]uh1j&hj?ubeh}(h]h ]h"]h$]h&]uh1jhj2?hKqhj8ubeh}(h]h ]h"]h$]h&]uh1jhjW8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j tipc_node_crypto_rx (C function)c.tipc_node_crypto_rxhNtauh1jhj7hhhNhNubj$)}(hhh](j))}(h@struct tipc_crypto * tipc_node_crypto_rx (struct tipc_node *__n)h]j/)}(h>struct tipc_crypto *tipc_node_crypto_rx(struct tipc_node *__n)h](j5)}(hj8h]hstruct}(hjw?hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjs?hhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjs?hhhj?hMubh)}(hhh]j^)}(h tipc_cryptoh]h tipc_crypto}(hj?hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jtipc_node_crypto_rxsbc.tipc_node_crypto_rxasbuh1hhjs?hhhj?hMubjG)}(h h]h }(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjs?hhhj?hMubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs?hhhj?hMubjX)}(htipc_node_crypto_rxh]j^)}(hj?h]htipc_node_crypto_rx}(hj?hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjs?hhhj?hMubj)}(h(struct tipc_node *__n)h]j%)}(hstruct tipc_node *__nh](j5)}(hj8h]hstruct}(hj?hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj?ubjG)}(h h]h }(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj?ubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hj@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj @ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j?c.tipc_node_crypto_rxasbuh1hhj?ubjG)}(h h]h }(hj-@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj?ubj)}(hjh]h*}(hj;@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj^)}(h__nh]h__n}(hjH@hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj?ubah}(h]h ]h"]h$]h&]hhuh1jhjs?hhhj?hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjo?hhhj?hMubah}(h]jj?ah ](jjeh"]h$]h&]jj)jhuh1j(hj?hMhjl?hhubj)}(hhh]h)}(h#Retrieve crypto RX handle from nodeh]h#Retrieve crypto RX handle from node}(hjr@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjo@hhubah}(h]h ]h"]h$]h&]uh1jhjl?hhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1j#hhhj7hNhNubj)}(hl**Parameters** ``struct tipc_node *__n`` target tipc_node **Note** node ref counter must be held first!h](h)}(h**Parameters**h]j)}(hj@h]h Parameters}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj@ubj)}(hhh]j)}(h+``struct tipc_node *__n`` target tipc_node h](j )}(h``struct tipc_node *__n``h]j)}(hj@h]hstruct tipc_node *__n}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj@ubj')}(hhh]h)}(htarget tipc_nodeh]htarget tipc_node}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMhj@ubah}(h]h ]h"]h$]h&]uh1j&hj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hMhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubh)}(h**Note**h]j)}(hj@h]hNote}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj@ubh)}(h$node ref counter must be held first!h]h$node ref counter must be held first!}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j __tipc_node_link_up (C function)c.__tipc_node_link_uphNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hYvoid __tipc_node_link_up (struct tipc_node *n, int bearer_id, struct sk_buff_head *xmitq)h]j/)}(hXvoid __tipc_node_link_up(struct tipc_node *n, int bearer_id, struct sk_buff_head *xmitq)h](jG)}(hvoidh]hvoid}(hj3AhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj/AhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMQubjG)}(h h]h }(hjBAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj/AhhhjAAhMQubjX)}(h__tipc_node_link_uph]j^)}(h__tipc_node_link_uph]h__tipc_node_link_up}(hjTAhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPAubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj/AhhhjAAhMQubj)}(h@(struct tipc_node *n, int bearer_id, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_node *nh](j5)}(hj8h]hstruct}(hjpAhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjlAubjG)}(h h]h }(hj}AhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjlAubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hjAhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j)}jjVAsbc.__tipc_node_link_upasbuh1hhjlAubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjlAubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlAubj^)}(hjih]hn}(hjAhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjlAubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjhAubj%)}(h int bearer_idh](jG)}(hinth]hint}(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjAubjG)}(h h]h }(hjAhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjAubj^)}(h bearer_idh]h bearer_id}(hjAhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjhAubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjBhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjBubjG)}(h h]h }(hj#BhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjBubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj4BhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1Bubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6BmodnameN classnameNjj)}j]jAc.__tipc_node_link_upasbuh1hhjBubjG)}(h h]h }(hjRBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjBubj)}(hjh]h*}(hj`BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj^)}(hxmitqh]hxmitq}(hjmBhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjhAubeh}(h]h ]h"]h$]h&]hhuh1jhj/AhhhjAAhMQubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj+AhhhjAAhMQubah}(h]j&Aah ](jjeh"]h$]h&]jj)jhuh1j(hjAAhMQhj(Ahhubj)}(hhh]h)}(hhandle addition of linkh]hhandle addition of link}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMQhjBhhubah}(h]h ]h"]h$]h&]uh1jhj(AhhhjAAhMQubeh}(h]h ](jfunctioneh"]h$]h&]jjjjBjjBjjjuh1j#hhhj7hNhNubj)}(hX**Parameters** ``struct tipc_node *n`` target tipc_node ``int bearer_id`` id of the bearer ``struct sk_buff_head *xmitq`` queue for messages to be xmited on Node lock must be held by caller Link becomes active (alone or shared) or standby, depending on its priority.h](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMUhjBubj)}(hhh](j)}(h)``struct tipc_node *n`` target tipc_node h](j )}(h``struct tipc_node *n``h]j)}(hjBh]hstruct tipc_node *n}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMRhjBubj')}(hhh]h)}(htarget tipc_nodeh]htarget tipc_node}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMRhjBubah}(h]h ]h"]h$]h&]uh1j&hjBubeh}(h]h ]h"]h$]h&]uh1jhjBhMRhjBubj)}(h#``int bearer_id`` id of the bearer h](j )}(h``int bearer_id``h]j)}(hjCh]h int bearer_id}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMShj Cubj')}(hhh]h)}(hid of the bearerh]hid of the bearer}(hj*ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ChMShj'Cubah}(h]h ]h"]h$]h&]uh1j&hj Cubeh}(h]h ]h"]h$]h&]uh1jhj&ChMShjBubj)}(h``struct sk_buff_head *xmitq`` queue for messages to be xmited on Node lock must be held by caller Link becomes active (alone or shared) or standby, depending on its priority.h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjJCh]hstruct sk_buff_head *xmitq}(hjLChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHCubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMUhjDCubj')}(hhh]h)}(hqueue for messages to be xmited on Node lock must be held by caller Link becomes active (alone or shared) or standby, depending on its priority.h]hqueue for messages to be xmited on Node lock must be held by caller Link becomes active (alone or shared) or standby, depending on its priority.}(hjcChhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMThj`Cubah}(h]h ]h"]h$]h&]uh1j&hjDCubeh}(h]h ]h"]h$]h&]uh1jhj_ChMUhjBubeh}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_node_link_up (C function)c.tipc_node_link_uphNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hWvoid tipc_node_link_up (struct tipc_node *n, int bearer_id, struct sk_buff_head *xmitq)h]j/)}(hVvoid tipc_node_link_up(struct tipc_node *n, int bearer_id, struct sk_buff_head *xmitq)h](jG)}(hvoidh]hvoid}(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjChhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjChhhjChMubjX)}(htipc_node_link_uph]j^)}(htipc_node_link_uph]htipc_node_link_up}(hjChhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjCubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjChhhjChMubj)}(h@(struct tipc_node *n, int bearer_id, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_node *nh](j5)}(hj8h]hstruct}(hjChhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjCubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjCubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hjChhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjCubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j)}jjCsbc.tipc_node_link_upasbuh1hhjCubjG)}(h h]h }(hjDhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjCubj)}(hjh]h*}(hj-DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj^)}(hjih]hn}(hj:DhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjCubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjCubj%)}(h int bearer_idh](jG)}(hinth]hint}(hjRDhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNDubjG)}(h h]h }(hj`DhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNDubj^)}(h bearer_idh]h bearer_id}(hjnDhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjNDubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjCubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjDhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjDubjG)}(h h]h }(hjDhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjDubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjDhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jDc.tipc_node_link_upasbuh1hhjDubjG)}(h h]h }(hjDhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjDubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj^)}(hxmitqh]hxmitq}(hjDhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjCubeh}(h]h ]h"]h$]h&]hhuh1jhjChhhjChMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjChhhjChMubah}(h]jCah ](jjeh"]h$]h&]jj)jhuh1j(hjChMhjChhubj)}(hhh]h)}(hhandle addition of linkh]hhandle addition of link}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjEhhubah}(h]h ]h"]h$]h&]uh1jhjChhhjChMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj Ejj Ejjjuh1j#hhhj7hNhNubj)}(hX**Parameters** ``struct tipc_node *n`` target tipc_node ``int bearer_id`` id of the bearer ``struct sk_buff_head *xmitq`` queue for messages to be xmited on **Description** Link becomes active (alone or shared) or standby, depending on its priority.h](h)}(h**Parameters**h]j)}(hj*Eh]h Parameters}(hj,EhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(Eubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj$Eubj)}(hhh](j)}(h)``struct tipc_node *n`` target tipc_node h](j )}(h``struct tipc_node *n``h]j)}(hjIEh]hstruct tipc_node *n}(hjKEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGEubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjCEubj')}(hhh]h)}(htarget tipc_nodeh]htarget tipc_node}(hjbEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^EhMhj_Eubah}(h]h ]h"]h$]h&]uh1j&hjCEubeh}(h]h ]h"]h$]h&]uh1jhj^EhMhj@Eubj)}(h#``int bearer_id`` id of the bearer h](j )}(h``int bearer_id``h]j)}(hjEh]h int bearer_id}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj|Eubj')}(hhh]h)}(hid of the bearerh]hid of the bearer}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMhjEubah}(h]h ]h"]h$]h&]uh1j&hj|Eubeh}(h]h ]h"]h$]h&]uh1jhjEhMhj@Eubj)}(hB``struct sk_buff_head *xmitq`` queue for messages to be xmited on h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjEh]hstruct sk_buff_head *xmitq}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjEubj')}(hhh]h)}(h"queue for messages to be xmited onh]h"queue for messages to be xmited on}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMhjEubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhjEhMhj@Eubeh}(h]h ]h"]h$]h&]uh1jhj$Eubh)}(h**Description**h]j)}(hjEh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj$Eubh)}(hLLink becomes active (alone or shared) or standby, depending on its priority.h]hLLink becomes active (alone or shared) or standby, depending on its priority.}(hj FhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj$Eubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j$tipc_node_link_failover (C function)c.tipc_node_link_failoverhNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hzvoid tipc_node_link_failover (struct tipc_node *n, struct tipc_link *l, struct tipc_link *tnl, struct sk_buff_head *xmitq)h]j/)}(hyvoid tipc_node_link_failover(struct tipc_node *n, struct tipc_link *l, struct tipc_link *tnl, struct sk_buff_head *xmitq)h](jG)}(hvoidh]hvoid}(hj;FhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7FhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjJFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7FhhhjIFhMubjX)}(htipc_node_link_failoverh]j^)}(htipc_node_link_failoverh]htipc_node_link_failover}(hj\FhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjXFubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj7FhhhjIFhMubj)}(h](struct tipc_node *n, struct tipc_link *l, struct tipc_link *tnl, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_node *nh](j5)}(hj8h]hstruct}(hjxFhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjtFubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjtFubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hjFhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]j)}jj^Fsbc.tipc_node_link_failoverasbuh1hhjtFubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjtFubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtFubj^)}(hjih]hn}(hjFhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjtFubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpFubj%)}(hstruct tipc_link *lh](j5)}(hj8h]hstruct}(hjFhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjFubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjFubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj GmodnameN classnameNjj)}j]jFc.tipc_node_link_failoverasbuh1hhjFubjG)}(h h]h }(hj%GhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjFubj)}(hjh]h*}(hj3GhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj^)}(hj`h]hl}(hj@GhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjFubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpFubj%)}(hstruct tipc_link *tnlh](j5)}(hj8h]hstruct}(hjXGhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjTGubjG)}(h h]h }(hjeGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTGubh)}(hhh]j^)}(h tipc_linkh]h tipc_link}(hjvGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjsGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxGmodnameN classnameNjj)}j]jFc.tipc_node_link_failoverasbuh1hhjTGubjG)}(h h]h }(hjGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTGubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTGubj^)}(htnlh]htnl}(hjGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTGubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpFubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjGhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjGubjG)}(h h]h }(hjGhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjGhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]jFc.tipc_node_link_failoverasbuh1hhjGubjG)}(h h]h }(hjHhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj^)}(hxmitqh]hxmitq}(hjHhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjpFubeh}(h]h ]h"]h$]h&]hhuh1jhj7FhhhjIFhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj3FhhhjIFhMubah}(h]j.Fah ](jjeh"]h$]h&]jj)jhuh1j(hjIFhMhj0Fhhubj)}(hhh]h)}(h&start failover in case "half-failover"h]h*start failover in case “half-failover”}(hjIHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjFHhhubah}(h]h ]h"]h$]h&]uh1jhj0FhhhjIFhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjaHjjaHjjjuh1j#hhhj7hNhNubj)}(hX**Parameters** ``struct tipc_node *n`` tipc node structure ``struct tipc_link *l`` link peer endpoint failingover (- can be NULL) ``struct tipc_link *tnl`` tunnel link ``struct sk_buff_head *xmitq`` queue for messages to be xmited on tnl link later **Description** This function is only called in a very special situation where link failover can be already started on peer node but not on this node. This can happen when e.g.:: 1. Both links <1A-2A>, <1B-2B> down 2. Link endpoint 2A up, but 1A still down (e.g. due to network disturbance, wrong session, etc.) 3. Link <1B-2B> up 4. Link endpoint 2A down (e.g. due to link tolerance timeout) 5. Node 2 starts failover onto link <1B-2B> ==> Node 1 does never start link/node failover!h](h)}(h**Parameters**h]j)}(hjkHh]h Parameters}(hjmHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiHubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjeHubj)}(hhh](j)}(h,``struct tipc_node *n`` tipc node structure h](j )}(h``struct tipc_node *n``h]j)}(hjHh]hstruct tipc_node *n}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjHubj')}(hhh]h)}(htipc node structureh]htipc node structure}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhMhjHubah}(h]h ]h"]h$]h&]uh1j&hjHubeh}(h]h ]h"]h$]h&]uh1jhjHhMhjHubj)}(hG``struct tipc_link *l`` link peer endpoint failingover (- can be NULL) h](j )}(h``struct tipc_link *l``h]j)}(hjHh]hstruct tipc_link *l}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjHubj')}(hhh]h)}(h.link peer endpoint failingover (- can be NULL)h]h.link peer endpoint failingover (- can be NULL)}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhMhjHubah}(h]h ]h"]h$]h&]uh1j&hjHubeh}(h]h ]h"]h$]h&]uh1jhjHhMhjHubj)}(h&``struct tipc_link *tnl`` tunnel link h](j )}(h``struct tipc_link *tnl``h]j)}(hjHh]hstruct tipc_link *tnl}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjHubj')}(hhh]h)}(h tunnel linkh]h tunnel link}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjIubah}(h]h ]h"]h$]h&]uh1j&hjHubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjHubj)}(hQ``struct sk_buff_head *xmitq`` queue for messages to be xmited on tnl link later h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hj5Ih]hstruct sk_buff_head *xmitq}(hj7IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3Iubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj/Iubj')}(hhh]h)}(h1queue for messages to be xmited on tnl link laterh]h1queue for messages to be xmited on tnl link later}(hjNIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJIhMhjKIubah}(h]h ]h"]h$]h&]uh1j&hj/Iubeh}(h]h ]h"]h$]h&]uh1jhjJIhMhjHubeh}(h]h ]h"]h$]h&]uh1jhjeHubh)}(h**Description**h]j)}(hjpIh]h Description}(hjrIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnIubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjeHubh)}(hThis function is only called in a very special situation where link failover can be already started on peer node but not on this node. This can happen when e.g.::h]hThis function is only called in a very special situation where link failover can be already started on peer node but not on this node. This can happen when e.g.:}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjeHubj)}(hX21. Both links <1A-2A>, <1B-2B> down 2. Link endpoint 2A up, but 1A still down (e.g. due to network disturbance, wrong session, etc.) 3. Link <1B-2B> up 4. Link endpoint 2A down (e.g. due to link tolerance timeout) 5. Node 2 starts failover onto link <1B-2B> ==> Node 1 does never start link/node failover!h]hX21. Both links <1A-2A>, <1B-2B> down 2. Link endpoint 2A up, but 1A still down (e.g. due to network disturbance, wrong session, etc.) 3. Link <1B-2B> up 4. Link endpoint 2A down (e.g. due to link tolerance timeout) 5. Node 2 starts failover onto link <1B-2B> ==> Node 1 does never start link/node failover!}hjIsbah}(h]h ]h"]h$]h&]hhuh1jhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjeHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"__tipc_node_link_down (C function)c.__tipc_node_link_downhNtauh1jhj7hhhNhNubj$)}(hhh](j))}(h|void __tipc_node_link_down (struct tipc_node *n, int *bearer_id, struct sk_buff_head *xmitq, struct tipc_media_addr **maddr)h]j/)}(h{void __tipc_node_link_down(struct tipc_node *n, int *bearer_id, struct sk_buff_head *xmitq, struct tipc_media_addr **maddr)h](jG)}(hvoidh]hvoid}(hjIhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjIhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIhhhjIhMubjX)}(h__tipc_node_link_downh]j^)}(h__tipc_node_link_downh]h__tipc_node_link_down}(hjIhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjIubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjIhhhjIhMubj)}(ha(struct tipc_node *n, int *bearer_id, struct sk_buff_head *xmitq, struct tipc_media_addr **maddr)h](j%)}(hstruct tipc_node *nh](j5)}(hj8h]hstruct}(hjJhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjIubjG)}(h h]h }(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hjJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!JmodnameN classnameNjj)}j]j)}jjIsbc.__tipc_node_link_downasbuh1hhjIubjG)}(h h]h }(hj?JhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjIubj)}(hjh]h*}(hjMJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj^)}(hjih]hn}(hjZJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjIubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjIubj%)}(hint *bearer_idh](jG)}(hinth]hint}(hjrJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjnJubjG)}(h h]h }(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjnJubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnJubj^)}(h bearer_idh]h bearer_id}(hjJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjnJubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjIubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjJhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjJubjG)}(h h]h }(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjJubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j;Jc.__tipc_node_link_downasbuh1hhjJubjG)}(h h]h }(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjJubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj^)}(hxmitqh]hxmitq}(hj KhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjJubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjIubj%)}(hstruct tipc_media_addr **maddrh](j5)}(hj8h]hstruct}(hj$KhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj KubjG)}(h h]h }(hj1KhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj Kubh)}(hhh]j^)}(htipc_media_addrh]htipc_media_addr}(hjBKhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?Kubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDKmodnameN classnameNjj)}j]j;Jc.__tipc_node_link_downasbuh1hhj KubjG)}(h h]h }(hj`KhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj Kubj)}(hjh]h*}(hjnKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj Kubj)}(hjh]h*}(hj{KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj Kubj^)}(hmaddrh]hmaddr}(hjKhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj Kubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjIubeh}(h]h ]h"]h$]h&]hhuh1jhjIhhhjIhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjIhhhjIhMubah}(h]jIah ](jjeh"]h$]h&]jj)jhuh1j(hjIhMhjIhhubj)}(hhh]h)}(hhandle loss of linkh]hhandle loss of link}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjKhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjIhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKjjKjjjuh1j#hhhj7hNhNubj)}(h**Parameters** ``struct tipc_node *n`` target tipc_node ``int *bearer_id`` id of the bearer ``struct sk_buff_head *xmitq`` queue for messages to be xmited on ``struct tipc_media_addr **maddr`` output media address of the bearerh](h)}(h**Parameters**h]j)}(hjKh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjKubj)}(hhh](j)}(h)``struct tipc_node *n`` target tipc_node h](j )}(h``struct tipc_node *n``h]j)}(hjKh]hstruct tipc_node *n}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjKubj')}(hhh]h)}(htarget tipc_nodeh]htarget tipc_node}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhj Lubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjKubj)}(h$``int *bearer_id`` id of the bearer h](j )}(h``int *bearer_id``h]j)}(hj,Lh]hint *bearer_id}(hj.LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*Lubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj&Lubj')}(hhh]h)}(hid of the bearerh]hid of the bearer}(hjELhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjALhMhjBLubah}(h]h ]h"]h$]h&]uh1j&hj&Lubeh}(h]h ]h"]h$]h&]uh1jhjALhMhjKubj)}(hB``struct sk_buff_head *xmitq`` queue for messages to be xmited on h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjeLh]hstruct sk_buff_head *xmitq}(hjgLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcLubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj_Lubj')}(hhh]h)}(h"queue for messages to be xmited onh]h"queue for messages to be xmited on}(hj~LhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzLhMhj{Lubah}(h]h ]h"]h$]h&]uh1j&hj_Lubeh}(h]h ]h"]h$]h&]uh1jhjzLhMhjKubj)}(hE``struct tipc_media_addr **maddr`` output media address of the bearerh](j )}(h"``struct tipc_media_addr **maddr``h]j)}(hjLh]hstruct tipc_media_addr **maddr}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjLubj')}(hhh]h)}(h"output media address of the bearerh]h"output media address of the bearer}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjLubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjKubeh}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_node_get_linkname (C function)c.tipc_node_get_linknamehNtauh1jhj7hhhNhNubj$)}(hhh](j))}(haint tipc_node_get_linkname (struct net *net, u32 bearer_id, u32 addr, char *linkname, size_t len)h]j/)}(h`int tipc_node_get_linkname(struct net *net, u32 bearer_id, u32 addr, char *linkname, size_t len)h](jG)}(hinth]hint}(hjLhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjLhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjMhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjLhhhjMhMubjX)}(htipc_node_get_linknameh]j^)}(htipc_node_get_linknameh]htipc_node_get_linkname}(hjMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjLhhhjMhMubj)}(hF(struct net *net, u32 bearer_id, u32 addr, char *linkname, size_t len)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hj5MhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj1MubjG)}(h h]h }(hjBMhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1Mubh)}(hhh]j^)}(hneth]hnet}(hjSMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUMmodnameN classnameNjj)}j]j)}jjMsbc.tipc_node_get_linknameasbuh1hhj1MubjG)}(h h]h }(hjsMhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1Mubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Mubj^)}(hneth]hnet}(hjMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1Mubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj-Mubj%)}(h u32 bearer_idh](h)}(hhh]j^)}(hu32h]hu32}(hjMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]joMc.tipc_node_get_linknameasbuh1hhjMubjG)}(h h]h }(hjMhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjMubj^)}(h bearer_idh]h bearer_id}(hjMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj-Mubj%)}(hu32 addrh](h)}(hhh]j^)}(hu32h]hu32}(hjMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]joMc.tipc_node_get_linknameasbuh1hhjMubjG)}(h h]h }(hjNhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjMubj^)}(haddrh]haddr}(hjNhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj-Mubj%)}(hchar *linknameh](jG)}(hcharh]hchar}(hj7NhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3NubjG)}(h h]h }(hjENhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3Nubj)}(hjh]h*}(hjSNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3Nubj^)}(hlinknameh]hlinkname}(hj`NhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj3Nubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj-Mubj%)}(h size_t lenh](h)}(hhh]j^)}(hsize_th]hsize_t}(hj|NhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjyNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~NmodnameN classnameNjj)}j]joMc.tipc_node_get_linknameasbuh1hhjuNubjG)}(h h]h }(hjNhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjuNubj^)}(hlenh]hlen}(hjNhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjuNubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj-Mubeh}(h]h ]h"]h$]h&]hhuh1jhjLhhhjMhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjLhhhjMhMubah}(h]jLah ](jjeh"]h$]h&]jj)jhuh1j(hjMhMhjLhhubj)}(hhh]h)}(hget the name of a linkh]hget the name of a link}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjNhhubah}(h]h ]h"]h$]h&]uh1jhjLhhhjMhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjNjjNjjjuh1j#hhhj7hNhNubj)}(hX**Parameters** ``struct net *net`` the applicable net namespace ``u32 bearer_id`` id of the bearer ``u32 addr`` peer node address ``char *linkname`` link name output buffer ``size_t len`` size of **linkname** output buffer **Return** 0 on successh](h)}(h**Parameters**h]j)}(hjNh]h Parameters}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjNubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hjOh]hstruct net *net}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj Oubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hj,OhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(OhMhj)Oubah}(h]h ]h"]h$]h&]uh1j&hj Oubeh}(h]h ]h"]h$]h&]uh1jhj(OhMhj Oubj)}(h#``u32 bearer_id`` id of the bearer h](j )}(h``u32 bearer_id``h]j)}(hjLOh]h u32 bearer_id}(hjNOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJOubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjFOubj')}(hhh]h)}(hid of the bearerh]hid of the bearer}(hjeOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjaOhMhjbOubah}(h]h ]h"]h$]h&]uh1j&hjFOubeh}(h]h ]h"]h$]h&]uh1jhjaOhMhj Oubj)}(h``u32 addr`` peer node address h](j )}(h ``u32 addr``h]j)}(hjOh]hu32 addr}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjOubj')}(hhh]h)}(hpeer node addressh]hpeer node address}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1j&hjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhj Oubj)}(h+``char *linkname`` link name output buffer h](j )}(h``char *linkname``h]j)}(hjOh]hchar *linkname}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjOubj')}(hhh]h)}(hlink name output bufferh]hlink name output buffer}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjOubah}(h]h ]h"]h$]h&]uh1j&hjOubeh}(h]h ]h"]h$]h&]uh1jhjOhMhj Oubj)}(h2``size_t len`` size of **linkname** output buffer h](j )}(h``size_t len``h]j)}(hjOh]h size_t len}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjOubj')}(hhh]h)}(h"size of **linkname** output bufferh](hsize of }(hjPhhhNhNubj)}(h **linkname**h]hlinkname}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh output buffer}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj PhMhj Pubah}(h]h ]h"]h$]h&]uh1j&hjOubeh}(h]h ]h"]h$]h&]uh1jhj PhMhj Oubeh}(h]h ]h"]h$]h&]uh1jhjNubh)}(h **Return**h]j)}(hjDPh]hReturn}(hjFPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBPubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjNubh)}(h 0 on successh]h 0 on success}(hjZPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_node_xmit (C function)c.tipc_node_xmithNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hXint tipc_node_xmit (struct net *net, struct sk_buff_head *list, u32 dnode, int selector)h]j/)}(hWint tipc_node_xmit(struct net *net, struct sk_buff_head *list, u32 dnode, int selector)h](jG)}(hinth]hint}(hjPhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjPhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjPhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjPhhhjPhMubjX)}(htipc_node_xmith]j^)}(htipc_node_xmith]htipc_node_xmit}(hjPhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjPhhhjPhMubj)}(hE(struct net *net, struct sk_buff_head *list, u32 dnode, int selector)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjPhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjPubjG)}(h h]h }(hjPhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjPubh)}(hhh]j^)}(hneth]hnet}(hjPhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jjPsbc.tipc_node_xmitasbuh1hhjPubjG)}(h h]h }(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjPubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubj^)}(hneth]hnet}(hjQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubj%)}(hstruct sk_buff_head *listh](j5)}(hj8h]hstruct}(hj8QhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj4QubjG)}(h h]h }(hjEQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj4Qubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjVQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXQmodnameN classnameNjj)}j]jQc.tipc_node_xmitasbuh1hhj4QubjG)}(h h]h }(hjtQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj4Qubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4Qubj^)}(hlisth]hlist}(hjQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj4Qubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubj%)}(h u32 dnodeh](h)}(hhh]j^)}(hu32h]hu32}(hjQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]jQc.tipc_node_xmitasbuh1hhjQubjG)}(h h]h }(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjQubj^)}(hdnodeh]hdnode}(hjQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubj%)}(h int selectorh](jG)}(hinth]hint}(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjQubjG)}(h h]h }(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjQubj^)}(hselectorh]hselector}(hj RhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubeh}(h]h ]h"]h$]h&]hhuh1jhjPhhhjPhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjPhhhjPhMubah}(h]j|Pah ](jjeh"]h$]h&]jj)jhuh1j(hjPhMhj~Phhubj)}(hhh]h)}(h/general link level function for message sendingh]h/general link level function for message sending}(hj6RhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj3Rhhubah}(h]h ]h"]h$]h&]uh1jhj~PhhhjPhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjNRjjNRjjjuh1j#hhhj7hNhNubj)}(hXe**Parameters** ``struct net *net`` the applicable net namespace ``struct sk_buff_head *list`` chain of buffers containing message ``u32 dnode`` address of destination node ``int selector`` a number used for deterministic link selection Consumes the buffer chain. **Return** 0 if success, otherwise: -ELINKCONG,-EHOSTUNREACH,-EMSGSIZE,-ENOBUFh](h)}(h**Parameters**h]j)}(hjXRh]h Parameters}(hjZRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVRubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjRRubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hjwRh]hstruct net *net}(hjyRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuRubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjqRubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhjRubah}(h]h ]h"]h$]h&]uh1j&hjqRubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjnRubj)}(hB``struct sk_buff_head *list`` chain of buffers containing message h](j )}(h``struct sk_buff_head *list``h]j)}(hjRh]hstruct sk_buff_head *list}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjRubj')}(hhh]h)}(h#chain of buffers containing messageh]h#chain of buffers containing message}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhjRubah}(h]h ]h"]h$]h&]uh1j&hjRubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjnRubj)}(h*``u32 dnode`` address of destination node h](j )}(h ``u32 dnode``h]j)}(hjRh]h u32 dnode}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjRubj')}(hhh]h)}(haddress of destination nodeh]haddress of destination node}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhjRubah}(h]h ]h"]h$]h&]uh1j&hjRubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjnRubj)}(h[``int selector`` a number used for deterministic link selection Consumes the buffer chain. h](j )}(h``int selector``h]j)}(hj"Sh]h int selector}(hj$ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Subah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjSubj')}(hhh]h)}(hIa number used for deterministic link selection Consumes the buffer chain.h]hIa number used for deterministic link selection Consumes the buffer chain.}(hj;ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj8Subah}(h]h ]h"]h$]h&]uh1j&hjSubeh}(h]h ]h"]h$]h&]uh1jhj7ShMhjnRubeh}(h]h ]h"]h$]h&]uh1jhjRRubh)}(h **Return**h]j)}(hj^Sh]hReturn}(hj`ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\Subah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjRRubh)}(hC0 if success, otherwise: -ELINKCONG,-EHOSTUNREACH,-EMSGSIZE,-ENOBUFh]hC0 if success, otherwise: -ELINKCONG,-EHOSTUNREACH,-EMSGSIZE,-ENOBUF}(hjtShhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjRRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_node_bc_rcv (C function)c.tipc_node_bc_rcvhNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hKvoid tipc_node_bc_rcv (struct net *net, struct sk_buff *skb, int bearer_id)h]j/)}(hJvoid tipc_node_bc_rcv(struct net *net, struct sk_buff *skb, int bearer_id)h](jG)}(hvoidh]hvoid}(hjShhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjShhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMFubjG)}(h h]h }(hjShhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjShhhjShMFubjX)}(htipc_node_bc_rcvh]j^)}(htipc_node_bc_rcvh]htipc_node_bc_rcv}(hjShhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjShhhjShMFubj)}(h5(struct net *net, struct sk_buff *skb, int bearer_id)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjShhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjSubjG)}(h h]h }(hjShhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjSubh)}(hhh]j^)}(hneth]hnet}(hjShhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j)}jjSsbc.tipc_node_bc_rcvasbuh1hhjSubjG)}(h h]h }(hjThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjSubj)}(hjh]h*}(hj,ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj^)}(hneth]hnet}(hj9ThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjSubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjRThhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjNTubjG)}(h h]h }(hj_ThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNTubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjpThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjmTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrTmodnameN classnameNjj)}j]jTc.tipc_node_bc_rcvasbuh1hhjNTubjG)}(h h]h }(hjThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNTubj^)}(hskbh]hskb}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjNTubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjSubj%)}(h int bearer_idh](jG)}(hinth]hint}(hjThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTubjG)}(h h]h }(hjThhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTubj^)}(h bearer_idh]h bearer_id}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjSubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjShMFubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjShhhjShMFubah}(h]jSah ](jjeh"]h$]h&]jj)jhuh1j(hjShMFhjShhubj)}(hhh]h)}(h4process TIPC broadcast packet arriving from off-nodeh]h4process TIPC broadcast packet arriving from off-node}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMFhjUhhubah}(h]h ]h"]h$]h&]uh1jhjShhhjShMFubeh}(h]h ](jfunctioneh"]h$]h&]jjjj Ujj Ujjjuh1j#hhhj7hNhNubj)}(h**Parameters** ``struct net *net`` the applicable net namespace ``struct sk_buff *skb`` TIPC packet ``int bearer_id`` id of bearer message arrived on **Description** Invoked with no locks held.h](h)}(h**Parameters**h]j)}(hj*Uh]h Parameters}(hj,UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(Uubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMJhj$Uubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hjIUh]hstruct net *net}(hjKUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGUubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMGhjCUubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hjbUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^UhMGhj_Uubah}(h]h ]h"]h$]h&]uh1j&hjCUubeh}(h]h ]h"]h$]h&]uh1jhj^UhMGhj@Uubj)}(h$``struct sk_buff *skb`` TIPC packet h](j )}(h``struct sk_buff *skb``h]j)}(hjUh]hstruct sk_buff *skb}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMHhj|Uubj')}(hhh]h)}(h TIPC packeth]h TIPC packet}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMHhjUubah}(h]h ]h"]h$]h&]uh1j&hj|Uubeh}(h]h ]h"]h$]h&]uh1jhjUhMHhj@Uubj)}(h2``int bearer_id`` id of bearer message arrived on h](j )}(h``int bearer_id``h]j)}(hjUh]h int bearer_id}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMIhjUubj')}(hhh]h)}(hid of bearer message arrived onh]hid of bearer message arrived on}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMIhjUubah}(h]h ]h"]h$]h&]uh1j&hjUubeh}(h]h ]h"]h$]h&]uh1jhjUhMIhj@Uubeh}(h]h ]h"]h$]h&]uh1jhj$Uubh)}(h**Description**h]j)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMKhj$Uubh)}(hInvoked with no locks held.h]hInvoked with no locks held.}(hj VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMJhj$Uubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_node_check_state (C function)c.tipc_node_check_statehNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hpbool tipc_node_check_state (struct tipc_node *n, struct sk_buff *skb, int bearer_id, struct sk_buff_head *xmitq)h]j/)}(hobool tipc_node_check_state(struct tipc_node *n, struct sk_buff *skb, int bearer_id, struct sk_buff_head *xmitq)h](jG)}(hjgh]hbool}(hj;VhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7VhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjIVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj7VhhhjHVhMubjX)}(htipc_node_check_stateh]j^)}(htipc_node_check_stateh]htipc_node_check_state}(hj[VhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWVubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj7VhhhjHVhMubj)}(hU(struct tipc_node *n, struct sk_buff *skb, int bearer_id, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_node *nh](j5)}(hj8h]hstruct}(hjwVhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjsVubjG)}(h h]h }(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsVubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hjVhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]j)}jj]Vsbc.tipc_node_check_stateasbuh1hhjsVubjG)}(h h]h }(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjsVubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsVubj^)}(hjih]hn}(hjVhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjsVubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjoVubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjVhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjVubjG)}(h h]h }(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjVubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjWhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]jVc.tipc_node_check_stateasbuh1hhjVubjG)}(h h]h }(hj$WhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjVubj)}(hjh]h*}(hj2WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj^)}(hskbh]hskb}(hj?WhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjVubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjoVubj%)}(h int bearer_idh](jG)}(hinth]hint}(hjXWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTWubjG)}(h h]h }(hjfWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTWubj^)}(h bearer_idh]h bearer_id}(hjtWhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTWubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjoVubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjWhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjWubjG)}(h h]h }(hjWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjWubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjWhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]jVc.tipc_node_check_stateasbuh1hhjWubjG)}(h h]h }(hjWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjWubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj^)}(hxmitqh]hxmitq}(hjWhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjoVubeh}(h]h ]h"]h$]h&]hhuh1jhj7VhhhjHVhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj3VhhhjHVhMubah}(h]j.Vah ](jjeh"]h$]h&]jj)jhuh1j(hjHVhMhj0Vhhubj)}(hhh]h)}(h(check and if necessary update node stateh]h(check and if necessary update node state}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj Xhhubah}(h]h ]h"]h$]h&]uh1jhj0VhhhjHVhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&Xjj&Xjjjuh1j#hhhj7hNhNubj)}(hX**Parameters** ``struct tipc_node *n`` target tipc_node ``struct sk_buff *skb`` TIPC packet ``int bearer_id`` identity of bearer delivering the packet ``struct sk_buff_head *xmitq`` queue for messages to be xmited on **Return** true if state and msg are ok, otherwise falseh](h)}(h**Parameters**h]j)}(hj0Xh]h Parameters}(hj2XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.Xubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj*Xubj)}(hhh](j)}(h)``struct tipc_node *n`` target tipc_node h](j )}(h``struct tipc_node *n``h]j)}(hjOXh]hstruct tipc_node *n}(hjQXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMXubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjIXubj')}(hhh]h)}(htarget tipc_nodeh]htarget tipc_node}(hjhXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdXhMhjeXubah}(h]h ]h"]h$]h&]uh1j&hjIXubeh}(h]h ]h"]h$]h&]uh1jhjdXhMhjFXubj)}(h$``struct sk_buff *skb`` TIPC packet h](j )}(h``struct sk_buff *skb``h]j)}(hjXh]hstruct sk_buff *skb}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjXubj')}(hhh]h)}(h TIPC packeth]h TIPC packet}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1j&hjXubeh}(h]h ]h"]h$]h&]uh1jhjXhMhjFXubj)}(h;``int bearer_id`` identity of bearer delivering the packet h](j )}(h``int bearer_id``h]j)}(hjXh]h int bearer_id}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjXubj')}(hhh]h)}(h(identity of bearer delivering the packeth]h(identity of bearer delivering the packet}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1j&hjXubeh}(h]h ]h"]h$]h&]uh1jhjXhMhjFXubj)}(hB``struct sk_buff_head *xmitq`` queue for messages to be xmited on h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjXh]hstruct sk_buff_head *xmitq}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjXubj')}(hhh]h)}(h"queue for messages to be xmited onh]h"queue for messages to be xmited on}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMhjYubah}(h]h ]h"]h$]h&]uh1j&hjXubeh}(h]h ]h"]h$]h&]uh1jhjYhMhjFXubeh}(h]h ]h"]h$]h&]uh1jhj*Xubh)}(h **Return**h]j)}(hj5Yh]hReturn}(hj7YhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3Yubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj*Xubh)}(h-true if state and msg are ok, otherwise falseh]h-true if state and msg are ok, otherwise false}(hjKYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj*Xubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_rcv (C function) c.tipc_rcvhNtauh1jhj7hhhNhNubj$)}(hhh](j))}(hKvoid tipc_rcv (struct net *net, struct sk_buff *skb, struct tipc_bearer *b)h]j/)}(hJvoid tipc_rcv(struct net *net, struct sk_buff *skb, struct tipc_bearer *b)h](jG)}(hvoidh]hvoid}(hjzYhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjvYhhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMubjG)}(h h]h }(hjYhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjvYhhhjYhMubjX)}(htipc_rcvh]j^)}(htipc_rcvh]htipc_rcv}(hjYhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjvYhhhjYhMubj)}(h=(struct net *net, struct sk_buff *skb, struct tipc_bearer *b)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjYhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjYubjG)}(h h]h }(hjYhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYubh)}(hhh]j^)}(hneth]hnet}(hjYhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjYmodnameN classnameNjj)}j]j)}jjYsb c.tipc_rcvasbuh1hhjYubjG)}(h h]h }(hjYhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj^)}(hneth]hnet}(hjZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjYubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hj)ZhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj%ZubjG)}(h h]h }(hj6ZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%Zubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjGZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjIZmodnameN classnameNjj)}j]jY c.tipc_rcvasbuh1hhj%ZubjG)}(h h]h }(hjeZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj%Zubj)}(hjh]h*}(hjsZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%Zubj^)}(hskbh]hskb}(hjZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj%Zubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjYubj%)}(hstruct tipc_bearer *bh](j5)}(hj8h]hstruct}(hjZhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjZubjG)}(h h]h }(hjZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjZubh)}(hhh]j^)}(h tipc_bearerh]h tipc_bearer}(hjZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZmodnameN classnameNjj)}j]jY c.tipc_rcvasbuh1hhjZubjG)}(h h]h }(hjZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjZubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj^)}(hj,h]hb}(hjZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjYubeh}(h]h ]h"]h$]h&]hhuh1jhjvYhhhjYhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjrYhhhjYhMubah}(h]jmYah ](jjeh"]h$]h&]jj)jhuh1j(hjYhMhjoYhhubj)}(hhh]h)}(h4process TIPC packets/messages arriving from off-nodeh]h4process TIPC packets/messages arriving from off-node}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj[hhubah}(h]h ]h"]h$]h&]uh1jhjoYhhhjYhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1[jj1[jjjuh1j#hhhj7hNhNubj)}(hXB**Parameters** ``struct net *net`` the applicable net namespace ``struct sk_buff *skb`` TIPC packet ``struct tipc_bearer *b`` pointer to bearer message arrived on **Description** Invoked with no locks held. Bearer pointer must point to a valid bearer structure (i.e. cannot be NULL), but bearer can be inactive.h](h)}(h**Parameters**h]j)}(hj;[h]h Parameters}(hj=[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9[ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj5[ubj)}(hhh](j)}(h1``struct net *net`` the applicable net namespace h](j )}(h``struct net *net``h]j)}(hjZ[h]hstruct net *net}(hj\[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX[ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhjT[ubj')}(hhh]h)}(hthe applicable net namespaceh]hthe applicable net namespace}(hjs[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo[hMhjp[ubah}(h]h ]h"]h$]h&]uh1j&hjT[ubeh}(h]h ]h"]h$]h&]uh1jhjo[hMhjQ[ubj)}(h$``struct sk_buff *skb`` TIPC packet h](j )}(h``struct sk_buff *skb``h]j)}(hj[h]hstruct sk_buff *skb}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj[ubj')}(hhh]h)}(h TIPC packeth]h TIPC packet}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1j&hj[ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhjQ[ubj)}(h?``struct tipc_bearer *b`` pointer to bearer message arrived on h](j )}(h``struct tipc_bearer *b``h]j)}(hj[h]hstruct tipc_bearer *b}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj[ubj')}(hhh]h)}(h$pointer to bearer message arrived onh]h$pointer to bearer message arrived on}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1j&hj[ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhjQ[ubeh}(h]h ]h"]h$]h&]uh1jhj5[ubh)}(h**Description**h]j)}(hj\h]h Description}(hj \hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj5[ubh)}(hInvoked with no locks held. Bearer pointer must point to a valid bearer structure (i.e. cannot be NULL), but bearer can be inactive.h]hInvoked with no locks held. Bearer pointer must point to a valid bearer structure (i.e. cannot be NULL), but bearer can be inactive.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chMhj5[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_node_dump (C function)c.tipc_node_dumphNtauh1jhj7hhhNhNubj$)}(hhh](j))}(h>int tipc_node_dump (struct tipc_node *n, bool more, char *buf)h]j/)}(h=int tipc_node_dump(struct tipc_node *n, bool more, char *buf)h](jG)}(hinth]hint}(hjL\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjH\hhhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM ubjG)}(h h]h }(hj[\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjH\hhhjZ\hM ubjX)}(htipc_node_dumph]j^)}(htipc_node_dumph]htipc_node_dump}(hjm\hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hji\ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjH\hhhjZ\hM ubj)}(h+(struct tipc_node *n, bool more, char *buf)h](j%)}(hstruct tipc_node *nh](j5)}(hj8h]hstruct}(hj\hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj\ubjG)}(h h]h }(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj\ubh)}(hhh]j^)}(h tipc_nodeh]h tipc_node}(hj\hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jjo\sbc.tipc_node_dumpasbuh1hhj\ubjG)}(h h]h }(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj^)}(hjih]hn}(hj\hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj\ubj%)}(h bool moreh](jG)}(hjgh]hbool}(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj\ubjG)}(h h]h }(hj]hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj\ubj^)}(hmoreh]hmore}(hj]hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj\ubj%)}(h char *bufh](jG)}(hcharh]hchar}(hj.]hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj*]ubjG)}(h h]h }(hj<]hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj*]ubj)}(hjh]h*}(hjJ]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*]ubj^)}(hbufh]hbuf}(hjW]hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj*]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj\ubeh}(h]h ]h"]h$]h&]hhuh1jhjH\hhhjZ\hM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjD\hhhjZ\hM ubah}(h]j?\ah ](jjeh"]h$]h&]jj)jhuh1j(hjZ\hM hjA\hhubj)}(hhh]h)}(hdump TIPC node datah]hdump TIPC node data}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj~]hhubah}(h]h ]h"]h$]h&]uh1jhjA\hhhjZ\hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]jj]jjjuh1j#hhhj7hNhNubj)}(h**Parameters** ``struct tipc_node *n`` tipc node to be dumped ``bool more`` dump more? - false: dump only tipc node data - true: dump node link data as well ``char *buf`` returned buffer of dump data in formath](h)}(h**Parameters**h]j)}(hj]h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj]ubj)}(hhh](j)}(h/``struct tipc_node *n`` tipc node to be dumped h](j )}(h``struct tipc_node *n``h]j)}(hj]h]hstruct tipc_node *n}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj]ubj')}(hhh]h)}(htipc node to be dumpedh]htipc node to be dumped}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hM hj]ubah}(h]h ]h"]h$]h&]uh1j&hj]ubeh}(h]h ]h"]h$]h&]uh1jhj]hM hj]ubj)}(h_``bool more`` dump more? - false: dump only tipc node data - true: dump node link data as well h](j )}(h ``bool more``h]j)}(hj]h]h bool more}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj]ubj')}(hhh]h)}(hPdump more? - false: dump only tipc node data - true: dump node link data as wellh]hPdump more? - false: dump only tipc node data - true: dump node link data as well}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj^ubah}(h]h ]h"]h$]h&]uh1j&hj]ubeh}(h]h ]h"]h$]h&]uh1jhj^hM hj]ubj)}(h4``char *buf`` returned buffer of dump data in formath](j )}(h ``char *buf``h]j)}(hj5^h]h char *buf}(hj7^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3^ubah}(h]h ]h"]h$]h&]uh1j hP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hj/^ubj')}(hhh]h)}(h&returned buffer of dump data in formath]h&returned buffer of dump data in format}(hjN^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/networking/tipc:190: ./net/tipc/node.chM hjK^ubah}(h]h ]h"]h$]h&]uh1j&hj/^ubeh}(h]h ]h"]h$]h&]uh1jhjJ^hM hj]ubeh}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj7hhhNhNubeh}(h]tipc-node-management-interfacesah ]h"]tipc node management interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Socket Interfacesh]hTIPC Socket Interfaces}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~^hhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sock (C struct) c.tipc_sockhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h tipc_sockh]j/)}(hstruct tipc_sockh](j5)}(hj8h]hstruct}(hj^hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj^hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKubjG)}(h h]h }(hj^hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj^hhhj^hKubjX)}(h tipc_sockh]j^)}(hj^h]h tipc_sock}(hj^hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj^ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj^hhhj^hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj^hhhj^hKubah}(h]j^ah ](jjeh"]h$]h&]jj)jhuh1j(hj^hKhj^hhubj)}(hhh]h)}(hTIPC socket structureh]hTIPC socket structure}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKKhj^hhubah}(h]h ]h"]h$]h&]uh1jhj^hhhj^hKubeh}(h]h ](jstructeh"]h$]h&]jjjj_jj_jjjuh1j#hhhj~^hNhNubj)}(hX? **Definition**:: 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** ``sk`` socket - interacts with 'port' and with user via the socket API ``max_pkt`` maximum packet size "hint" used when building messages sent by port ``maxnagle`` maximum size of msg which can be subject to nagle ``portid`` unique port identity in TIPC socket hash table ``phdr`` preformatted message header used when sending messages ``cong_links`` list of congested links ``publications`` list of publications for port ``pub_count`` total # of publications port has made during its lifetime ``dupl_rcvcnt`` number of bytes counted twice, in both backlog and rcv queue ``conn_timeout`` the time we can wait for an unresponded setup request ``probe_unacked`` probe has not received ack yet ``cong_link_cnt`` number of congested links ``snt_unacked`` # messages sent by socket, and not yet acked by peer ``snd_win`` send window size ``peer_caps`` peer capabilities mask ``rcv_unacked`` # messages read by user, but not yet acked back to peer ``rcv_win`` receive window size ``peer`` 'connected' peer for dgram/rdm ``node`` hash table node ``mc_method`` cookie for use between socket and broadcast layer ``rcu`` rcu struct for tipc_sock ``group`` TIPC communications group ``oneway`` message count in one direction (FIXME) ``nagle_start`` current nagle value ``snd_backlog`` send backlog count ``msg_acc`` messages accepted; used in managing backlog and nagle ``pkt_cnt`` TIPC socket packet count ``expect_ack`` whether this TIPC socket is expecting an ack ``nodelay`` setsockopt() TIPC_NODELAY setting ``group_is_open`` TIPC socket group is fully open (FIXME) ``published`` true if port has one or more associated names ``conn_addrtype`` address type used when establishing connectionh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj _ubh:}(hj _hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKOhj_ubj)}(hXstruct 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; };h]hXstruct 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; };}hj'_sbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKQhj_ubh)}(h **Members**h]j)}(hj8_h]hMembers}(hj:_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6_ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKthj_ubj)}(hhh](j)}(hG``sk`` socket - interacts with 'port' and with user via the socket API h](j )}(h``sk``h]j)}(hjW_h]hsk}(hjY_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU_ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKMhjQ_ubj')}(hhh]h)}(h?socket - interacts with 'port' and with user via the socket APIh]hCsocket - interacts with ‘port’ and with user via the socket API}(hjp_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjl_hKMhjm_ubah}(h]h ]h"]h$]h&]uh1j&hjQ_ubeh}(h]h ]h"]h$]h&]uh1jhjl_hKMhjN_ubj)}(hP``max_pkt`` maximum packet size "hint" used when building messages sent by port h](j )}(h ``max_pkt``h]j)}(hj_h]hmax_pkt}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKNhj_ubj')}(hhh]h)}(hCmaximum packet size "hint" used when building messages sent by porth]hGmaximum packet size “hint” used when building messages sent by port}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hKNhj_ubah}(h]h ]h"]h$]h&]uh1j&hj_ubeh}(h]h ]h"]h$]h&]uh1jhj_hKNhjN_ubj)}(h?``maxnagle`` maximum size of msg which can be subject to nagle h](j )}(h ``maxnagle``h]j)}(hj_h]hmaxnagle}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKOhj_ubj')}(hhh]h)}(h1maximum size of msg which can be subject to nagleh]h1maximum size of msg which can be subject to nagle}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hKOhj_ubah}(h]h ]h"]h$]h&]uh1j&hj_ubeh}(h]h ]h"]h$]h&]uh1jhj_hKOhjN_ubj)}(h:``portid`` unique port identity in TIPC socket hash table h](j )}(h ``portid``h]j)}(hj`h]hportid}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKPhj_ubj')}(hhh]h)}(h.unique port identity in TIPC socket hash tableh]h.unique port identity in TIPC socket hash table}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKPhj`ubah}(h]h ]h"]h$]h&]uh1j&hj_ubeh}(h]h ]h"]h$]h&]uh1jhj`hKPhjN_ubj)}(h@``phdr`` preformatted message header used when sending messages h](j )}(h``phdr``h]j)}(hj;`h]hphdr}(hj=`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9`ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKQhj5`ubj')}(hhh]h)}(h6preformatted message header used when sending messagesh]h6preformatted message header used when sending messages}(hjT`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP`hKQhjQ`ubah}(h]h ]h"]h$]h&]uh1j&hj5`ubeh}(h]h ]h"]h$]h&]uh1jhjP`hKQhjN_ubj)}(h'``cong_links`` list of congested links h](j )}(h``cong_links``h]j)}(hjt`h]h cong_links}(hjv`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr`ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKRhjn`ubj')}(hhh]h)}(hlist of congested linksh]hlist of congested links}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKRhj`ubah}(h]h ]h"]h$]h&]uh1j&hjn`ubeh}(h]h ]h"]h$]h&]uh1jhj`hKRhjN_ubj)}(h/``publications`` list of publications for port h](j )}(h``publications``h]j)}(hj`h]h publications}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKShj`ubj')}(hhh]h)}(hlist of publications for porth]hlist of publications for port}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKShj`ubah}(h]h ]h"]h$]h&]uh1j&hj`ubeh}(h]h ]h"]h$]h&]uh1jhj`hKShjN_ubj)}(hH``pub_count`` total # of publications port has made during its lifetime h](j )}(h ``pub_count``h]j)}(hj`h]h pub_count}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKThj`ubj')}(hhh]h)}(h9total # of publications port has made during its lifetimeh]h9total # of publications port has made during its lifetime}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hKThj`ubah}(h]h ]h"]h$]h&]uh1j&hj`ubeh}(h]h ]h"]h$]h&]uh1jhj`hKThjN_ubj)}(hM``dupl_rcvcnt`` number of bytes counted twice, in both backlog and rcv queue h](j )}(h``dupl_rcvcnt``h]j)}(hjah]h dupl_rcvcnt}(hj!ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKWhjaubj')}(hhh]h)}(hbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:bubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKZhj6bubj')}(hhh]h)}(hsend window sizeh]hsend window size}(hjUbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQbhKZhjRbubah}(h]h ]h"]h$]h&]uh1j&hj6bubeh}(h]h ]h"]h$]h&]uh1jhjQbhKZhjN_ubj)}(h%``peer_caps`` peer capabilities mask h](j )}(h ``peer_caps``h]j)}(hjubh]h peer_caps}(hjwbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsbubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chK[hjobubj')}(hhh]h)}(hpeer capabilities maskh]hpeer capabilities mask}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhK[hjbubah}(h]h ]h"]h$]h&]uh1j&hjobubeh}(h]h ]h"]h$]h&]uh1jhjbhK[hjN_ubj)}(hH``rcv_unacked`` # messages read by user, but not yet acked back to peer h](j )}(h``rcv_unacked``h]j)}(hjbh]h rcv_unacked}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chK\hjbubj')}(hhh]h)}(h7# messages read by user, but not yet acked back to peerh]h7# messages read by user, but not yet acked back to peer}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhK\hjbubah}(h]h ]h"]h$]h&]uh1j&hjbubeh}(h]h ]h"]h$]h&]uh1jhjbhK\hjN_ubj)}(h ``rcv_win`` receive window size h](j )}(h ``rcv_win``h]j)}(hjbh]hrcv_win}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chK]hjbubj')}(hhh]h)}(hreceive window sizeh]hreceive window size}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhK]hjbubah}(h]h ]h"]h$]h&]uh1j&hjbubeh}(h]h ]h"]h$]h&]uh1jhjbhK]hjN_ubj)}(h(``peer`` 'connected' peer for dgram/rdm h](j )}(h``peer``h]j)}(hj ch]hpeer}(hj"chhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chK^hjcubj')}(hhh]h)}(h'connected' peer for dgram/rdmh]h"‘connected’ peer for dgram/rdm}(hj9chhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5chK^hj6cubah}(h]h ]h"]h$]h&]uh1j&hjcubeh}(h]h ]h"]h$]h&]uh1jhj5chK^hjN_ubj)}(h``node`` hash table node h](j )}(h``node``h]j)}(hjYch]hnode}(hj[chhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWcubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chK_hjScubj')}(hhh]h)}(hhash table nodeh]hhash table node}(hjrchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnchK_hjocubah}(h]h ]h"]h$]h&]uh1j&hjScubeh}(h]h ]h"]h$]h&]uh1jhjnchK_hjN_ubj)}(h@``mc_method`` cookie for use between socket and broadcast layer h](j )}(h ``mc_method``h]j)}(hjch]h mc_method}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1 jhjcubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chK`hjcubj')}(hhh]h)}(h1cookie for use between socket and broadcast layerh]h1cookie for use between socket and broadcast layer}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchK`hjcubah}(h]h ]h"]h$]h&]uh1j&hjcubeh}(h]h ]h"]h$]h&]uh1jhjchK`hjN_ubj)}(h!``rcu`` rcu struct for tipc_sock h](j )}(h``rcu``h]j)}(hjch]hrcu}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKahjcubj')}(hhh]h)}(hrcu struct for tipc_sockh]hrcu struct for tipc_sock}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKahjcubah}(h]h ]h"]h$]h&]uh1j&hjcubeh}(h]h ]h"]h$]h&]uh1jhjchKahjN_ubj)}(h$``group`` TIPC communications group h](j )}(h ``group``h]j)}(hjdh]hgroup}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKbhjcubj')}(hhh]h)}(hTIPC communications grouph]hTIPC communications group}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKbhjdubah}(h]h ]h"]h$]h&]uh1j&hjcubeh}(h]h ]h"]h$]h&]uh1jhjdhKbhjN_ubj)}(h2``oneway`` message count in one direction (FIXME) h](j )}(h ``oneway``h]j)}(hj=dh]honeway}(hj?dhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;dubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKchj7dubj')}(hhh]h)}(h&message count in one direction (FIXME)h]h&message count in one direction (FIXME)}(hjVdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRdhKchjSdubah}(h]h ]h"]h$]h&]uh1j&hj7dubeh}(h]h ]h"]h$]h&]uh1jhjRdhKchjN_ubj)}(h$``nagle_start`` current nagle value h](j )}(h``nagle_start``h]j)}(hjvdh]h nagle_start}(hjxdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtdubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKdhjpdubj')}(hhh]h)}(hcurrent nagle valueh]hcurrent nagle value}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKdhjdubah}(h]h ]h"]h$]h&]uh1j&hjpdubeh}(h]h ]h"]h$]h&]uh1jhjdhKdhjN_ubj)}(h#``snd_backlog`` send backlog count h](j )}(h``snd_backlog``h]j)}(hjdh]h snd_backlog}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKehjdubj')}(hhh]h)}(hsend backlog counth]hsend backlog count}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKehjdubah}(h]h ]h"]h$]h&]uh1j&hjdubeh}(h]h ]h"]h$]h&]uh1jhjdhKehjN_ubj)}(hB``msg_acc`` messages accepted; used in managing backlog and nagle h](j )}(h ``msg_acc``h]j)}(hjdh]hmsg_acc}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKfhjdubj')}(hhh]h)}(h5messages accepted; used in managing backlog and nagleh]h5messages accepted; used in managing backlog and nagle}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKfhjdubah}(h]h ]h"]h$]h&]uh1j&hjdubeh}(h]h ]h"]h$]h&]uh1jhjdhKfhjN_ubj)}(h%``pkt_cnt`` TIPC socket packet count h](j )}(h ``pkt_cnt``h]j)}(hj!eh]hpkt_cnt}(hj#ehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKghjeubj')}(hhh]h)}(hTIPC socket packet counth]hTIPC socket packet count}(hj:ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6ehKghj7eubah}(h]h ]h"]h$]h&]uh1j&hjeubeh}(h]h ]h"]h$]h&]uh1jhj6ehKghjN_ubj)}(h<``expect_ack`` whether this TIPC socket is expecting an ack h](j )}(h``expect_ack``h]j)}(hjZeh]h expect_ack}(hj\ehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXeubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKhhjTeubj')}(hhh]h)}(h,whether this TIPC socket is expecting an ackh]h,whether this TIPC socket is expecting an ack}(hjsehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoehKhhjpeubah}(h]h ]h"]h$]h&]uh1j&hjTeubeh}(h]h ]h"]h$]h&]uh1jhjoehKhhjN_ubj)}(h.``nodelay`` setsockopt() TIPC_NODELAY setting h](j )}(h ``nodelay``h]j)}(hjeh]hnodelay}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKihjeubj')}(hhh]h)}(h!setsockopt() TIPC_NODELAY settingh]h!setsockopt() TIPC_NODELAY setting}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKihjeubah}(h]h ]h"]h$]h&]uh1j&hjeubeh}(h]h ]h"]h$]h&]uh1jhjehKihjN_ubj)}(h:``group_is_open`` TIPC socket group is fully open (FIXME) h](j )}(h``group_is_open``h]j)}(hjeh]h group_is_open}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKjhjeubj')}(hhh]h)}(h'TIPC socket group is fully open (FIXME)h]h'TIPC socket group is fully open (FIXME)}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKjhjeubah}(h]h ]h"]h$]h&]uh1j&hjeubeh}(h]h ]h"]h$]h&]uh1jhjehKjhjN_ubj)}(h<``published`` true if port has one or more associated names h](j )}(h ``published``h]j)}(hjfh]h published}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKkhjeubj')}(hhh]h)}(h-true if port has one or more associated namesh]h-true if port has one or more associated names}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKkhjfubah}(h]h ]h"]h$]h&]uh1j&hjeubeh}(h]h ]h"]h$]h&]uh1jhjfhKkhjN_ubj)}(h@``conn_addrtype`` address type used when establishing connectionh](j )}(h``conn_addrtype``h]j)}(hj>fh]h conn_addrtype}(hj@fhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(struct net *net, struct socket *sock, int protocol, int kern)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjEjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjAjubjG)}(h h]h }(hjRjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjAjubh)}(hhh]j^)}(hneth]hnet}(hjcjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj`jubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjejmodnameN classnameNjj)}j]j)}jj+jsbc.tipc_sk_createasbuh1hhjAjubjG)}(h h]h }(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjAjubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAjubj^)}(hneth]hnet}(hjjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjAjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj=jubj%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjjubjG)}(h h]h }(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjjubh)}(hhh]j^)}(hsocketh]hsocket}(hjjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjjmodnameN classnameNjj)}j]jjc.tipc_sk_createasbuh1hhjjubjG)}(h h]h }(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjjubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj^)}(hsockh]hsock}(hjkhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj=jubj%)}(h int protocolh](jG)}(hinth]hint}(hj'khhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj#kubjG)}(h h]h }(hj5khhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj#kubj^)}(hprotocolh]hprotocol}(hjCkhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj#kubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj=jubj%)}(hint kernh](jG)}(hinth]hint}(hj\khhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjXkubjG)}(h h]h }(hjjkhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjXkubj^)}(hkernh]hkern}(hjxkhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjXkubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj=jubeh}(h]h ]h"]h$]h&]hhuh1jhjjhhhjjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjjhhhjjhMubah}(h]jiah ](jjeh"]h$]h&]jj)jhuh1j(hjjhMhjihhubj)}(hhh]h)}(hcreate a TIPC socketh]hcreate a TIPC socket}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkhhubah}(h]h ]h"]h$]h&]uh1jhjihhhjjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjkjjkjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct net *net`` network namespace (must be default network) ``struct socket *sock`` pre-allocated socket structure ``int protocol`` protocol indicator (must be 0) ``int kern`` caused by kernel or by userspace? **Description** This routine creates additional data structures used by the TIPC socket, initializes them, and links them together. **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjkh]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkubj)}(hhh](j)}(h@``struct net *net`` network namespace (must be default network) h](j )}(h``struct net *net``h]j)}(hjkh]hstruct net *net}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkubj')}(hhh]h)}(h+network namespace (must be default network)h]h+network namespace (must be default network)}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjkubah}(h]h ]h"]h$]h&]uh1j&hjkubeh}(h]h ]h"]h$]h&]uh1jhjkhMhjkubj)}(h7``struct socket *sock`` pre-allocated socket structure h](j )}(h``struct socket *sock``h]j)}(hjlh]hstruct socket *sock}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjlubj')}(hhh]h)}(hpre-allocated socket structureh]hpre-allocated socket structure}(hj5lhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1lhMhj2lubah}(h]h ]h"]h$]h&]uh1j&hjlubeh}(h]h ]h"]h$]h&]uh1jhj1lhMhjkubj)}(h0``int protocol`` protocol indicator (must be 0) h](j )}(h``int protocol``h]j)}(hjUlh]h int protocol}(hjWlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSlubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjOlubj')}(hhh]h)}(hprotocol indicator (must be 0)h]hprotocol indicator (must be 0)}(hjnlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjlhMhjklubah}(h]h ]h"]h$]h&]uh1j&hjOlubeh}(h]h ]h"]h$]h&]uh1jhjjlhMhjkubj)}(h/``int kern`` caused by kernel or by userspace? h](j )}(h ``int kern``h]j)}(hjlh]hint kern}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjlubj')}(hhh]h)}(h!caused by kernel or by userspace?h]h!caused by kernel or by userspace?}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhMhjlubah}(h]h ]h"]h$]h&]uh1j&hjlubeh}(h]h ]h"]h$]h&]uh1jhjlhMhjkubeh}(h]h ]h"]h$]h&]uh1jhjkubh)}(h**Description**h]j)}(hjlh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkubh)}(hsThis routine creates additional data structures used by the TIPC socket, initializes them, and links them together.h]hsThis routine creates additional data structures used by the TIPC socket, initializes them, and links them together.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkubh)}(h **Return**h]j)}(hjlh]hReturn}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_release (C function)c.tipc_releasehNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h&int tipc_release (struct socket *sock)h]j/)}(h%int tipc_release(struct socket *sock)h](jG)}(hinth]hint}(hj5mhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1mhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMaubjG)}(h h]h }(hjDmhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1mhhhjCmhMaubjX)}(h tipc_releaseh]j^)}(h tipc_releaseh]h tipc_release}(hjVmhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjRmubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj1mhhhjCmhMaubj)}(h(struct socket *sock)h]j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjrmhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjnmubjG)}(h h]h }(hjmhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjnmubh)}(hhh]j^)}(hsocketh]hsocket}(hjmhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]j)}jjXmsbc.tipc_releaseasbuh1hhjnmubjG)}(h h]h }(hjmhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjnmubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnmubj^)}(hsockh]hsock}(hjmhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjnmubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjjmubah}(h]h ]h"]h$]h&]hhuh1jhj1mhhhjCmhMaubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj-mhhhjCmhMaubah}(h]j(mah ](jjeh"]h$]h&]jj)jhuh1j(hjCmhMahj*mhhubj)}(hhh]h)}(hdestroy a TIPC socketh]hdestroy a TIPC socket}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMahjmhhubah}(h]h ]h"]h$]h&]uh1jhj*mhhhjCmhMaubeh}(h]h ](jfunctioneh"]h$]h&]jjjj njj njjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` socket to destroy **Description** This routine cleans up any messages that are still queued on the socket. For DGRAM and RDM socket types, all queued messages are rejected. For SEQPACKET and STREAM socket types, the first message is rejected and any others are discarded. (If the first message on a STREAM socket is partially-read, it is discarded and the next one is rejected instead.) **NOTE** Rejected messages are not necessarily returned to the sender! They are returned or discarded according to the "destination droppable" setting specified for the message by the sender. **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMehjnubj)}(hhh]j)}(h*``struct socket *sock`` socket to destroy h](j )}(h``struct socket *sock``h]j)}(hj6nh]hstruct socket *sock}(hj8nhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4nubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMbhj0nubj')}(hhh]h)}(hsocket to destroyh]hsocket to destroy}(hjOnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKnhMbhjLnubah}(h]h ]h"]h$]h&]uh1j&hj0nubeh}(h]h ]h"]h$]h&]uh1jhjKnhMbhj-nubah}(h]h ]h"]h$]h&]uh1jhjnubh)}(h**Description**h]j)}(hjqnh]h Description}(hjsnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjonubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMdhjnubh)}(hXaThis routine cleans up any messages that are still queued on the socket. For DGRAM and RDM socket types, all queued messages are rejected. For SEQPACKET and STREAM socket types, the first message is rejected and any others are discarded. (If the first message on a STREAM socket is partially-read, it is discarded and the next one is rejected instead.)h]hXaThis routine cleans up any messages that are still queued on the socket. For DGRAM and RDM socket types, all queued messages are rejected. For SEQPACKET and STREAM socket types, the first message is rejected and any others are discarded. (If the first message on a STREAM socket is partially-read, it is discarded and the next one is rejected instead.)}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMchjnubh)}(h**NOTE**h]j)}(hjnh]hNOTE}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMihjnubh)}(hRejected messages are not necessarily returned to the sender! They are returned or discarded according to the "destination droppable" setting specified for the message by the sender.h]hRejected messages are not necessarily returned to the sender! They are returned or discarded according to the “destination droppable” setting specified for the message by the sender.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMjhjnubh)}(h **Return**h]j)}(hjnh]hReturn}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMnhjnubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMnhjnubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j__tipc_bind (C function) c.__tipc_bindhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hHint __tipc_bind (struct socket *sock, struct sockaddr *skaddr, int alen)h]j/)}(hGint __tipc_bind(struct socket *sock, struct sockaddr *skaddr, int alen)h](jG)}(hinth]hint}(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjohhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjohhhjohMubjX)}(h __tipc_bindh]j^)}(h __tipc_bindh]h __tipc_bind}(hj%ohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj!oubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjohhhjohMubj)}(h8(struct socket *sock, struct sockaddr *skaddr, int alen)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjAohhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj=oubjG)}(h h]h }(hjNohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj=oubh)}(hhh]j^)}(hsocketh]hsocket}(hj_ohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj\oubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjaomodnameN classnameNjj)}j]j)}jj'osb c.__tipc_bindasbuh1hhj=oubjG)}(h h]h }(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj=oubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=oubj^)}(hsockh]hsock}(hjohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj=oubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj9oubj%)}(hstruct sockaddr *skaddrh](j5)}(hj8h]hstruct}(hjohhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjoubjG)}(h h]h }(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjoubh)}(hhh]j^)}(hsockaddrh]hsockaddr}(hjohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjoubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]j{o c.__tipc_bindasbuh1hhjoubjG)}(h h]h }(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjoubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubj^)}(hskaddrh]hskaddr}(hj phhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj9oubj%)}(hint alenh](jG)}(hinth]hint}(hj#phhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjpubjG)}(h h]h }(hj1phhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjpubj^)}(halenh]halen}(hj?phhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj9oubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjohMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjnhhhjohMubah}(h]jnah ](jjeh"]h$]h&]jj)jhuh1j(hjohMhjnhhubj)}(hhh]h)}(h4associate or disassociate TIPC name(s) with a socketh]h4associate or disassociate TIPC name(s) with a socket}(hjiphhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjfphhubah}(h]h ]h"]h$]h&]uh1jhjnhhhjohMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjpjjpjjjuh1j#hhhj~^hNhNubj)}(hX]**Parameters** ``struct socket *sock`` socket structure ``struct sockaddr *skaddr`` socket address describing name(s) and desired operation ``int alen`` size of socket address data structure **Description** Name and name sequence binding are indicated using a positive scope value; a negative scope value unbinds the specified name. Specifying no name (i.e. a socket address length of 0) unbinds all names from the socket. **Return** 0 on success, errno otherwise **NOTE** This routine doesn't need to take the socket lock since it doesn't access any non-constant socket information.h](h)}(h**Parameters**h]j)}(hjph]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjph]hstruct socket *sock}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j&hjpubeh}(h]h ]h"]h$]h&]uh1jhjphMhjpubj)}(hT``struct sockaddr *skaddr`` socket address describing name(s) and desired operation h](j )}(h``struct sockaddr *skaddr``h]j)}(hjph]hstruct sockaddr *skaddr}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubj')}(hhh]h)}(h7socket address describing name(s) and desired operationh]h7socket address describing name(s) and desired operation}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j&hjpubeh}(h]h ]h"]h$]h&]uh1jhjphMhjpubj)}(h3``int alen`` size of socket address data structure h](j )}(h ``int alen``h]j)}(hjqh]hint alen}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjqubj')}(hhh]h)}(h%size of socket address data structureh]h%size of socket address data structure}(hj5qhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1qhMhj2qubah}(h]h ]h"]h$]h&]uh1j&hjqubeh}(h]h ]h"]h$]h&]uh1jhj1qhMhjpubeh}(h]h ]h"]h$]h&]uh1jhjpubh)}(h**Description**h]j)}(hjWqh]h Description}(hjYqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUqubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubh)}(hName and name sequence binding are indicated using a positive scope value; a negative scope value unbinds the specified name. Specifying no name (i.e. a socket address length of 0) unbinds all names from the socket.h]hName and name sequence binding are indicated using a positive scope value; a negative scope value unbinds the specified name. Specifying no name (i.e. a socket address length of 0) unbinds all names from the socket.}(hjmqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubh)}(h **Return**h]j)}(hj~qh]hReturn}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|qubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubh)}(h**NOTE**h]j)}(hjqh]hNOTE}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjpubj)}(hhh]j)}(hnThis routine doesn't need to take the socket lock since it doesn't access any non-constant socket information.h](j )}(hBThis routine doesn't need to take the socket lock since it doesn'th]hFThis routine doesn’t need to take the socket lock since it doesn’t}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjqubj')}(hhh]h)}(h+access any non-constant socket information.h]h+access any non-constant socket information.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjqubah}(h]h ]h"]h$]h&]uh1j&hjqubeh}(h]h ]h"]h$]h&]uh1jhjqhMhjqubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_getname (C function)c.tipc_getnamehNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hHint tipc_getname (struct socket *sock, struct sockaddr *uaddr, int peer)h]j/)}(hGint tipc_getname(struct socket *sock, struct sockaddr *uaddr, int peer)h](jG)}(hinth]hint}(hjrhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hj$rhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrhhhj#rhMubjX)}(h tipc_getnameh]j^)}(h tipc_getnameh]h tipc_getname}(hj6rhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj2rubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjrhhhj#rhMubj)}(h7(struct socket *sock, struct sockaddr *uaddr, int peer)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjRrhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjNrubjG)}(h h]h }(hj_rhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNrubh)}(hhh]j^)}(hsocketh]hsocket}(hjprhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjmrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrrmodnameN classnameNjj)}j]j)}jj8rsbc.tipc_getnameasbuh1hhjNrubjG)}(h h]h }(hjrhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNrubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNrubj^)}(hsockh]hsock}(hjrhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjNrubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJrubj%)}(hstruct sockaddr *uaddrh](j5)}(hj8h]hstruct}(hjrhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjrubjG)}(h h]h }(hjrhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubh)}(hhh]j^)}(hsockaddrh]hsockaddr}(hjrhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNjj)}j]jrc.tipc_getnameasbuh1hhjrubjG)}(h h]h }(hjshhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrubj^)}(huaddrh]huaddr}(hjshhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJrubj%)}(hint peerh](jG)}(hinth]hint}(hj4shhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj0subjG)}(h h]h }(hjBshhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj0subj^)}(hpeerh]hpeer}(hjPshhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj0subeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJrubeh}(h]h ]h"]h$]h&]hhuh1jhjrhhhj#rhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj rhhhj#rhMubah}(h]jrah ](jjeh"]h$]h&]jj)jhuh1j(hj#rhMhj rhhubj)}(hhh]h)}(h$get port ID of socket or peer socketh]h$get port ID of socket or peer socket}(hjzshhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjwshhubah}(h]h ]h"]h$]h&]uh1jhj rhhhj#rhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjsjjsjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` socket structure ``struct sockaddr *uaddr`` area for returned socket address ``int peer`` 0 = own ID, 1 = current peer ID, 2 = current/former peer ID **Return** 0 on success, errno otherwise **NOTE** This routine doesn't need to take the socket lock since it only accesses socket information that is unchanging (or which changes in a completely predictable manner).h](h)}(h**Parameters**h]j)}(hjsh]h Parameters}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjsubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjsh]hstruct socket *sock}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjsubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1j&hjsubeh}(h]h ]h"]h$]h&]uh1jhjshMhjsubj)}(h<``struct sockaddr *uaddr`` area for returned socket address h](j )}(h``struct sockaddr *uaddr``h]j)}(hjsh]hstruct sockaddr *uaddr}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjsubj')}(hhh]h)}(h area for returned socket addressh]h area for returned socket address}(hj thhhNhNubah}(h]h ]h"]h$]h&]uh1hhj thMhj tubah}(h]h ]h"]h$]h&]uh1j&hjsubeh}(h]h ]h"]h$]h&]uh1jhj thMhjsubj)}(hI``int peer`` 0 = own ID, 1 = current peer ID, 2 = current/former peer ID h](j )}(h ``int peer``h]j)}(hj-th]hint peer}(hj/thhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+tubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj'tubj')}(hhh]h)}(h;0 = own ID, 1 = current peer ID, 2 = current/former peer IDh]h;0 = own ID, 1 = current peer ID, 2 = current/former peer ID}(hjFthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBthMhjCtubah}(h]h ]h"]h$]h&]uh1j&hj'tubeh}(h]h ]h"]h$]h&]uh1jhjBthMhjsubeh}(h]h ]h"]h$]h&]uh1jhjsubh)}(h **Return**h]j)}(hjhth]hReturn}(hjjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjftubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjsubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hj~thhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjsubh)}(h**NOTE**h]j)}(hjth]hNOTE}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjsubj)}(hhh]j)}(hThis routine doesn't need to take the socket lock since it only accesses socket information that is unchanging (or which changes in a completely predictable manner).h](j )}(h?This routine doesn't need to take the socket lock since it onlyh]hAThis routine doesn’t need to take the socket lock since it only}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjtubj')}(hhh]h)}(heaccesses socket information that is unchanging (or which changes in a completely predictable manner).h]heaccesses socket information that is unchanging (or which changes in a completely predictable manner).}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthMhjtubah}(h]h ]h"]h$]h&]uh1j&hjtubeh}(h]h ]h"]h$]h&]uh1jhjthMhjtubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_poll (C function) c.tipc_pollhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hM__poll_t tipc_poll (struct file *file, struct socket *sock, poll_table *wait)h]j/)}(hL__poll_t tipc_poll(struct file *file, struct socket *sock, poll_table *wait)h](h)}(hhh]j^)}(h__poll_th]h__poll_t}(hjuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjtubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]j)}j tipc_pollsb c.tipc_pollasbuh1hhjthhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hj#uhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjthhhj"uhMubjX)}(h tipc_pollh]j^)}(hjuh]h tipc_poll}(hj5uhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1uubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjthhhj"uhMubj)}(h:(struct file *file, struct socket *sock, poll_table *wait)h](j%)}(hstruct file *fileh](j5)}(hj8h]hstruct}(hjPuhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjLuubjG)}(h h]h }(hj]uhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjLuubh)}(hhh]j^)}(hfileh]hfile}(hjnuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjkuubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpumodnameN classnameNjj)}j]ju c.tipc_pollasbuh1hhjLuubjG)}(h h]h }(hjuhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjLuubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLuubj^)}(hfileh]hfile}(hjuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjLuubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjHuubj%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjuhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjuubjG)}(h h]h }(hjuhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjuubh)}(hhh]j^)}(hsocketh]hsocket}(hjuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjuubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]ju c.tipc_pollasbuh1hhjuubjG)}(h h]h }(hjuhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjuubj)}(hjh]h*}(hj vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj^)}(hsockh]hsock}(hjvhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjuubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjHuubj%)}(hpoll_table *waith](h)}(hhh]j^)}(h poll_tableh]h poll_table}(hj3vhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj0vubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5vmodnameN classnameNjj)}j]ju c.tipc_pollasbuh1hhj,vubjG)}(h h]h }(hjQvhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,vubj)}(hjh]h*}(hj_vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,vubj^)}(hwaith]hwait}(hjlvhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj,vubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjHuubeh}(h]h ]h"]h$]h&]hhuh1jhjthhhj"uhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjthhhj"uhMubah}(h]jtah ](jjeh"]h$]h&]jj)jhuh1j(hj"uhMhjthhubj)}(hhh]h)}(h#read and possibly block on pollmaskh]h#read and possibly block on pollmask}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjvhhubah}(h]h ]h"]h$]h&]uh1jhjthhhj"uhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjvjjvjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct file *file`` file structure associated with the socket ``struct socket *sock`` socket for which to calculate the poll bits ``poll_table *wait`` ??? **Return** pollmask value **Description** COMMENTARY: It appears that the usual socket locking mechanisms are not useful here since the pollmask info is potentially out-of-date the moment this routine exits. TCP and other protocols seem to rely on higher level poll routines to handle any preventable race conditions, so TIPC will do the same ... IMPORTANT: The fact that a read or write operation is indicated does NOT imply that the operation will succeed, merely that it should be performed and will not block.h](h)}(h**Parameters**h]j)}(hjvh]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjvubj)}(hhh](j)}(h@``struct file *file`` file structure associated with the socket h](j )}(h``struct file *file``h]j)}(hjvh]hstruct file *file}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjvubj')}(hhh]h)}(h)file structure associated with the socketh]h)file structure associated with the socket}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMhjvubah}(h]h ]h"]h$]h&]uh1j&hjvubeh}(h]h ]h"]h$]h&]uh1jhjvhMhjvubj)}(hD``struct socket *sock`` socket for which to calculate the poll bits h](j )}(h``struct socket *sock``h]j)}(hjwh]hstruct socket *sock}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj wubj')}(hhh]h)}(h+socket for which to calculate the poll bitsh]h+socket for which to calculate the poll bits}(hj)whhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%whMhj&wubah}(h]h ]h"]h$]h&]uh1j&hj wubeh}(h]h ]h"]h$]h&]uh1jhj%whMhjvubj)}(h``poll_table *wait`` ??? h](j )}(h``poll_table *wait``h]j)}(hjIwh]hpoll_table *wait}(hjKwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGwubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjCwubj')}(hhh]h)}(h???h]h???}(hjbwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^whMhj_wubah}(h]h ]h"]h$]h&]uh1j&hjCwubeh}(h]h ]h"]h$]h&]uh1jhj^whMhjvubeh}(h]h ]h"]h$]h&]uh1jhjvubh)}(h **Return**h]j)}(hjwh]hReturn}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjvubh)}(hpollmask valueh]hpollmask value}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjvubh)}(h**Description**h]j)}(hjwh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjvubh)}(hX1COMMENTARY: It appears that the usual socket locking mechanisms are not useful here since the pollmask info is potentially out-of-date the moment this routine exits. TCP and other protocols seem to rely on higher level poll routines to handle any preventable race conditions, so TIPC will do the same ...h]hX1COMMENTARY: It appears that the usual socket locking mechanisms are not useful here since the pollmask info is potentially out-of-date the moment this routine exits. TCP and other protocols seem to rely on higher level poll routines to handle any preventable race conditions, so TIPC will do the same ...}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjvubh)}(hIMPORTANT: The fact that a read or write operation is indicated does NOT imply that the operation will succeed, merely that it should be performed and will not block.h]hIMPORTANT: The fact that a read or write operation is indicated does NOT imply that the operation will succeed, merely that it should be performed and will not block.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjvubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sendmcast (C function)c.tipc_sendmcasthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hnint tipc_sendmcast (struct socket *sock, struct tipc_uaddr *ua, struct msghdr *msg, size_t dlen, long timeout)h]j/)}(hmint tipc_sendmcast(struct socket *sock, struct tipc_uaddr *ua, struct msghdr *msg, size_t dlen, long timeout)h](jG)}(hinth]hint}(hjwhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjwhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM?ubjG)}(h h]h }(hjxhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjwhhhj xhM?ubjX)}(htipc_sendmcasth]j^)}(htipc_sendmcasth]htipc_sendmcast}(hj xhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjxubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjwhhhj xhM?ubj)}(h[(struct socket *sock, struct tipc_uaddr *ua, struct msghdr *msg, size_t dlen, long timeout)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjymodnameN classnameNjj)}j]jvxc.tipc_sendmcastasbuh1hhjyubjG)}(h h]h }(hjZyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjyubj)}(hjh]h*}(hjhyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj^)}(hmsgh]hmsg}(hjuyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj4xubj%)}(h size_t dlenh](h)}(hhh]j^)}(hsize_th]hsize_t}(hjyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNjj)}j]jvxc.tipc_sendmcastasbuh1hhjyubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjyubj^)}(hdlenh]hdlen}(hjyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj4xubj%)}(h long timeouth](jG)}(hlongh]hlong}(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjyubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjyubj^)}(htimeouth]htimeout}(hjyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj4xubeh}(h]h ]h"]h$]h&]hhuh1jhjwhhhj xhM?ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjwhhhj xhM?ubah}(h]jwah ](jjeh"]h$]h&]jj)jhuh1j(hj xhM?hjwhhubj)}(hhh]h)}(hsend multicast messageh]hsend multicast message}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM?hjzhhubah}(h]h ]h"]h$]h&]uh1jhjwhhhj xhM?ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4zjj4zjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` socket structure ``struct tipc_uaddr *ua`` destination address struct ``struct msghdr *msg`` message to send ``size_t dlen`` length of data to send ``long timeout`` timeout to wait for wakeup **Description** Called from function tipc_sendmsg(), which has done all sanity checks **Return** the number of bytes sent on success, or errnoh](h)}(h**Parameters**h]j)}(hj>zh]h Parameters}(hj@zhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj:hMhjubj)}(h,``long timeout`` timeout to wait for wakeup h](j )}(h``long timeout``h]j)}(hj^h]h long timeout}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjXubj')}(hhh]h)}(htimeout to wait for wakeuph]htimeout to wait for wakeup}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjtubah}(h]h ]h"]h$]h&]uh1j&hjXubeh}(h]h ]h"]h$]h&]uh1jhjshMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hECalled from function tipc_sendmsg(), which has done all sanity checksh]hECalled from function tipc_sendmsg(), which has done all sanity checks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hj†hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(h-the number of bytes sent on success, or errnoh]h-the number of bytes sent on success, or errno}(hjֆhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_send_group_bcast (C function)c.tipc_send_group_bcasthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hYint tipc_send_group_bcast (struct socket *sock, struct msghdr *m, int dlen, long timeout)h]j/)}(hXint tipc_send_group_bcast(struct socket *sock, struct msghdr *m, int dlen, long timeout)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM/ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM/ubjX)}(htipc_send_group_bcasth]j^)}(htipc_send_group_bcasth]htipc_send_group_bcast}(hj&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM/ubj)}(h?(struct socket *sock, struct msghdr *m, int dlen, long timeout)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjBhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj>ubjG)}(h h]h }(hjOhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>ubh)}(hhh]j^)}(hsocketh]hsocket}(hj`hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbmodnameN classnameNjj)}j]j)}jj(sbc.tipc_send_group_bcastasbuh1hhj>ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj:ubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hj҇hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjχubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjԇmodnameN classnameNjj)}j]j|c.tipc_send_group_bcastasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hjJh]hm}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj:ubj%)}(hint dlenh](jG)}(hinth]hint}(hj#hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hdlenh]hdlen}(hj?hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj:ubj%)}(h long timeouth](jG)}(hlongh]hlong}(hjXhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTubjG)}(h h]h }(hjfhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTubj^)}(htimeouth]htimeout}(hjthhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj:ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM/ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM/ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM/hjhhubj)}(hhh]h)}(h2send message to all members in communication grouph]h2send message to all members in communication group}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM/hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hXQ**Parameters** ``struct socket *sock`` socket structure ``struct msghdr *m`` message to send ``int dlen`` total length of message data ``long timeout`` timeout to wait for wakeup **Description** Called from function tipc_sendmsg(), which has done all sanity checks **Return** the number of bytes sent on success, or errnoh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjˆhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM3hjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hj߈h]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj݈ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM0hjوubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM0hjubah}(h]h ]h"]h$]h&]uh1j&hjوubeh}(h]h ]h"]h$]h&]uh1jhjhM0hjֈubj)}(h%``struct msghdr *m`` message to send h](j )}(h``struct msghdr *m``h]j)}(hjh]hstruct msghdr *m}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM1hjubj')}(hhh]h)}(hmessage to sendh]hmessage to send}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hM1hj.ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj-hM1hjֈubj)}(h*``int dlen`` total length of message data h](j )}(h ``int dlen``h]j)}(hjQh]hint dlen}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM2hjKubj')}(hhh]h)}(htotal length of message datah]htotal length of message data}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhM2hjgubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhjfhM2hjֈubj)}(h,``long timeout`` timeout to wait for wakeup h](j )}(h``long timeout``h]j)}(hjh]h long timeout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM3hjubj')}(hhh]h)}(htimeout to wait for wakeuph]htimeout to wait for wakeup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM3hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM3hjֈubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjʼnh]h Description}(hjljhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjÉubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM5hjubh)}(hECalled from function tipc_sendmsg(), which has done all sanity checksh]hECalled from function tipc_sendmsg(), which has done all sanity checks}(hjۉhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM4hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM6hjubh)}(h-the number of bytes sent on success, or errnoh]h-the number of bytes sent on success, or errno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM6hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_send_group_mcast (C function)c.tipc_send_group_mcasthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hYint tipc_send_group_mcast (struct socket *sock, struct msghdr *m, int dlen, long timeout)h]j/)}(hXint tipc_send_group_mcast(struct socket *sock, struct msghdr *m, int dlen, long timeout)h](jG)}(hinth]hint}(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj-hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMyubjG)}(h h]h }(hj@hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj-hhhj?hMyubjX)}(htipc_send_group_mcasth]j^)}(htipc_send_group_mcasth]htipc_send_group_mcast}(hjRhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjNubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj-hhhj?hMyubj)}(h?(struct socket *sock, struct msghdr *m, int dlen, long timeout)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjnhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjjubjG)}(h h]h }(hj{hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjjubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjTsbc.tipc_send_group_mcastasbuh1hhjjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj^)}(hsockh]hsock}(hjNJhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjfubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj܊ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj܊ubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_send_group_mcastasbuh1hhj܊ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj܊ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj܊ubj^)}(hjJh]hm}(hj7hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj܊ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjfubj%)}(hint dlenh](jG)}(hinth]hint}(hjOhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKubjG)}(h h]h }(hj]hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKubj^)}(hdlenh]hdlen}(hjkhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjfubj%)}(h long timeouth](jG)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(htimeouth]htimeout}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjfubeh}(h]h ]h"]h$]h&]hhuh1jhj-hhhj?hMyubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj)hhhj?hMyubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1j(hj?hMyhj&hhubj)}(hhh]h)}(h/send message to all members with given identityh]h/send message to all members with given identity}(hjʋhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMyhjNjhhubah}(h]h ]h"]h$]h&]uh1jhj&hhhj?hMyubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hXQ**Parameters** ``struct socket *sock`` socket structure ``struct msghdr *m`` message to send ``int dlen`` total length of message data ``long timeout`` timeout to wait for wakeup **Description** Called from function tipc_sendmsg(), which has done all sanity checks **Return** the number of bytes sent on success, or errnoh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM}hjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hj h]hstruct socket *sock}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMzhjubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMzhj!ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hMzhjubj)}(h%``struct msghdr *m`` message to send h](j )}(h``struct msghdr *m``h]j)}(hjDh]hstruct msghdr *m}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM{hj>ubj')}(hhh]h)}(hmessage to sendh]hmessage to send}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhM{hjZubah}(h]h ]h"]h$]h&]uh1j&hj>ubeh}(h]h ]h"]h$]h&]uh1jhjYhM{hjubj)}(h*``int dlen`` total length of message data h](j )}(h ``int dlen``h]j)}(hj}h]hint dlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM|hjwubj')}(hhh]h)}(htotal length of message datah]htotal length of message data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM|hjubah}(h]h ]h"]h$]h&]uh1j&hjwubeh}(h]h ]h"]h$]h&]uh1jhjhM|hjubj)}(h,``long timeout`` timeout to wait for wakeup h](j )}(h``long timeout``h]j)}(hjh]h long timeout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM}hjubj')}(hhh]h)}(htimeout to wait for wakeuph]htimeout to wait for wakeup}(hjόhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjˌhM}hǰubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjˌhM}hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hECalled from function tipc_sendmsg(), which has done all sanity checksh]hECalled from function tipc_sendmsg(), which has done all sanity checks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM~hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(h-the number of bytes sent on success, or errnoh]h-the number of bytes sent on success, or errno}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_mcast_rcv (C function)c.tipc_sk_mcast_rcvhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(havoid tipc_sk_mcast_rcv (struct net *net, struct sk_buff_head *arrvq, struct sk_buff_head *inputq)h]j/)}(h`void tipc_sk_mcast_rcv(struct net *net, struct sk_buff_head *arrvq, struct sk_buff_head *inputq)h](jG)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hjlhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYhhhjkhMubjX)}(htipc_sk_mcast_rcvh]j^)}(htipc_sk_mcast_rcvh]htipc_sk_mcast_rcv}(hj~hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjzubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjYhhhjkhMubj)}(hJ(struct net *net, struct sk_buff_head *arrvq, struct sk_buff_head *inputq)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_sk_mcast_rcvasbuh1hhjubjG)}(h h]h }(hj؍hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *arrvqh](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj*hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]jԍc.tipc_sk_mcast_rcvasbuh1hhjubjG)}(h h]h }(hjHhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(harrvqh]harrvq}(hjchhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *inputqh](j5)}(hj8h]hstruct}(hj|hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjxubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjxubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jԍc.tipc_sk_mcast_rcvasbuh1hhjxubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjxubj)}(hjh]h*}(hjƎhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj^)}(hinputqh]hinputq}(hjӎhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjxubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjYhhhjkhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjUhhhjkhMubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1j(hjkhMhjRhhubj)}(hhh]h)}(h5Deliver multicast messages to all destination socketsh]h5Deliver multicast messages to all destination sockets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjRhhhjkhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hXj**Parameters** ``struct net *net`` the associated network namespace ``struct sk_buff_head *arrvq`` queue with arriving messages, to be cloned after destination lookup ``struct sk_buff_head *inputq`` queue with cloned messages, delivered to socket after dest lookup **Description** Multi-threaded: parallel calls with reference to same queues may occurh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj>h]hstruct net *net}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj8ubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjTubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMhj5ubj)}(hc``struct sk_buff_head *arrvq`` queue with arriving messages, to be cloned after destination lookup h](j )}(h``struct sk_buff_head *arrvq``h]j)}(hjwh]hstruct sk_buff_head *arrvq}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjqubj')}(hhh]h)}(hCqueue with arriving messages, to be cloned after destination lookuph]hCqueue with arriving messages, to be cloned after destination lookup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjqubeh}(h]h ]h"]h$]h&]uh1jhjhMhj5ubj)}(hb``struct sk_buff_head *inputq`` queue with cloned messages, delivered to socket after dest lookup h](j )}(h``struct sk_buff_head *inputq``h]j)}(hjh]hstruct sk_buff_head *inputq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(hAqueue with cloned messages, delivered to socket after dest lookuph]hAqueue with cloned messages, delivered to socket after dest lookup}(hjɏhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjŏhMhjƏubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjŏhMhj5ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hFMulti-threaded: parallel calls with reference to same queues may occurh]hFMulti-threaded: parallel calls with reference to same queues may occur}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_sk_conn_proto_rcv (C function)c.tipc_sk_conn_proto_rcvhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hvoid tipc_sk_conn_proto_rcv (struct tipc_sock *tsk, struct sk_buff *skb, struct sk_buff_head *inputq, struct sk_buff_head *xmitq)h]j/)}(hvoid tipc_sk_conn_proto_rcv(struct tipc_sock *tsk, struct sk_buff *skb, struct sk_buff_head *inputq, struct sk_buff_head *xmitq)h](jG)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM&ubjG)}(h h]h }(hj?hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj,hhhj>hM&ubjX)}(htipc_sk_conn_proto_rcvh]j^)}(htipc_sk_conn_proto_rcvh]htipc_sk_conn_proto_rcv}(hjQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjMubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj,hhhj>hM&ubj)}(he(struct tipc_sock *tsk, struct sk_buff *skb, struct sk_buff_head *inputq, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_sock *tskh](j5)}(hj8h]hstruct}(hjmhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjiubjG)}(h h]h }(hjzhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjiubh)}(hhh]j^)}(h tipc_sockh]h tipc_sock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjSsbc.tipc_sk_conn_proto_rcvasbuh1hhjiubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj^)}(htskh]htsk}(hjƐhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjeubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjߐhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjېubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjېubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_sk_conn_proto_rcvasbuh1hhjېubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjېubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjېubj^)}(hskbh]hskb}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjېubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjeubj%)}(hstruct sk_buff_head *inputqh](j5)}(hj8h]hstruct}(hjOhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjKubjG)}(h h]h }(hj\hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjmhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]jc.tipc_sk_conn_proto_rcvasbuh1hhjKubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj^)}(hinputqh]hinputq}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjeubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj̑hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjݑhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjڑubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjߑmodnameN classnameNjj)}j]jc.tipc_sk_conn_proto_rcvasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hxmitqh]hxmitq}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjeubeh}(h]h ]h"]h$]h&]hhuh1jhj,hhhj>hM&ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj(hhhj>hM&ubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1j(hj>hM&hj%hhubj)}(hhh]h)}(h)receive a connection mng protocol messageh]h)receive a connection mng protocol message}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM&hj=hhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj>hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjXjjXjjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct tipc_sock *tsk`` receiving socket ``struct sk_buff *skb`` pointer to message buffer. ``struct sk_buff_head *inputq`` buffer list containing the buffers ``struct sk_buff_head *xmitq`` output message areah](h)}(h**Parameters**h]j)}(hjbh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM*hj\ubj)}(hhh](j)}(h+``struct tipc_sock *tsk`` receiving socket h](j )}(h``struct tipc_sock *tsk``h]j)}(hjh]hstruct tipc_sock *tsk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM'hj{ubj')}(hhh]h)}(hreceiving socketh]hreceiving socket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM'hjubah}(h]h ]h"]h$]h&]uh1j&hj{ubeh}(h]h ]h"]h$]h&]uh1jhjhM'hjxubj)}(h3``struct sk_buff *skb`` pointer to message buffer. h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM(hjubj')}(hhh]h)}(hpointer to message buffer.h]hpointer to message buffer.}(hjӒhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjϒhM(hjВubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjϒhM(hjxubj)}(hC``struct sk_buff_head *inputq`` buffer list containing the buffers h](j )}(h``struct sk_buff_head *inputq``h]j)}(hjh]hstruct sk_buff_head *inputq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM)hjubj')}(hhh]h)}(h"buffer list containing the buffersh]h"buffer list containing the buffers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM)hjxubj)}(h2``struct sk_buff_head *xmitq`` output message areah](j )}(h``struct sk_buff_head *xmitq``h]j)}(hj,h]hstruct sk_buff_head *xmitq}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM+hj&ubj')}(hhh]h)}(houtput message areah]houtput message area}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM*hjBubah}(h]h ]h"]h$]h&]uh1j&hj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhM+hjxubeh}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sendmsg (C function)c.tipc_sendmsghNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hDint tipc_sendmsg (struct socket *sock, struct msghdr *m, size_t dsz)h]j/)}(hCint tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dsz)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMdubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMdubjX)}(h tipc_sendmsgh]j^)}(h tipc_sendmsgh]h tipc_sendmsg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMdubj)}(h3(struct socket *sock, struct msghdr *m, size_t dsz)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjÓhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjГhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjޓubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_sendmsgasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hj5hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj1ubjG)}(h h]h }(hjBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1ubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjShhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]jc.tipc_sendmsgasbuh1hhj1ubjG)}(h h]h }(hjqhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj1ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj^)}(hjJh]hm}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h size_t dszh](h)}(hhh]j^)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_sendmsgasbuh1hhjubjG)}(h h]h }(hjŔhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hdszh]hdsz}(hjӔhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMdubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj~hhhjhMdubah}(h]jyah ](jjeh"]h$]h&]jj)jhuh1j(hjhMdhj{hhubj)}(hhh]h)}(h%send message in connectionless mannerh]h%send message in connectionless manner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMdhjhhubah}(h]h ]h"]h$]h&]uh1jhj{hhhjhMdubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` socket structure ``struct msghdr *m`` message to send ``size_t dsz`` amount of user data to be sent **Description** Message must have an destination specified explicitly. Used for SOCK_RDM and SOCK_DGRAM messages, and for 'SYN' messages on SOCK_SEQPACKET and SOCK_STREAM connections. (Note: 'SYN+' is prohibited on SOCK_STREAM.) **Return** the number of bytes sent on success, or errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhhjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hj>h]hstruct socket *sock}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMehj8ubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMehjTubah}(h]h ]h"]h$]h&]uh1j&hj8ubeh}(h]h ]h"]h$]h&]uh1jhjShMehj5ubj)}(h%``struct msghdr *m`` message to send h](j )}(h``struct msghdr *m``h]j)}(hjwh]hstruct msghdr *m}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMfhjqubj')}(hhh]h)}(hmessage to sendh]hmessage to send}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMfhjubah}(h]h ]h"]h$]h&]uh1j&hjqubeh}(h]h ]h"]h$]h&]uh1jhjhMfhj5ubj)}(h.``size_t dsz`` amount of user data to be sent h](j )}(h``size_t dsz``h]j)}(hjh]h size_t dsz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMghjubj')}(hhh]h)}(hamount of user data to be senth]hamount of user data to be sent}(hjɕhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjŕhMghjƕubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjŕhMghj5ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMihjubh)}(hMessage must have an destination specified explicitly. Used for SOCK_RDM and SOCK_DGRAM messages, and for 'SYN' messages on SOCK_SEQPACKET and SOCK_STREAM connections. (Note: 'SYN+' is prohibited on SOCK_STREAM.)h]hMessage must have an destination specified explicitly. Used for SOCK_RDM and SOCK_DGRAM messages, and for ‘SYN’ messages on SOCK_SEQPACKET and SOCK_STREAM connections. (Note: ‘SYN+’ is prohibited on SOCK_STREAM.)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMmhjubh)}(h7the number of bytes sent on success, or errno otherwiseh]h7the number of bytes sent on success, or errno otherwise}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMnhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sendstream (C function)c.tipc_sendstreamhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hGint tipc_sendstream (struct socket *sock, struct msghdr *m, size_t dsz)h]j/)}(hFint tipc_sendstream(struct socket *sock, struct msghdr *m, size_t dsz)h](jG)}(hinth]hint}(hjWhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjShhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hjfhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjShhhjehMubjX)}(htipc_sendstreamh]j^)}(htipc_sendstreamh]htipc_sendstream}(hjxhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjtubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjShhhjehMubj)}(h3(struct socket *sock, struct msghdr *m, size_t dsz)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjzsbc.tipc_sendstreamasbuh1hhjubjG)}(h h]h }(hjҖhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hj$hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]jΖc.tipc_sendstreamasbuh1hhjubjG)}(h h]h }(hjBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hjJh]hm}(hj]hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h size_t dszh](h)}(hhh]j^)}(hsize_th]hsize_t}(hjxhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjuubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjzmodnameN classnameNjj)}j]jΖc.tipc_sendstreamasbuh1hhjqubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjqubj^)}(hdszh]hdsz}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjehMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjOhhhjehMubah}(h]jJah ](jjeh"]h$]h&]jj)jhuh1j(hjehMhjLhhubj)}(hhh]h)}(hsend stream-oriented datah]hsend stream-oriented data}(hjΗhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj˗hhubah}(h]h ]h"]h$]h&]uh1jhjLhhhjehMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX%**Parameters** ``struct socket *sock`` socket structure ``struct msghdr *m`` data to send ``size_t dsz`` total length of data to be transmitted **Description** Used for SOCK_STREAM data. **Return** the number of bytes sent on success (or partial success), or errno if no data senth](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjh]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj ubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj%ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj$hMhjubj)}(h"``struct msghdr *m`` data to send h](j )}(h``struct msghdr *m``h]j)}(hjHh]hstruct msghdr *m}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjBubj')}(hhh]h)}(h data to sendh]h data to send}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj^ubah}(h]h ]h"]h$]h&]uh1j&hjBubeh}(h]h ]h"]h$]h&]uh1jhj]hMhjubj)}(h6``size_t dsz`` total length of data to be transmitted h](j )}(h``size_t dsz``h]j)}(hjh]h size_t dsz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj{ubj')}(hhh]h)}(h&total length of data to be transmittedh]h&total length of data to be transmitted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hj{ubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hUsed for SOCK_STREAM data.h]hUsed for SOCK_STREAM data.}(hjҘhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hRthe number of bytes sent on success (or partial success), or errno if no data senth]hRthe number of bytes sent on success (or partial success), or errno if no data sent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_send_packet (C function)c.tipc_send_packethNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hHint tipc_send_packet (struct socket *sock, struct msghdr *m, size_t dsz)h]j/)}(hGint tipc_send_packet(struct socket *sock, struct msghdr *m, size_t dsz)h](jG)}(hinth]hint}(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj$hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMfubjG)}(h h]h }(hj7hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj$hhhj6hMfubjX)}(htipc_send_packeth]j^)}(htipc_send_packeth]htipc_send_packet}(hjIhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjEubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj$hhhj6hMfubj)}(h3(struct socket *sock, struct msghdr *m, size_t dsz)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjehhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjaubjG)}(h h]h }(hjrhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjaubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjKsbc.tipc_send_packetasbuh1hhjaubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjaubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj]ubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjיhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjәubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjәubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_send_packetasbuh1hhjәubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjәubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjәubj^)}(hjJh]hm}(hj.hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjәubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj]ubj%)}(h size_t dszh](h)}(hhh]j^)}(hsize_th]hsize_t}(hjIhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKmodnameN classnameNjj)}j]jc.tipc_send_packetasbuh1hhjBubjG)}(h h]h }(hjghhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjBubj^)}(hdszh]hdsz}(hjuhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj]ubeh}(h]h ]h"]h$]h&]hhuh1jhj$hhhj6hMfubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj hhhj6hMfubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj6hMfhjhhubj)}(hhh]h)}(h"send a connection-oriented messageh]h"send a connection-oriented message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMfhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj6hMfubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` socket structure ``struct msghdr *m`` message to send ``size_t dsz`` length of data to be transmitted **Description** Used for SOCK_SEQPACKET messages. **Return** the number of bytes sent on success, or errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjÚhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMjhjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjh]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjޚubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMghjښubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMghjubah}(h]h ]h"]h$]h&]uh1j&hjښubeh}(h]h ]h"]h$]h&]uh1jhjhMghjךubj)}(h%``struct msghdr *m`` message to send h](j )}(h``struct msghdr *m``h]j)}(hjh]hstruct msghdr *m}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhhjubj')}(hhh]h)}(hmessage to sendh]hmessage to send}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhhj/ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj.hMhhjךubj)}(h0``size_t dsz`` length of data to be transmitted h](j )}(h``size_t dsz``h]j)}(hjRh]h size_t dsz}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMihjLubj')}(hhh]h)}(h length of data to be transmittedh]h length of data to be transmitted}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMihjhubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjghMihjךubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMkhjubh)}(h!Used for SOCK_SEQPACKET messages.h]h!Used for SOCK_SEQPACKET messages.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMjhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMlhjubh)}(h7the number of bytes sent on success, or errno otherwiseh]h7the number of bytes sent on success, or errno otherwise}(hjʛhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMmhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_sk_set_orig_addr (C function)c.tipc_sk_set_orig_addrhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hBvoid tipc_sk_set_orig_addr (struct msghdr *m, struct sk_buff *skb)h]j/)}(hAvoid tipc_sk_set_orig_addr(struct msghdr *m, struct sk_buff *skb)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMubjX)}(htipc_sk_set_orig_addrh]j^)}(htipc_sk_set_orig_addrh]htipc_sk_set_orig_addr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMubj)}(h'(struct msghdr *m, struct sk_buff *skb)h](j%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hj6hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj2ubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj2ubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]j)}jjsbc.tipc_sk_set_orig_addrasbuh1hhj2ubjG)}(h h]h }(hjthhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj2ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj^)}(hjJh]hm}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj.ubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjŜhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjœubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjǜmodnameN classnameNjj)}j]jpc.tipc_sk_set_orig_addrasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj.ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMhjhhubj)}(hhh]h)}(h-capture sender's address for received messageh]h/capture sender’s address for received message}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj%hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct msghdr *m`` descriptor for message info ``struct sk_buff *skb`` received message **Note** Address is not captured if not requested by receiver.h](h)}(h**Parameters**h]j)}(hjJh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjDubj)}(hhh](j)}(h1``struct msghdr *m`` descriptor for message info h](j )}(h``struct msghdr *m``h]j)}(hjih]hstruct msghdr *m}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjcubj')}(hhh]h)}(hdescriptor for message infoh]hdescriptor for message info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hMhjubah}(h]h ]h"]h$]h&]uh1j&hjcubeh}(h]h ]h"]h$]h&]uh1jhj~hMhj`ubj)}(h)``struct sk_buff *skb`` received message h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(hreceived messageh]hreceived message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj`ubeh}(h]h ]h"]h$]h&]uh1jhjDubh)}(h**Note**h]j)}(hjݝh]hNote}(hjߝhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj۝ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjDubh)}(h5Address is not captured if not requested by receiver.h]h5Address is not captured if not requested by receiver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"tipc_sk_anc_data_recv (C function)c.tipc_sk_anc_data_recvhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hXint tipc_sk_anc_data_recv (struct msghdr *m, struct sk_buff *skb, struct tipc_sock *tsk)h]j/)}(hWint tipc_sk_anc_data_recv(struct msghdr *m, struct sk_buff *skb, struct tipc_sock *tsk)h](jG)}(hinth]hint}(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj0hMubjX)}(htipc_sk_anc_data_recvh]j^)}(htipc_sk_anc_data_recvh]htipc_sk_anc_data_recv}(hjChhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj?ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj0hMubj)}(h>(struct msghdr *m, struct sk_buff *skb, struct tipc_sock *tsk)h](j%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hj_hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj[ubjG)}(h h]h }(hjlhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj[ubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hj}hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjzubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjEsbc.tipc_sk_anc_data_recvasbuh1hhj[ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj[ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj^)}(hjJh]hm}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjWubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjОhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj̞ubjG)}(h h]h }(hjݞhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj̞ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_sk_anc_data_recvasbuh1hhj̞ubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj̞ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj̞ubj^)}(hskbh]hskb}(hj'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj̞ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjWubj%)}(hstruct tipc_sock *tskh](j5)}(hj8h]hstruct}(hj@hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj<ubjG)}(h h]h }(hjMhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj<ubh)}(hhh]j^)}(h tipc_sockh]h tipc_sock}(hj^hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj`modnameN classnameNjj)}j]jc.tipc_sk_anc_data_recvasbuh1hhj<ubjG)}(h h]h }(hj|hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj<ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj^)}(htskh]htsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj<ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjWubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj0hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj0hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj0hMhjhhubj)}(hhh]h)}(h6optionally capture ancillary data for received messageh]h6optionally capture ancillary data for received message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj0hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjٟjjٟjjjuh1j#hhhj~^hNhNubj)}(hX***Parameters** ``struct msghdr *m`` descriptor for message info ``struct sk_buff *skb`` received message buffer ``struct tipc_sock *tsk`` TIPC port associated with message **Note** Ancillary data is not captured if not requested by receiver. **Return** 0 if successful, otherwise errnoh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjݟubj)}(hhh](j)}(h1``struct msghdr *m`` descriptor for message info h](j )}(h``struct msghdr *m``h]j)}(hjh]hstruct msghdr *m}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(hdescriptor for message infoh]hdescriptor for message info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h0``struct sk_buff *skb`` received message buffer h](j )}(h``struct sk_buff *skb``h]j)}(hj;h]hstruct sk_buff *skb}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj5ubj')}(hhh]h)}(hreceived message bufferh]hreceived message buffer}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMhjQubah}(h]h ]h"]h$]h&]uh1j&hj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhMhjubj)}(h<``struct tipc_sock *tsk`` TIPC port associated with message h](j )}(h``struct tipc_sock *tsk``h]j)}(hjth]hstruct tipc_sock *tsk}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjnubj')}(hhh]h)}(h!TIPC port associated with messageh]h!TIPC port associated with message}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjnubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjݟubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjݟubh)}(hsbc.tipc_recvmsgasbuh1hhjTubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjTubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hjʡhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjơubjG)}(h h]h }(hjסhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjơubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_recvmsgasbuh1hhjơubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjơubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjơubj^)}(hjJh]hm}(hj!hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjơubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubj%)}(h size_t buflenh](h)}(hhh]j^)}(hsize_th]hsize_t}(hj<hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNjj)}j]jc.tipc_recvmsgasbuh1hhj5ubjG)}(h h]h }(hjZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj5ubj^)}(hbuflenh]hbuflen}(hjhhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubj%)}(h int flagsh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj}ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj}ubj^)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjPubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj)hMNubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj)hMNubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj)hMNhjhhubj)}(hhh]h)}(hreceive packet-oriented messageh]hreceive packet-oriented message}(hjǢhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMNhjĢhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj)hMNubeh}(h]h ](jfunctioneh"]h$]h&]jjjjߢjjߢjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` network socket ``struct msghdr *m`` descriptor for message info ``size_t buflen`` length of user buffer area ``int flags`` receive flags **Description** Used for SOCK_DGRAM, SOCK_RDM, and SOCK_SEQPACKET messages. If the complete message doesn't fit in user area, truncate it. **Return** size of returned message data, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMRhjubj)}(hhh](j)}(h'``struct socket *sock`` network socket h](j )}(h``struct socket *sock``h]j)}(hjh]hstruct socket *sock}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMOhjubj')}(hhh]h)}(hnetwork socketh]hnetwork socket}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMOhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMOhjubj)}(h1``struct msghdr *m`` descriptor for message info h](j )}(h``struct msghdr *m``h]j)}(hjAh]hstruct msghdr *m}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMPhj;ubj')}(hhh]h)}(hdescriptor for message infoh]hdescriptor for message info}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMPhjWubah}(h]h ]h"]h$]h&]uh1j&hj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhMPhjubj)}(h-``size_t buflen`` length of user buffer area h](j )}(h``size_t buflen``h]j)}(hjzh]h size_t buflen}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMQhjtubj')}(hhh]h)}(hlength of user buffer areah]hlength of user buffer area}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMQhjubah}(h]h ]h"]h$]h&]uh1j&hjtubeh}(h]h ]h"]h$]h&]uh1jhjhMQhjubj)}(h``int flags`` receive flags h](j )}(h ``int flags``h]j)}(hjh]h int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMRhjubj')}(hhh]h)}(h receive flagsh]h receive flags}(hj̣hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjȣhMRhjɣubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjȣhMRhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMThjubh)}(hzUsed for SOCK_DGRAM, SOCK_RDM, and SOCK_SEQPACKET messages. If the complete message doesn't fit in user area, truncate it.h]h|Used for SOCK_DGRAM, SOCK_RDM, and SOCK_SEQPACKET messages. If the complete message doesn’t fit in user area, truncate it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMShjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMVhjubh)}(h.size of returned message data, errno otherwiseh]h.size of returned message data, errno otherwise}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMWhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_recvstream (C function)c.tipc_recvstreamhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hUint tipc_recvstream (struct socket *sock, struct msghdr *m, size_t buflen, int flags)h]j/)}(hTint tipc_recvstream(struct socket *sock, struct msghdr *m, size_t buflen, int flags)h](jG)}(hinth]hint}(hjZhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjVhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hjihhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjVhhhjhhMubjX)}(htipc_recvstreamh]j^)}(htipc_recvstreamh]htipc_recvstream}(hj{hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjwubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjVhhhjhhMubj)}(hA(struct socket *sock, struct msghdr *m, size_t buflen, int flags)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj}sbc.tipc_recvstreamasbuh1hhjubjG)}(h h]h }(hjդhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct msghdr *mh](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hmsghdrh]hmsghdr}(hj'hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]jѤc.tipc_recvstreamasbuh1hhjubjG)}(h h]h }(hjEhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hjJh]hm}(hj`hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h size_t buflenh](h)}(hhh]j^)}(hsize_th]hsize_t}(hj{hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]jѤc.tipc_recvstreamasbuh1hhjtubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjtubj^)}(hbuflenh]hbuflen}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjtubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h int flagsh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjΥhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hflagsh]hflags}(hjܥhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjhhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjRhhhjhhMubah}(h]jMah ](jjeh"]h$]h&]jj)jhuh1j(hjhhMhjOhhubj)}(hhh]h)}(hreceive stream-oriented datah]hreceive stream-oriented data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjOhhhjhhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` network socket ``struct msghdr *m`` descriptor for message info ``size_t buflen`` total size of user buffer area ``int flags`` receive flags **Description** Used for SOCK_STREAM messages only. If not enough data is available will optionally wait for more; never truncates data. **Return** size of returned message data, errno otherwiseh](h)}(h**Parameters**h]j)}(hj(h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj"ubj)}(hhh](j)}(h'``struct socket *sock`` network socket h](j )}(h``struct socket *sock``h]j)}(hjGh]hstruct socket *sock}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjAubj')}(hhh]h)}(hnetwork socketh]hnetwork socket}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hMhj]ubah}(h]h ]h"]h$]h&]uh1j&hjAubeh}(h]h ]h"]h$]h&]uh1jhj\hMhj>ubj)}(h1``struct msghdr *m`` descriptor for message info h](j )}(h``struct msghdr *m``h]j)}(hjh]hstruct msghdr *m}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjzubj')}(hhh]h)}(hdescriptor for message infoh]hdescriptor for message info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjzubeh}(h]h ]h"]h$]h&]uh1jhjhMhj>ubj)}(h1``size_t buflen`` total size of user buffer area h](j )}(h``size_t buflen``h]j)}(hjh]h size_t buflen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(htotal size of user buffer areah]htotal size of user buffer area}(hjҦhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjΦhMhjϦubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjΦhMhj>ubj)}(h``int flags`` receive flags h](j )}(h ``int flags``h]j)}(hjh]h int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(h receive flagsh]h receive flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj>ubeh}(h]h ]h"]h$]h&]uh1jhj"ubh)}(h**Description**h]j)}(hj-h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj"ubh)}(hyUsed for SOCK_STREAM messages only. If not enough data is available will optionally wait for more; never truncates data.h]hyUsed for SOCK_STREAM messages only. If not enough data is available will optionally wait for more; never truncates data.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj"ubh)}(h **Return**h]j)}(hjTh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj"ubh)}(h.size of returned message data, errno otherwiseh]h.size of returned message data, errno otherwise}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_write_space (C function)c.tipc_write_spacehNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h'void tipc_write_space (struct sock *sk)h]j/)}(h&void tipc_write_space(struct sock *sk)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM:ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM:ubjX)}(htipc_write_spaceh]j^)}(htipc_write_spaceh]htipc_write_space}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM:ubj)}(h(struct sock *sk)h]j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hj֧hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjҧubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjҧubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_write_spaceasbuh1hhjҧubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjҧubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjҧubj^)}(hskh]hsk}(hj/hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjҧubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjΧubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM:ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM:ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM:hjhhubj)}(hhh]h)}(h-wake up thread if port congestion is releasedh]h-wake up thread if port congestion is released}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM:hjVhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM:ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1j#hhhj~^hNhNubj)}(h,**Parameters** ``struct sock *sk`` socketh](h)}(h**Parameters**h]j)}(hj{h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM>hjuubj)}(hhh]j)}(h``struct sock *sk`` socketh](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM@hjubj')}(hhh]h)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM;hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM@hjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_data_ready (C function)c.tipc_data_readyhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h&void tipc_data_ready (struct sock *sk)h]j/)}(h%void tipc_data_ready(struct sock *sk)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMJubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMJubjX)}(htipc_data_readyh]j^)}(htipc_data_readyh]htipc_data_ready}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMJubj)}(h(struct sock *sk)h]j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hj1hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj-ubjG)}(h h]h }(hj>hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj-ubh)}(hhh]j^)}(hsockh]hsock}(hjOhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]j)}jjsbc.tipc_data_readyasbuh1hhj-ubjG)}(h h]h }(hjohhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj-ubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj^)}(hskh]hsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj)ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMJubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMJubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMJhjhhubj)}(hhh]h)}(h7wake up threads to indicate messages have been receivedh]h7wake up threads to indicate messages have been received}(hjhhhNhNubah}(h]h ]h"] h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMJhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMJubeh}(h]h ](jfunctioneh"]h$]h&]jjjj̩jj̩jjjuh1j#hhhj~^hNhNubj)}(h,**Parameters** ``struct sock *sk`` socketh](h)}(h**Parameters**h]j)}(hj֩h]h Parameters}(hjةhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjԩubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMNhjЩubj)}(hhh]j)}(h``struct sock *sk`` socketh](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMPhjubj')}(hhh]h)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMKhj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj hMPhjubah}(h]h ]h"]h$]h&]uh1jhjЩubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_sk_filter_connect (C function)c.tipc_sk_filter_connecthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hdbool tipc_sk_filter_connect (struct tipc_sock *tsk, struct sk_buff *skb, struct sk_buff_head *xmitq)h]j/)}(hcbool tipc_sk_filter_connect(struct tipc_sock *tsk, struct sk_buff *skb, struct sk_buff_head *xmitq)h](jG)}(hjgh]hbool}(hjOhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hj]hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjKhhhj\hMubjX)}(htipc_sk_filter_connecth]j^)}(htipc_sk_filter_connecth]htipc_sk_filter_connect}(hjohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjkubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjKhhhj\hMubj)}(hH(struct tipc_sock *tsk, struct sk_buff *skb, struct sk_buff_head *xmitq)h](j%)}(hstruct tipc_sock *tskh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h tipc_sockh]h tipc_sock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjqsbc.tipc_sk_filter_connectasbuh1hhjubjG)}(h h]h }(hjɪhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjתhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(htskh]htsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jŪc.tipc_sk_filter_connectasbuh1hhjubjG)}(h h]h }(hj9hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjThhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjmhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjiubjG)}(h h]h }(hjzhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjiubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jŪc.tipc_sk_filter_connectasbuh1hhjiubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj^)}(hxmitqh]hxmitq}(hjīhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjKhhhj\hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjGhhhj\hMubah}(h]jBah ](jjeh"]h$]h&]jj)jhuh1j(hj\hMhjDhhubj)}(hhh]h)}(h4check incoming message for a connection-based socketh]h4check incoming message for a connection-based socket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjDhhhj\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct tipc_sock *tsk`` TIPC socket ``struct sk_buff *skb`` pointer to message buffer. ``struct sk_buff_head *xmitq`` for Nagle ACK if any **Return** true if message should be added to receive queue, false otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj ubj)}(hhh](j)}(h&``struct tipc_sock *tsk`` TIPC socket h](j )}(h``struct tipc_sock *tsk``h]j)}(hj/h]hstruct tipc_sock *tsk}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj)ubj')}(hhh]h)}(h TIPC socketh]h TIPC socket}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjEubah}(h]h ]h"]h$]h&]uh1j&hj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhMhj&ubj)}(h3``struct sk_buff *skb`` pointer to message buffer. h](j )}(h``struct sk_buff *skb``h]j)}(hjhh]hstruct sk_buff *skb}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjbubj')}(hhh]h)}(hpointer to message buffer.h]hpointer to message buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMhj~ubah}(h]h ]h"]h$]h&]uh1j&hjbubeh}(h]h ]h"]h$]h&]uh1jhj}hMhj&ubj)}(h4``struct sk_buff_head *xmitq`` for Nagle ACK if any h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjh]hstruct sk_buff_head *xmitq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(hfor Nagle ACK if anyh]hfor Nagle ACK if any}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj&ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h **Return**h]j)}(hjܬh]hReturn}(hjެhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjڬubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj ubh)}(hAtrue if message should be added to receive queue, false otherwiseh]hAtrue if message should be added to receive queue, false otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jrcvbuf_limit (C function)c.rcvbuf_limithNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h@unsigned int rcvbuf_limit (struct sock *sk, struct sk_buff *skb)h]j/)}(h?unsigned int rcvbuf_limit(struct sock *sk, struct sk_buff *skb)h](jG)}(hunsignedh]hunsigned}(hj!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hj0hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj/hMubjG)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj/hMubjG)}(h h]h }(hjLhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj/hMubjX)}(h rcvbuf_limith]j^)}(h rcvbuf_limith]h rcvbuf_limit}(hj^hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjZubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj/hMubj)}(h&(struct sock *sk, struct sk_buff *skb)h](j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hjzhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjvubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjvubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj`sbc.rcvbuf_limitasbuh1hhjvubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjvubj)}(hjh]h*}(hjƭhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj^)}(hskh]hsk}(hjӭhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjrubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.rcvbuf_limitasbuh1hhjubjG)}(h h]h }(hj(hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjChhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjrubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj/hMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj/hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj/hMhjhhubj)}(hhh]h)}(h1get proper overload limit of socket receive queueh]h1get proper overload limit of socket receive queue}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj/hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct sock *sk`` socket ``struct sk_buff *skb`` message **Description** For connection oriented messages, irrespective of importance, default queue limit is 2 MB. For connectionless messages, queue limits are based on message importance as follows: TIPC_LOW_IMPORTANCE (2 MB) TIPC_MEDIUM_IMPORTANCE (4 MB) TIPC_HIGH_IMPORTANCE (8 MB) TIPC_CRITICAL_IMPORTANCE (16 MB) **Return** overload limit according to corresponding message importanceh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj)}(hhh](j)}(h``struct sock *sk`` socket h](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(hsocketh]hsocket}(hjǮhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjîhMhjĮubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjîhMhjubj)}(h ``struct sk_buff *skb`` message h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubj')}(hhh]h)}(hmessageh]hmessage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj"h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hZFor connection oriented messages, irrespective of importance, default queue limit is 2 MB.h]hZFor connection oriented messages, irrespective of importance, default queue limit is 2 MB.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hUFor connectionless messages, queue limits are based on message importance as follows:h]hUFor connectionless messages, queue limits are based on message importance as follows:}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hTIPC_LOW_IMPORTANCE (2 MB) TIPC_MEDIUM_IMPORTANCE (4 MB) TIPC_HIGH_IMPORTANCE (8 MB) TIPC_CRITICAL_IMPORTANCE (16 MB)h]hTIPC_LOW_IMPORTANCE (2 MB) TIPC_MEDIUM_IMPORTANCE (4 MB) TIPC_HIGH_IMPORTANCE (8 MB) TIPC_CRITICAL_IMPORTANCE (16 MB)}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(h **Return**h]j)}(hjgh]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjubh)}(hint tipc_sk_backlog_rcv (struct sock *sk, struct sk_buff *skb)h]j/)}(h=int tipc_sk_backlog_rcv(struct sock *sk, struct sk_buff *skb)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMY ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhMY ubjX)}(htipc_sk_backlog_rcvh]j^)}(htipc_sk_backlog_rcvh]htipc_sk_backlog_rcv}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhMY ubj)}(h&(struct sock *sk, struct sk_buff *skb)h](j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hj˲hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjDzubjG)}(h h]h }(hjزhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjDzubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_sk_backlog_rcvasbuh1hhjDzubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjDzubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDzubj^)}(hskh]hsk}(hj$hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjDzubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjòubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hj=hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj9ubjG)}(h h]h }(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj9ubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hj[hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjXubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]jc.tipc_sk_backlog_rcvasbuh1hhj9ubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj9ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj^)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjòubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMY ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhMY ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhMY hjhhubj)}(hhh]h)}(h*handle incoming message from backlog queueh]h*handle incoming message from backlog queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMY hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMY ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjֳjjֳjjjuh1j#hhhj~^hNhNubj)}(h~**Parameters** ``struct sock *sk`` socket ``struct sk_buff *skb`` message **Description** Caller must hold socket lockh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj޳ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM] hjڳubj)}(hhh](j)}(h``struct sock *sk`` socket h](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMZ hjubj')}(hhh]h)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMZ hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMZ hjubj)}(h ``struct sk_buff *skb`` message h](j )}(h``struct sk_buff *skb``h]j)}(hj8h]hstruct sk_buff *skb}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM[ hj2ubj')}(hhh]h)}(hmessageh]hmessage}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhM[ hjNubah}(h]h ]h"]h$]h&]uh1j&hj2ubeh}(h]h ]h"]h$]h&]uh1jhjMhM[ hjubeh}(h]h ]h"]h$]h&]uh1jhjڳubh)}(h**Description**h]j)}(hjsh]h Description}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM] hjڳubh)}(hCaller must hold socket lockh]hCaller must hold socket lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM\ hjڳubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_enqueue (C function)c.tipc_sk_enqueuehNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hjvoid tipc_sk_enqueue (struct sk_buff_head *inputq, struct sock *sk, u32 dport, struct sk_buff_head *xmitq)h]j/)}(hivoid tipc_sk_enqueue(struct sk_buff_head *inputq, struct sock *sk, u32 dport, struct sk_buff_head *xmitq)h](jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMq ubjG)}(h h]h }(hjǴhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjƴhMq ubjX)}(htipc_sk_enqueueh]j^)}(htipc_sk_enqueueh]htipc_sk_enqueue}(hjٴhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjմubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjƴhMq ubj)}(hU(struct sk_buff_head *inputq, struct sock *sk, u32 dport, struct sk_buff_head *xmitq)h](j%)}(hstruct sk_buff_head *inputqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj۴sbc.tipc_sk_enqueueasbuh1hhjubjG)}(h h]h }(hj3hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hinputqh]hinputq}(hjNhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hjghhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjcubjG)}(h h]h }(hjthhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjcubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j/c.tipc_sk_enqueueasbuh1hhjcubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjcubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj^)}(hskh]hsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjcubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h u32 dporth](h)}(hhh]j^)}(hu32h]hu32}(hjڵhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj׵ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjܵmodnameN classnameNjj)}j]j/c.tipc_sk_enqueueasbuh1hhjӵubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjӵubj^)}(hdporth]hdport}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjӵubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hstruct sk_buff_head *xmitqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj,hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hj=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j/c.tipc_sk_enqueueasbuh1hhjubjG)}(h h]h }(hj[hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hxmitqh]hxmitq}(hjvhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjƴhMq ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjƴhMq ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjƴhMq hjhhubj)}(hhh]h)}(hgextract all buffers with destination 'dport' from inputq and try adding them to socket or backlog queueh]hkextract all buffers with destination ‘dport’ from inputq and try adding them to socket or backlog queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMq hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjƴhMq ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX?**Parameters** ``struct sk_buff_head *inputq`` list of incoming buffers with potentially different destinations ``struct sock *sk`` socket where the buffers should be enqueued ``u32 dport`` port number for the socket ``struct sk_buff_head *xmitq`` output queue **Description** Caller must hold socket lockh](h)}(h**Parameters**h]j)}(hj¶h]h Parameters}(hjĶhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMu hjubj)}(hhh](j)}(ha``struct sk_buff_head *inputq`` list of incoming buffers with potentially different destinations h](j )}(h``struct sk_buff_head *inputq``h]j)}(hjh]hstruct sk_buff_head *inputq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj߶ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMs hj۶ubj')}(hhh]h)}(h@list of incoming buffers with potentially different destinationsh]h@list of incoming buffers with potentially different destinations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMs hjubah}(h]h ]h"]h$]h&]uh1j&hj۶ubeh}(h]h ]h"]h$]h&]uh1jhjhMs hjضubj)}(h@``struct sock *sk`` socket where the buffers should be enqueued h](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMt hjubj')}(hhh]h)}(h+socket where the buffers should be enqueuedh]h+socket where the buffers should be enqueued}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMt hj0ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj/hMt hjضubj)}(h)``u32 dport`` port number for the socket h](j )}(h ``u32 dport``h]j)}(hjSh]h u32 dport}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMu hjMubj')}(hhh]h)}(hport number for the socketh]hport number for the socket}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMu hjiubah}(h]h ]h"]h$]h&]uh1j&hjMubeh}(h]h ]h"]h$]h&]uh1jhjhhMu hjضubj)}(h,``struct sk_buff_head *xmitq`` output queue h](j )}(h``struct sk_buff_head *xmitq``h]j)}(hjh]hstruct sk_buff_head *xmitq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMv hjubj')}(hhh]h)}(h output queueh]h output queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMv hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMv hjضubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjǷh]h Description}(hjɷhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjŷubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMx hjubh)}(hCaller must hold socket lockh]hCaller must hold socket lock}(hjݷhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMw hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_rcv (C function) c.tipc_sk_rcvhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h?void tipc_sk_rcv (struct net *net, struct sk_buff_head *inputq)h]j/)}(h>void tipc_sk_rcv(struct net *net, struct sk_buff_head *inputq)h](jG)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM ubjX)}(h tipc_sk_rcvh]j^)}(h tipc_sk_rcvh]h tipc_sk_rcv}(hj-hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj)ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM ubj)}(h.(struct net *net, struct sk_buff_head *inputq)h](j%)}(hstruct net *neth](j5)}(hj8h]hstruct}(hjIhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjEubjG)}(h h]h }(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjEubh)}(hhh]j^)}(hneth]hnet}(hjghhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]j)}jj/sb c.tipc_sk_rcvasbuh1hhjEubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjEubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj^)}(hneth]hnet}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjAubj%)}(hstruct sk_buff_head *inputqh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjȸhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(h sk_buff_headh]h sk_buff_head}(hjٸhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjָubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj۸modnameN classnameNjj)}j]j c.tipc_sk_rcvasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hinputqh]hinputq}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjAubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM hjhhubj)}(hhh]h)}(h"handle a chain of incoming buffersh]h"handle a chain of incoming buffers}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj9hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjTjjTjjjuh1j#hhhj~^hNhNubj)}(hX **Parameters** ``struct net *net`` the associated network namespace ``struct sk_buff_head *inputq`` buffer list containing the buffers Consumes all buffers in list until inputq is empty **Note** may be called in multiple threads referring to the same queueh](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjXubj)}(hhh](j)}(h5``struct net *net`` the associated network namespace h](j )}(h``struct net *net``h]j)}(hj}h]hstruct net *net}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjwubj')}(hhh]h)}(h the associated network namespaceh]h the associated network namespace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjwubeh}(h]h ]h"]h$]h&]uh1jhjhM hjtubj)}(hv``struct sk_buff_head *inputq`` buffer list containing the buffers Consumes all buffers in list until inputq is empty h](j )}(h``struct sk_buff_head *inputq``h]j)}(hjh]hstruct sk_buff_head *inputq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj')}(hhh]h)}(hUbuffer list containing the buffers Consumes all buffers in list until inputq is emptyh]hUbuffer list containing the buffers Consumes all buffers in list until inputq is empty}(hjϹhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj̹ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj˹hM hjtubeh}(h]h ]h"]h$]h&]uh1jhjXubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjXubh)}(h=may be called in multiple threads referring to the same queueh]h=may be called in multiple threads referring to the same queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjXubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_connect (C function)c.tipc_connecthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h]int tipc_connect (struct socket *sock, struct sockaddr_unsized *dest, int destlen, int flags)h]j/)}(h\int tipc_connect(struct socket *sock, struct sockaddr_unsized *dest, int destlen, int flags)h](jG)}(hinth]hint}(hj7hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM ubjG)}(h h]h }(hjFhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj3hhhjEhM ubjX)}(h tipc_connecth]j^)}(h tipc_connecth]h tipc_connect}(hjXhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjTubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj3hhhjEhM ubj)}(hL(struct socket *sock, struct sockaddr_unsized *dest, int destlen, int flags)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjthhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjpubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjpubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjZsbc.tipc_connectasbuh1hhjpubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjpubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj^)}(hsockh]hsock}(hjͺhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjlubj%)}(hstruct sockaddr_unsized *desth](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsockaddr_unsizedh]hsockaddr_unsized}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_connectasbuh1hhjubjG)}(h h]h }(hj"hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hdesth]hdest}(hj=hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjlubj%)}(h int destlenh](jG)}(hinth]hint}(hjVhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjRubjG)}(h h]h }(hjdhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjRubj^)}(hdestlenh]hdestlen}(hjrhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjlubj%)}(h int flagsh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjlubeh}(h]h ]h"]h$]h&]hhuh1jhj3hhhjEhM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj/hhhjEhM ubah}(h]j*ah ](jjeh"]h$]h&]jj)jhuh1j(hjEhM hj,hhubj)}(hhh]h)}(h+establish a connection to another TIPC porth]h+establish a connection to another TIPC port}(hjѻhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjλhhubah}(h]h ]h"]h$]h&]uh1jhj,hhhjEhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX"**Parameters** ``struct socket *sock`` socket structure ``struct sockaddr_unsized *dest`` socket address for destination port ``int destlen`` size of socket address data structure ``int flags`` file-related flags associated with socket **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjh]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj ubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hM hj(ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj'hM hj ubj)}(hF``struct sockaddr_unsized *dest`` socket address for destination port h](j )}(h!``struct sockaddr_unsized *dest``h]j)}(hjKh]hstruct sockaddr_unsized *dest}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjEubj')}(hhh]h)}(h#socket address for destination porth]h#socket address for destination port}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hM hjaubah}(h]h ]h"]h$]h&]uh1j&hjEubeh}(h]h ]h"]h$]h&]uh1jhj`hM hj ubj)}(h6``int destlen`` size of socket address data structure h](j )}(h``int destlen``h]j)}(hjh]h int destlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj~ubj')}(hhh]h)}(h%size of socket address data structureh]h%size of socket address data structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hj~ubeh}(h]h ]h"]h$]h&]uh1jhjhM hj ubj)}(h8``int flags`` file-related flags associated with socket h](j )}(h ``int flags``h]j)}(hjh]h int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj')}(hhh]h)}(h)file-related flags associated with socketh]h)file-related flags associated with socket}(hjּhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjҼhM hjӼubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjҼhM hj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_listen (C function) c.tipc_listenhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h.int tipc_listen (struct socket *sock, int len)h]j/)}(h-int tipc_listen(struct socket *sock, int len)h](jG)}(hinth]hint}(hj=hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj9hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMb ubjG)}(h h]h }(hjLhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj9hhhjKhMb ubjX)}(h tipc_listenh]j^)}(h tipc_listenh]h tipc_listen}(hj^hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjZubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj9hhhjKhMb ubj)}(h(struct socket *sock, int len)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjzhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjvubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjvubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj`sb c.tipc_listenasbuh1hhjvubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjvubj)}(hjh]h*}(hjƽhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj^)}(hsockh]hsock}(hjӽhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjrubj%)}(hint lenh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjrubeh}(h]h ]h"]h$]h&]hhuh1jhj9hhhjKhMb ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj5hhhjKhMb ubah}(h]j0ah ](jjeh"]h$]h&]jj)jhuh1j(hjKhMb hj2hhubj)}(hhh]h)}(h/allow socket to listen for incoming connectionsh]h/allow socket to listen for incoming connections}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMb hj/hhubah}(h]h ]h"]h$]h&]uh1jhj2hhhjKhMb ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjJjjJjjjuh1j#hhhj~^hNhNubj)}(h}**Parameters** ``struct socket *sock`` socket structure ``int len`` (unused) **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMf hjNubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjsh]hstruct socket *sock}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMc hjmubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMc hjubah}(h]h ]h"]h$]h&]uh1j&hjmubeh}(h]h ]h"]h$]h&]uh1jhjhMc hjjubj)}(h``int len`` (unused) h](j )}(h ``int len``h]j)}(hjh]hint len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMd hjubj')}(hhh]h)}(h(unused)h]h(unused)}(hjžhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMd hj¾ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMd hjjubeh}(h]h ]h"]h$]h&]uh1jhjNubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMf hjNubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMf hjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_accept (C function) c.tipc_accepthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h\int tipc_accept (struct socket *sock, struct socket *new_sock, struct proto_accept_arg *arg)h]j/)}(h[int tipc_accept(struct socket *sock, struct socket *new_sock, struct proto_accept_arg *arg)h](jG)}(hinth]hint}(hj,hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj(hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM ubjG)}(h h]h }(hj;hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj(hhhj:hM ubjX)}(h tipc_accepth]j^)}(h tipc_accepth]h tipc_accept}(hjMhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjIubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj(hhhj:hM ubj)}(hL(struct socket *sock, struct socket *new_sock, struct proto_accept_arg *arg)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjihhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjeubjG)}(h h]h }(hjvhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjOsb c.tipc_acceptasbuh1hhjeubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjeubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj^)}(hsockh]hsock}(hj¿hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjaubj%)}(hstruct socket *new_sockh](j5)}(hj8h]hstruct}(hjۿhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj׿ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj׿ubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.tipc_acceptasbuh1hhj׿ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj׿ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj׿ubj^)}(hnew_sockh]hnew_sock}(hj2hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj׿ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjaubj%)}(hstruct proto_accept_arg *argh](j5)}(hj8h]hstruct}(hjKhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjGubjG)}(h h]h }(hjXhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGubh)}(hhh]j^)}(hproto_accept_argh]hproto_accept_arg}(hjihhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjfubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjkmodnameN classnameNjj)}j]j c.tipc_acceptasbuh1hhjGubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj^)}(hargh]harg}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjaubeh}(h]h ]h"]h$]h&]hhuh1jhj(hhhj:hM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj$hhhj:hM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj:hM hj!hhubj)}(hhh]h)}(hwait for connection requesth]hwait for connection request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhj!hhhj:hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct socket *sock`` listening socket ``struct socket *new_sock`` new socket that is to be connected ``struct proto_accept_arg *arg`` arguments for accept **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj)}(hhh](j)}(h)``struct socket *sock`` listening socket h](j )}(h``struct socket *sock``h]j)}(hj h]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj')}(hhh]h)}(hlistening socketh]hlistening socket}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hM hj#ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj"hM hjubj)}(h?``struct socket *new_sock`` new socket that is to be connected h](j )}(h``struct socket *new_sock``h]j)}(hjFh]hstruct socket *new_sock}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj@ubj')}(hhh]h)}(h"new socket that is to be connectedh]h"new socket that is to be connected}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hM hj\ubah}(h]h ]h"]h$]h&]uh1j&hj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hM hjubj)}(h6``struct proto_accept_arg *arg`` arguments for accept h](j )}(h ``struct proto_accept_arg *arg``h]j)}(hjh]hstruct proto_accept_arg *arg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjyubj')}(hhh]h)}(harguments for accepth]harguments for accept}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjyubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_shutdown (C function)c.tipc_shutdownhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h0int tipc_shutdown (struct socket *sock, int how)h]j/)}(h/int tipc_shutdown(struct socket *sock, int how)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj hM ubjX)}(h tipc_shutdownh]j^)}(h tipc_shutdownh]h tipc_shutdown}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj hM ubj)}(h(struct socket *sock, int how)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hj<hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj8ubjG)}(h h]h }(hjIhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj8ubh)}(hhh]j^)}(hsocketh]hsocket}(hjZhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jj"sbc.tipc_shutdownasbuh1hhj8ubjG)}(h h]h }(hjzhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj8ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj4ubj%)}(hint howh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hhowh]hhow}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj4ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj hM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj hM hjhhubj)}(hhh]h)}(hshutdown socket connectionh]hshutdown socket connection}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct socket *sock`` socket structure ``int how`` direction to close (must be SHUT_RDWR) **Description** Terminates connection (if necessary), then purges socket's receive queue. **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hj5h]hstruct socket *sock}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj/ubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhM hjKubah}(h]h ]h"]h$]h&]uh1j&hj/ubeh}(h]h ]h"]h$]h&]uh1jhjJhM hj,ubj)}(h3``int how`` direction to close (must be SHUT_RDWR) h](j )}(h ``int how``h]j)}(hjnh]hint how}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjhubj')}(hhh]h)}(h&direction to close (must be SHUT_RDWR)h]h&direction to close (must be SHUT_RDWR)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjhubeh}(h]h ]h"]h$]h&]uh1jhjhM hj,ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(hITerminates connection (if necessary), then purges socket's receive queue.h]hKTerminates connection (if necessary), then purges socket’s receive queue.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_setsockopt (C function)c.tipc_setsockopthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hZint tipc_setsockopt (struct socket *sock, int lvl, int opt, sockptr_t ov, unsigned int ol)h]j/)}(hYint tipc_setsockopt(struct socket *sock, int lvl, int opt, sockptr_t ov, unsigned int ol)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM5 ubjG)}(h h]h }(hj$hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj#hM5 ubjX)}(htipc_setsockopth]j^)}(htipc_setsockopth]htipc_setsockopt}(hj6hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj2ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj#hM5 ubj)}(hF(struct socket *sock, int lvl, int opt, sockptr_t ov, unsigned int ol)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjRhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjNubjG)}(h h]h }(hj_hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNubh)}(hhh]j^)}(hsocketh]hsocket}(hjphhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNjj)}j]j)}jj8sbc.tipc_setsockoptasbuh1hhjNubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hint lvlh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hlvlh]hlvl}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hint opth](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hopth]hopt}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(h sockptr_t ovh](h)}(hhh]j^)}(h sockptr_th]h sockptr_t}(hj1hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]jc.tipc_setsockoptasbuh1hhj*ubjG)}(h h]h }(hjOhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj*ubj^)}(hovh]hov}(hj]hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubj%)}(hunsigned int olh](jG)}(hunsignedh]hunsigned}(hjvhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubjG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjrubj^)}(holh]hol}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hM5 ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj hhhj#hM5 ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj#hM5 hj hhubj)}(hhh]h)}(hset socket optionh]hset socket option}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM5 hjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj#hM5 ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hXp**Parameters** ``struct socket *sock`` socket structure ``int lvl`` option level ``int opt`` option identifier ``sockptr_t ov`` pointer to new option value ``unsigned int ol`` length of option value **Description** For stream sockets only, accepts and ignores all IPPROTO_TCP options (to ease compatibility). **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM9 hjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjh]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM6 hjubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hM6 hj/ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj.hM6 hjubj)}(h``int lvl`` option level h](j )}(h ``int lvl``h]j)}(hjRh]hint lvl}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM7 hjLubj')}(hhh]h)}(h option levelh]h option level}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM7 hjhubah}(h]h ]h"]h$]h&]uh1j&hjLubeh}(h]h ]h"]h$]h&]uh1jhjghM7 hjubj)}(h``int opt`` option identifier h](j )}(h ``int opt``h]j)}(hjh]hint opt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM8 hjubj')}(hhh]h)}(hoption identifierh]hoption identifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM8 hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM8 hjubj)}(h-``sockptr_t ov`` pointer to new option value h](j )}(h``sockptr_t ov``h]j)}(hjh]h sockptr_t ov}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM9 hjubj')}(hhh]h)}(hpointer to new option valueh]hpointer to new option value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9 hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM9 hjubj)}(h+``unsigned int ol`` length of option value h](j )}(h``unsigned int ol``h]j)}(hjh]hunsigned int ol}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM: hjubj')}(hhh]h)}(hlength of option valueh]hlength of option value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM: hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM: hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj8h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM< hjubh)}(h]For stream sockets only, accepts and ignores all IPPROTO_TCP options (to ease compatibility).h]h]For stream sockets only, accepts and ignores all IPPROTO_TCP options (to ease compatibility).}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM; hjubh)}(h **Return**h]j)}(hj_h]hReturn}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM> hjubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM? hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_getsockopt (C function)c.tipc_getsockopthNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h\int tipc_getsockopt (struct socket *sock, int lvl, int opt, char __user *ov, int __user *ol)h]j/)}(h[int tipc_getsockopt(struct socket *sock, int lvl, int opt, char __user *ov, int __user *ol)h](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhM ubjX)}(htipc_getsockopth]j^)}(htipc_getsockopth]htipc_getsockopt}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhM ubj)}(hH(struct socket *sock, int lvl, int opt, char __user *ov, int __user *ol)h](j%)}(hstruct socket *sockh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsocketh]hsocket}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_getsockoptasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hsockh]hsock}(hj:hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint lvlh](jG)}(hinth]hint}(hjShhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjOubjG)}(h h]h }(hjahhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjOubj^)}(hlvlh]hlvl}(hjohhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint opth](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hopth]hopt}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hchar __user *ovh](jG)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh__user}(hjhhhNhNubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hovh]hov}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(hint __user *olh](jG)}(hinth]hint}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubh__user}(hj hhhNhNubjG)}(h h]h }(hj1hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj ubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj^)}(holh]hol}(hjLhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhM hjhhubj)}(hhh]h)}(hget socket optionh]hget socket option}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjshhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct socket *sock`` socket structure ``int lvl`` option level ``int opt`` option identifier ``char __user *ov`` receptacle for option value ``int __user *ol`` receptacle for length of option value **Description** For stream sockets only, returns 0 length result for all IPPROTO_TCP options (to ease compatibility). **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj)}(hhh](j)}(h)``struct socket *sock`` socket structure h](j )}(h``struct socket *sock``h]j)}(hjh]hstruct socket *sock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj')}(hhh]h)}(hsocket structureh]hsocket structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h``int lvl`` option level h](j )}(h ``int lvl``h]j)}(hjh]hint lvl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj')}(hhh]h)}(h option levelh]h option level}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(h``int opt`` option identifier h](j )}(h ``int opt``h]j)}(hj)h]hint opt}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj#ubj')}(hhh]h)}(hoption identifierh]hoption identifier}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hM hj?ubah}(h]h ]h"]h$]h&]uh1j&hj#ubeh}(h]h ]h"]h$]h&]uh1jhj>hM hjubj)}(h0``char __user *ov`` receptacle for option value h](j )}(h``char __user *ov``h]j)}(hjbh]hchar __user *ov}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj\ubj')}(hhh]h)}(hreceptacle for option valueh]hreceptacle for option value}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhM hjxubah}(h]h ]h"]h$]h&]uh1j&hj\ubeh}(h]h ]h"]h$]h&]uh1jhjwhM hjubj)}(h9``int __user *ol`` receptacle for length of option value h](j )}(h``int __user *ol``h]j)}(hjh]hint __user *ol}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj')}(hhh]h)}(h%receptacle for length of option valueh]h%receptacle for length of option value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(heFor stream sockets only, returns 0 length result for all IPPROTO_TCP options (to ease compatibility).h]heFor stream sockets only, returns 0 length result for all IPPROTO_TCP options (to ease compatibility).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_socket_init (C function)c.tipc_socket_inithNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hint tipc_socket_init (void)h]j/)}(hint tipc_socket_init(void)h](jG)}(hinth]hint}(hjBhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMd ubjG)}(h h]h }(hjQhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj>hhhjPhMd ubjX)}(htipc_socket_inith]j^)}(htipc_socket_inith]htipc_socket_init}(hjchhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj_ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj>hhhjPhMd ubj)}(h(void)h]j%)}(hvoidh]jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj{ubah}(h]h ]h"]h$]h&]noemphhhuh1j$hjwubah}(h]h ]h"]h$]h&]hhuh1jhj>hhhjPhMd ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hj:hhhjPhMd ubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1j(hjPhMd hj7hhubj)}(hhh]h)}(h initialize TIPC socket interfaceh]h initialize TIPC socket interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMd hjhhubah}(h]h ]h"]h$]h&]uh1jhj7hhhjPhMd ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hR**Parameters** ``void`` no arguments **Return** 0 on success, errno otherwiseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMh hjubj)}(hhh]j)}(h``void`` no arguments h](j )}(h``void``h]j)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKhjubj')}(hhh]h)}(h no argumentsh]h no arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj%h]hReturn}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKhjubh)}(h0 on success, errno otherwiseh]h0 on success, errno otherwise}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMf hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_socket_stop (C function)c.tipc_socket_stophNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(hvoid tipc_socket_stop (void)h]j/)}(hvoid tipc_socket_stop(void)h](jG)}(hvoidh]hvoid}(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjfhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM} ubjG)}(h h]h }(hjyhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjfhhhjxhM} ubjX)}(htipc_socket_stoph]j^)}(htipc_socket_stoph]htipc_socket_stop}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjfhhhjxhM} ubj)}(h(void)h]j%)}(hvoidh]jG)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubah}(h]h ]h"]h$]h&]noemphhhuh1j$hjubah}(h]h ]h"]h$]h&]hhuh1jhjfhhhjxhM} ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjbhhhjxhM} ubah}(h]j]ah ](jjeh"]h$]h&]jj)jhuh1j(hjxhM} hj_hhubj)}(hhh]h)}(hstop TIPC socket interfaceh]hstop TIPC socket interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM} hjhhubah}(h]h ]h"]h$]h&]uh1jhj_hhhjxhM} ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(h'**Parameters** ``void`` no argumentsh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hjubj)}(hhh]j)}(h``void`` no argumentsh](j )}(h``void``h]j)}(hjh]hvoid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM hj ubj')}(hhh]h)}(h no argumentsh]h no arguments}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chKhj(ubah}(h]h ]h"]h$]h&]uh1j&hj ubeh}(h]h ]h"]h$]h&]uh1jhj'hM hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_filtering (C function)c.tipc_sk_filteringhNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h(bool tipc_sk_filtering (struct sock *sk)h]j/)}(h'bool tipc_sk_filtering(struct sock *sk)h](jG)}(hjgh]hbool}(hjlhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMubjG)}(h h]h }(hjzhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhhjyhMubjX)}(htipc_sk_filteringh]j^)}(htipc_sk_filteringh]htipc_sk_filtering}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhhjyhMubj)}(h(struct sock *sk)h]j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_sk_filteringasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskh]hsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhhjyhMubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjdhhhjyhMubah}(h]j_ah ](jjeh"]h$]h&]jj)jhuh1j(hjyhMhjahhubj)}(hhh]h)}(h"check if a socket should be tracedh]h"check if a socket should be traced}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhj(hhubah}(h]h ]h"]h$]h&]uh1jhjahhhjyhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjCjjCjjjuh1j#hhhj~^hNhNubj)}(hXT**Parameters** ``struct sock *sk`` the socket to be examined **Description** **sysctl_tipc_sk_filter** is used as the socket tuple for filtering: (portid, sock type, name type, name lower, name upper) **Return** true if the socket meets the socket tuple data (value 0 = 'any') or when there is no tuple set (all = 0), otherwise falseh](h)}(h**Parameters**h]j)}(hjMh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjGubj)}(hhh]j)}(h.``struct sock *sk`` the socket to be examined h](j )}(h``struct sock *sk``h]j)}(hjlh]hstruct sock *sk}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjfubj')}(hhh]h)}(hthe socket to be examinedh]hthe socket to be examined}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j&hjfubeh}(h]h ]h"]h$]h&]uh1jhjhMhjcubah}(h]h ]h"]h$]h&]uh1jhjGubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjGubh)}(h{**sysctl_tipc_sk_filter** is used as the socket tuple for filtering: (portid, sock type, name type, name lower, name upper)h](j)}(h**sysctl_tipc_sk_filter**h]hsysctl_tipc_sk_filter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhb is used as the socket tuple for filtering: (portid, sock type, name type, name lower, name upper)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjGubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjGubh)}(hytrue if the socket meets the socket tuple data (value 0 = 'any') or when there is no tuple set (all = 0), otherwise falseh]h}true if the socket meets the socket tuple data (value 0 = ‘any’) or when there is no tuple set (all = 0), otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_overlimit1 (C function)c.tipc_sk_overlimit1hNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h>bool tipc_sk_overlimit1 (struct sock *sk, struct sk_buff *skb)h]j/)}(h=bool tipc_sk_overlimit1(struct sock *sk, struct sk_buff *skb)h](jG)}(hjgh]hbool}(hj!hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM3ubjG)}(h h]h }(hj/hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhj.hM3ubjX)}(htipc_sk_overlimit1h]j^)}(htipc_sk_overlimit1h]htipc_sk_overlimit1}(hjAhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj=ubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhj.hM3ubj)}(h&(struct sock *sk, struct sk_buff *skb)h](j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hj]hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjYubjG)}(h h]h }(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYubh)}(hhh]j^)}(hsockh]hsock}(hj{hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j)}jjCsbc.tipc_sk_overlimit1asbuh1hhjYubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj^)}(hskh]hsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_sk_overlimit1asbuh1hhjubjG)}(h h]h }(hj hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hj&hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjUubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj.hM3ubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj.hM3ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj.hM3hjhhubj)}(hhh]h)}(hbcheck if socket rx queue is about to be overloaded, both the rcv and backlog queues are consideredh]hbcheck if socket rx queue is about to be overloaded, both the rcv and backlog queues are considered}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM3hjMhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj.hM3ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjhjjhjjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct sock *sk`` tipc sk to be checked ``struct sk_buff *skb`` tipc msg to be checked **Return** true if the socket rx queue allocation is > 90%, otherwise falseh](h)}(h**Parameters**h]j)}(hjrh]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM7hjlubj)}(hhh](j)}(h*``struct sock *sk`` tipc sk to be checked h](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM5hjubj')}(hhh]h)}(htipc sk to be checkedh]htipc sk to be checked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM5hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM5hjubj)}(h/``struct sk_buff *skb`` tipc msg to be checked h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM6hjubj')}(hhh]h)}(htipc msg to be checkedh]htipc msg to be checked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM6hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhM6hjubeh}(h]h ]h"]h$]h&]uh1jhjlubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM8hjlubh)}(h@true if the socket rx queue allocation is > 90%, otherwise falseh]h@true if the socket rx queue allocation is > 90%, otherwise false}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM8hjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_overlimit2 (C function)c.tipc_sk_overlimit2hNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h>bool tipc_sk_overlimit2 (struct sock *sk, struct sk_buff *skb)h]j/)}(h=bool tipc_sk_overlimit2(struct sock *sk, struct sk_buff *skb)h](jG)}(hjgh]hbool}(hjJhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjFhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMEubjG)}(h h]h }(hjXhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjFhhhjWhMEubjX)}(htipc_sk_overlimit2h]j^)}(htipc_sk_overlimit2h]htipc_sk_overlimit2}(hjjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjfubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjFhhhjWhMEubj)}(h&(struct sock *sk, struct sk_buff *skb)h](j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjlsbc.tipc_sk_overlimit2asbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskh]hsk}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj~ubj%)}(hstruct sk_buff *skbh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.tipc_sk_overlimit2asbuh1hhjubjG)}(h h]h }(hj4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskbh]hskb}(hjOhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hj~ubeh}(h]h ]h"]h$]h&]hhuh1jhjFhhhjWhMEubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjBhhhjWhMEubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1j(hjWhMEhj?hhubj)}(hhh]h)}(hTcheck if socket rx queue is about to be overloaded, only the rcv queue is consideredh]hTcheck if socket rx queue is about to be overloaded, only the rcv queue is considered}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMEhjvhhubah}(h]h ]h"]h$]h&]uh1jhj?hhhjWhMEubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(h**Parameters** ``struct sock *sk`` tipc sk to be checked ``struct sk_buff *skb`` tipc msg to be checked **Return** true if the socket rx queue allocation is > 90%, otherwise falseh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMIhjubj)}(hhh](j)}(h*``struct sock *sk`` tipc sk to be checked h](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMGhjubj')}(hhh]h)}(htipc sk to be checkedh]htipc sk to be checked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubj)}(h/``struct sk_buff *skb`` tipc msg to be checked h](j )}(h``struct sk_buff *skb``h]j)}(hjh]hstruct sk_buff *skb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMHhjubj')}(hhh]h)}(htipc msg to be checkedh]htipc msg to be checked}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhj ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hj.h]hReturn}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMJhjubh)}(h@true if the socket rx queue allocation is > 90%, otherwise falseh]h@true if the socket rx queue allocation is > 90%, otherwise false}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMJhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_sk_dump (C function)c.tipc_sk_dumphNtauh1jhj~^hhhNhNubj$)}(hhh](j))}(h:int tipc_sk_dump (struct sock *sk, u16 dqueues, char *buf)h]j/)}(h9int tipc_sk_dump(struct sock *sk, u16 dqueues, char *buf)h](jG)}(hinth]hint}(hjshhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjohhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMVubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjohhhjhMVubjX)}(h tipc_sk_dumph]j^)}(h tipc_sk_dumph]h tipc_sk_dump}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjohhhjhMVubj)}(h)(struct sock *sk, u16 dqueues, char *buf)h](j%)}(hstruct sock *skh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(hsockh]hsock}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.tipc_sk_dumpasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hskh]hsk}(hj hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h u16 dqueuesh](h)}(hhh]j^)}(hu16h]hu16}(hj%hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]jc.tipc_sk_dumpasbuh1hhjubjG)}(h h]h }(hjChhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj^)}(hdqueuesh]hdqueues}(hjQhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h char *bufh](jG)}(hcharh]hchar}(hjjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjfubjG)}(h h]h }(hjxhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj^)}(hbufh]hbuf}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjfubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjhMVubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjkhhhjhMVubah}(h]jfah ](jjeh"]h$]h&]jj)jhuh1j(hjhMVhjhhhubj)}(hhh]h)}(hdump TIPC socketh]hdump TIPC socket}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMVhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhjhMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j#hhhj~^hNhNubj)}(hX**Parameters** ``struct sock *sk`` tipc sk to be dumped ``u16 dqueues`` bitmask to decide if any socket queue to be dumped? - TIPC_DUMP_NONE: don't dump socket queues - TIPC_DUMP_SK_SNDQ: dump socket send queue - TIPC_DUMP_SK_RCVQ: dump socket rcv queue - TIPC_DUMP_SK_BKLGQ: dump socket backlog queue - TIPC_DUMP_ALL: dump all the socket queues above ``char *buf`` returned buffer of dump data in formath](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMZhjubj)}(hhh](j)}(h)``struct sock *sk`` tipc sk to be dumped h](j )}(h``struct sock *sk``h]j)}(hjh]hstruct sock *sk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMWhjubj')}(hhh]h)}(htipc sk to be dumpedh]htipc sk to be dumped}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhMWhjubj)}(hX(``u16 dqueues`` bitmask to decide if any socket queue to be dumped? - TIPC_DUMP_NONE: don't dump socket queues - TIPC_DUMP_SK_SNDQ: dump socket send queue - TIPC_DUMP_SK_RCVQ: dump socket rcv queue - TIPC_DUMP_SK_BKLGQ: dump socket backlog queue - TIPC_DUMP_ALL: dump all the socket queues above h](j )}(h``u16 dqueues``h]j)}(hj7h]h u16 dqueues}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM]hj1ubj')}(hhh]h)}(hXbitmask to decide if any socket queue to be dumped? - TIPC_DUMP_NONE: don't dump socket queues - TIPC_DUMP_SK_SNDQ: dump socket send queue - TIPC_DUMP_SK_RCVQ: dump socket rcv queue - TIPC_DUMP_SK_BKLGQ: dump socket backlog queue - TIPC_DUMP_ALL: dump all the socket queues aboveh]hXbitmask to decide if any socket queue to be dumped? - TIPC_DUMP_NONE: don’t dump socket queues - TIPC_DUMP_SK_SNDQ: dump socket send queue - TIPC_DUMP_SK_RCVQ: dump socket rcv queue - TIPC_DUMP_SK_BKLGQ: dump socket backlog queue - TIPC_DUMP_ALL: dump all the socket queues above}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chMXhjMubah}(h]h ]h"]h$]h&]uh1j&hj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhM]hjubj)}(h4``char *buf`` returned buffer of dump data in formath](j )}(h ``char *buf``h]j)}(hjqh]h char *buf}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM_hjkubj')}(hhh]h)}(h&returned buffer of dump data in formath]h&returned buffer of dump data in format}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:196: ./net/tipc/socket.chM^hjubah}(h]h ]h"]h$]h&]uh1j&hjkubeh}(h]h ]h"]h$]h&]uh1jhjhM_hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj~^hhhNhNubeh}(h]tipc-socket-interfacesah ]h"]tipc socket interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h TIPC Network Topology Interfacesh]h TIPC Network Topology Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#tipc_sub_check_overlap (C function)c.tipc_sub_check_overlaphNtauh1jhjhhhNhNubj$)}(hhh](j))}(hebool tipc_sub_check_overlap (struct tipc_service_range *subscribed, struct tipc_service_range *found)h]j/)}(hdbool tipc_sub_check_overlap(struct tipc_service_range *subscribed, struct tipc_service_range *found)h](jG)}(hjgh]hbool}(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKCubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKCubjX)}(htipc_sub_check_overlaph]j^)}(htipc_sub_check_overlaph]htipc_sub_check_overlap}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKCubj)}(hI(struct tipc_service_range *subscribed, struct tipc_service_range *found)h](j%)}(h%struct tipc_service_range *subscribedh](j5)}(hj8h]hstruct}(hj hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hj-hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_service_rangeh]htipc_service_range}(hj>hhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hj;ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j)}jjsbc.tipc_sub_check_overlapasbuh1hhjubjG)}(h h]h }(hj^hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(h subscribedh]h subscribed}(hjyhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubj%)}(h struct tipc_service_range *foundh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubh)}(hhh]j^)}(htipc_service_rangeh]htipc_service_range}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jZc.tipc_sub_check_overlapasbuh1hhjubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj^)}(hfoundh]hfound}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j$hjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKCubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKCubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKChjhhubj)}(hhh]h)}(h3test for subscription overlap with the given valuesh]h3test for subscription overlap with the given values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKChjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKCubeh}(h]h ](jfunctioneh"]h$]h&]jjjj+jj+jjjuh1j#hhhjhNhNubj)}(h**Parameters** ``struct tipc_service_range *subscribed`` the service range subscribed for ``struct tipc_service_range *found`` the service range we are checking for match **Description** Returns true if there is overlap, otherwise false.h](h)}(h**Parameters**h]j)}(hj5h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKGhj/ubj)}(hhh](j)}(hK``struct tipc_service_range *subscribed`` the service range subscribed for h](j )}(h)``struct tipc_service_range *subscribed``h]j)}(hjTh]h%struct tipc_service_range *subscribed}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKDhjNubj')}(hhh]h)}(h the service range subscribed forh]h the service range subscribed for}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihKDhjjubah}(h]h ]h"]h$]h&]uh1j&hjNubeh}(h]h ]h"]h$]h&]uh1jhjihKDhjKubj)}(hQ``struct tipc_service_range *found`` the service range we are checking for match h](j )}(h$``struct tipc_service_range *found``h]j)}(hjh]h struct tipc_service_range *found}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKEhjubj')}(hhh]h)}(h+the service range we are checking for matchh]h+the service range we are checking for match}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKEhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKEhjKubeh}(h]h ]h"]h$]h&]uh1jhj/ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKGhj/ubh)}(h2Returns true if there is overlap, otherwise false.h]h2Returns true if there is overlap, otherwise false.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:202: ./net/tipc/subscr.chKFhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h] tipc-network-topology-interfacesah ]h"] tipc network topology interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Server Interfacesh]hTIPC Server Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_topsrv (C struct) c.tipc_topsrvhNtauh1jhjhhhNhNubj$)}(hhh](j))}(h tipc_topsrvh]j/)}(hstruct tipc_topsrvh](j5)}(hj8h]hstruct}(hj&hhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hj"hhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKubjG)}(h h]h }(hj4hhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhj"hhhj3hKubjX)}(h tipc_topsrvh]j^)}(hj h]h tipc_topsrv}(hjFhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjBubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhj"hhhj3hKubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhj3hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hj3hKhjhhubj)}(hhh]h)}(hTIPC server structureh]hTIPC server structure}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK8hjehhubah}(h]h ]h"]h$]h&]uh1jhjhhhj3hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j#hhhjhNhNubj)}(hX**Definition**:: struct tipc_topsrv { struct idr conn_idr; spinlock_t idr_lock; int idr_in_use; struct net *net; struct work_struct awork; struct workqueue_struct *rcv_wq; struct workqueue_struct *send_wq; struct socket *listener; char name[TIPC_SERVER_NAME_LEN]; }; **Members** ``conn_idr`` identifier set of connection ``idr_lock`` protect the connection identifier set ``idr_in_use`` amount of allocated identifier entry ``net`` network namespace instance ``awork`` accept work item ``rcv_wq`` receive workqueue ``send_wq`` send workqueue ``listener`` topsrv listener socket ``name`` server nameh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKJhjubj)}(hhh](j)}(h*``conn_idr`` identifier set of connection h](j )}(h ``conn_idr``h]j)}(hjh]hconn_idr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK:hjubj')}(hhh]h)}(hidentifier set of connectionh]hidentifier set of connection}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK:hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK:hjubj)}(h3``idr_lock`` protect the connection identifier set h](j )}(h ``idr_lock``h]j)}(hjh]hidr_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK;hjubj')}(hhh]h)}(h%protect the connection identifier seth]h%protect the connection identifier set}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hK;hj$ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj#hK;hjubj)}(h4``idr_in_use`` amount of allocated identifier entry h](j )}(h``idr_in_use``h]j)}(hjGh]h idr_in_use}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKhjubj')}(hhh]h)}(haccept work itemh]haccept work item}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK>hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK>hjubj)}(h``rcv_wq`` receive workqueue h](j )}(h ``rcv_wq``h]j)}(hjh]hrcv_wq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK?hjubj')}(hhh]h)}(hreceive workqueueh]hreceive workqueue}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK?hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK?hjubj)}(h``send_wq`` send workqueue h](j )}(h ``send_wq``h]j)}(hj+h]hsend_wq}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK@hj%ubj')}(hhh]h)}(hsend workqueueh]hsend workqueue}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hK@hjAubah}(h]h ]h"]h$]h&]uh1j&hj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hK@hjubj)}(h$``listener`` topsrv listener socket h](j )}(h ``listener``h]j)}(hjdh]hlistener}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKAhj^ubj')}(hhh]h)}(htopsrv listener socketh]htopsrv listener socket}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhKAhjzubah}(h]h ]h"]h$]h&]uh1j&hj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhKAhjubj)}(h``name`` server nameh](j )}(h``name``h]j)}(hjh]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKAhjubj')}(hhh]h)}(h server nameh]h server name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKBhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKAhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_conn (C struct) c.tipc_connhNtauh1jhjhhhNhNubj$)}(hhh](j))}(h tipc_connh]j/)}(hstruct tipc_connh](j5)}(hj8h]hstruct}(hjhhhNhNubah}(h]h ]jAah"]h$]h&]uh1j4hjhhhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKHubjG)}(h h]h }(hjhhhNhNubah}(h]h ]jSah"]h$]h&]uh1jFhjhhhjhKHubjX)}(h tipc_connh]j^)}(hjh]h tipc_conn}(hjhhhNhNubah}(h]h ]jiah"]h$]h&]uh1j]hjubah}(h]h ](jpjqeh"]h$]h&]hhuh1jWhjhhhjhKHubeh}(h]h ]h"]h$]h&]hhj{uh1j.j|j}hjhhhjhKHubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j(hjhKHhjhhubj)}(hhh]h)}(hTIPC connection structureh]hTIPC connection structure}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKPhj6hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKHubeh}(h]h ](jstructeh"]h$]h&]jjjjQjjQjjjuh1j#hhhjhNhNubj)}(hXi**Definition**:: struct tipc_conn { struct kref kref; int conid; struct socket *sock; unsigned long flags; struct tipc_topsrv *server; struct list_head sub_list; spinlock_t sub_lock; struct work_struct rwork; struct list_head outqueue; spinlock_t outqueue_lock; struct work_struct swork; }; **Members** ``kref`` reference counter to connection object ``conid`` connection identifier ``sock`` socket handler associated with connection ``flags`` indicates connection state ``server`` pointer to connected server ``sub_list`` list to all pertaining subscriptions ``sub_lock`` lock protecting the subscription list ``rwork`` receive work item ``outqueue`` pointer to first outbound message in queue ``outqueue_lock`` control access to the outqueue ``swork`` send work itemh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubh:}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKThjUubj)}(hX=struct tipc_conn { struct kref kref; int conid; struct socket *sock; unsigned long flags; struct tipc_topsrv *server; struct list_head sub_list; spinlock_t sub_lock; struct work_struct rwork; struct list_head outqueue; spinlock_t outqueue_lock; struct work_struct swork; };h]hX=struct tipc_conn { struct kref kref; int conid; struct socket *sock; unsigned long flags; struct tipc_topsrv *server; struct list_head sub_list; spinlock_t sub_lock; struct work_struct rwork; struct list_head outqueue; spinlock_t outqueue_lock; struct work_struct swork; };}hjvsbah}(h]h ]h"]h$]h&]hhuh1jhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKVhjUubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKdhjUubj)}(hhh](j)}(h0``kref`` reference counter to connection object h](j )}(h``kref``h]j)}(hjh]hkref}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKRhjubj')}(hhh]h)}(h&reference counter to connection objecth]h&reference counter to connection object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKRhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKRhjubj)}(h ``conid`` connection identifier h](j )}(h ``conid``h]j)}(hjh]hconid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKShjubj')}(hhh]h)}(hconnection identifierh]hconnection identifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKShjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKShjubj)}(h3``sock`` socket handler associated with connection h](j )}(h``sock``h]j)}(hjh]hsock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKThjubj')}(hhh]h)}(h)socket handler associated with connectionh]h)socket handler associated with connection}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hKThj.ubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhj-hKThjubj)}(h%``flags`` indicates connection state h](j )}(h ``flags``h]j)}(hjQh]hflags}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKUhjKubj')}(hhh]h)}(hindicates connection stateh]hindicates connection state}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKUhjgubah}(h]h ]h"]h$]h&]uh1j&hjKubeh}(h]h ]h"]h$]h&]uh1jhjfhKUhjubj)}(h'``server`` pointer to connected server h](j )}(h ``server``h]j)}(hjh]hserver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKVhjubj')}(hhh]h)}(hpointer to connected serverh]hpointer to connected server}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKVhjubj)}(h2``sub_list`` list to all pertaining subscriptions h](j )}(h ``sub_list``h]j)}(hjh]hsub_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKWhjubj')}(hhh]h)}(h$list to all pertaining subscriptionsh]h$list to all pertaining subscriptions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKWhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKWhjubj)}(h3``sub_lock`` lock protecting the subscription list h](j )}(h ``sub_lock``h]j)}(hjh]hsub_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKXhjubj')}(hhh]h)}(h%lock protecting the subscription listh]h%lock protecting the subscription list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKXhjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhKXhjubj)}(h``rwork`` receive work item h](j )}(h ``rwork``h]j)}(hj5h]hrwork}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKYhj/ubj')}(hhh]h)}(hreceive work itemh]hreceive work item}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKYhjKubah}(h]h ]h"]h$]h&]uh1j&hj/ubeh}(h]h ]h"]h$]h&]uh1jhjJhKYhjubj)}(h8``outqueue`` pointer to first outbound message in queue h](j )}(h ``outqueue``h]j)}(hjnh]houtqueue}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chKZhjhubj')}(hhh]h)}(h*pointer to first outbound message in queueh]h*pointer to first outbound message in queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKZhjubah}(h]h ]h"]h$]h&]uh1j&hjhubeh}(h]h ]h"]h$]h&]uh1jhjhKZhjubj)}(h1``outqueue_lock`` control access to the outqueue h](j )}(h``outqueue_lock``h]j)}(hjh]h outqueue_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK[hjubj')}(hhh]h)}(hcontrol access to the outqueueh]hcontrol access to the outqueue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK[hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK[hjubj)}(h``swork`` send work itemh](j )}(h ``swork``h]j)}(hjh]hswork}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK[hjubj')}(hhh]h)}(hsend work itemh]hsend work item}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhR/var/lib/git/docbuild/linux/Documentation/networking/tipc:208: ./net/tipc/topsrv.chK\hjubah}(h]h ]h"]h$]h&]uh1j&hjubeh}(h]h ]h"]h$]h&]uh1jhjhK[hjubeh}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjhhhNhNubeh}(h]tipc-server-interfacesah ]h"]tipc server interfacesah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hTIPC Trace Interfacesh]hTIPC Trace Interfaces}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hhhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jtipc_skb_dump (C function)c.tipc_skb_dumphNtauh1jhj)hhhNhNubj$)}(hhh](j))}(h=int tipc_skb_dump (struct sk_buff *skb, bool more, char *buf)h]j/)}(h