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