diff options
Diffstat (limited to 'src/plugins/wireguard/wireguard.api')
-rw-r--r--[-rwxr-xr-x] | src/plugins/wireguard/wireguard.api | 79 |
1 files changed, 68 insertions, 11 deletions
diff --git a/src/plugins/wireguard/wireguard.api b/src/plugins/wireguard/wireguard.api index e290fc41ffc..55a36c6f6e5 100755..100644 --- a/src/plugins/wireguard/wireguard.api +++ b/src/plugins/wireguard/wireguard.api @@ -14,7 +14,7 @@ * limitations under the License. */ -option version = "0.1.0"; +option version = "1.3.0"; import "vnet/interface_types.api"; import "vnet/ip/ip_types.api"; @@ -83,19 +83,24 @@ define wireguard_interface_details enum wireguard_peer_flags : u8 { WIREGUARD_PEER_STATUS_DEAD = 0x1, + WIREGUARD_PEER_ESTABLISHED = 0x2, }; -/** \brief Create new peer +/** \brief Peer structure + @param peer_index - peer pool index @param public_key - public key (in binary format) of destination peer @param port - destination port + @param persistent_keepalive - keepalive packet timeout @param table_id - The IP table in which 'endpoint' is reachable @param endpoint - destination ip - @param allowed_ip - allowed incoming ip tunnel - @param tun_sw_if_index - tunnel interface - @param persistent_keepalive - keepalive packet timeout + @param sw_if_index - tunnel SW interface + @param flags - peer status flags + @param n_allowed_ips - number of prefixes in allowed_ips + @param allowed_ips - allowed incoming tunnel prefixes */ typedef wireguard_peer { + u32 peer_index; u8 public_key[32]; u16 port; u16 persistent_keepalive; @@ -107,6 +112,41 @@ typedef wireguard_peer vl_api_prefix_t allowed_ips[n_allowed_ips]; }; +service { + rpc want_wireguard_peer_events returns want_wireguard_peer_events_reply + events wireguard_peer_event; +}; +/** \brief Register for wireguard peer events + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - index of the interface to dump peer info on, ~0 if on all + @param peer_index - index of the peer to dump info on, ~0 if on all + @param enable_disable - 1 => register for events, 0 => cancel registration + @param pid - sender's pid +*/ +autoreply define want_wireguard_peer_events +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index [default=0xFFFFFFFF]; + u32 peer_index [default=0xFFFFFFFF]; + u32 enable_disable; + u32 pid; +}; +/** \brief Interface Event generated by want_wireguard_peer_events + @param client_index - opaque cookie to identify the sender + @param pid - client pid registered to receive notification + @param peer_index - index of the peer for this event + @param deleted - interface was deleted +*/ +define wireguard_peer_event +{ + u32 client_index; + u32 pid; + u32 peer_index; + vl_api_wireguard_peer_flags_t flags; +}; + /** \brief Create new peer @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -118,6 +158,12 @@ define wireguard_peer_add u32 context; vl_api_wireguard_peer_t peer; }; + +/** \brief Create new peer + @param context - sender context, to match reply w/ request + @param retval - return status + @param peer_index - Created or existing peer pool index +*/ define wireguard_peer_add_reply { u32 context; @@ -125,10 +171,10 @@ define wireguard_peer_add_reply u32 peer_index; }; -/** \brief Remove peer by public_key +/** \brief Remove peer @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param public_key + @param peer_index - peer to be removed */ autoreply define wireguard_peer_remove { @@ -140,23 +186,34 @@ autoreply define wireguard_peer_remove /** \brief Dump all peers @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request + @param peer_index - peer index to be dumped. If 0xFFFFFFFF dumps all peers */ define wireguard_peers_dump { u32 client_index; u32 context; + u32 peer_index [default=0xFFFFFFFF]; }; -/** \brief Dump peers response +/** \brief Dump peer details @param context - sender context, to match reply w/ request - @param is_dead - is peer valid yet - @param public_key - peer public_key - @param ip4_address - ip4 endpoint address + @param peer - peer details */ define wireguard_peers_details { u32 context; vl_api_wireguard_peer_t peer; }; +/** \brief Wireguard Set Async mode + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param async_enable - wireguard async mode on or off, default off +*/ +autoreply define wg_set_async_mode { + u32 client_index; + u32 context; + bool async_enable [default=false]; +}; + /* * Local Variables: * eval: (c-set-style "gnu") |