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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/pt_BR/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&]hid6uh1hhhhhhhhKubhtopic)}(h Contents h](h)}(hContentsh]hContents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhKubh bullet_list)}(hhh]h list_item)}(hhh](h paragraph)}(hhh]h reference)}(hhh](hFamily }(hj3hhhNhNubh)}(hhh]h wireguard}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhNhNhj3ubh netlink specification}(hj3hhhNhNubeh}(h]j ah ]h"]h$]h&]refid&family-wireguard-netlink-specificationuh1j1hj.ubah}(h]h ]h"]h$]h&]uh1j,hj)ubj#)}(hhh](j()}(hhh]j-)}(hhh]j2)}(hhh]hSummary}(hjbhhhNhNubah}(h]id7ah ]h"]h$]h&]refidsummaryuh1j1hj_ubah}(h]h ]h"]h$]h&]uh1j,hj\ubah}(h]h ]h"]h$]h&]uh1j'hjYubj()}(hhh](j-)}(hhh]j2)}(hhh]h Operations}(hjhhhNhNubah}(h]id8ah ]h"]h$]h&]refid operationsuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hj~ubj#)}(hhh](j()}(hhh]j-)}(hhh]j2)}(hhh]h get-device}(hjhhhNhNubah}(h]id9ah ]h"]h$]h&]refid get-deviceuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]uh1j'hjubj()}(hhh]j-)}(hhh]j2)}(hhh]h set-device}(hjhhhNhNubah}(h]id10ah ]h"]h$]h&]refid set-deviceuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]uh1j"hj~ubeh}(h]h ]h"]h$]h&]uh1j'hjYubj()}(hhh](j-)}(hhh]j2)}(hhh]h Definitions}(hjhhhNhNubah}(h]id11ah ]h"]h$]h&]refid definitionsuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubj#)}(hhh](j()}(hhh]j-)}(hhh]j2)}(hhh]hkey-len}(hjhhhNhNubah}(h]id12ah ]h"]h$]h&]refidkey-lenuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hj ubah}(h]h ]h"]h$]h&]uh1j'hj ubj()}(hhh]j-)}(hhh]j2)}(hhh]h--kernel-timespec}(hj4hhhNhNubah}(h]id13ah ]h"]h$]h&]refidkernel-timespecuh1j1hj1ubah}(h]h ]h"]h$]h&]uh1j,hj.ubah}(h]h ]h"]h$]h&]uh1j'hj ubj()}(hhh]j-)}(hhh]j2)}(hhh]hwgdevice-flags}(hjVhhhNhNubah}(h]id14ah ]h"]h$]h&]refidwgdevice-flagsuh1j1hjSubah}(h]h ]h"]h$]h&]uh1j,hjPubah}(h]h ]h"]h$]h&]uh1j'hj ubj()}(hhh]j-)}(hhh]j2)}(hhh]h wgpeer-flags}(hjxhhhNhNubah}(h]id15ah ]h"]h$]h&]refid wgpeer-flagsuh1j1hjuubah}(h]h ]h"]h$]h&]uh1j,hjrubah}(h]h ]h"]h$]h&]uh1j'hj ubj()}(hhh]j-)}(hhh]j2)}(hhh]hwgallowedip-flags}(hjhhhNhNubah}(h]id16ah ]h"]h$]h&]refidwgallowedip-flagsuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]uh1j'hj ubeh}(h]h ]h"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]uh1j'hjYubj()}(hhh](j-)}(hhh]j2)}(hhh]hAttribute sets}(hjhhhNhNubah}(h]id17ah ]h"]h$]h&]refidattribute-setsuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubj#)}(hhh](j()}(hhh]j-)}(hhh]j2)}(hhh]hwgdevice}(hjhhhNhNubah}(h]id18ah ]h"]h$]h&]refidwgdeviceuh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]uh1j'hjubj()}(hhh]j-)}(hhh]j2)}(hhh]hwgpeer}(hj hhhNhNubah}(h]id19ah ]h"]h$]h&]refidwgpeeruh1j1hjubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]uh1j'hjubj()}(hhh]j-)}(hhh]j2)}(hhh]h wgallowedip}(hj+hhhNhNubah}(h]id20ah ]h"]h$]h&]refid wgallowedipuh1j1hj(ubah}(h]h ]h"]h$]h&]uh1j,hj%ubah}(h]h ]h"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]uh1j'hjYubeh}(h]h ]h"]h$]h&]uh1j"hj)ubeh}(h]h ]h"]h$]h&]uh1j'hj$ubah}(h]h ]h"]h$]h&]uh1j"hjhhhNhNubeh}(h]contentsah ]contentsah"]contentsah$]h&]uh1jhhhKhhhhubh)}(hhh](h)}(hSummaryh]hSummary}(hjqhhhNhNubah}(h]h ]h"]h$]h&]hjkuh1hhjnhhhhhKubj-)}(h:**Netlink protocol to control WireGuard network devices.**h]hstrong)}(hjh]h6Netlink protocol to control WireGuard network devices.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j,hhhKhjnhhubj-)}(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&]uh1j,hhhKhjnhhubeh}(h]jqah ]h"]summaryah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Operationsh]h Operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhKubh)}(h#.. _wireguard-operation-get-device:h]h}(h]h ]h"]h$]h&]hwireguard-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&]uh1j,hhhKhjhhubj#)}(hhh](j()}(h``WGDEVICE_A_IFINDEX``h]j-)}(hj"h]h)}(hj"h]hWGDEVICE_A_IFINDEX}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&]uh1j,hhhKhj ubah}(h]h ]h"]h$]h&]uh1j'hjhhhhhNubj()}(h``WGDEVICE_A_IFNAME`` h]j-)}(h``WGDEVICE_A_IFNAME``h]h)}(hjFh]hWGDEVICE_A_IFNAME}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&]uh1j,hhhKhj@ubah}(h]h ]h"]h$]h&]uh1j'hjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1j"hhhKhjhhubj-)}(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 (}(hjihhhNhNubh)}(h``NLM_F_MULTI``h]h NLM_F_MULTI}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh). 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 }(hjihhhNhNubh)}(h``WGPEER_A_PUBLIC_KEY``h]hWGPEER_A_PUBLIC_KEY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh and }(hjihhhNhNubh)}(h``WGPEER_A_ALLOWEDIPS``h]hWGPEER_A_ALLOWEDIPS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubhX. 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 }(hjihhhNhNubh)}(h``WGDEVICE_A_IFNAME``h]hWGDEVICE_A_IFNAME}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh and }(hjihhhNhNubh)}(h``WGDEVICE_A_PEERS``h]hWGDEVICE_A_PEERS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh^. It is then up to the receiver to coalesce these messages to form the complete list of peers.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKhjhhubj-)}(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&]uh1j,hhhKhjhhubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hvalueh]hvalue}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubh field_body)}(h0h]j-)}(hj3h]h0}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhj1ubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(h attribute-seth]h attribute-set}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNhhhKubj0)}(h':ref:`wireguard-attribute-set-wgdevice`h]j-)}(hjah]h)}(hjah]hinline)}(hjah]h wireguard-attribute-set-wgdevice}(hjkhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jihjfubah}(h]h ]h"]h$]h&]refdocnetlink/specs/wireguard refdomainjvreftyperef refexplicitrefwarn reftarget wireguard-attribute-set-wgdeviceuh1hhhhKhjcubah}(h]h ]h"]h$]h&]uh1j,hhhKhj_ubah}(h]h ]h"]h$]h&]uh1j/hjNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(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&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hdumph]hdump}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(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]j)}(hjh]hpre}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhMhjubh definition)}(hhh]j-)}(hwg-get-device-starth]hwg-get-device-start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(h**post** wg-get-device-done h](j)}(h**post**h]j)}(hj:h]hpost}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhhhMhj4ubj)}(hhh]j-)}(hwg-get-device-doneh]hwg-get-device-done}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhMhjOubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(h3**request** :attributes: [``ifindex``, ``ifname``] h](j)}(h **request**h]j)}(hjrh]hrequest}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jhhhMhjlubj)}(hhh]j)}(hhh]j)}(hhh](j )}(h attributesh]h attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(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&]uh1j,hhhMhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(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]j)}(hjh]hreply}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh]j)}(hhh]j)}(hhh](j )}(h attributesh]h attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(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}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }(hj(hhhNhNubh)}(h ``ifname``h]hifname}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }hj(sbh)}(h``private-key``h]h private-key}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }hj(sbh)}(h``public-key``h]h public-key}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }hj(sbh)}(h ``flags``h]hflags}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }hj(sbh)}(h``listen-port``h]h listen-port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }hj(sbh)}(h ``fwmark``h]hfwmark}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh, }hj(sbh)}(h ``peers``h]hpeers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(ubh]}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhMhj$ubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h#.. _wireguard-operation-set-device:h]h}(h]h ]h"]h$]h&]hwireguard-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}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhMubh)}(hhh](h)}(hSet WireGuard deviceh]hSet WireGuard device}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hhhhhMubj-)}(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}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubh and }(hj=hhhNhNubh)}(h``WGDEVICE_A_IFNAME``h]hWGDEVICE_A_IFNAME}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ubh.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhMhj,hhubj-)}(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 }(hjohhhNhNubh)}(h``WGDEVICE_F_REPLACE_PEERS``h]hWGDEVICE_F_REPLACE_PEERS}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoubh 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 }(hjohhhNhNubh)}(h``WGPEER_F_REPLACE_ALLOWEDIPS``h]hWGPEER_F_REPLACE_ALLOWEDIPS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoubhh is specified in the first message of a peer, it likely should not be specified in subsequent fragments.}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhMhj,hhubj-)}(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&]uh1j,hhhMhj,hhubj)}(hhh](j)}(hhh](j )}(hvalueh]hvalue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(h1h]j-)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhMhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j )}(h attribute-seth]h attribute-set}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(h':ref:`wireguard-attribute-set-wgdevice`h]j-)}(hj h]h)}(hj h]jj)}(hj h]h wireguard-attribute-set-wgdevice}(hj hhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnj wireguard-attribute-set-wgdeviceuh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1j,hhhMhj ubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j )}(hflagsh]hflags}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj; hhhKubj0)}(h[``uns-admin-perm``]h]j-)}(hjN h](h[}(hjP hhhNhNubh)}(h``uns-admin-perm``h]huns-admin-perm}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP ubh]}(hjP hhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhMhjL ubah}(h]h ]h"]h$]h&]uh1j/hj; ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(hhh](j )}(hdoh]hdo}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ hhhKubj0)}(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]j)}(hj h]hrequest}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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&]uh1jhj hhhKubj0)}(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}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ubh]}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhM*hj ubah}(h]h ]h"]h$]h&]uh1j/hj 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&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j/hj{ ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubeh}(h]h ]h"]h$]h&]uh1jhj,hhhhhMubeh}(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&]hwireguard-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&]uh1jhj hhhKubj0)}(hwg-h]j-)}(hj h]hwg-}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(htypeh]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(hconsth]j-)}(hj' h]hconst}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhj% ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(hvalueh]hvalue}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB hhhKubj0)}(h32 h]j-)}(h32h]h32}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjS ubah}(h]h ]h"]h$]h&]uh1j/hjB 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}j j sj}j j subh)}(hhh](h)}(h--kernel-timespech]h--kernel-timespec}(hj hhhNhNubah}(h]h ]h"]h$]h&]hj=uh1hhj hhhhhKubj)}(hhh](j)}(hhh](j )}(htypeh]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(hstructh]j-)}(hj h]hstruct}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(hheaderh]hheader}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(hlinux/time_types.h h]j-)}(hlinux/time_types.hh]hlinux/time_types.h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubj)}(hhh](j )}(hmembersh]hmembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(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&]uh1jhj hhhKubj0)}(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&]uh1j,hhhKhj8 ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh](j )}(hnsec (``u64``)h](hnsec (}(hjX hhhNhNubh)}(h``u64``h]hu64}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX ubh)}(hjX hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjU hhhKubj0)}(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.}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjx ubah}(h]h ]h"]h$]h&]uh1j/hjU ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj hhubeh}(h]h ]h"]h$]h&]uh1jhj hhhhhKubh)}(h(.. _wireguard-definition-wgdevice-flags:h]h}(h]h ]h"]h$]h&]h#wireguard-definition-wgdevice-flagsuh1hhKhj hhhhubeh}(h](jCj eh ]h"](--kernel-timespec&wireguard-definition---kernel-timespeceh$]h&]uh1hhj hhhhhKj}j jw sj}j jw subh)}(hhh](h)}(hwgdevice-flagsh]hwgdevice-flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]hj_uh1hhj hhhhhK'ubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(h wgdevice-f-h]j-)}(hj h]h wgdevice-f-}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK'hj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubj)}(hhh](j )}(h enum-nameh]h enum-name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(h wgdevice-flagh]j-)}(hj h]h wgdevice-flag}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK'hj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubj)}(hhh](j )}(htypeh]htype}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3 hhhKubj0)}(hflags h]j-)}(hflagsh]hflags}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK'hjD ubah}(h]h ]h"]h$]h&]uh1j/hj3 ubeh}(h]h ]h"]h$]h&]uh1jhhhK'hj hhubj)}(hhh](j )}(hentriesh]hentries}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb hhhKubj0)}(h- ``replace-peers`` h]j#)}(hhh]j()}(h``replace-peers`` h]j-)}(h``replace-peers``h]h)}(hj h]h replace-peers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~ ubah}(h]h ]h"]h$]h&]uh1j,hhhK'hjz ubah}(h]h ]h"]h$]h&]uh1j'hjw ubah}(h]h ]h"]h$]h&]jgjhuh1j"hhhK'hjs ubah}(h]h ]h"]h$]h&]uh1j/hjb 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](jej 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&]hjuh1hhj hhhhhK.ubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(h wgpeer-f-h]j-)}(hj h]h wgpeer-f-}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK.hj ubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubj)}(hhh](j )}(h enum-nameh]h enum-name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhKubj0)}(h wgpeer-flagh]j-)}(hjh]h wgpeer-flag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK.hjubah}(h]h ]h"]h$]h&]uh1j/hj ubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubj)}(hhh](j )}(htypeh]htype}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8hhhKubj0)}(hflags h]j-)}(hflagsh]hflags}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK.hjIubah}(h]h ]h"]h$]h&]uh1j/hj8ubeh}(h]h ]h"]h$]h&]uh1jhhhK.hj hhubj)}(hhh](j )}(hentriesh]hentries}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjghhhKubj0)}(h=- ``remove-me`` - ``replace-allowedips`` - ``update-only`` h]j#)}(hhh](j()}(h ``remove-me``h]j-)}(hjh]h)}(hjh]h remove-me}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hhhK.hjubah}(h]h ]h"]h$]h&]uh1j'hj|ubj()}(h``replace-allowedips``h]j-)}(hjh]h)}(hjh]hreplace-allowedips}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j,hhhK.hjubah}(h]h ]h"]h$]h&]uh1j'hj|ubj()}(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&]uh1j,hhhK.hjubah}(h]h ]h"]h$]h&]uh1j'hj|ubeh}(h]h ]h"]h$]h&]jgjhuh1j"hhhK.hjxubah}(h]h ]h"]h$]h&]uh1j/hjgubeh}(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](jj 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&]hjuh1hhj hhhhhK7ubj)}(hhh](j)}(hhh](j )}(h name-prefixh]h name-prefix}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!hhhKubj0)}(hwgallowedip-f-h]j-)}(hj4h]hwgallowedip-f-}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK7hj2ubah}(h]h ]h"]h$]h&]uh1j/hj!ubeh}(h]h ]h"]h$]h&]uh1jhhhK7hjhhubj)}(hhh](j )}(h enum-nameh]h enum-name}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOhhhKubj0)}(hwgallowedip-flagh]j-)}(hjbh]hwgallowedip-flag}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK7hj`ubah}(h]h ]h"]h$]h&]uh1j/hjOubeh}(h]h ]h"]h$]h&]uh1jhhhK7hjhhubj)}(hhh](j )}(htypeh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}hhhKubj0)}(hflags h]j-)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK7hjubah}(h]h ]h"]h$]h&]uh1j/hj}ubeh}(h]h ]h"]h$]h&]uh1jhhhK7hjhhubj)}(hhh](j )}(hentriesh]hentries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(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&]uh1j,hhhK7hjubah}(h]h ]h"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&]jgjhuh1j"hhhK7hjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhK7hjhhubeh}(h]h ]h"]h$]h&]uh1jhj hhhhhK7ubeh}(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}(hj-hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhj*hhhhhK7ubh)}(hhh](h)}(hunspec (``unused``)h](hunspec (}(hj>hhhNhNubh)}(h ``unused``h]hunused}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ubh)}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;hhhhhKFubj)}(hhh]j)}(hhh](j )}(hvalueh]hvalue}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahhhKubj0)}(h0 h]j-)}(hj3h]h0}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKFhjrubah}(h]h ]h"]h$]h&]uh1j/hjaubeh}(h]h ]h"]h$]h&]uh1jhhhKFhj^hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhhhKFubeh}(h] unspec-unusedah ]h"]h$]unspec (unused)ah&]uh1hhj*hhhhhKF 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&]uh1hhj*hhhhhKJubh)}(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&]uh1hhj*hhhhhKMubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(hSet to all zeros to remove.h]j-)}(hj-h]hSet to all zeros to remove.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKRhj+ubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKRhjhhubj)}(hhh](j )}(h display-hinth]h display-hint}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHhhhKubj0)}(hhex h]j-)}(hhexh]hhex}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKRhjYubah}(h]h ]h"]h$]h&]uh1j/hjHubeh}(h]h ]h"]h$]h&]uh1jhhhKRhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKRubeh}(h]private-key-binaryah ]h"]private-key (binary)ah$]h&]uh1hhj*hhhhhKRubh)}(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&]uh1hhjhhhhhKYubj)}(hhh]j)}(hhh](j )}(h display-hinth]h display-hint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(hhex h]j-)}(hhexh]hhex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKYhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKYhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKYubeh}(h]public-key-binaryah ]h"]h$]public-key (binary)ah&]uh1hhj*hhhhhKYjKubh)}(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&]uh1jhjhhhKubj0)}(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}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ubh or }(hj#hhhNhNubh)}(h``WGDEVICE_F_REPLACE_PEERS``h]hWGDEVICE_F_REPLACE_PEERS}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#ubhG if all current peers should be removed prior to adding the list below.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhK_hjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhK_hj hhubj)}(hhh](j )}(henumh]henum}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\hhhKubj0)}(h-:ref:`wireguard-definition-wgdevice-flags` h]j-)}(h*:ref:`wireguard-definition-wgdevice-flags`h]h)}(hjsh]jj)}(hjsh]h#wireguard-definition-wgdevice-flags}(hjxhhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihjuubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj#wireguard-definition-wgdevice-flagsuh1hhhhK_hjqubah}(h]h ]h"]h$]h&]uh1j,hhhK_hjmubah}(h]h ]h"]h$]h&]uh1j/hj\ubeh}(h]h ]h"]h$]h&]uh1jhhhK_hj hhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhK_ubeh}(h] flags-u32ah ]h"]h$] flags (u32)ah&]uh1hhj*hhhhhK_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&]uh1jhjhhhKubj0)}(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&]uh1j,hhhKfhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKfhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKfubeh}(h]listen-port-u16ah ]h"]listen-port (u16)ah$]h&]uh1hhj*hhhhhKfubh)}(hhh](h)}(hfwmark (``u32``)h](hfwmark (}(hj,hhhNhNubh)}(h``u32``h]hu32}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,ubh)}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj)hhhhhKjubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOhhhKubj0)}(hSet as ``0`` to disable. h]j-)}(hSet as ``0`` to disable.h](hSet as }(hjdhhhNhNubh)}(h``0``h]h0}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdubh to disable.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKjhj`ubah}(h]h ]h"]h$]h&]uh1j/hjOubeh}(h]h ]h"]h$]h&]uh1jhhhKjhjLhhubah}(h]h ]h"]h$]h&]uh1jhj)hhhhhKjubeh}(h] fwmark-u32ah ]h"] fwmark (u32)ah$]h&]uh1hhj*hhhhhKjubh)}(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&]uh1jhjhhhKubj0)}(hnesth]j-)}(hjh]hnest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKnhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKnhjhhubj)}(hhh](j )}(hnested-attributesh]hnested-attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(h%:ref:`wireguard-attribute-set-wgpeer`h]j-)}(hjh]h)}(hjh]jj)}(hjh]hwireguard-attribute-set-wgpeer}(hj hhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnjwireguard-attribute-set-wgpeeruh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1j,hhhKnhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKnhjhhubj)}(hhh](j )}(hdoch]hdoc}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;hhhKubj0)}(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 }(hjPhhhNhNubh)}(h``SET_DEVICE``h]h SET_DEVICE}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPubh operations and is zero on }(hjPhhhNhNubh)}(h``GET_DEVICE``h]h GET_DEVICE}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPubh operations.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKnhjLubah}(h]h ]h"]h$]h&]uh1j/hj;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&]hwireguard-attribute-set-wgpeeruh1hhMhjhhhhubeh}(h]peers-indexed-arrayah ]h"]peers (indexed-array)ah$]h&]uh1hhj*hhhhhKnubeh}(h](jj)eh ]h"](wgdevice wireguard-attribute-set-wgdeviceeh$]h&]uh1hhjhhhhhK7j}jjsj}j)jsubh)}(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&]uh1jhjhhhKubj0)}(h0 h]j-)}(hj3h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhK|hjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(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 (}(hj&hhhNhNubh)}(h ``binary``h]hbinary}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&ubh)}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj#hhhhhKubj)}(hhh]j)}(hhh](j )}(h display-hinth]h display-hint}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIhhhKubj0)}(hhex h]j-)}(hhexh]hhex}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjZubah}(h]h ]h"]h$]h&]uh1j/hjIubeh}(h]h ]h"]h$]h&]uh1jhhhKhjFhhubah}(h]h ]h"]h$]h&]uh1jhj#hhhhhKubeh}(h]id2ah ]h"]h$]jah&]uh1hhjhhhhhKjKubh)}(hhh](h)}(hpreshared-key (``binary``)h](hpreshared-key (}(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&]uh1jhjhhhKubj0)}(hSet as all zeros to remove.h]j-)}(hjh]hSet as all zeros to remove.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(h display-hinth]h display-hint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(hhex h]j-)}(hhexh]hhex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(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&]uh1jhj<hhhKubj0)}(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-)}(hjOh](h)}(h``0``h]h0}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubh and/or }(hjQhhhNhNubh)}(h``WGPEER_F_REMOVE_ME``h]hWGPEER_F_REMOVE_ME}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubhf if the specified peer should not exist at the end of the operation, rather than added/updated and/or }(hjQhhhNhNubh)}(h``WGPEER_F_REPLACE_ALLOWEDIPS``h]hWGPEER_F_REPLACE_ALLOWEDIPS}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubha if all current allowed IPs of this peer should be removed prior to adding the list below and/or }(hjQhhhNhNubh)}(h``WGPEER_F_UPDATE_ONLY``h]hWGPEER_F_UPDATE_ONLY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQubh5 if the peer should only be set if it already exists.}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKhjMubah}(h]h ]h"]h$]h&]uh1j/hj<ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj9hhubj)}(hhh](j )}(henumh]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(h+:ref:`wireguard-definition-wgpeer-flags` h]j-)}(h(:ref:`wireguard-definition-wgpeer-flags`h]h)}(hjh]jj)}(hjh]h!wireguard-definition-wgpeer-flags}(hjhhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj!wireguard-definition-wgpeer-flagsuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhj9hhubeh}(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}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+hhhKubj0)}(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&]uh1j,hhhKhj<ubah}(h]h ]h"]h$]h&]uh1j/hj+ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj(hhubah}(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 (}(hjkhhhNhNubh)}(h``u16``h]hu16}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkubh)}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhhKubj)}(hhh]j)}(hhh](j )}(hdoch]hdoc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(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&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhhKubeh}(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&]uh1jhjhhhKubj0)}(h0:ref:`wireguard-definition---kernel-timespec` h]j-)}(h-:ref:`wireguard-definition---kernel-timespec`h]h)}(hjh]jj)}(hjh]h&wireguard-definition---kernel-timespec}(hjhhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]refdocj refdomainj)reftyperef refexplicitrefwarnj&wireguard-definition---kernel-timespecuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(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 (}(hj^hhhNhNubh)}(h``u64``h]hu64}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^ubh)}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj[hhhhhKubah}(h] rx-bytes-u64ah ]h"]rx-bytes (u64)ah$]h&]uh1hhjhhhhhKubh)}(hhh]h)}(htx-bytes (``u64``)h](h tx-bytes (}(hjhhhNhNubh)}(h``u64``h]hu64}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhhhhKubah}(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&]uh1jhjhhhKubj0)}(hnesth]j-)}(hjh]hnest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hnested-attributesh]hnested-attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(h*:ref:`wireguard-attribute-set-wgallowedip`h]j-)}(hjh]h)}(hjh]jj)}(hjh]h#wireguard-attribute-set-wgallowedip}(hj hhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]refdocj refdomainj*reftyperef refexplicitrefwarnj#wireguard-attribute-set-wgallowedipuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(hdoch]hdoc}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNhhhKubj0)}(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 }(hjchhhNhNubh)}(h``SET_DEVICE``h]h SET_DEVICE}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcubh operations and is zero on }(hjchhhNhNubh)}(h``GET_DEVICE``h]h GET_DEVICE}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcubh operations.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKhj_ubah}(h]h ]h"]h$]h&]uh1j/hjNubeh}(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&]uh1jhjhhhKubj0)}(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&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(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}j4jsj}jjsubh)}(hhh](h)}(h wgallowediph]h wgallowedip}(hj<hhhNhNubah}(h]h ]h"]h$]h&]hj4uh1hhj9hhhhhKubh)}(hhh](h)}(hunspec (``unused``)h](hunspec (}(hjMhhhNhNubh)}(h ``unused``h]hunused}(hjUhhhNhNubah}(h]h ]5h"]h$]h&]uh1hhjMubh)}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjJhhhhhKubj)}(hhh]j)}(hhh](j )}(hvalueh]hvalue}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjphhhKubj0)}(h0 h]j-)}(hj3h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjpubeh}(h]h ]h"]h$]h&]uh1jhhhKhjmhhubah}(h]h ]h"]h$]h&]uh1jhjJhhhhhKubeh}(h]id4ah ]h"]h$]unspec (unused)ah&]uh1hhj9hhhhhKjKubh)}(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&]uh1jhjhhhKubj0)}(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&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h] family-u16ah ]h"] family (u16)ah$]h&]uh1hhj9hhhhhKubh)}(hhh](h)}(hipaddr (``binary``)h](hipaddr (}(hj6hhhNhNubh)}(h ``binary``h]hbinary}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6ubh)}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj3hhhhhKubj)}(hhh](j)}(hhh](j )}(hdoch]hdoc}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYhhhKubj0)}(h1Either ``struct in_addr`` or ``struct in6_addr``.h]j-)}(hjlh](hEither }(hjnhhhNhNubh)}(h``struct in_addr``h]hstruct in_addr}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnubh or }(hjnhhhNhNubh)}(h``struct in6_addr``h]hstruct in6_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnubh.}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKhjjubah}(h]h ]h"]h$]h&]uh1j/hjYubeh}(h]h ]h"]h$]h&]uh1jhhhKhjVhhubj)}(hhh](j )}(h display-hinth]h display-hint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj0)}(h ipv4-or-v6 h]j-)}(h ipv4-or-v6h]h ipv4-or-v6}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjVhhubeh}(h]h ]h"]h$]h&]uh1jhj3hhhhhKubeh}(h] ipaddr-binaryah ]h"]ipaddr (binary)ah$]h&]uh1hhj9hhhhhKubh)}(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&]uh1hhj9hhhhhKubh)}(hhh](h)}(hflags (``u32``)h](hflags (}(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}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9hhhKubj0)}(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-)}(hjLh](h)}(h``WGALLOWEDIP_F_REMOVE_ME``h]hWGALLOWEDIP_F_REMOVE_ME}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNubhf if the specified IP should be removed; otherwise, this IP will be added if it is not already present.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1j,hhhKhjJubah}(h]h ]h"]h$]h&]uh1j/hj9ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj6hhubj)}(hhh](j )}(henumh]henum}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuhhhKubj0)}(h.:ref:`wireguard-definition-wgallowedip-flags` h]j-)}(h-:ref:`wireguard-definition-wgallowedip-flags`h]h)}(hjh]jj)}(hjh]h&wireguard-definition-wgallowedip-flags}(hjhhhNhNubah}(h]h ](justdstd-refeh"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj&wireguard-definition-wgallowedip-flagsuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j,hhhKhjubah}(h]h ]h"]h$]h&]uh1j/hjuubeh}(h]h ]h"]h$]h&]uh1jhhhKhj6hhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]id5ah ]h"]h$] flags (u32)ah&]uh1hhj9hhhhhKjKubeh}(h](j:j&eh ]h"]( wgallowedip#wireguard-attribute-set-wgallowedipeh$]h&]uh1hhjhhhhhKj}jjsj}j&jsubeh}(h]jah ]h"]attribute setsah$]h&]uh1hhhhhhhhK7ubeh}(h](jRheh ]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_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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 aj ]jw aj ]j aj ]j aj]jaj)]jaj]jaj&]jaunameids}(jhjjRjkjgjjqj jjjjjj j j jj jj j j jj j j j!j j j jCj j j jejj jjjjjjjjjj)jjunspec (unused)Njjjjjjpublic-key (binary)N flags (u32)Nj&j#jjjjj4jj3jjjjejbjjjXjUjjjjjjj,j)jj&jj:j0j-jjjj u nametypes}(jjjkjj jjj j j j j j j j j j j jjjjjjjjTjjjjUjVj&jjj4j3jjejjXjjjj,jjj0jjuh}(hhjRhjgjjqjnjjjjjjj jjjjjj j,jj j j j!j j j jCj j j jej j j jj jj jj jjj)j*jj*jj;jjjjjjjjjjj#jjj)jjjjjjjjjj#jjjjjbjjjhjUjjj[jjjjj)jj&j9j:j9jjJj-jjj3j jjjj j3jkjbjjjjjjjjjjj=j4j_jVjjxjjjjjjjj j4j+u 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)”.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjwubah}(h]h ]h"]h$]h&]jalevelKtypeINFOsourcehnjlineK|uh1juhjhhhhhK|ubjv)}(hhh]j-)}(h6Duplicate implicit target name: "public-key (binary)".h]h:Duplicate implicit target name: “public-key (binary)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]jalevelKtypejsourcehnjlineKuh1juhj#hhhhhKubjv)}(hhh]j-)}(h.Duplicate implicit target name: "flags (u32)".h]h2Duplicate implicit target name: “flags (u32)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]jalevelKtypejsourcehnjlineKuh1juhjhhhhhKubjv)}(hhh]j-)}(h2Duplicate implicit target name: "unspec (unused)".h]h6Duplicate implicit target name: “unspec (unused)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]jalevelKtypejsourcehnjlineKuh1juhjJhhhhhKubjv)}(hhh]j-)}(h.Duplicate implicit target name: "flags (u32)".h]h2Duplicate implicit target name: “flags (u32)”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]jalevelKtypejsourcehnjlineKuh1juhjhhhhhKubetransform_messages](jv)}(hhh]j-)}(hhh]h7Hyperlink target "netlink-wireguard" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hDHyperlink target "wireguard-operation-get-device" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineK&uh1juubjv)}(hhh]j-)}(hhh]hDHyperlink target "wireguard-operation-set-device" is not referenced.}hj8sbah}(h]h ]h"]h$]h&]uh1j,hj5ubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKXuh1juubjv)}(hhh]j-)}(hhh]hBHyperlink target "wireguard-definition-key-len" is not referenced.}hjRsbah}(h]h ]h"]h$]h&]uh1j,hjOubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hJHyperlink target "wireguard-definition-kernel-timespec" is not referenced.}hjlsbah}(h]h ]h"]h$]h&]uh1j,hjiubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hIHyperlink target "wireguard-definition-wgdevice-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hGHyperlink target "wireguard-definition-wgpeer-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hLHyperlink target "wireguard-definition-wgallowedip-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hFHyperlink target "wireguard-attribute-set-wgdevice" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1juubjv)}(hhh]j-)}(hhh]hDHyperlink target "wireguard-attribute-set-wgpeer" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineMuh1juubjv)}(hhh]j-)}(hhh]hIHyperlink target "wireguard-attribute-set-wgallowedip" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1j,hjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineMNuh1juube transformerN include_log] decorationNhhub.