void cli_show_hw_arp_cache(router_state *rs, cli_request *req) { if(rs->is_netfpga) { char *arp_info = 0; unsigned int len; sprint_hw_arp_cache(rs, &arp_info, &len); send_to_socket(req->sockfd, arp_info, len); free(arp_info); } }
void cli_hw_info(router_state *rs, cli_request *req) { if(rs->is_netfpga) { char *info; unsigned int len; info = "HW STATS\n"; send_to_socket(req->sockfd, info, strlen(info)); sprint_hw_stats(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); info = "\nHW DROPS\n"; send_to_socket(req->sockfd, info, strlen(info)); sprint_hw_drops(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); sprint_hw_oq_drops(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); info = "\nHW IFACE INFO\n"; send_to_socket(req->sockfd, info, strlen(info)); sprint_hw_iface(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); info = "\nHW IP FILTERS INFO\n"; send_to_socket(req->sockfd, info, strlen(info)); sprint_hw_local_ip_filter(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); info = "\nHW RTABLE INFO\n"; send_to_socket(req->sockfd, info, strlen(info)); sprint_hw_rtable(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); info = "\nHW ARP CACHE INFO\n"; send_to_socket(req->sockfd, info, strlen(info)); sprint_hw_arp_cache(rs, &info, &len); send_to_socket(req->sockfd, info, len); free(info); unsigned int misses = 0; readReg(&(rs->netfpga), ROUTER_OP_LUT_ARP_NUM_MISSES_REG, &misses); info = (char *)calloc(80, sizeof(char)); snprintf(info, 80, "\nHW ARP CACHE MISSES: %d\n", misses); send_to_socket(req->sockfd, info, strlen(info)); free(info); unsigned int number = 0; readReg(&(rs->netfpga), ROUTER_OP_LUT_NUM_PKTS_FORWARDED_REG, &number); info = (char *)calloc(80, sizeof(char)); snprintf(info, 80, "HW NUMBER OF PACKETS FORWARDED: %d\n", number); send_to_socket(req->sockfd, info, strlen(info)); free(info); } }