Line data Source code
1 : #ifndef HEADER_fd_src_disco_netlink_fd_netlink_tile_private_h 2 : #define HEADER_fd_src_disco_netlink_fd_netlink_tile_private_h 3 : 4 : #include "../../waltz/ip/fd_netlink1.h" 5 : #include "../metrics/generated/fd_metrics_netlnk.h" 6 : #include "../../waltz/mib/fd_netdev_tbl.h" 7 : #include "../../waltz/neigh/fd_neigh4_map.h" 8 : #include "../../waltz/neigh/fd_neigh4_probe.h" 9 : 10 : /* FD_NETLINK_TILE_CTX_MAGIC uniquely identifies a fd_netlink_tile_ctx_t. 11 : CHange this whenever the fd_netlink_tile_ctx_t struct changes. */ 12 : 13 0 : #define FD_NETLINK_TILE_CTX_MAGIC (0xb86244c543ddca5fUL) /* random */ 14 : 15 : struct fd_netlink_tile_ctx { 16 : ulong magic; /* ==FD_NETLINK_TILE_CTX_MAGIC */ 17 : 18 : fd_netlink_t nl_monitor[1]; 19 : fd_netlink_t nl_req[1]; 20 : 21 : /* Pending actions */ 22 : ulong action; 23 0 : # define FD_NET_TILE_ACTION_ROUTE4_UPDATE (1UL<<0) 24 0 : # define FD_NET_TILE_ACTION_LINK_UPDATE (1UL<<1) 25 0 : # define FD_NET_TILE_ACTION_NEIGH_UPDATE (1UL<<2) 26 : 27 : /* Rate limit link and route table changes (in ticks) */ 28 : long update_backoff; 29 : long route4_update_ts; 30 : long link_update_ts; 31 : 32 : /* Link table (shared, seqlock protected) */ 33 : fd_netdev_tbl_join_t netdev_tbl[1]; 34 : 35 : /* Route update output */ 36 : void * out_mem; 37 : ulong out_chunk; 38 : ulong out_chunk0; 39 : ulong out_wmark; 40 : ulong route_max; 41 : ulong route_peer_max; 42 : ulong dump_route_cnt[2]; 43 : ulong dump_peer_cnt[2]; 44 : int dump_overflow; 45 : uint dump_table_id; 46 : int dump_active; 47 : int dump_advance; 48 : int dump_intr; 49 : fd_netlink_iter_t dump_iter[1]; 50 : uchar dump_buf[4096]; 51 : 52 : /* A netlink datagram can contain multiple messages. Retain the 53 : unprocessed suffix when a route publication consumes the last 54 : available Stem credit. */ 55 : uchar monitor_buf[16384]; 56 : long monitor_buf_sz; 57 : long monitor_buf_off; 58 : 59 : /* Neighbor table */ 60 : fd_neigh4_hmap_t neigh4[1]; /* join to global map */ 61 : uint neigh4_ifidx; 62 : long idle_cnt; 63 : 64 : /* Neighbor table prober */ 65 : fd_neigh4_prober_t prober[1]; 66 : 67 : struct { 68 : ulong link_full_syncs; 69 : ulong route_full_syncs; 70 : ulong update_cnt[ FD_METRICS_COUNTER_NETLNK_UPDATE_PROCESSED_CNT ]; 71 : ulong neigh_solicits_sent; 72 : ulong neigh_solicits_fails; 73 : } metrics; 74 : }; 75 : 76 : typedef struct fd_netlink_tile_ctx fd_netlink_tile_ctx_t; 77 : 78 : #endif /* HEADER_fd_src_disco_netlink_fd_netlink_tile_private_h */