sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget+/translations/zh_CN/netlink/specs/wireguardmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/netlink/specs/wireguardmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/netlink/specs/wireguardmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/netlink/specs/wireguardmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/netlink/specs/wireguardmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/netlink/specs/wireguardmodnameN 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:spacepreserveuh1hhhhhhF/var/lib/git/docbuild/linux/Documentation/netlink/specs/wireguard.yamlhKubh)}(h'NOTE: This document was auto-generated.h]h'NOTE: This document was auto-generated.}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhtarget)}(h.. _netlink-wireguard:h]h}(h]h ]h"]h$]h&]refidnetlink-wireguarduh1hhKhhhhhhubhsection)}(hhh](htitle)}(h*Family ``wireguard`` netlink specificationh](hFamily }(hhhhhNhNubhliteral)}(h ``wireguard``h]h wireguard}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh netlink specification}(hhhhhNhNubeh}(h]h ]h"]h$]h&]hΌid6uh1hhhhhhhhKubhtopic)}(h Contents h](h)}(hContentsh]hContents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh bullet_list)}(hhh]h list_item)}(hhh](h paragraph)}(hhh]h reference)}(hhh](hFamily }(hjhhhNhNubh)}(hhh]h wireguard}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhNhNhjubh netlink specification}(hjhhhNhNubeh}(h]hah ]h"]h$]h&]refid&family-wireguard-netlink-specificationuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]j)}(hhh]j)}(hhh]hSummary}(hjNhhhNhNubah}(h]id7ah ]h"]h$]h&]refidsummaryuh1jhjKubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jhjEubj)}(hhh](j)}(hhh]j)}(hhh]h Operations}(hjphhhNhNubah}(h]id8ah ]h"]h$]h&]refid operationsuh1jhjmubah}(h]h ]h"]h$]h&]uh1jhjjubj)}(hhh](j)}(hhh]j)}(hhh]j)}(hhh]h get-device}(hjhhhNhNubah}(h]id9ah ]h"]h$]h&]refid get-deviceuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]h set-device}(hjhhhNhNubah}(h]id10ah ]h"]h$]h&]refid set-deviceuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjEubj)}(hhh](j)}(hhh]j)}(hhh]h Definitions}(hjhhhNhNubah}(h]id11ah ]h"]h$]h&]refid definitionsuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]j)}(hhh]j)}(hhh]hkey-len}(hjhhhNhNubah}(h]id12ah ]h"]h$]h&]refidkey-lenuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]h--kernel-timespec}(hj hhhNhNubah}(h]id13ah ]h"]h$]h&]refidkernel-timespecuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]hwgdevice-flags}(hjBhhhNhNubah}(h]id14ah ]h"]h$]h&]refidwgdevice-flagsuh1jhj?ubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]h wgpeer-flags}(hjdhhhNhNubah}(h]id15ah ]h"]h$]h&]refid wgpeer-flagsuh1jhjaubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]hwgallowedip-flags}(hjhhhNhNubah}(h]id16ah ]h"]h$]h&]refidwgallowedip-flagsuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjEubj)}(hhh](j)}(hhh]j)}(hhh]hAttribute sets}(hjhhhNhNubah}(h]id17ah ]h"]h$]h&]refidattribute-setsuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]j)}(hhh]j)}(hhh]hwgdevice}(hjhhhNhNubah}(h]id18ah ]h"]h$]h&]refidwgdeviceuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]hwgpeer}(hjhhhNhNubah}(h]id19ah ]h"]h$]h&]refidwgpeeruh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]j)}(hhh]j)}(hhh]h wgallowedip}(hjhhhNhNubah}(h]id20ah ]h"]h$]h&]refid wgallowedipuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhhhNhNubeh}(h]contentsah ]contentsah"]contentsah$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hSummaryh]hSummary}(hj]hhhNhNubah}(h]h ]h"]h$]h&]hjWuh1hhjZhhhhhKubj)}(h:**Netlink protocol to control WireGuard network devices.**h]hstrong)}(hjmh]h6Netlink protocol to control WireGuard network devices.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1johjkubah}(h]h ]h"]h$]h&]uh1jhhhKhjZhhubj)}(hX|The below enums and macros are for interfacing with WireGuard, using generic netlink, with family ``WG_GENL_NAME`` and version ``WG_GENL_VERSION``. It defines two commands: get and set. Note that while they share many common attributes, these two commands actually accept a slightly different set of inputs and outputs. These differences are noted under the individual attributes.h](hbThe below enums and macros are for interfacing with WireGuard, using generic netlink, with family }(hjhhhNhNubh)}(h``WG_GENL_NAME``h]h WG_GENL_NAME}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh and version }(hjhhhNhNubh)}(h``WG_GENL_VERSION``h]hWG_GENL_VERSION}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh. It defines two commands: get and set. Note that while they share many common attributes, these two commands actually accept a slightly different set of inputs and outputs. These differences are noted under the individual attributes.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjZhhubeh}(h]j]ah ]h"]summaryah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Operationsh]h Operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjyuh1hhjhhhhhKubh)}(h#.. _wireguard-operation-get-device:h]h}(h]h ]h"]h$]h&]hΌwireguard-operation-get-deviceuh1hhK&hjhhhhubh)}(hhh](h)}(h get-deviceh]h get-device}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhKubh)}(hhh](h)}(hRetrieve WireGuard deviceh]hRetrieve WireGuard device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(h6The command should be called with one but not both of:h]h6The command should be called with one but not both of:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j)}(h``WGDEVICE_A_IFINDEX``h]j)}(hjh]h)}(hjh]hWGDEVICE_A_IFINDEX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj hhhhhNubj)}(h``WGDEVICE_A_IFNAME`` h]j)}(h``WGDEVICE_A_IFNAME``h]h)}(hj2h]hWGDEVICE_A_IFNAME}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0ubah}(h]h ]h"]h$]h&]uh1jhhhKhj,ubah}(h]h ]h"]h$]h&]uh1jhj hhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhjhhubj)}(hXThe kernel will then return several messages (``NLM_F_MULTI``). It is possible that all of the allowed IPs of a single peer will not fit within a single netlink message. In that case, the same peer will be written in the following message, except it will only contain ``WGPEER_A_PUBLIC_KEY`` and ``WGPEER_A_ALLOWEDIPS``. This may occur several times in a row for the same peer. It is then up to the receiver to coalesce adjacent peers. Likewise, it is possible that all peers will not fit within a single message. So, subsequent peers will be sent in following messages, except those will only contain ``WGDEVICE_A_IFNAME`` and ``WGDEVICE_A_PEERS``. It is then up to the receiver to coalesce these messages to form the complete list of peers.h](h.The kernel will then return several messages (}(hjUhhhNhNubh)}(h``NLM_F_MULTI``h]h NLM_F_MULTI}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUubh). It is possible that all of the allowed IPs of a single peer will not fit within a single netlink message. In that case, the same peer will be written in the following message, except it will only contain }(hjUhhhNhNubh)}(h``WGPEER_A_PUBLIC_KEY``h]hWGPEER_A_PUBLIC_KEY}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUubh and }(hjUhhhNhNubh)}(h``WGPEER_A_ALLOWEDIPS``h]hWGPEER_A_ALLOWEDIPS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUubhX. This may occur several times in a row for the same peer. It is then up to the receiver to coalesce adjacent peers. Likewise, it is possible that all peers will not fit within a single message. So, subsequent peers will be sent in following messages, except those will only contain }(hjUhhhNhNubh)}(h``WGDEVICE_A_IFNAME``h]hWGDEVICE_A_IFNAME}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUubh and }(hjUhhhNhNubh)}(h``WGDEVICE_A_PEERS``h]hWGDEVICE_A_PEERS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUubh^. It is then up to the receiver to coalesce these messages to form the complete list of peers.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hSince this is an ``NLA_F_DUMP`` command, the final message will always be ``NLMSG_DONE``, even if an error occurs. However, this ``NLMSG_DONE`` message contains an integer error code. It is either zero or a negative error code corresponding to the errno.h](hSince this is an }(hjhhhNhNubh)}(h``NLA_F_DUMP``h]h NLA_F_DUMP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh+ command, the final message will always be }(hjhhhNhNubh)}(h``NLMSG_DONE``h]h NLMSG_DONE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh), even if an error occurs. However, this }(hjhhhNhNubh)}(h``NLMSG_DONE``h]h NLMSG_DONE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubho message contains an integer error code. It is either zero or a negative error code corresponding to the errno.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hvalueh]hvalue}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubh field_body)}(h0h]j)}(hjh]h0}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(h attribute-seth]h attribute-set}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:hhhKubj)}(h':ref:`wireguard-attribute-set-wgdevice`h]j)}(hjMh]h)}(hjMh]hinline)}(hjMh]h wireguard-attribute-set-wgdevice}(hjWhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jUhjRubah}(h]h ]h"]h$]h&]refdocnetlink/specs/wireguard refdomainjbreftyperef refexplicitrefwarn reftarget wireguard-attribute-set-wgdeviceuh1hhhhKhjOubah}(h]h ]h"]h$]h&]uh1jhhhKhjKubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h[``uns-admin-perm``]h]j)}(hjh](h[}(hjhhhNhNubh)}(h``uns-admin-perm``h]huns-admin-perm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh]}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hdumph]hdump}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hX**pre** wg-get-device-start **post** wg-get-device-done **request** :attributes: [``ifindex``, ``ifname``] **reply** :attributes: [``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``] h]hdefinition_list)}(hhh](hdefinition_list_item)}(h**pre** wg-get-device-start h](hterm)}(h**pre**h]jp)}(hjh]hpre}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1jhhhMhjubh definition)}(hhh]j)}(hwg-get-device-starth]hwg-get-device-start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(h**post** wg-get-device-done h](j)}(h**post**h]jp)}(hj&h]hpost}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1johj$ubah}(h]h ]h"]h$]h&]uh1jhhhMhj ubj)}(hhh]j)}(hwg-get-device-doneh]hwg-get-device-done}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj;ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(h3**request** :attributes: [``ifindex``, ``ifname``] h](j)}(h **request**h]jp)}(hj^h]hrequest}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1johj\ubah}(h]h ]h"]h$]h&]uh1jhhhMhjXubj)}(hhh]j)}(hhh]j)}(hhh](j )}(h attributesh]h attributes}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjyhhhKubj)}(h[``ifindex``, ``ifname``] h]j)}(h[``ifindex``, ``ifname``]h](h[}(hjhhhNhNubh)}(h ``ifindex``h]hifindex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h ``ifname``h]hifname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh]}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhhhMhjvubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(h**reply** :attributes: [``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``] h](j)}(h **reply**h]jp)}(hjh]hreply}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh]j)}(hhh]j)}(hhh](j )}(h attributesh]h attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hq[``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``] h]j)}(hm[``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``]h](h[}(hjhhhNhNubh)}(h ``ifindex``h]hifindex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h ``ifname``h]hifname}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }hjsbh)}(h``private-key``h]h private-key}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }hjsbh)}(h``public-key``h]h public-key}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }hjsbh)}(h ``flags``h]hflags}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }hjsbh)}(h``listen-port``h]h listen-port}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }hjsbh)}(h ``fwmark``h]hfwmark}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }hjsbh)}(h ``peers``h]hpeers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh]}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h#.. _wireguard-operation-set-device:h]h}(h]h ]h"]h$]h&]hΌwireguard-operation-set-deviceuh1hhKXhjhhhhubeh}(h]retrieve-wireguard-deviceah ]h"]retrieve wireguard deviceah$]h&]uh1hhjhhhhhKubeh}(h](jjeh ]h"]( get-devicewireguard-operation-get-deviceeh$]h&]uh1hhjhhhhhKexpect_referenced_by_name}jjsexpect_referenced_by_id}jjsubh)}(hhh](h)}(h set-deviceh]h set-device}(hj hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhMubh)}(hhh](h)}(hSet WireGuard deviceh]hSet WireGuard device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubj)}(hThis command should be called with a wgdevice set, containing one but not both of ``WGDEVICE_A_IFINDEX`` and ``WGDEVICE_A_IFNAME``.h](hRThis command should be called with a wgdevice set, containing one but not both of }(hj)hhhNhNubh)}(h``WGDEVICE_A_IFINDEX``h]hWGDEVICE_A_IFINDEX}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubh and }(hj)hhhNhNubh)}(h``WGDEVICE_A_IFNAME``h]hWGDEVICE_A_IFNAME}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubh.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hXIt is possible that the amount of configuration data exceeds that of the maximum message length accepted by the kernel. In that case, several messages should be sent one after another, with each successive one filling in information not contained in the prior. Note that if ``WGDEVICE_F_REPLACE_PEERS`` is specified in the first message, it probably should not be specified in fragments that come after, so that the list of peers is only cleared the first time but appended after. Likewise for peers, if ``WGPEER_F_REPLACE_ALLOWEDIPS`` is specified in the first message of a peer, it likely should not be specified in subsequent fragments.h](hXIt is possible that the amount of configuration data exceeds that of the maximum message length accepted by the kernel. In that case, several messages should be sent one after another, with each successive one filling in information not contained in the prior. Note that if }(hj[hhhNhNubh)}(h``WGDEVICE_F_REPLACE_PEERS``h]hWGDEVICE_F_REPLACE_PEERS}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[ubh is specified in the first message, it probably should not be specified in fragments that come after, so that the list of peers is only cleared the first time but appended after. Likewise for peers, if }(hj[hhhNhNubh)}(h``WGPEER_F_REPLACE_ALLOWEDIPS``h]hWGPEER_F_REPLACE_ALLOWEDIPS}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[ubhh is specified in the first message of a peer, it likely should not be specified in subsequent fragments.}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hCIf an error occurs, ``NLMSG_ERROR`` will reply containing an errno.h](hIf an error occurs, }(hjhhhNhNubh)}(h``NLMSG_ERROR``h]h NLMSG_ERROR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh will reply containing an errno.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j)}(hhh](j )}(hvalueh]hvalue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h1h]j)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j )}(h attribute-seth]h attribute-set}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h':ref:`wireguard-attribute-set-wgdevice`h]j)}(hjh]h)}(hjh]jV)}(hjh]h wireguard-attribute-set-wgdevice}(hjhhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhjubah}(h]h ]h"]h$]h&]refdocjn refdomainj reftyperef refexplicitrefwarnjt wireguard-attribute-set-wgdeviceuh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j )}(hflagsh]hflags}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj' hhhKubj)}(h[``uns-admin-perm``]h]j)}(hj: h](h[}(hj< hhhNhNubh)}(h``uns-admin-perm``h]huns-admin-perm}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj< ubh]}(hj< hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhj8 ubah}(h]h ]h"]h$]h&]uh1jhj' ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j )}(hdoh]hdo}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjg hhhKubj)}(h**request** :attributes: [``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``] h]j)}(hhh]j)}(h**request** :attributes: [``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``] h](j)}(h **request**h]jp)}(hj h]hrequest}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1johj ubah}(h]h ]h"]h$]h&]uh1jhhhM*hj ubj)}(hhh]j)}(hhh]j)}(hhh](j )}(h attributesh]h attributes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hq[``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``] h]j)}(hm[``ifindex``, ``ifname``, ``private-key``, ``public-key``, ``flags``, ``listen-port``, ``fwmark``, ``peers``]h](h[}(hj hhhNhNubh)}(h ``ifindex``h]hifindex}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }(hj hhhNhNubh)}(h ``ifname``h]hifname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }hj sbh)}(h``private-key``h]h private-key}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }hj sbh)}(h``public-key``h]h public-key}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }hj sbh)}(h ``flags``h]hflags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }hj sbh)}(h``listen-port``h]h listen-port}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }hj sbh)}(h ``fwmark``h]hfwmark}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh, }hj sbh)}(h ``peers``h]hpeers}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh]}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhM*hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhM*hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhM*hj| ubah}(h]h ]h"]h$]h&]uh1jhjx ubah}(h]h ]h"]h$]h&]uh1jhjg ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhMubeh}(h]set-wireguard-deviceah ]h"]set wireguard deviceah$]h&]uh1hhjhhhhhMubeh}(h](jjeh ]h"]( set-devicewireguard-operation-set-deviceeh$]h&]uh1hhjhhhhhMj}j jsj}jjsubeh}(h]jah ]h"] operationsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Definitionsh]h Definitions}(hj hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhj hhhhhM*ubh)}(h!.. _wireguard-definition-key-len:h]h}(h]h ]h"]h$]h&]hΌwireguard-definition-key-lenuh1hhKhj hhhhubh)}(hhh](h)}(hkey-lenh]hkey-len}(hj hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhj hhhhhKubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hwg-h]j)}(hj h]hwg-}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(htypeh]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hconsth]j)}(hj h]hconst}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(hvalueh]hvalue}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj. hhhKubj)}(h32 h]j)}(h32h]h32}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj? ubah}(h]h ]h"]h$]h&]uh1jhj. ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubeh}(h]h ]h"]h$]h&]uh1jhj hhhhhKubh)}(h+.. _wireguard-definition---kernel-timespec:h]h}(h]h ]h"]h$]h&]hΌ$wireguard-definition-kernel-timespecuh1hhKhj hhhhubeh}(h](j j eh ]h"](key-lenwireguard-definition-key-leneh$]h&]uh1hhj hhhhhKj}js j sj}j j subh)}(hhh](h)}(h--kernel-timespech]h--kernel-timespec}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]hj)uh1hhjx hhhhhKubj)}(hhh](j)}(hhh](j )}(htypeh]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hstructh]j)}(hj h]hstruct}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(hheaderh]hheader}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hlinux/time_types.h h]j)}(hlinux/time_types.hh]hlinux/time_types.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(hmembersh]hmembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hw:sec (``u64``): Number of seconds, since UNIX epoch. :nsec (``u64``): Number of nanoseconds, after the second began. h]j)}(hhh](j)}(hhh](j )}(h sec (``u64``)h](hsec (}(hj hhhNhNubh)}(h``u64``h]hu64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh)}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(h$Number of seconds, since UNIX epoch.h]j)}(hj& h]h$Number of seconds, since UNIX epoch.}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj$ ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh](j )}(hnsec (``u64``)h](hnsec (}(hjD hhhNhNubh)}(h``u64``h]hu64}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjD ubh)}(hjD hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjA hhhKubj)}(h1Number of nanoseconds, after the second began. h]j)}(h.Number of nanoseconds, after the second began.h]h.Number of nanoseconds, after the second began.}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjd ubah}(h]h ]h"]h$]h&]uh1jhjA ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubeh}(h]h ]h"]h$]h&]uh1jhjx hhhhhKubh)}(h(.. _wireguard-definition-wgdevice-flags:h]h}(h]h ]h"]h$]h&]hΌ#wireguard-definition-wgdevice-flagsuh1hhKhjx hhhhubeh}(h](j/jm eh ]h"](--kernel-timespec&wireguard-definition---kernel-timespeceh$]h&]uh1hhj hhhhhKj}j jc sj}jm jc subh)}(hhh](h)}(hwgdevice-flagsh]hwgdevice-flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]hjKuh1hhj hhhhhK'ubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(h wgdevice-f-h]j)}(hj h]h wgdevice-f-}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK'hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubj)}(hhh](j )}(h enum-nameh]h enum-name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(h wgdevice-flagh]j)}(hj h]h wgdevice-flag}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK'hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubj)}(hhh](j )}(htypeh]htype}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hflags h]j)}(hflagsh]hflags}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK'hj0 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubj)}(hhh](j )}(hentriesh]hentries}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjN hhhKubj)}(h- ``replace-peers`` h]j)}(hhh]j)}(h``replace-peers`` h]j)}(h``replace-peers``h]h)}(hjl h]h replace-peers}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj ubah}(h]h ]h"]h$]h&]uh1jhhhK'hjf ubah}(h]h ]h"]h$]h&]uh1jhjc ubah}(h]h ]h"]h$]h&]jSjTuh1jhhhK'hj_ ubah}(h]h ]h"]h$]h&]uh1jhjN ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubeh}(h]h ]h"]h$]h&]uh1jhj hhhhhK'ubh)}(h&.. _wireguard-definition-wgpeer-flags:h]h}(h]h ]h"]h$]h&]hΌ!wireguard-definition-wgpeer-flagsuh1hhKhj hhhhubeh}(h](jQj eh ]h"](wgdevice-flags#wireguard-definition-wgdevice-flagseh$]h&]uh1hhj hhhhhK'j}j j sj}j j subh)}(hhh](h)}(h wgpeer-flagsh]h wgpeer-flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]hjmuh1hhj hhhhhK.ubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(h wgpeer-f-h]j)}(hj h]h wgpeer-f-}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK.hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubj)}(hhh](j )}(h enum-nameh]h enum-name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(h wgpeer-flagh]j)}(hj h]h wgpeer-flag}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK.hjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubj)}(hhh](j )}(htypeh]htype}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$hhhKubj)}(hflags h]j)}(hflagsh]hflags}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK.hj5ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubj)}(hhh](j )}(hentriesh]hentries}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjShhhKubj)}(h=- ``remove-me`` - ``replace-allowedips`` - ``update-only`` h]j)}(hhh](j)}(h ``remove-me``h]j)}(hjmh]h)}(hjmh]h remove-me}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoubah}(h]h ]h"]h$]h&]uh1jhhhK.hjkubah}(h]h ]h"]h$]h&]uh1jhjhubj)}(h``replace-allowedips``h]j)}(hjh]h)}(hjh]hreplace-allowedips}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1jhhhK.hjubah}(h]h ]h"]h$]h&]uh1jhjhubj)}(h``update-only`` h]j)}(h``update-only``h]h)}(hjh]h update-only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1jhhhK.hjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]jSjTuh1jhhhK.hjdubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubeh}(h]h ]h"]h$]h&]uh1jhj hhhhhK.ubh)}(h+.. _wireguard-definition-wgallowedip-flags:h]h}(h]h ]h"]h$]h&]hΌ&wireguard-definition-wgallowedip-flagsuh1hhKhj hhhhubeh}(h](jsj eh ]h"]( wgpeer-flags!wireguard-definition-wgpeer-flagseh$]h&]uh1hhj hhhhhK.j}jj sj}j j subh)}(hhh](h)}(hwgallowedip-flagsh]hwgallowedip-flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhK7ubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hhhKubj)}(hwgallowedip-f-h]j)}(hj h]hwgallowedip-f-}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhK7hj hhubj)}(hhh](j )}(h enum-nameh]h enum-name}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;hhhKubj)}(hwgallowedip-flagh]j)}(hjNh]hwgallowedip-flag}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK7hjLubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhhhK7hj hhubj)}(hhh](j )}(htypeh]htype}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjihhhKubj)}(hflags h]j)}(hflagsh]hflags}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK7hjzubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhhhK7hj hhubj)}(hhh](j )}(hentriesh]hentries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h- ``remove-me`` h]j)}(hhh]j)}(h``remove-me`` h]j)}(h ``remove-me``h]h)}(hjh]h remove-me}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1jhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jSjTuh1jhhhK7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhK7hj hhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhK7ubeh}(h](jjeh ]h"](wgallowedip-flags&wireguard-definition-wgallowedip-flagseh$]h&]uh1hhj hhhhhK7j}jjsj}jjsubeh}(h]jah ]h"] definitionsah$]h&]uh1hhhhhhhhM*ubh)}(hhh](h)}(hAttribute setsh]hAttribute sets}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhK7ubh)}(h%.. _wireguard-attribute-set-wgdevice:h]h}(h]h ]h"]h$]h&]hΌ wireguard-attribute-set-wgdeviceuh1hhKhjhhhhubh)}(hhh](h)}(hwgdeviceh]hwgdevice}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhK7ubh)}(hhh](h)}(hunspec (``unused``)h](hunspec (}(hj*hhhNhNubh)}(h ``unused``h]hunused}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*ubh)}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hhhhhKFubj)}(hhh]j)}(hhh](j )}(hvalueh]hvalue}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjMhhhKubj)}(h0 h]j)}(hjh]h0}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKFhj^ubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhhhKFhjJhhubah}(h]h ]h"]h$]h&]uh1jhj'hhhhhKFubeh}(h] unspec-unusedah ]h"]h$]unspec (unused)ah&]uh1hhjhhhhhKF referencedKubh)}(hhh]h)}(hifindex (``u32``)h](h ifindex (}(hjhhhNhNubh)}(h``u32``h]hu32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKJubah}(h] ifindex-u32ah ]h"] ifindex (u32)ah$]h&]uh1hhjhhhhhKJubh)}(hhh]h)}(hifname (``string``)h](hifname (}(hjhhhNhNubh)}(h ``string``h]hstring}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKMubah}(h] ifname-stringah ]h"]ifname (string)ah$]h&]uh1hhjhhhhhKMubh)}(hhh](h)}(hprivate-key (``binary``)h](h private-key (}(hjhhhNhNubh)}(h ``binary``h]hbinary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKRubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hSet to all zeros to remove.h]j)}(hjh]hSet to all zeros to remove.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKRhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKRhjhhubj)}(hhh](j )}(h display-hinth]h display-hint}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4hhhKubj)}(hhex h]j)}(hhexh]hhex}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKRhjEubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhhhKRhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKRubeh}(h]private-key-binaryah ]h"]private-key (binary)ah$]h&]uh1hhjhhhhhKRubh)}(hhh](h)}(hpublic-key (``binary``)h](h public-key (}(hjthhhNhNubh)}(h ``binary``h]hbinary}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjtubh)}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjqhhhhhKYubj)}(hhh]j)}(hhh](j )}(h display-hinth]h display-hint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hhex h]j)}(hhexh]hhex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKYhjhhubah}(h]h ]h"]h$]h&]uh1jhjqhhhhhKYubeh}(h]public-key-binaryah ]h"]h$]public-key (binary)ah&]uh1hhjhhhhhKYjKubh)}(hhh](h)}(hflags (``u32``)h](hflags (}(hjhhhNhNubh)}(h``u32``h]hu32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhK_ubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hl``0`` or ``WGDEVICE_F_REPLACE_PEERS`` if all current peers should be removed prior to adding the list below.h]j)}(hj h](h)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh or }(hjhhhNhNubh)}(h``WGDEVICE_F_REPLACE_PEERS``h]hWGDEVICE_F_REPLACE_PEERS}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubhG if all current peers should be removed prior to adding the list below.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhK_hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhK_hjhhubj)}(hhh](j )}(henumh]henum}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjHhhhKubj)}(h-:ref:`wireguard-definition-wgdevice-flags` h]j)}(h*:ref:`wireguard-definition-wgdevice-flags`h]h)}(hj_h]jV)}(hj_h]h#wireguard-definition-wgdevice-flags}(hjdhhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhjaubah}(h]h ]h"]h$]h&]refdocjn refdomainjnreftyperef refexplicitrefwarnjt#wireguard-definition-wgdevice-flagsuh1hhhhK_hj]ubah}(h]h ]h"]h$]h&]uh1jhhhK_hjYubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhhhK_hjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhK_ubeh}(h] flags-u32ah ]h"]h$] flags (u32)ah&]uh1hhjhhhhhK_jKubh)}(hhh](h)}(hlisten-port (``u16``)h](h listen-port (}(hjhhhNhNubh)}(h``u16``h]hu16}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKfubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h#Set as ``0`` to choose randomly. h]j)}(h Set as ``0`` to choose randomly.h](hSet as }(hjhhhNhNubh)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh to choose randomly.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKfhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKfhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKfubeh}(h]listen-port-u16ah ]h"]listen-port (u16)ah$]h&]uh1hhjhhhhhKfubh)}(hhh](h)}(hfwmark (``u32``)h](hfwmark (}(hjhhhNhNubh)}(h``u32``h]hu32}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKjubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;hhhKubj)}(hSet as ``0`` to disable. h]j)}(hSet as ``0`` to disable.h](hSet as }(hjPhhhNhNubh)}(h``0``h]h0}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPubh to disable.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKjhjLubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhhhKjhj8hhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKjubeh}(h] fwmark-u32ah ]h"] fwmark (u32)ah$]h&]uh1hhjhhhhhKjubh)}(hhh](h)}(hpeers (``indexed-array``)h](hpeers (}(hjhhhNhNubh)}(h``indexed-array``h]h indexed-array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKnubj)}(hhh](j)}(hhh](j )}(hsub-typeh]hsub-type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hnesth]j)}(hjh]hnest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKnhjhhubj)}(hhh](j )}(hnested-attributesh]hnested-attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h%:ref:`wireguard-attribute-set-wgpeer`h]j)}(hjh]h)}(hjh]jV)}(hjh]hwireguard-attribute-set-wgpeer}(hjhhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhjubah}(h]h ]h"]h$]h&]refdocjn refdomainjreftyperef refexplicitrefwarnjtwireguard-attribute-set-wgpeeruh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKnhjhhubj)}(hhh](j )}(hdoch]hdoc}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'hhhKubj)}(hkThe index/type parameter is unused on ``SET_DEVICE`` operations and is zero on ``GET_DEVICE`` operations. h]j)}(hiThe index/type parameter is unused on ``SET_DEVICE`` operations and is zero on ``GET_DEVICE`` operations.h](h&The index/type parameter is unused on }(hj<hhhNhNubh)}(h``SET_DEVICE``h]h SET_DEVICE}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<ubh operations and is zero on }(hj<hhhNhNubh)}(h``GET_DEVICE``h]h GET_DEVICE}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<ubh operations.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKnhj8ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhhhKnhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKnubh)}(h#.. _wireguard-attribute-set-wgpeer:h]h}(h]h ]h"]h$]h&]hΌwireguard-attribute-set-wgpeeruh1hhMhjhhhhubeh}(h]peers-indexed-arrayah ]h"]peers (indexed-array)ah$]h&]uh1hhjhhhhhKnubeh}(h](jjeh ]h"](wgdevice wireguard-attribute-set-wgdeviceeh$]h&]uh1hhjhhhhhK7j}jj sj}jj subh)}(hhh](h)}(hwgpeerh]hwgpeer}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhKnubh)}(hhh](h)}(hunspec (``unused``)h](hunspec (}(hjhhhNhNubh)}(h ``unused``h]hunused}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhK|ubj)}(hhh]j)}(hhh](j )}(hvalueh]hvalue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h0 h]j)}(hjh]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK|hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhK|hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK|ubeh}(h]id1ah ]h"]h$]jah&]uh1hhjhhhhhK|jKubh)}(hhh](h)}(hpublic-key (``binary``)h](h public-key (}(hjhhhNhNubh)}(h ``binary``h]hbinary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]j)}(hhh](j )}(h display-hinth]h display-hint}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5hhhKubj)}(hhex h]j)}(hhexh]hhex}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjFubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj2hhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]id2ah ]h"]h$]jah&]uh1hhjhhhhhKjKubh)}(hhh](h)}(hpreshared-key (``binary``)h](hpreshared-key (}(hjthhhNhNubh)}(h ``binary``h]hbinary}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjtubh)}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjqhhhhhKubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hSet as all zeros to remove.h]j)}(hjh]hSet as all zeros to remove.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(h display-hinth]h display-hint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hhex h]j)}(hhexh]hhex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhjqhhhhhKubeh}(h]preshared-key-binaryah ]h"]preshared-key (binary)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hflags (``u32``)h](hflags (}(hjhhhNhNubh)}(h``u32``h]hu32}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hhhKubj)}(hXV``0`` and/or ``WGPEER_F_REMOVE_ME`` if the specified peer should not exist at the end of the operation, rather than added/updated and/or ``WGPEER_F_REPLACE_ALLOWEDIPS`` if all current allowed IPs of this peer should be removed prior to adding the list below and/or ``WGPEER_F_UPDATE_ONLY`` if the peer should only be set if it already exists.h]j)}(hj;h](h)}(h``0``h]h0}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubh and/or }(hj=hhhNhNubh)}(h``WGPEER_F_REMOVE_ME``h]hWGPEER_F_REMOVE_ME}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubhf if the specified peer should not exist at the end of the operation, rather than added/updated and/or }(hj=hhhNhNubh)}(h``WGPEER_F_REPLACE_ALLOWEDIPS``h]hWGPEER_F_REPLACE_ALLOWEDIPS}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubha if all current allowed IPs of this peer should be removed prior to adding the list below and/or }(hj=hhhNhNubh)}(h``WGPEER_F_UPDATE_ONLY``h]hWGPEER_F_UPDATE_ONLY}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubh5 if the peer should only be set if it already exists.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj9ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj%hhubj)}(hhh](j )}(henumh]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h+:ref:`wireguard-definition-wgpeer-flags` h]j)}(h(:ref:`wireguard-definition-wgpeer-flags`h]h)}(hjh]jV)}(hjh]h!wireguard-definition-wgpeer-flags}(hjhhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhjubah}(h]h ]h"]h$]h&]refdocjn refdomainjreftyperef refexplicitrefwarnjt!wireguard-definition-wgpeer-flagsuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhj%hhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]id3ah ]h"]h$]jah&]uh1hhjhhhhhKjKubh)}(hhh](h)}(hendpoint (``binary``)h](h endpoint (}(hjhhhNhNubh)}(h ``binary``h]hbinary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h,struct sockaddr_in or struct sockaddr_in6 h]j)}(h)struct sockaddr_in or struct sockaddr_in6h]h)struct sockaddr_in or struct sockaddr_in6}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj(ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]endpoint-binaryah ]h"]endpoint (binary)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h'persistent-keepalive-interval (``u16``)h](hpersistent-keepalive-interval (}(hjWhhhNhNubh)}(h``u16``h]hu16}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjThhhhhKubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjzhhhKubj)}(hSet as ``0`` to disable. h]j)}(hSet as ``0`` to disable.h](hSet as }(hjhhhNhNubh)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh to disable.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhhhKhjwhhubah}(h]h ]h"]h$]h&]uh1jhjThhhhhKubeh}(h]!persistent-keepalive-interval-u16ah ]h"]#persistent-keepalive-interval (u16)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h last-handshake-time (``binary``)h](hlast-handshake-time (}(hjhhhNhNubh)}(h ``binary``h]hbinary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]j)}(hhh](j )}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h0:ref:`wireguard-definition---kernel-timespec` h]j)}(h-:ref:`wireguard-definition---kernel-timespec`h]h)}(hjh]jV)}(hjh]h&wireguard-definition---kernel-timespec}(hj hhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhjubah}(h]h ]h"]h$]h&]refdocjn refdomainjreftyperef refexplicitrefwarnjt&wireguard-definition---kernel-timespecuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]last-handshake-time-binaryah ]h"]last-handshake-time (binary)ah$]h&]uh1hhjhhhhhKubh)}(hhh]h)}(hrx-bytes (``u64``)h](h rx-bytes (}(hjJhhhNhNubh)}(h``u64``h]hu64}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubh)}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjGhhhhhKubah}(h] rx-bytes-u64ah ]h"]rx-bytes (u64)ah$]h&]uh1hhjhhhhhKubh)}(hhh]h)}(htx-bytes (``u64``)h](h tx-bytes (}(hjuhhhNhNubh)}(h``u64``h]hu64}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuubh)}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjrhhhhhKubah}(h] tx-bytes-u64ah ]h"]tx-bytes (u64)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hallowedips (``indexed-array``)h](h allowedips (}(hjhhhNhNubh)}(h``indexed-array``h]h indexed-array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh](j)}(hhh](j )}(hsub-typeh]hsub-type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hnesth]j)}(hjh]hnest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hnested-attributesh]hnested-attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h*:ref:`wireguard-attribute-set-wgallowedip`h]j)}(hjh]h)}(hjh]jV)}(hjh]h#wireguard-attribute-set-wgallowedip}(hj hhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhj ubah}(h]h ]h"]h$]h&]refdocjn refdomainjreftyperef refexplicitrefwarnjt#wireguard-attribute-set-wgallowedipuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hdoch]hdoc}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:hhhKubj)}(hlThe index/type parameter is unused on ``SET_DEVICE`` operations and is zero on ``GET_DEVICE`` operations. h]j)}(hiThe index/type parameter is unused on ``SET_DEVICE`` operations and is zero on ``GET_DEVICE`` operations.h](h&The index/type parameter is unused on }(hjOhhhNhNubh)}(h``SET_DEVICE``h]h SET_DEVICE}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOubh operations and is zero on }(hjOhhhNhNubh)}(h``GET_DEVICE``h]h GET_DEVICE}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOubh operations.}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjKubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]allowedips-indexed-arrayah ]h"]allowedips (indexed-array)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hprotocol-version (``u32``)h](hprotocol-version (}(hjhhhNhNubh)}(h``u32``h]hu32}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(hShould not be set or used at all by most users of this API, as the most recent protocol will be used when this is unset. Otherwise, must be set to ``1``. h]j)}(hShould not be set or used at all by most users of this API, as the most recent protocol will be used when this is unset. Otherwise, must be set to ``1``.h](hShould not be set or used at all by most users of this API, as the most recent protocol will be used when this is unset. Otherwise, must be set to }(hjhhhNhNubh)}(h``1``h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h(.. _wireguard-attribute-set-wgallowedip:h]h}(h]h ]h"]h$]h&]hΌ#wireguard-attribute-set-wgallowedipuh1hhMNhjhhhhubeh}(h]protocol-version-u32ah ]h"]protocol-version (u32)ah$]h&]uh1hhjhhhhhKubeh}(h](jjeh ]h"](wgpeerwireguard-attribute-set-wgpeereh$]h&]uh1hhjhhhhhKnj}j jsj}jjsubh)}(hhh](h)}(h wgallowediph]h wgallowedip}(hj(hhhNhNubah}(h]h ]h"]h$]h&]hj uh1hhj%hhhhhKubh)}(hhh](h)}(hunspec (``unused``)h](hunspec (}(hj9hhhNhNubh)}(h ``unused``h]hunused}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ubh)}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6hhhhhKubj)}(hhh]j)}(hhh](j )}(hvalueh]hvalue}(hj_hhhNhNubah}(h]h ]h"5]h$]h&]uh1j hj\hhhKubj)}(h0 h]j)}(hjh]h0}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjmubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jhhhKhjYhhubah}(h]h ]h"]h$]h&]uh1jhj6hhhhhKubeh}(h]id4ah ]h"]h$]unspec (unused)ah&]uh1hhj%hhhhhKjKubh)}(hhh](h)}(hfamily (``u16``)h](hfamily (}(hjhhhNhNubh)}(h``u16``h]hu16}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h1IP family, either ``AF_INET`` or ``AF_INET6``. h]j)}(h.IP family, either ``AF_INET`` or ``AF_INET6``.h](hIP family, either }(hjhhhNhNubh)}(h ``AF_INET``h]hAF_INET}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh or }(hjhhhNhNubh)}(h ``AF_INET6``h]hAF_INET6}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h] family-u16ah ]h"] family (u16)ah$]h&]uh1hhj%hhhhhKubh)}(hhh](h)}(hipaddr (``binary``)h](hipaddr (}(hj"hhhNhNubh)}(h ``binary``h]hbinary}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"ubh)}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjEhhhKubj)}(h1Either ``struct in_addr`` or ``struct in6_addr``.h]j)}(hjXh](hEither }(hjZhhhNhNubh)}(h``struct in_addr``h]hstruct in_addr}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubh or }(hjZhhhNhNubh)}(h``struct in6_addr``h]hstruct in6_addr}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZubh.}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjVubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhhhKhjBhhubj)}(hhh](j )}(h display-hinth]h display-hint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubj)}(h ipv4-or-v6 h]j)}(h ipv4-or-v6h]h ipv4-or-v6}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjBhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h] ipaddr-binaryah ]h"]ipaddr (binary)ah$]h&]uh1hhj%hhhhhKubh)}(hhh]h)}(hcidr-mask (``u8``)h](h cidr-mask (}(hjhhhNhNubh)}(h``u8``h]hu8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubah}(h] cidr-mask-u8ah ]h"]cidr-mask (u8)ah$]h&]uh1hhj%hhhhhKubh)}(hhh](h)}(hflags (``u32``)h](hflags (}(hjhhhNhNubh)}(h``u32``h]hu32}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj%hhhKubj)}(h``WGALLOWEDIP_F_REMOVE_ME`` if the specified IP should be removed; otherwise, this IP will be added if it is not already present.h]j)}(hj8h](h)}(h``WGALLOWEDIP_F_REMOVE_ME``h]hWGALLOWEDIP_F_REMOVE_ME}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:ubhf if the specified IP should be removed; otherwise, this IP will be added if it is not already present.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj6ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj"hhubj)}(hhh](j )}(henumh]henum}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjahhhKubj)}(h.:ref:`wireguard-definition-wgallowedip-flags` h]j)}(h-:ref:`wireguard-definition-wgallowedip-flags`h]h)}(hjxh]jV)}(hjxh]h&wireguard-definition-wgallowedip-flags}(hj}hhhNhNubah}(h]h ](jastdstd-refeh"]h$]h&]uh1jUhjzubah}(h]h ]h"]h$]h&]refdocjn refdomainjreftyperef refexplicitrefwarnjt&wireguard-definition-wgallowedip-flagsuh1hhhhKhjvubah}(h]h ]h"]h$]h&]uh1jhhhKhjrubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jhhhKhj"hhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]id5ah ]h"]h$] flags (u32)ah&]uh1hhj%hhhhhKjKubeh}(h](j&jeh ]h"]( wgallowedip#wireguard-attribute-set-wgallowedipeh$]h&]uh1hhjhhhhhKj}jjsj}jjsubeh}(h]jah ]h"]attribute setsah$]h&]uh1hhhhhhhhK7ubeh}(h](j>heh ]h"](&family wireguard netlink specificationnetlink-wireguardeh$]h&]uh1hhhhhhhhKj}jhsj}hhsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'doctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addresses pep_base_urlhttps://peps.python.org/pep_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/rfc_referencesNsection_self_linksmartquotes_locales]envNtrim_footnote_reference_space smart_quotesubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(h]haj]jaj]jaj ]j ajm ]jc aj ]j aj ]j aj]jaj]j aj]jaj]jaunameids}(jhjj>jWjSjj]j jjjjjjjj jj jj j jjjs j jr j j jm j j/j j j jQjj jjsjjjjjjjjjjunspec (unused)Njjjjjnjkpublic-key (binary)N flags (u32)Njjjjjjj jjjjjjQjNjjjDjAjojljjjjjjjjjj&jjjjjju nametypes}(jjjWjj jjjj j j jjs jr j j j j jjjjjjjj@jjjnjAjBjjjj jjjQjjDjojjjjjjjjuh}(hhj>hjShj]jZjjjjjjjjjjjjj jjj j j j j jm jx j/jx j j jQj j j jsj jjjjjjjjjjjj'jjjjjkjjjqjjjjjjjjjjjjj jjljjjqjjjNjjjTjAjjljGjjrjjjjjj%j&j%jj6jjjjjjjjhjjWjNjyjpjjjjjjjjj)j jKjBjmjdjjjjjjjjj ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages](hsystem_message)}(hhh]j)}(h2Duplicate implicit target name: "unspec (unused)".h]h6Duplicate implicit target name: “unspec (unused)”.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]j alevelKtypeINFOsourcehlineK|uh1jahjhhhhhK|ubjb)}(hhh]j)}(h6Duplicate implicit target name: "public-key (binary)".h]h:Duplicate implicit target name: “public-key (binary)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jlalevelKtypej|sourcehlineKuh1jahjhhhhhKubjb)}(hhh]j)}(h.Duplicate implicit target name: "flags (u32)".h]h2Duplicate implicit target name: “flags (u32)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jalevelKtypej|sourcehlineKuh1jahjhhhhhKubjb)}(hhh]j)}(h2Duplicate implicit target name: "unspec (unused)".h]h6Duplicate implicit target name: “unspec (unused)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jalevelKtypej|sourcehlineKuh1jahj6hhhhhKubjb)}(hhh]j)}(h.Duplicate implicit target name: "flags (u32)".h]h2Duplicate implicit target name: “flags (u32)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jalevelKtypej|sourcehlineKuh1jahjhhhhhKubetransform_messages](jb)}(hhh]j)}(hhh]h7Hyperlink target "netlink-wireguard" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hDHyperlink target "wireguard-operation-get-device" is not referenced.}hj sbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineK&uh1jaubjb)}(hhh]j)}(hhh]hDHyperlink target "wireguard-operation-set-device" is not referenced.}hj$sbah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKXuh1jaubjb)}(hhh]j)}(hhh]hBHyperlink target "wireguard-definition-key-len" is not referenced.}hj>sbah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hJHyperlink target "wireguard-definition-kernel-timespec" is not referenced.}hjXsbah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hIHyperlink target "wireguard-definition-wgdevice-flags" is not referenced.}hjrsbah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hGHyperlink target "wireguard-definition-wgpeer-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hLHyperlink target "wireguard-definition-wgallowedip-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hFHyperlink target "wireguard-attribute-set-wgdevice" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineKuh1jaubjb)}(hhh]j)}(hhh]hDHyperlink target "wireguard-attribute-set-wgpeer" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineMuh1jaubjb)}(hhh]j)}(hhh]hIHyperlink target "wireguard-attribute-set-wgallowedip" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]levelKtypej|sourcehlineMNuh1jaube transformerN include_log] decorationNhhub.