wireguard: improve sending WG interface dump details 26/35426/2
authorJon Loeliger <jdl@netgate.com>
Wed, 23 Feb 2022 20:21:51 +0000 (14:21 -0600)
committerJon Loeliger <jdl@netgate.com>
Wed, 2 Mar 2022 17:50:55 +0000 (11:50 -0600)
Include the user_instance in wireguard interface details.
In addition to dumping all wireguard interface details,
also allow selective dumping of just one interface.

Type: improvement
Signed-off-by: Jon Loeliger <jdl@netgate.com>
Change-Id: Iaf1093c6ae3eb00a685f34b2e0171285b02fae2b

src/plugins/wireguard/wireguard.api
src/plugins/wireguard/wireguard_api.c

index 9a839de..a95c243 100644 (file)
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-option version = "0.1.0";
+option version = "0.2.0";
 
 import "vnet/interface_types.api";
 import "vnet/ip/ip_types.api";
index 67f68d0..fecf93c 100644 (file)
@@ -109,6 +109,7 @@ wireguard_if_send_details (index_t wgii, void *data)
               local->l_public, NOISE_PUBLIC_KEY_LEN);
   rmp->interface.sw_if_index = htonl (wgi->sw_if_index);
   rmp->interface.port = htons (wgi->port);
+  rmp->interface.user_instance = htonl (wgi->user_instance);
   ip_address_encode2 (&wgi->src_ip, &rmp->interface.src_ip);
 
   rmp->context = ctx->context;
@@ -137,7 +138,15 @@ vl_api_wireguard_interface_dump_t_handler (vl_api_wireguard_interface_dump_t *
     .show_private_key = mp->show_private_key,
   };
 
-  wg_if_walk (wireguard_if_send_details, &ctx);
+  u32 sw_if_index = ntohl (mp->sw_if_index);
+  if (sw_if_index == ~0)
+    wg_if_walk (wireguard_if_send_details, &ctx);
+  else
+    {
+      index_t wgii = wg_if_find_by_sw_if_index (sw_if_index);
+      if (wgii != INDEX_INVALID)
+       wireguard_if_send_details (wgii, &ctx);
+    }
 }
 
 static void