LCOV - code coverage report
Current view: top level - app/shared/commands - netconf.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 42 0.0 %
Date: 2025-08-05 05:04:49 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #include "../fd_config.h"
       2             : #include "../fd_action.h"
       3             : 
       4             : #include "../../../waltz/ip/fd_fib4.h"
       5             : #include "../../../waltz/mib/fd_dbl_buf.h"
       6             : #include "../../../waltz/mib/fd_netdev_tbl.h"
       7             : #include "../../../waltz/neigh/fd_neigh4_map.h"
       8             : 
       9             : #include <net/if.h>
      10             : #include <stdio.h>
      11             : #include <stdlib.h> /* aligned_alloc */
      12             : 
      13             : void
      14             : netconf_cmd_fn( args_t *   args,
      15           0 :                 config_t * config ) {
      16           0 :   (void)args;
      17             : 
      18           0 :   fd_topo_t * topo = &config->topo;
      19           0 :   ulong wksp_id = fd_topo_find_wksp( topo, "netbase" );
      20           0 :   if( FD_UNLIKELY( wksp_id==ULONG_MAX ) ) {
      21           0 :     FD_LOG_ERR(( "netbase workspace not found" ));
      22           0 :   }
      23           0 :   fd_topo_wksp_t * netbase = &topo->workspaces[ wksp_id ];
      24             : 
      25           0 :   ulong tile_id = fd_topo_find_tile( topo, "netlnk", 0UL );
      26           0 :   if( FD_UNLIKELY( tile_id==ULONG_MAX ) ) {
      27           0 :     FD_LOG_ERR(( "netlnk tile not found" ));
      28           0 :   }
      29           0 :   fd_topo_tile_t * tile = &topo->tiles[ tile_id ];
      30             : 
      31           0 :   fd_topo_join_workspace( topo, netbase, FD_SHMEM_JOIN_MODE_READ_ONLY );
      32             : 
      33           0 :   puts( "\nINTERFACES\n" );
      34           0 :   fd_dbl_buf_t * netdev_buf = fd_dbl_buf_join( fd_topo_obj_laddr( topo, tile->netlink.netdev_dbl_buf_obj_id ) );
      35           0 :   FD_TEST( netdev_buf );
      36           0 :   void * netdev_copy = aligned_alloc( fd_netdev_tbl_align(), fd_dbl_buf_obj_mtu( netdev_buf ) );
      37           0 :   fd_dbl_buf_read( netdev_buf, fd_dbl_buf_obj_mtu( netdev_buf ), netdev_copy, NULL );
      38           0 :   fd_netdev_tbl_join_t netdev[1];
      39           0 :   FD_TEST( fd_netdev_tbl_join( netdev, netdev_copy ) );
      40           0 :   fd_netdev_tbl_fprintf( netdev, stdout );
      41           0 :   fd_netdev_tbl_leave( netdev );
      42           0 :   free( netdev_copy );
      43           0 :   fd_dbl_buf_leave( netdev_buf );
      44             : 
      45           0 :   puts( "\nIPv4 ROUTES (main)\n" );
      46           0 :   fd_fib4_t * fib4_main = fd_fib4_join( fd_topo_obj_laddr( topo, tile->netlink.fib4_main_obj_id ) );
      47           0 :   FD_TEST( fib4_main );
      48           0 :   fd_fib4_fprintf( fib4_main, stdout );
      49           0 :   fd_fib4_leave( fib4_main );
      50             : 
      51           0 :   puts( "\nIPv4 ROUTES (local)\n" );
      52           0 :   fd_fib4_t * fib4_local = fd_fib4_join( fd_topo_obj_laddr( topo, tile->netlink.fib4_local_obj_id ) );
      53           0 :   FD_TEST( fib4_local );
      54           0 :   fd_fib4_fprintf( fib4_local, stdout );
      55           0 :   fd_fib4_leave( fib4_local );
      56             : 
      57           0 :   printf( "\nNEIGHBOR TABLE (%.16s)\n\n", tile->netlink.neigh_if );
      58           0 :   fd_neigh4_hmap_t neigh4[1];
      59           0 :   FD_TEST( fd_neigh4_hmap_join( neigh4, fd_topo_obj_laddr( topo, tile->netlink.neigh4_obj_id ), fd_topo_obj_laddr( topo, tile->netlink.neigh4_ele_obj_id ) ) );
      60           0 :   fd_neigh4_hmap_fprintf( neigh4, stdout );
      61           0 :   fd_neigh4_hmap_leave( neigh4 );
      62             : 
      63           0 :   puts( "" );
      64           0 : }
      65             : 
      66             : action_t fd_action_netconf = {
      67             :   .name           = "netconf",
      68             :   .args           = NULL,
      69             :   .fn             = netconf_cmd_fn,
      70             :   .require_config = 1,
      71             :   .perm           = NULL,
      72             :   .description    = "Print network configuration",
      73             : };

Generated by: LCOV version 1.14