€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ//translations/zh_CN/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/zh_TW/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/it_IT/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ja_JP/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ko_KR/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/pt_BR/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/sp_SP/userspace-api/netlink/specs”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ%SPDX-License-Identifier: BSD-3-Clause”h]”hŒ%SPDX-License-Identifier: BSD-3-Clause”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒI/var/lib/git/docbuild/linux/Documentation/userspace-api/netlink/specs.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ)Netlink protocol specifications (in YAML)”h]”hŒ)Netlink protocol specifications (in YAML)”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXÏNetlink protocol specifications are complete, machine readable descriptions of Netlink protocols written in YAML. The goal of the specifications is to allow separating Netlink parsing from user space logic and minimize the amount of hand written Netlink code for each new family, command, attribute. Netlink specs should be complete and not depend on any other spec or C header file, making it easy to use in languages which can't include kernel headers directly.”h]”hXÑNetlink protocol specifications are complete, machine readable descriptions of Netlink protocols written in YAML. The goal of the specifications is to allow separating Netlink parsing from user space logic and minimize the amount of hand written Netlink code for each new family, command, attribute. Netlink specs should be complete and not depend on any other spec or C header file, making it easy to use in languages which can’t include kernel headers directly.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ2Internally kernel uses the YAML specs to generate:”h]”hŒ2Internally kernel uses the YAML specs to generate:”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ block_quote”“”)�”}”(hŒÀ- the C uAPI header - documentation of the protocol as a ReST file - see :ref:`Documentation/netlink/specs/index.rst ` - policy tables for input attribute validation - operation tables ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒthe C uAPI header”h]”hÞ)�”}”(hj h]”hŒthe C uAPI header”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒgdocumentation of the protocol as a ReST file - see :ref:`Documentation/netlink/specs/index.rst `”h]”hÞ)�”}”(hj!h]”(hŒ3documentation of the protocol as a ReST file - see ”…”�”}”(hj#h²hh³Nh´Nubh)�”}”(hŒ4:ref:`Documentation/netlink/specs/index.rst `”h]”hŒinline”“”)�”}”(hj,h]”hŒ%Documentation/netlink/specs/index.rst”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hj*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œuserspace-api/netlink/specs”Œ refdomain”j;Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œspecs”uh1hh³hÇh´Khj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒ,policy tables for input attribute validation”h]”hÞ)�”}”(hj]h]”hŒ,policy tables for input attribute validation”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒoperation tables ”h]”hÞ)�”}”(hŒoperation tables”h]”hŒoperation tables”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÇh´Khhýubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´KhhÊh²hubhÞ)�”}”(hŒGYAML specifications can be found under ``Documentation/netlink/specs/``”h]”(hŒ'YAML specifications can be found under ”…”�”}”(hj˜h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``Documentation/netlink/specs/``”h]”hŒDocumentation/netlink/specs/”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒeThis document describes details of the schema. See :doc:`intro-specs` for a practical starting guide.”h]”(hŒ3This document describes details of the schema. See ”…”�”}”(hj¶h²hh³Nh´Nubh)�”}”(hŒ:doc:`intro-specs`”h]”j/)�”}”(hjÀh]”hŒ intro-specs”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j.hj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jÌŒreftype”Œdoc”Œ refexplicit”‰Œrefwarn”ˆjMŒ intro-specs”uh1hh³hÇh´Khj¶ubhŒ for a practical starting guide.”…”�”}”(hj¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ‡All specs must be licensed under ``((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)`` to allow for easy adoption in user space code.”h]”(hŒ!All specs must be licensed under ”…”�”}”(hjèh²hh³Nh´Nubj¡)�”}”(hŒ7``((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)``”h]”hŒ3((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjèubhŒ/ to allow for easy adoption in user space code.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCompatibility levels”h]”hŒCompatibility levels”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhÞ)�”}”(hXPThere are four schema levels for Netlink specs, from the simplest used by new families to the most complex covering all the quirks of the old ones. Each next level inherits the attributes of the previous level, meaning that user capable of parsing more complex ``genetlink`` schemas is also compatible with simpler ones. The levels are:”h]”(hXThere are four schema levels for Netlink specs, from the simplest used by new families to the most complex covering all the quirks of the old ones. Each next level inherits the attributes of the previous level, meaning that user capable of parsing more complex ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ> schemas is also compatible with simpler ones. The levels are:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K"hjh²hubhü)�”}”(hXV- ``genetlink`` - most streamlined, should be used by all new families - ``genetlink-c`` - superset of ``genetlink`` with extra attributes allowing customization of define and enum type and value names; this schema should be equivalent to ``genetlink`` for all implementations which don't interact directly with C uAPI headers - ``genetlink-legacy`` - Generic Netlink catch all schema supporting quirks of all old genetlink families, strange attribute formats, binary structures etc. - ``netlink-raw`` - catch all schema supporting pre-Generic Netlink protocols such as ``NETLINK_ROUTE`` ”h]”j)�”}”(hhh]”(j)�”}”(hŒD``genetlink`` - most streamlined, should be used by all new families”h]”hÞ)�”}”(hjBh]”(j¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjDubhŒ7 - most streamlined, should be used by all new families”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubj)�”}”(hŒý``genetlink-c`` - superset of ``genetlink`` with extra attributes allowing customization of define and enum type and value names; this schema should be equivalent to ``genetlink`` for all implementations which don't interact directly with C uAPI headers”h]”hÞ)�”}”(hŒý``genetlink-c`` - superset of ``genetlink`` with extra attributes allowing customization of define and enum type and value names; this schema should be equivalent to ``genetlink`` for all implementations which don't interact directly with C uAPI headers”h]”(j¡)�”}”(hŒ``genetlink-c``”h]”hŒ genetlink-c”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjiubhŒ - superset of ”…”�”}”(hjih²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjiubhŒ{ with extra attributes allowing customization of define and enum type and value names; this schema should be equivalent to ”…”�”}”(hjih²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjiubhŒL for all implementations which don’t interact directly with C uAPI headers”…”�”}”(hjih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubj)�”}”(hŒš``genetlink-legacy`` - Generic Netlink catch all schema supporting quirks of all old genetlink families, strange attribute formats, binary structures etc.”h]”hÞ)�”}”(hŒš``genetlink-legacy`` - Generic Netlink catch all schema supporting quirks of all old genetlink families, strange attribute formats, binary structures etc.”h]”(j¡)�”}”(hŒ``genetlink-legacy``”h]”hŒgenetlink-legacy”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³ubhŒ† - Generic Netlink catch all schema supporting quirks of all old genetlink families, strange attribute formats, binary structures etc.”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubj)�”}”(hŒf``netlink-raw`` - catch all schema supporting pre-Generic Netlink protocols such as ``NETLINK_ROUTE`` ”h]”hÞ)�”}”(hŒe``netlink-raw`` - catch all schema supporting pre-Generic Netlink protocols such as ``NETLINK_ROUTE``”h]”(j¡)�”}”(hŒ``netlink-raw``”h]”hŒ netlink-raw”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙubhŒE - catch all schema supporting pre-Generic Netlink protocols such as ”…”�”}”(hjÙh²hh³Nh´Nubj¡)�”}”(hŒ``NETLINK_ROUTE``”h]”hŒ NETLINK_ROUTE”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1jh³hÇh´K(hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K(hjh²hubhÞ)�”}”(hŒ`The definition of the schemas (in ``jsonschema``) can be found under ``Documentation/netlink/``.”h]”(hŒ"The definition of the schemas (in ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ``jsonschema``”h]”hŒ jsonschema”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ) can be found under ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ``Documentation/netlink/``”h]”hŒDocumentation/netlink/”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K2hjh²hubeh}”(h]”Œcompatibility-levels”ah ]”h"]”Œcompatibility levels”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSchema structure”h]”hŒSchema structure”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjOh²hh³hÇh´K6ubhÞ)�”}”(hŒ2YAML schema has the following conceptual sections:”h]”hŒ2YAML schema has the following conceptual sections:”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K8hjOh²hubhü)�”}”(hŒE- globals - definitions - attributes - operations - multicast groups ”h]”j)�”}”(hhh]”(j)�”}”(hŒglobals”h]”hÞ)�”}”(hjwh]”hŒglobals”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubj)�”}”(hŒ definitions”h]”hÞ)�”}”(hjŽh]”hŒ definitions”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K;hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubj)�”}”(hŒ attributes”h]”hÞ)�”}”(hj¥h]”hŒ attributes”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1jh³hÇh´K:hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K:hjOh²hubhÞ)�”}”(hŒpMost properties in the schema accept (or in fact require) a ``doc`` sub-property documenting the defined object.”h]”(hŒ` for information on how C names are derived from name properties.”h]”(hŒBThe following sections describe the properties of the most modern ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ" schema. See the documentation of ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:doc:`genetlink-c `”h]”j/)�”}”(hj1h]”hŒ genetlink-c”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j.hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”j=Œreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆjMŒ c-code-gen”uh1hh³hÇh´KChjubhŒA for information on how C names are derived from name properties.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KChjOh²hubhÞ)�”}”(hŒÊSee also :ref:`Documentation/core-api/netlink.rst ` for information on the Netlink specification properties that are only relevant to the kernel space and not part of the user space API.”h]”(hŒ See also ”…”�”}”(hjYh²hh³Nh´Nubh)�”}”(hŒ::ref:`Documentation/core-api/netlink.rst `”h]”j/)�”}”(hjch]”hŒ"Documentation/core-api/netlink.rst”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hjaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”joŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjMŒkernel_netlink”uh1hh³hÇh´KGhjYubhŒ‡ for information on the Netlink specification properties that are only relevant to the kernel space and not part of the user space API.”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KGhjOh²hubeh}”(h]”Œschema-structure”ah ]”h"]”Œschema structure”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K6ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ genetlink”h]”hŒ genetlink”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj“h²hh³hÇh´KLubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒGlobals”h]”hŒGlobals”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¤h²hh³hÇh´KOubhÞ)�”}”(hŒ>Attributes listed directly at the root level of the spec file.”h]”hŒ>Attributes listed directly at the root level of the spec file.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KQhj¤h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒname”h]”hŒname”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÃh²hh³hÇh´KTubhÞ)�”}”(hŒoName of the family. Name identifies the family in a unique way, since the Family IDs are allocated dynamically.”h]”hŒoName of the family. Name identifies the family in a unique way, since the Family IDs are allocated dynamically.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhjÃh²hubeh}”(h]”Œname”ah ]”h"]”h$]”Œname”ah&]”uh1hÈhj¤h²hh³hÇh´KTŒ referenced”KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒprotocol”h]”hŒprotocol”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjëh²hh³hÇh´KZubhÞ)�”}”(hŒkThe schema level, default is ``genetlink``, which is the only value allowed for new ``genetlink`` families.”h]”(hŒThe schema level, default is ”…”�”}”(hjüh²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubhŒ*, which is the only value allowed for new ”…”�”}”(hjüh²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjüubhŒ families.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K\hjëh²hubeh}”(h]”Œprotocol”ah ]”h"]”Œprotocol”ah$]”h&]”uh1hÈhj¤h²hh³hÇh´KZubeh}”(h]”Œglobals”ah ]”h"]”Œglobals”ah$]”h&]”uh1hÈhj“h²hh³hÇh´KOubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ definitions”h]”hŒ definitions”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj>h²hh³hÇh´K`ubhÞ)�”}”(hŒ'Array of type and constant definitions.”h]”hŒ'Array of type and constant definitions.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kbhj>h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒname”h]”hŒname”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj]h²hh³hÇh´KeubhÞ)�”}”(hŒName of the type / constant.”h]”hŒName of the type / constant.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kghj]h²hubeh}”(h]”Œid1”ah ]”h"]”h$]”jèah&]”uh1hÈhj>h²hh³hÇh´KejêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjƒh²hh³hÇh´KjubhÞ)�”}”(hŒOne of the following types:”h]”hŒOne of the following types:”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Klhjƒh²hubhü)�”}”(hX- const - a single, standalone constant - enum - defines an integer enumeration, with values for each entry incrementing by 1, (e.g. 0, 1, 2, 3) - flags - defines an integer enumeration, with values for each entry occupying a bit, starting from bit 0, (e.g. 1, 2, 4, 8) ”h]”j)�”}”(hhh]”(j)�”}”(hŒ%const - a single, standalone constant”h]”hÞ)�”}”(hj«h]”hŒ%const - a single, standalone constant”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Knhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubj)�”}”(hŒfenum - defines an integer enumeration, with values for each entry incrementing by 1, (e.g. 0, 1, 2, 3)”h]”hÞ)�”}”(hŒfenum - defines an integer enumeration, with values for each entry incrementing by 1, (e.g. 0, 1, 2, 3)”h]”hŒfenum - defines an integer enumeration, with values for each entry incrementing by 1, (e.g. 0, 1, 2, 3)”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KohjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubj)�”}”(hŒ{flags - defines an integer enumeration, with values for each entry occupying a bit, starting from bit 0, (e.g. 1, 2, 4, 8) ”h]”hÞ)�”}”(hŒzflags - defines an integer enumeration, with values for each entry occupying a bit, starting from bit 0, (e.g. 1, 2, 4, 8)”h]”hŒzflags - defines an integer enumeration, with values for each entry occupying a bit, starting from bit 0, (e.g. 1, 2, 4, 8)”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KqhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1jh³hÇh´Knhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´Knhjƒh²hubeh}”(h]”Œtype”ah ]”h"]”h$]”Œtype”ah&]”uh1hÈhj>h²hh³hÇh´KjjêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KuubhÞ)�”}”(hŒThe value for the ``const``.”h]”(hŒThe value for the ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ ``const``”h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kwhjh²hubeh}”(h]”Œvalue”ah ]”h"]”h$]”Œvalue”ah&]”uh1hÈhj>h²hh³hÇh´KujêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ value-start”h]”hŒ value-start”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj=h²hh³hÇh´KzubhÞ)�”}”(hŒÞThe first value for ``enum`` and ``flags``, allows overriding the default start value of ``0`` (for ``enum``) and starting bit (for ``flags``). For ``flags`` ``value-start`` selects the starting bit, not the shifted value.”h]”(hŒThe first value for ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ and ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ/, allows overriding the default start value of ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ (for ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ) and starting bit (for ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ). For ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ ”…”�”}”(hjNh²hh³Nh´Nubj¡)�”}”(hŒ``value-start``”h]”hŒ value-start”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubhŒ1 selects the starting bit, not the shifted value.”…”�”}”(hjNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K|hj=h²hubhÞ)�”}”(hŒ&Sparse enumerations are not supported.”h]”hŒ&Sparse enumerations are not supported.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K€hj=h²hubeh}”(h]”Œ value-start”ah ]”h"]”Œ value-start”ah$]”h&]”uh1hÈhj>h²hh³hÇh´KzubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒentries”h]”hŒentries”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjðh²hh³hÇh´KƒubhÞ)�”}”(hŒ9Array of names of the entries for ``enum`` and ``flags``.”h]”(hŒ"Array of names of the entries for ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K…hjðh²hubeh}”(h]”Œentries”ah ]”h"]”Œentries”ah$]”h&]”uh1hÈhj>h²hh³hÇh´KƒubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒheader”h]”hŒheader”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj;h²hh³hÇh´KˆubhÞ)�”}”(hX For C-compatible languages, header which already defines this value. In case the definition is shared by multiple families (e.g. ``IFNAMSIZ``) code generators for C-compatible languages may prefer to add an appropriate include instead of rendering a new definition.”h]”(hŒ�For C-compatible languages, header which already defines this value. In case the definition is shared by multiple families (e.g. ”…”�”}”(hjLh²hh³Nh´Nubj¡)�”}”(hŒ ``IFNAMSIZ``”h]”hŒIFNAMSIZ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLubhŒ|) code generators for C-compatible languages may prefer to add an appropriate include instead of rendering a new definition.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŠhj;h²hubeh}”(h]”Œheader”ah ]”h"]”Œheader”ah$]”h&]”uh1hÈhj>h²hh³hÇh´Kˆubeh}”(h]”Œ definitions”ah ]”h"]”Œ definitions”ah$]”h&]”uh1hÈhj“h²hh³hÇh´K`ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒattribute-sets”h]”hŒattribute-sets”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj|h²hh³hÇh´K�ubhÞ)�”}”(hŒÕThis property contains information about netlink attributes of the family. All families have at least one attribute set, most have multiple. ``attribute-sets`` is an array, with each entry describing a single set.”h]”(hŒ�This property contains information about netlink attributes of the family. All families have at least one attribute set, most have multiple. ”…”�”}”(hj�h²hh³Nh´Nubj¡)�”}”(hŒ``attribute-sets``”h]”hŒattribute-sets”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubhŒ6 is an array, with each entry describing a single set.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K’hj|h²hubhÞ)�”}”(hXfNote that the spec is "flattened" and is not meant to visually resemble the format of the netlink messages (unlike certain ad-hoc documentation formats seen in kernel comments). In the spec subordinate attribute sets are not defined inline as a nest, but defined in a separate attribute set referred to with a ``nested-attributes`` property of the container.”h]”(hX:Note that the spec is “flattenedâ€� and is not meant to visually resemble the format of the netlink messages (unlike certain ad-hoc documentation formats seen in kernel comments). In the spec subordinate attribute sets are not defined inline as a nest, but defined in a separate attribute set referred to with a ”…”�”}”(hj­h²hh³Nh´Nubj¡)�”}”(hŒ``nested-attributes``”h]”hŒnested-attributes”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubhŒ property of the container.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K–hj|h²hubhÞ)�”}”(hXASpec may also contain fractional sets - sets which contain a ``subset-of`` property. Such sets describe a section of a full set, allowing narrowing down which attributes are allowed in a nest or refining the validation criteria. Fractional sets can only be used in nests. They are not rendered to the uAPI in any fashion.”h]”(hŒ=Spec may also contain fractional sets - sets which contain a ”…”�”}”(hjÍh²hh³Nh´Nubj¡)�”}”(hŒ ``subset-of``”h]”hŒ subset-of”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubhŒ÷ property. Such sets describe a section of a full set, allowing narrowing down which attributes are allowed in a nest or refining the validation criteria. Fractional sets can only be used in nests. They are not rendered to the uAPI in any fashion.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kœhj|h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒname”h]”hŒname”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjíh²hh³hÇh´K£ubhÞ)�”}”(hŒjUniquely identifies the attribute set, operations and nested attributes refer to the sets by the ``name``.”h]”(hŒaUniquely identifies the attribute set, operations and nested attributes refer to the sets by the ”…”�”}”(hjþh²hh³Nh´Nubj¡)�”}”(hŒ``name``”h]”hŒname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþubhŒ.”…”�”}”(hjþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¥hjíh²hubeh}”(h]”Œid2”ah ]”h"]”h$]”Œname”ah&]”uh1hÈhj|h²hh³hÇh´K£jêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ subset-of”h]”hŒ subset-of”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj&h²hh³hÇh´K©ubhÞ)�”}”(hX%Re-defines a portion of another set (a fractional set). Allows narrowing down fields and changing validation criteria or even types of attributes depending on the nest in which they are contained. The ``value`` of each attribute in the fractional set is implicitly the same as in the main set.”h]”(hŒÉRe-defines a portion of another set (a fractional set). Allows narrowing down fields and changing validation criteria or even types of attributes depending on the nest in which they are contained. The ”…”�”}”(hj7h²hh³Nh´Nubj¡)�”}”(hŒ ``value``”h]”hŒvalue”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7ubhŒS of each attribute in the fractional set is implicitly the same as in the main set.”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K«hj&h²hubeh}”(h]”Œ subset-of”ah ]”h"]”Œ subset-of”ah$]”h&]”uh1hÈhj|h²hh³hÇh´K©ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ attributes”h]”hŒ attributes”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj_h²hh³hÇh´K²ubhÞ)�”}”(hŒList of attributes in the set.”h]”hŒList of attributes in the set.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K´hj_h²hubhŒtarget”“”)�”}”(hŒ.. _attribute_properties:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œattribute-properties”uh1j~h´K¶hj_h²hh³hÇubeh}”(h]”Œ attributes”ah ]”h"]”Œ attributes”ah$]”h&]”uh1hÈhj|h²hh³hÇh´K²ubeh}”(h]”Œattribute-sets”ah ]”h"]”Œattribute-sets”ah$]”h&]”uh1hÈhj“h²hh³hÇh´K�ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAttribute properties”h]”hŒAttribute properties”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjœh²hh³hÇh´K¹ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒname”h]”hŒname”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj­h²hh³hÇh´K¼ubhÞ)�”}”(hŒ0Identifies the attribute, unique within the set.”h]”hŒ0Identifies the attribute, unique within the set.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hj­h²hubeh}”(h]”Œid4”ah ]”h"]”h$]”Œname”ah&]”uh1hÈhjœh²hh³hÇh´K¼jêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÔh²hh³hÇh´KÁubhÞ)�”}”(hŒ.Netlink attribute type, see :ref:`attr_types`.”h]”(hŒNetlink attribute type, see ”…”�”}”(hjåh²hh³Nh´Nubh)�”}”(hŒ:ref:`attr_types`”h]”j/)�”}”(hjïh]”hŒ attr_types”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hjíubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jûŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjMŒ attr_types”uh1hh³hÇh´KÃhjåubhŒ.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÃhjÔh²hubj)�”}”(hŒ.. _assign_val:”h]”h}”(h]”h ]”h"]”h$]”h&]”jŠŒ assign-val”uh1j~h´KÅhjÔh²hh³hÇubeh}”(h]”Œid5”ah ]”h"]”h$]”jah&]”uh1hÈhjœh²hh³hÇh´KÁjêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj) h²hh³hÇh´KÈubhÞ)�”}”(hŒýNumerical attribute ID, used in serialized Netlink messages. The ``value`` property can be skipped, in which case the attribute ID will be the value of the previous attribute plus one (recursively) and ``1`` for the first attribute in the attribute set.”h]”(hŒANumerical attribute ID, used in serialized Netlink messages. The ”…”�”}”(hj: h²hh³Nh´Nubj¡)�”}”(hŒ ``value``”h]”hŒvalue”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj: ubhŒ€ property can be skipped, in which case the attribute ID will be the value of the previous attribute plus one (recursively) and ”…”�”}”(hj: h²hh³Nh´Nubj¡)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj: ubhŒ. for the first attribute in the attribute set.”…”�”}”(hj: h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÊhj) h²hubhÞ)�”}”(hŒñAttributes (and operations) use ``1`` as the default value for the first entry (unlike enums in definitions which start from ``0``) because entry ``0`` is almost always reserved as undefined. Spec can explicitly set value to ``0`` if needed.”h]”(hŒ Attributes (and operations) use ”…”�”}”(hjl h²hh³Nh´Nubj¡)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubhŒX as the default value for the first entry (unlike enums in definitions which start from ”…”�”}”(hjl h²hh³Nh´Nubj¡)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubhŒ) because entry ”…”�”}”(hjl h²hh³Nh´Nubj¡)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubhŒJ is almost always reserved as undefined. Spec can explicitly set value to ”…”�”}”(hjl h²hh³Nh´Nubj¡)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubhŒ if needed.”…”�”}”(hjl h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhj) h²hubhÞ)�”}”(hŒYNote that the ``value`` of an attribute is defined only in its main set (not in subsets).”h]”(hŒNote that the ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ ``value``”h]”hŒvalue”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒB of an attribute is defined only in its main set (not in subsets).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÔhj) h²hubeh}”(h]”(j! Œid6”eh ]”h"]”Œ assign_val”ah$]”j;ah&]”uh1hÈhjœh²hh³hÇh´KÈjêKŒexpect_referenced_by_name”}”jç j sŒexpect_referenced_by_id”}”j! j subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjî h²hh³hÇh´KØubhÞ)�”}”(hŒ}For integer types specifies that values in the attribute belong to an ``enum`` or ``flags`` from the ``definitions`` section.”h]”(hŒFFor integer types specifies that values in the attribute belong to an ”…”�”}”(hjÿ h²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ ubhŒ or ”…”�”}”(hjÿ h²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ ubhŒ from the ”…”�”}”(hjÿ h²hh³Nh´Nubj¡)�”}”(hŒ``definitions``”h]”hŒ definitions”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ ubhŒ section.”…”�”}”(hjÿ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjî h²hubeh}”(h]”Œenum”ah ]”h"]”Œenum”ah$]”h&]”uh1hÈhjœh²hh³hÇh´KØubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ enum-as-flags”h]”hŒ enum-as-flags”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjK h²hh³hÇh´KÞubhÞ)�”}”(hŒëTreat ``enum`` as ``flags`` regardless of its type in ``definitions``. When both ``enum`` and ``flags`` forms are needed ``definitions`` should contain an ``enum`` and attributes which need the ``flags`` form should use this attribute.”h]”(hŒTreat ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ as ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ regardless of its type in ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ``definitions``”h]”hŒ definitions”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ . When both ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ and ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ forms are needed ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ``definitions``”h]”hŒ definitions”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ should contain an ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ``enum``”h]”hŒenum”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ and attributes which need the ”…”�”}”(hj\ h²hh³Nh´Nubj¡)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ form should use this attribute.”…”�”}”(hj\ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KàhjK h²hubeh}”(h]”Œ enum-as-flags”ah ]”h"]”Œ enum-as-flags”ah$]”h&]”uh1hÈhjœh²hh³hÇh´KÞubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒnested-attributes”h]”hŒnested-attributes”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´KæubhÞ)�”}”(hŒ�Identifies the attribute space for attributes nested within given attribute. Only valid for complex attributes which may have sub-attributes.”h]”hŒ�Identifies the attribute space for attributes nested within given attribute. Only valid for complex attributes which may have sub-attributes.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kèhj h²hubeh}”(h]”Œnested-attributes”ah ]”h"]”Œnested-attributes”ah$]”h&]”uh1hÈhjœh²hh³hÇh´KæubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒmulti-attr (arrays)”h]”hŒmulti-attr (arrays)”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj) h²hh³hÇh´KìubhÞ)�”}”(hŒ¯Boolean property signifying that the attribute may be present multiple times. Allowing an attribute to repeat is the recommended way of implementing arrays (no extra nesting).”h]”hŒ¯Boolean property signifying that the attribute may be present multiple times. Allowing an attribute to repeat is the recommended way of implementing arrays (no extra nesting).”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kîhj) h²hubeh}”(h]”Œmulti-attr-arrays”ah ]”h"]”Œmulti-attr (arrays)”ah$]”h&]”uh1hÈhjœh²hh³hÇh´KìubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ byte-order”h]”hŒ byte-order”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjP h²hh³hÇh´KóubhÞ)�”}”(hŒWFor integer types specifies attribute byte order - ``little-endian`` or ``big-endian``.”h]”(hŒ3For integer types specifies attribute byte order - ”…”�”}”(hja h²hh³Nh´Nubj¡)�”}”(hŒ``little-endian``”h]”hŒ little-endian”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja ubhŒ or ”…”�”}”(hja h²hh³Nh´Nubj¡)�”}”(hŒ``big-endian``”h]”hŒ big-endian”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja ubhŒ.”…”�”}”(hja h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KõhjP h²hubeh}”(h]”Œ byte-order”ah ]”h"]”Œ byte-order”ah$]”h&]”uh1hÈhjœh²hh³hÇh´KóubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒchecks”h]”hŒchecks”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj› h²hh³hÇh´KùubhÞ)�”}”(hŒÈInput validation constraints used by the kernel. User space should query the policy of the running kernel using Generic Netlink introspection, rather than depend on what is specified in the spec file.”h]”hŒÈInput validation constraints used by the kernel. User space should query the policy of the running kernel using Generic Netlink introspection, rather than depend on what is specified in the spec file.”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kûhj› h²hubhÞ)�”}”(hŒ‡The validation policy in the kernel is formed by combining the type definition (``type`` and ``nested-attributes``) and the ``checks``.”h]”(hŒPThe validation policy in the kernel is formed by combining the type definition (”…”�”}”(hjº h²hh³Nh´Nubj¡)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº ubhŒ and ”…”�”}”(hjº h²hh³Nh´Nubj¡)�”}”(hŒ``nested-attributes``”h]”hŒnested-attributes”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº ubhŒ ) and the ”…”�”}”(hjº h²hh³Nh´Nubj¡)�”}”(hŒ ``checks``”h]”hŒchecks”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº ubhŒ.”…”�”}”(hjº h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kÿhj› h²hubeh}”(h]”Œchecks”ah ]”h"]”Œchecks”ah$]”h&]”uh1hÈhjœh²hh³hÇh´KùubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒsub-type”h]”hŒsub-type”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´MubhÞ)�”}”(hX’Legacy families have special ways of expressing arrays. ``sub-type`` can be used to define the type of array members in case array members are not fully defined as attributes (in a bona fide attribute space). For instance a C array of u32 values can be specified with ``type: binary`` and ``sub-type: u32``. Binary types and legacy array formats are described in more detail in :doc:`genetlink-legacy`.”h]”(hŒ8Legacy families have special ways of expressing arrays. ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ ``sub-type``”h]”hŒsub-type”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒÈ can be used to define the type of array members in case array members are not fully defined as attributes (in a bona fide attribute space). For instance a C array of u32 values can be specified with ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ``type: binary``”h]”hŒ type: binary”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ and ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ``sub-type: u32``”h]”hŒ sub-type: u32”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒH. Binary types and legacy array formats are described in more detail in ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:doc:`genetlink-legacy`”h]”j/)�”}”(hjW h]”hŒgenetlink-legacy”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j.hjU ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jc Œreftype”Œdoc”Œ refexplicit”‰Œrefwarn”ˆjMŒgenetlink-legacy”uh1hh³hÇh´Mhj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj h²hubeh}”(h]”Œsub-type”ah ]”h"]”Œsub-type”ah$]”h&]”uh1hÈhjœh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ display-hint”h]”hŒ display-hint”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‡ h²hh³hÇh´M ubhÞ)�”}”(hŒÛOptional format indicator that is intended only for choosing the right formatting mechanism when displaying values of this type. Currently supported hints are ``hex``, ``mac``, ``fddi``, ``ipv4``, ``ipv6`` and ``uuid``.”h]”(hŒŸOptional format indicator that is intended only for choosing the right formatting mechanism when displaying values of this type. Currently supported hints are ”…”�”}”(hj˜ h²hh³Nh´Nubj¡)�”}”(hŒ``hex``”h]”hŒhex”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ ubhŒ, ”…”�”}”(hj˜ h²hh³Nh´Nubj¡)�”}”(hŒ``mac``”h]”hŒmac”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ ubhŒ, ”…”�”}”hj˜ sbj¡)�”}”(hŒ``fddi``”h]”hŒfddi”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ ubhŒ, ”…”�”}”hj˜ sbj¡)�”}”(hŒ``ipv4``”h]”hŒipv4”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ ubhŒ, ”…”�”}”hj˜ sbj¡)�”}”(hŒ``ipv6``”h]”hŒipv6”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ ubhŒ and ”…”�”}”(hj˜ h²hh³Nh´Nubj¡)�”}”(hŒ``uuid``”h]”hŒuuid”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜ ubhŒ.”…”�”}”(hj˜ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj‡ h²hubeh}”(h]”Œ display-hint”ah ]”h"]”Œ display-hint”ah$]”h&]”uh1hÈhjœh²hh³hÇh´M ubeh}”(h]”(j‹Œid3”eh ]”h"]”(Œattribute properties”Œattribute_properties”eh$]”h&]”uh1hÈhj“h²hh³hÇh´K¹jê }”j j€sjì }”j‹j€subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ operations”h]”hŒ operations”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj% h²hh³hÇh´MubhÞ)�”}”(hŒ¦This section describes messages passed between the kernel and the user space. There are three types of entries in this section - operations, notifications and events.”h]”hŒ¦This section describes messages passed between the kernel and the user space. There are three types of entries in this section - operations, notifications and events.”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj% h²hubhÞ)�”}”(hXùOperations describe the most common request - response communication. User sends a request and kernel replies. Each operation may contain any combination of the two modes familiar to netlink users - ``do`` and ``dump``. ``do`` and ``dump`` in turn contain a combination of ``request`` and ``response`` properties. If no explicit message with attributes is passed in a given direction (e.g. a ``dump`` which does not accept filter, or a ``do`` of a SET operation to which the kernel responds with just the netlink error code) ``request`` or ``response`` section can be skipped. ``request`` and ``response`` sections list the attributes allowed in a message. The list contains only the names of attributes from a set referred to by the ``attribute-set`` property.”h]”(hŒÇOperations describe the most common request - response communication. User sends a request and kernel replies. Each operation may contain any combination of the two modes familiar to netlink users - ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ``do``”h]”hŒdo”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ and ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ``dump``”h]”hŒdump”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ. ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ``do``”h]”hŒdo”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ and ”…”�”}”hjD sbj¡)�”}”(hŒ``dump``”h]”hŒdump”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ" in turn contain a combination of ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ ``request``”h]”hŒrequest”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ and ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ ``response``”h]”hŒresponse”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ[ properties. If no explicit message with attributes is passed in a given direction (e.g. a ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ``dump``”h]”hŒdump”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ$ which does not accept filter, or a ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ``do``”h]”hŒdo”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒS of a SET operation to which the kernel responds with just the netlink error code) ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ ``request``”h]”hŒrequest”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ or ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ ``response``”h]”hŒresponse”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ section can be skipped. ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ ``request``”h]”hŒrequest”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ and ”…”�”}”hjD sbj¡)�”}”(hŒ ``response``”h]”hŒresponse”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ� sections list the attributes allowed in a message. The list contains only the names of attributes from a set referred to by the ”…”�”}”(hjD h²hh³Nh´Nubj¡)�”}”(hŒ``attribute-set``”h]”hŒ attribute-set”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD ubhŒ property.”…”�”}”(hjD h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj% h²hubhÞ)�”}”(hX™Notifications and events both refer to the asynchronous messages sent by the kernel to members of a multicast group. The difference between the two is that a notification shares its contents with a GET operation (the name of the GET operation is specified in the ``notify`` property). This arrangement is commonly used for notifications about objects where the notification carries the full object definition.”h]”(hXNotifications and events both refer to the asynchronous messages sent by the kernel to members of a multicast group. The difference between the two is that a notification shares its contents with a GET operation (the name of the GET operation is specified in the ”…”�”}”(hj<h²hh³Nh´Nubj¡)�”}”(hŒ ``notify``”h]”hŒnotify”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj<ubhŒˆ property). This arrangement is commonly used for notifications about objects where the notification carries the full object definition.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hj% h²hubhÞ)�”}”(hXGEvents are more focused and carry only a subset of information rather than full object state (a made up example would be a link state change event with just the interface name and the new link state). Events contain the ``event`` property. Events are considered less idiomatic for netlink and notifications should be preferred.”h]”(hŒÜEvents are more focused and carry only a subset of information rather than full object state (a made up example would be a link state change event with just the interface name and the new link state). Events contain the ”…”�”}”(hj\h²hh³Nh´Nubj¡)�”}”(hŒ ``event``”h]”hŒevent”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ubhŒb property. Events are considered less idiomatic for netlink and notifications should be preferred.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M-hj% h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj|h²hh³hÇh´M4ubhÞ)�”}”(hŒgThe only property of ``operations`` for ``genetlink``, holds the list of operations, notifications etc.”h]”(hŒThe only property of ”…”�”}”(hj�h²hh³Nh´Nubj¡)�”}”(hŒ``operations``”h]”hŒ operations”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubhŒ for ”…”�”}”(hj�h²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubhŒ2, holds the list of operations, notifications etc.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M6hj|h²hubeh}”(h]”Œlist”ah ]”h"]”h$]”Œlist”ah&]”uh1hÈhj% h²hh³hÇh´M4jêKubeh}”(h]”Œ operations”ah ]”h"]”Œ operations”ah$]”h&]”uh1hÈhj“h²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOperation properties”h]”hŒOperation properties”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÏh²hh³hÇh´M:ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒname”h]”hŒname”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjàh²hh³hÇh´M=ubhÞ)�”}”(hŒIdentifies the operation.”h]”hŒIdentifies the operation.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M?hjàh²hubeh}”(h]”Œid7”ah ]”h"]”h$]”Œname”ah&]”uh1hÈhjÏh²hh³hÇh´M=jêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´MBubhÞ)�”}”(hŒŒNumerical message ID, used in serialized Netlink messages. The same enumeration rules are applied as to :ref:`attribute values`.”h]”(hŒhNumerical message ID, used in serialized Netlink messages. The same enumeration rules are applied as to ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ#:ref:`attribute values`”h]”j/)�”}”(hj"h]”hŒattribute values”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”j.Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjMŒ assign_val”uh1hh³hÇh´MDhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MDhjh²hubeh}”(h]”Œid8”ah ]”h"]”h$]”Œvalue”ah&]”uh1hÈhjÏh²hh³hÇh´MBjêKubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ attribute-set”h]”hŒ attribute-set”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjRh²hh³hÇh´MIubhÞ)�”}”(hŒ9Specifies the attribute set contained within the message.”h]”hŒ9Specifies the attribute set contained within the message.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MKhjRh²hubeh}”(h]”Œ attribute-set”ah ]”h"]”Œ attribute-set”ah$]”h&]”uh1hÈhjÏh²hh³hÇh´MIubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒdo”h]”hŒdo”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjyh²hh³hÇh´MNubhÞ)�”}”(hŒ‹Specification for the ``doit`` request. Should contain ``request``, ``reply`` or both of these properties, each holding a :ref:`attr_list`.”h]”(hŒSpecification for the ”…”�”}”(hjŠh²hh³Nh´Nubj¡)�”}”(hŒ``doit``”h]”hŒdoit”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠubhŒ request. Should contain ”…”�”}”(hjŠh²hh³Nh´Nubj¡)�”}”(hŒ ``request``”h]”hŒrequest”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠubhŒ, ”…”�”}”(hjŠh²hh³Nh´Nubj¡)�”}”(hŒ ``reply``”h]”hŒreply”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠubhŒ- or both of these properties, each holding a ”…”�”}”(hjŠh²hh³Nh´Nubh)�”}”(hŒ:ref:`attr_list`”h]”j/)�”}”(hjÊh]”hŒ attr_list”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hjÈubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jÖŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjMŒ attr_list”uh1hh³hÇh´MPhjŠubhŒ.”…”�”}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MPhjyh²hubeh}”(h]”Œdo”ah ]”h"]”Œdo”ah$]”h&]”uh1hÈhjÏh²hh³hÇh´MNubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒdump”h]”hŒdump”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjúh²hh³hÇh´MTubhÞ)�”}”(hŒ�Specification for the ``dumpit`` request. Should contain ``request``, ``reply`` or both of these properties, each holding a :ref:`attr_list`.”h]”(hŒSpecification for the ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ ``dumpit``”h]”hŒdumpit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ request. Should contain ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ ``request``”h]”hŒrequest”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ, ”…”�”}”(hj h²hh³Nh´Nubj¡)�”}”(hŒ ``reply``”h]”hŒreply”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ- or both of these properties, each holding a ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:ref:`attr_list`”h]”j/)�”}”(hjKh]”hŒ attr_list”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hjIubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jWŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjMŒ attr_list”uh1hh³hÇh´MVhj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MVhjúh²hubeh}”(h]”Œdump”ah ]”h"]”Œdump”ah$]”h&]”uh1hÈhjÏh²hh³hÇh´MTubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒnotify”h]”hŒnotify”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj{h²hh³hÇh´MZubhÞ)�”}”(hŒÁDesignates the message as a notification. Contains the name of the operation (possibly the same as the operation holding this property) which shares the contents with the notification (``do``).”h]”(hŒ¹Designates the message as a notification. Contains the name of the operation (possibly the same as the operation holding this property) which shares the contents with the notification (”…”�”}”(hjŒh²hh³Nh´Nubj¡)�”}”(hŒ``do``”h]”hŒdo”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ).”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M\hj{h²hubeh}”(h]”Œnotify”ah ]”h"]”Œnotify”ah$]”h&]”uh1hÈhjÏh²hh³hÇh´MZubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒevent”h]”hŒevent”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj´h²hh³hÇh´MaubhÞ)�”}”(hŒ}Specification of attributes in the event, holds a :ref:`attr_list`. ``event`` property is mutually exclusive with ``notify``.”h]”(hŒ2Specification of attributes in the event, holds a ”…”�”}”(hjÅh²hh³Nh´Nubh)�”}”(hŒ:ref:`attr_list`”h]”j/)�”}”(hjÏh]”hŒ attr_list”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hjÍubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jÛŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjMŒ attr_list”uh1hh³hÇh´MchjÅubhŒ. ”…”�”}”(hjÅh²hh³Nh´Nubj¡)�”}”(hŒ ``event``”h]”hŒevent”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅubhŒ% property is mutually exclusive with ”…”�”}”(hjÅh²hh³Nh´Nubj¡)�”}”(hŒ ``notify``”h]”hŒnotify”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅubhŒ.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mchj´h²hubeh}”(h]”Œevent”ah ]”h"]”Œevent”ah$]”h&]”uh1hÈhjÏh²hh³hÇh´MaubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒmcgrp”h]”hŒmcgrp”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj#h²hh³hÇh´MgubhÞ)�”}”(hŒWUsed with ``event`` and ``notify``, specifies which multicast group message belongs to.”h]”(hŒ Used with ”…”�”}”(hj4h²hh³Nh´Nubj¡)�”}”(hŒ ``event``”h]”hŒevent”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4ubhŒ and ”…”�”}”(hj4h²hh³Nh´Nubj¡)�”}”(hŒ ``notify``”h]”hŒnotify”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4ubhŒ5, specifies which multicast group message belongs to.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mihj#h²hubj)�”}”(hŒ.. _attr_list:”h]”h}”(h]”h ]”h"]”h$]”h&]”jŠŒ attr-list”uh1j~h´Mlhj#h²hh³hÇubeh}”(h]”Œmcgrp”ah ]”h"]”Œmcgrp”ah$]”h&]”uh1hÈhjÏh²hh³hÇh´Mgubeh}”(h]”Œoperation-properties”ah ]”h"]”Œoperation properties”ah$]”h&]”uh1hÈhj“h²hh³hÇh´M:ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMessage attribute list”h]”hŒMessage attribute list”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj�h²hh³hÇh´MoubhÞ)�”}”(hŒ~``request``, ``reply`` and ``event`` properties have a single ``attributes`` property which holds the list of attribute names.”h]”(j¡)�”}”(hŒ ``request``”h]”hŒrequest”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒ, ”…”�”}”(hj’h²hh³Nh´Nubj¡)�”}”(hŒ ``reply``”h]”hŒreply”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒ and ”…”�”}”(hj’h²hh³Nh´Nubj¡)�”}”(hŒ ``event``”h]”hŒevent”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒ properties have a single ”…”�”}”(hj’h²hh³Nh´Nubj¡)�”}”(hŒ``attributes``”h]”hŒ attributes”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒ2 property which holds the list of attribute names.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mqhj�h²hubhÞ)�”}”(hŒ¹Messages can also define ``pre`` and ``post`` properties which will be rendered as ``pre_doit`` and ``post_doit`` calls in the kernel (these properties should be ignored by user space).”h]”(hŒMessages can also define ”…”�”}”(hjäh²hh³Nh´Nubj¡)�”}”(hŒ``pre``”h]”hŒpre”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäubhŒ and ”…”�”}”(hjäh²hh³Nh´Nubj¡)�”}”(hŒ``post``”h]”hŒpost”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäubhŒ& properties which will be rendered as ”…”�”}”(hjäh²hh³Nh´Nubj¡)�”}”(hŒ ``pre_doit``”h]”hŒpre_doit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäubhŒ and ”…”�”}”hjäsbj¡)�”}”(hŒ ``post_doit``”h]”hŒ post_doit”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäubhŒH calls in the kernel (these properties should be ignored by user space).”…”�”}”(hjäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mthj�h²hubeh}”(h]”(Œmessage-attribute-list”jpeh ]”h"]”(Œmessage attribute list”Œ attr_list”eh$]”h&]”uh1hÈhj“h²hh³hÇh´Mojê }”j@jfsjì }”jpjfsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ mcast-groups”h]”hŒ mcast-groups”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjEh²hh³hÇh´MyubhÞ)�”}”(hŒ6This section lists the multicast groups of the family.”h]”hŒ6This section lists the multicast groups of the family.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M{hjEh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjdh²hh³hÇh´M~ubhÞ)�”}”(hŒRThe only property of ``mcast-groups`` for ``genetlink``, holds the list of groups.”h]”(hŒThe only property of ”…”�”}”(hjuh²hh³Nh´Nubj¡)�”}”(hŒ``mcast-groups``”h]”hŒ mcast-groups”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjuubhŒ for ”…”�”}”(hjuh²hh³Nh´Nubj¡)�”}”(hŒ ``genetlink``”h]”hŒ genetlink”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjuubhŒ, holds the list of groups.”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M€hjdh²hubeh}”(h]”Œid9”ah ]”h"]”h$]”jÅah&]”uh1hÈhjEh²hh³hÇh´M~jêKubeh}”(h]”Œ mcast-groups”ah ]”h"]”Œ mcast-groups”ah$]”h&]”uh1hÈhj“h²hh³hÇh´MyubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMulticast group properties”h]”hŒMulticast group properties”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¶h²hh³hÇh´M„ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒname”h]”hŒname”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÇh²hh³hÇh´M‡ubhÞ)�”}”(hŒ•Uniquely identifies the multicast group in the family. Similarly to Family ID, Multicast Group ID needs to be resolved at runtime, based on the name.”h]”hŒ•Uniquely identifies the multicast group in the family. Similarly to Family ID, Multicast Group ID needs to be resolved at runtime, based on the name.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M‰hjÇh²hubj)�”}”(hŒ.. _attr_types:”h]”h}”(h]”h ]”h"]”h$]”h&]”jŠŒ attr-types”uh1j~h´M�hjÇh²hh³hÇubeh}”(h]”Œid10”ah ]”h"]”h$]”Œname”ah&]”uh1hÈhj¶h²hh³hÇh´M‡jêKubeh}”(h]”Œmulticast-group-properties”ah ]”h"]”Œmulticast group properties”ah$]”h&]”uh1hÈhj“h²hh³hÇh´M„ubeh}”(h]”Œ genetlink”ah ]”h"]”Œ genetlink”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KLubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAttribute types”h]”hŒAttribute types”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´M�ubhÞ)�”}”(hŒ©This section describes the attribute types supported by the ``genetlink`` compatibility level. Refer to documentation of different levels for additional attribute types.”h]”(hŒh²hh³Nh´Nubh)�”}”(hŒ:ref:`pad_type`”h]”j/)�”}”(hjHh]”hŒpad_type”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”(j:Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j.hjFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jGŒ refdomain”jTŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjMŒpad_type”uh1hh³hÇh´M§hj>ubhŒ" for padding of 64 bit attributes.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M§hj�h²hubhÞ)�”}”(hŒdThe payload of the attribute is the integer in host order unless ``byte-order`` specifies otherwise.”h]”(hŒAThe payload of the attribute is the integer in host order unless ”…”�”}”(hjph²hh³Nh´Nubj¡)�”}”(hŒ``byte-order``”h]”hŒ byte-order”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpubhŒ specifies otherwise.”…”�”}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M«hj�h²hubhÞ)�”}”(hŒ€64 bit values are usually aligned by the kernel but it is recommended that the user space is able to deal with unaligned values.”h]”hŒ€64 bit values are usually aligned by the kernel but it is recommended that the user space is able to deal with unaligned values.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M®hj�h²hubj)�”}”(hŒ .. _pad_type:”h]”h}”(h]”h ]”h"]”h$]”h&]”jŠŒpad-type”uh1j~h´M±hj�h²hh³hÇubeh}”(h]”Œfix-width-integer-types”ah ]”h"]”Œfix-width integer types”ah$]”h&]”uh1hÈhj h²hh³hÇh´M¢ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒpad”h]”hŒpad”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj±h²hh³hÇh´M´ubhÞ)�”}”(hX#Special attribute type used for padding attributes which require alignment bigger than standard 4B alignment required by netlink (e.g. 64 bit integers). There can only be a single attribute of the ``pad`` type in any attribute set and it should be automatically used for padding when needed.”h]”(hŒÅSpecial attribute type used for padding attributes which require alignment bigger than standard 4B alignment required by netlink (e.g. 64 bit integers). There can only be a single attribute of the ”…”�”}”(hjÂh²hh³Nh´Nubj¡)�”}”(hŒ``pad``”h]”hŒpad”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂubhŒW type in any attribute set and it should be automatically used for padding when needed.”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¶hj±h²hubeh}”(h]”(Œpad”j¨eh ]”h"]”(Œpad”Œpad_type”eh$]”h&]”uh1hÈhj h²hh³hÇh´M´jê }”jèjžsjì }”j¨jžsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒflag”h]”hŒflag”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjíh²hh³hÇh´M¼ubhÞ)�”}”(hŒBAttribute with no payload, its presence is the entire information.”h]”hŒBAttribute with no payload, its presence is the entire information.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¾hjíh²hubeh}”(h]”Œflag”ah ]”h"]”Œflag”ah$]”h&]”uh1hÈhj h²hh³hÇh´M¼ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒbinary”h]”hŒbinary”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´MÁubhÞ)�”}”(hŒCRaw binary data attribute, the contents are opaque to generic code.”h]”hŒCRaw binary data attribute, the contents are opaque to generic code.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÃhjh²hubeh}”(h]”Œbinary”ah ]”h"]”Œbinary”ah$]”h&]”uh1hÈhj h²hh³hÇh´MÁubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj;h²hh³hÇh´MÆubhÞ)�”}”(hŒðCharacter string. Unless ``checks`` has ``unterminated-ok`` set to ``true`` the string is required to be null terminated. ``max-len`` in ``checks`` indicates the longest possible string, if not present the length of the string is unbounded.”h]”(hŒCharacter string. Unless ”…”�”}”(hjLh²hh³Nh´Nubj¡)�”}”(hŒ ``checks``”h]”hŒchecks”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLubhŒ has ”…”�”}”(hjLh²hh³Nh´Nubj¡)�”}”(hŒ``unterminated-ok``”h]”hŒunterminated-ok”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLubhŒ set to ”…”�”}”(hjLh²hh³Nh´Nubj¡)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLubhŒ/ the string is required to be null terminated. ”…”�”}”(hjLh²hh³Nh´Nubj¡)�”}”(hŒ ``max-len``”h]”hŒmax-len”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLubhŒ in ”…”�”}”(hjLh²hh³Nh´Nubj¡)�”}”(hŒ ``checks``”h]”hŒchecks”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLubhŒ] indicates the longest possible string, if not present the length of the string is unbounded.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÈhj;h²hubhÞ)�”}”(hŒ?Note that ``max-len`` does not count the terminating character.”h]”(hŒ Note that ”…”�”}”(hj´h²hh³Nh´Nubj¡)�”}”(hŒ ``max-len``”h]”hŒmax-len”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ* does not count the terminating character.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÍhj;h²hubeh}”(h]”Œstring”ah ]”h"]”Œstring”ah$]”h&]”uh1hÈhj h²hh³hÇh´MÆubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒnest”h]”hŒnest”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÜh²hh³hÇh´MÐubhÞ)�”}”(hŒsAttribute containing other (nested) attributes. ``nested-attributes`` specifies which attribute set is used inside.”h]”(hŒ0Attribute containing other (nested) attributes. ”…”�”}”(hjíh²hh³Nh´Nubj¡)�”}”(hŒ``nested-attributes``”h]”hŒnested-attributes”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíubhŒ. specifies which attribute set is used inside.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MÒhjÜh²hubeh}”(h]”Œnest”ah ]”h"]”Œnest”ah$]”h&]”uh1hÈhj h²hh³hÇh´MÐubeh}”(h]”(Œattribute-types”jðeh ]”h"]”(Œattribute types”Œ attr_types”eh$]”h&]”uh1hÈhhÊh²hh³hÇh´M�jê }”jjæsjì }”jðjæsubeh}”(h]”Œ'netlink-protocol-specifications-in-yaml”ah ]”h"]”Œ)netlink protocol specifications (in yaml)”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jKŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”(j‹]”j€aj! ]”j ajp]”jfajð]”jæaj¨]”jžauŒnameids”}”(j%j"jLjIj�j�jjj;j8Œname”Nj3j0jyjvŒtype”NŒvalue”Njíjêj8j5jqjnj™j–j\jYj‘jŽj j‹j j jç j! jH jE jÿ jü j& j# jM jJ j˜ j• j j j„ j� j j jÌjÉŒlist”Nj~j{jvjsj÷jôjxjuj±j®j jjvjsj@jpj?j<j³j°jþjûjjðjjjŒj‰j®j«jèj¨jçjäjjj8j5jÙjÖjjuŒ nametypes”}”(j%‰jL‰j�‰j‰j;‰j”‰j3‰jy‰j•‰j–‰jí‰j8‰jq‰j™‰j\‰j‘‰j ˆj ‰jç ˆjH ‰jÿ ‰j& ‰jM ‰j˜ ‰j ‰j„ ‰j ‰j̉j—‰j~‰jv‰j÷‰jx‰j±‰j ‰jv‰j@ˆj?‰j³‰jþ‰jˆj‰jŒ‰j®‰jèˆjç‰j‰j8‰jÙ‰j‰uh}”(j"hÊjIjj�jOjj“j8j¤jäjÃj0jëjvj>j~j]jþjƒj7jjêj=j5jðjnj;j–j|j jíjYj&jŽj_j‹jœj jœjÎj­j$ jÔj! j) jä j) jE jî jü jK j# j jJ j) j• jP j j› j� j j j‡ jÉj% jÁj|j{jÏjjàjLjjsjRjôjyjujúj®j{jj´jsj#jpj�j<j�j°jEj©jdjûj¶jójÇjðj jj j‰j:j«j�j¨j±jäj±jjíj5jjÖj;jjÜuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jYK s…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "name".”h]”hŒ+Duplicate implicit target name: “nameâ€�.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¸ubah}”(h]”h ]”h"]”h$]”h&]”j~aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Keuh1j¶hj]h²hh³hÇh´Keubj·)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "name".”h]”hŒ+Duplicate implicit target name: “nameâ€�.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÔubah}”(h]”h ]”h"]”h$]”h&]”j aŒlevel”KŒtype”jÑŒsource”hÇŒline”K£uh1j¶hjíh²hh³hÇh´K£ubj·)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "name".”h]”hŒ+Duplicate implicit target name: “nameâ€�.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjïubah}”(h]”h ]”h"]”h$]”h&]”jÎaŒlevel”KŒtype”jÑŒsource”hÇŒline”K¼uh1j¶hj­h²hh³hÇh´K¼ubj·)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "type".”h]”hŒ+Duplicate implicit target name: “typeâ€�.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj ubah}”(h]”h ]”h"]”h$]”h&]”j$ aŒlevel”KŒtype”jÑŒsource”hÇŒline”KÁuh1j¶hjÔh²hh³hÇh´KÁubj·)�”}”(hhh]”hÞ)�”}”(hŒ(Duplicate implicit target name: "value".”h]”hŒ,Duplicate implicit target name: “valueâ€�.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj%ubah}”(h]”h ]”h"]”h$]”h&]”jä aŒlevel”KŒtype”jÑŒsource”hÇŒline”KÈuh1j¶hj) h²hh³hÇh´KÈubj·)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "name".”h]”hŒ+Duplicate implicit target name: “nameâ€�.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj@ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”jÑŒsource”hÇŒline”M=uh1j¶hjàh²hh³hÇh´M=ubj·)�”}”(hhh]”hÞ)�”}”(hŒ(Duplicate implicit target name: "value".”h]”hŒ,Duplicate implicit target name: “valueâ€�.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj[ubah}”(h]”h ]”h"]”h$]”h&]”jLaŒlevel”KŒtype”jÑŒsource”hÇŒline”MBuh1j¶hjh²hh³hÇh´MBubj·)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "list".”h]”hŒ+Duplicate implicit target name: “listâ€�.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjvubah}”(h]”h ]”h"]”h$]”h&]”j©aŒlevel”KŒtype”jÑŒsource”hÇŒline”M~uh1j¶hjdh²hh³hÇh´M~ubj·)�”}”(hhh]”hÞ)�”}”(hŒ'Duplicate implicit target name: "name".”h]”hŒ+Duplicate implicit target name: “nameâ€�.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj‘ubah}”(h]”h ]”h"]”h$]”h&]”jóaŒlevel”KŒtype”jÑŒsource”hÇŒline”M‡uh1j¶hjÇh²hh³hÇh´M‡ubeŒtransform_messages”]”(j·)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ:Hyperlink target "attribute-properties" is not referenced.”…”�”}”hj±sbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj®ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÑŒsource”hÇŒline”K¶uh1j¶ubj·)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ0Hyperlink target "assign-val" is not referenced.”…”�”}”hjËsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÈubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÑŒsource”hÇŒline”KÅuh1j¶ubj·)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ/Hyperlink target "attr-list" is not referenced.”…”�”}”hjåsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjâubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÑŒsource”hÇŒline”Mluh1j¶ubj·)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ0Hyperlink target "attr-types" is not referenced.”…”�”}”hjÿsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjüubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÑŒsource”hÇŒline”M�uh1j¶ubj·)�”}”(hhh]”hÞ)�”}”(hhh]”hŒ.Hyperlink target "pad-type" is not referenced.”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÑŒsource”hÇŒline”M±uh1j¶ubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.