LCOV - code coverage report
Current view: top level - app/shared/commands - netconf.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 47 0.0 %
Date: 2025-12-08 04:54:13 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             : #include "../../../util/pod/fd_pod_format.h"
       9             : 
      10             : #include <net/if.h>
      11             : #include <stdio.h>
      12             : #include <stdlib.h> /* aligned_alloc */
      13             : 
      14             : void
      15             : netconf_cmd_fn( args_t *   args,
      16           0 :                 config_t * config ) {
      17           0 :   (void)args;
      18             : 
      19           0 :   fd_topo_t * topo = &config->topo;
      20           0 :   ulong wksp_id = fd_topo_find_wksp( topo, "netbase" );
      21           0 :   if( FD_UNLIKELY( wksp_id==ULONG_MAX ) ) {
      22           0 :     FD_LOG_ERR(( "netbase workspace not found" ));
      23           0 :   }
      24           0 :   fd_topo_wksp_t * netbase = &topo->workspaces[ wksp_id ];
      25             : 
      26           0 :   ulong tile_id = fd_topo_find_tile( topo, "netlnk", 0UL );
      27           0 :   if( FD_UNLIKELY( tile_id==ULONG_MAX ) ) {
      28           0 :     FD_LOG_ERR(( "netlnk tile not found" ));
      29           0 :   }
      30           0 :   fd_topo_tile_t * tile = &topo->tiles[ tile_id ];
      31             : 
      32           0 :   fd_topo_join_workspace( topo, netbase, FD_SHMEM_JOIN_MODE_READ_ONLY );
      33             : 
      34           0 :   puts( "\nINTERFACES\n" );
      35           0 :   fd_dbl_buf_t * netdev_buf = fd_dbl_buf_join( fd_topo_obj_laddr( topo, tile->netlink.netdev_dbl_buf_obj_id ) );
      36           0 :   FD_TEST( netdev_buf );
      37           0 :   void * netdev_copy = aligned_alloc( fd_netdev_tbl_align(), fd_dbl_buf_obj_mtu( netdev_buf ) );
      38           0 :   fd_dbl_buf_read( netdev_buf, fd_dbl_buf_obj_mtu( netdev_buf ), netdev_copy, NULL );
      39           0 :   fd_netdev_tbl_join_t netdev[1];
      40           0 :   FD_TEST( fd_netdev_tbl_join( netdev, netdev_copy ) );
      41           0 :   fd_netdev_tbl_fprintf( netdev, stdout );
      42           0 :   fd_netdev_tbl_leave( netdev );
      43           0 :   free( netdev_copy );
      44           0 :   fd_dbl_buf_leave( netdev_buf );
      45             : 
      46           0 :   puts( "\nIPv4 ROUTES (main)\n" );
      47           0 :   fd_fib4_t fib4_main[1];
      48           0 :   FD_TEST( fd_fib4_join( fib4_main, fd_topo_obj_laddr( topo, tile->netlink.fib4_main_obj_id ) ) );
      49           0 :   fd_fib4_fprintf( fib4_main, stdout );
      50           0 :   fd_fib4_leave( fib4_main );
      51             : 
      52           0 :   puts( "\nIPv4 ROUTES (local)\n" );
      53           0 :   fd_fib4_t fib4_local[1];
      54           0 :   FD_TEST( fd_fib4_join( fib4_local, fd_topo_obj_laddr( topo, tile->netlink.fib4_local_obj_id ) ) );
      55           0 :   fd_fib4_fprintf( fib4_local, stdout );
      56           0 :   fd_fib4_leave( fib4_local );
      57             : 
      58           0 :   printf( "\nNEIGHBOR TABLE (%.16s)\n\n", tile->netlink.neigh_if );
      59           0 :   fd_neigh4_hmap_t neigh4[1];
      60           0 :   ulong neigh4_obj_id = tile->netlink.neigh4_obj_id;
      61           0 :   ulong ele_max   = fd_pod_queryf_ulong( topo->props, ULONG_MAX, "obj.%lu.ele_max",   neigh4_obj_id );
      62           0 :   ulong probe_max = fd_pod_queryf_ulong( topo->props, ULONG_MAX, "obj.%lu.probe_max", neigh4_obj_id );
      63           0 :   ulong seed      = fd_pod_queryf_ulong( topo->props, ULONG_MAX, "obj.%lu.seed",      neigh4_obj_id );
      64           0 :   FD_TEST( (ele_max!=ULONG_MAX) & (probe_max!=ULONG_MAX) & (seed!=ULONG_MAX) );
      65           0 :   FD_TEST( fd_neigh4_hmap_join( neigh4, fd_topo_obj_laddr( topo, neigh4_obj_id ), ele_max, probe_max, seed ) );
      66           0 :   fd_neigh4_hmap_fprintf( neigh4, stdout );
      67           0 :   fd_neigh4_hmap_leave( neigh4 );
      68             : 
      69           0 :   puts( "" );
      70           0 : }
      71             : 
      72             : action_t fd_action_netconf = {
      73             :   .name           = "netconf",
      74             :   .args           = NULL,
      75             :   .fn             = netconf_cmd_fn,
      76             :   .require_config = 1,
      77             :   .perm           = NULL,
      78             :   .description    = "Print network configuration",
      79             : };

Generated by: LCOV version 1.14