/* * RTEMS status */ static void rtems_netstat (unsigned int level) { rtems_bsdnet_show_if_stats (); rtems_bsdnet_show_mbuf_stats (); if (level >= 1) { rtems_bsdnet_show_inet_routes (); } if (level >= 2) { rtems_bsdnet_show_ip_stats (); rtems_bsdnet_show_icmp_stats (); rtems_bsdnet_show_udp_stats (); rtems_bsdnet_show_tcp_stats (); } }
void system_init(void) { #ifdef CONFIGURE_DRIVER_PCI_GR_RASTA_IO /* Register GR-RASTA-IO driver resources for the AMBA PnP bus available * on the GR-RASTA-IO board. */ system_init_rastaio(); #endif #if (defined(ENABLE_NETWORK_SMC_LEON2) && defined(LEON2)) || \ (defined(ENABLE_NETWORK_SMC_LEON3) && defined(LEON3)) /* Registering SMC driver first, this way the first entry in * interface_configs will reflect the SMC network settings. */ smcconfig.name = "smc1"; smcconfig.drv_ctrl = NULL; smcconfig.attach = (void *)RTEMS_BSP_NETWORK_DRIVER_ATTACH_SMC91111; network_interface_add(&smcconfig); #endif /* CPU/SYSTEM specific Init */ system_init2(); #ifndef RTEMS_DRVMGR_STARTUP /* Initializing Driver Manager if not alread performed by BSP */ printf("Initializing manager\n"); if ( rtems_drvmgr_init() ) { printf("Driver manager Failed to initialize\n"); exit(-1); } #endif /* Print Driver manager drivers and their assigned devices */ /*rtems_drvmgr_print_drvs(1);*/ #ifdef ENABLE_NETWORK /* Init network */ printf("Initializing network\n"); rtems_bsdnet_initialize_network (); printf("Initializing network DONE\n\n"); rtems_bsdnet_show_inet_routes(); printf("\n"); rtems_bsdnet_show_if_stats(); printf("\n\n"); #endif }
void mon_ifconfig(int argc, char *argv[], uint32_t command_arg, boolean verbose) { struct sockaddr_in ipaddr; struct sockaddr_in dstaddr; struct sockaddr_in netmask; struct sockaddr_in broadcast; char *iface; int f_ip = 0; int f_ptp = 0; int f_netmask = 0; int f_up = 0; int f_down = 0; int f_bcast = 0; int cur_idx; int rc; int flags; bzero((void*) &ipaddr, sizeof(ipaddr)); bzero((void*) &dstaddr, sizeof(dstaddr)); bzero((void*) &netmask, sizeof(netmask)); bzero((void*) &broadcast, sizeof(broadcast)); ipaddr.sin_len = sizeof(ipaddr); ipaddr.sin_family = AF_INET; dstaddr.sin_len = sizeof(dstaddr); dstaddr.sin_family = AF_INET; netmask.sin_len = sizeof(netmask); netmask.sin_family = AF_INET; broadcast.sin_len = sizeof(broadcast); broadcast.sin_family = AF_INET; cur_idx = 0; if (argc <= 1) { /* display all interfaces */ iface = NULL; cur_idx += 1; } else { iface = argv[1]; if (isdigit(*argv[2])) { if (inet_pton(AF_INET, argv[2], &ipaddr.sin_addr) < 0) { printf("bad ip address: %s\n", argv[2]); return; } f_ip = 1; cur_idx += 3; } else { cur_idx += 2; } } if ((f_down !=0) && (f_ip != 0)) { f_up = 1; } while(argc > cur_idx) { if (strcmp(argv[cur_idx], "up") == 0) { f_up = 1; if (f_down != 0) { printf("Can't make interface up and down\n"); } } else if(strcmp(argv[cur_idx], "down") == 0) { f_down = 1; if (f_up != 0) { printf("Can't make interface up and down\n"); } } else if(strcmp(argv[cur_idx], "netmask") == 0) { if ((cur_idx + 1) >= argc) { printf("No netmask address\n"); return; } if (inet_pton(AF_INET, argv[cur_idx+1], &netmask.sin_addr) < 0) { printf("bad netmask: %s\n", argv[cur_idx]); return; } f_netmask = 1; cur_idx += 1; } else if(strcmp(argv[cur_idx], "broadcast") == 0) { if ((cur_idx + 1) >= argc) { printf("No broadcast address\n"); return; } if (inet_pton(AF_INET, argv[cur_idx+1], &broadcast.sin_addr) < 0) { printf("bad broadcast: %s\n", argv[cur_idx]); return; } f_bcast = 1; cur_idx += 1; } else if(strcmp(argv[cur_idx], "pointopoint") == 0) { if ((cur_idx + 1) >= argc) { printf("No pointopoint address\n"); return; } if (inet_pton(AF_INET, argv[cur_idx+1], &dstaddr.sin_addr) < 0) { printf("bad pointopoint: %s\n", argv[cur_idx]); return; } f_ptp = 1; cur_idx += 1; } else { printf("Bad parameter: %s\n", argv[cur_idx]); return; } cur_idx += 1; } printf("ifconfig "); if (iface != NULL) { printf("%s ", iface); if (f_ip != 0) { char str[256]; inet_ntop(AF_INET, &ipaddr.sin_addr, str, 256); printf("%s ", str); } if (f_netmask != 0) { char str[256]; inet_ntop(AF_INET, &netmask.sin_addr, str, 256); printf("netmask %s ", str); } if (f_bcast != 0) { char str[256]; inet_ntop(AF_INET, &broadcast.sin_addr, str, 256); printf("broadcast %s ", str); } if (f_ptp != 0) { char str[256]; inet_ntop(AF_INET, &dstaddr.sin_addr, str, 256); printf("pointopoint %s ", str); } if (f_up != 0) { printf("up\n"); } else if (f_down != 0) { printf("down\n"); } else { printf("\n"); } } if ((iface == NULL) || ((f_ip == 0) && (f_down == 0) && (f_up == 0))) { rtems_bsdnet_show_if_stats(); return; } flags = 0; if (f_netmask) { rc = rtems_bsdnet_ifconfig(iface, SIOCSIFNETMASK, &netmask); if (rc < 0) { printf("Could not set netmask: %s\n", strerror(errno)); return; } } if (f_bcast) { rc = rtems_bsdnet_ifconfig(iface, SIOCSIFBRDADDR, &broadcast); if (rc < 0) { printf("Could not set broadcast: %s\n", strerror(errno)); return; } } if (f_ptp) { rc = rtems_bsdnet_ifconfig(iface, SIOCSIFDSTADDR, &dstaddr); if (rc < 0) { printf("Could not set destination address: %s\n", strerror(errno)); return; } flags |= IFF_POINTOPOINT; } /* This must come _after_ setting the netmask, broadcast addresses */ if (f_ip) { rc = rtems_bsdnet_ifconfig(iface, SIOCSIFADDR, &ipaddr); if (rc < 0) { printf("Could not set IP address: %s\n", strerror(errno)); return; } } if (f_up != 0) { flags |= IFF_UP; } if (f_down != 0) { printf("Warning: taking interfaces down is not supported\n"); } rc = rtems_bsdnet_ifconfig(iface, SIOCSIFFLAGS, &flags); if (rc < 0) { printf("Could not set interface flags: %s\n", strerror(errno)); return; } }
int rtems_shell_main_netstats( /* command */ int argc, char *argv[] ) { int option; int doAll = 0; int doInetRoutes = 0; int doMBUFStats = 0; int doIFStats = 0; int doIPStats = 0; int doICMPStats = 0; int doUDPStats = 0; int doTCPStats = 0; int verbose = 0; struct getopt_data getopt_reent; memset(&getopt_reent, 0, sizeof(getopt_data)); while ( (option = getopt_r( argc, argv, "Aimfpcutv", &getopt_reent)) != -1 ) { switch ((char)option) { case 'A': doAll = 1; break; case 'i': doInetRoutes = 1; break; case 'm': doMBUFStats = 1; break; case 'f': doIFStats = 1; break; case 'p': doIPStats = 1; break; case 'c': doICMPStats = 1; break; case 'u': doUDPStats = 1; break; case 't': doTCPStats = 1; break; case 'v': verbose = 1; break; case '?': default: netstats_usage(); return -1; } } if ( verbose ) { printf( "doAll=%d\n" "doInetRoutes=%d\n" "doMBUFStats=%d\n" "doIFStats=%d\n" "doIPStats=%d\n" "doICMPStats=%d\n" "doUDPStats=%d\n" "doTCPStats=%d\n", doAll, doInetRoutes, doMBUFStats, doIFStats, doIPStats, doICMPStats, doUDPStats, doTCPStats ); } if ( doInetRoutes == 1 || doAll == 1 ) { rtems_bsdnet_show_inet_routes(); } if ( doMBUFStats == 1 || doAll == 1 ) { rtems_bsdnet_show_mbuf_stats(); } if ( doIFStats == 1 || doAll == 1 ) { rtems_bsdnet_show_if_stats(); } if ( doIPStats == 1 || doAll == 1 ) { rtems_bsdnet_show_ip_stats(); } if ( doICMPStats == 1 || doAll == 1 ) { rtems_bsdnet_show_icmp_stats(); } if ( doUDPStats == 1 || doAll == 1 ) { rtems_bsdnet_show_udp_stats(); } if ( doTCPStats == 1 || doAll == 1 ) { rtems_bsdnet_show_tcp_stats(); } return 0; }
/*+++++++++++++++++++++++++++++++++++++++++++++*/ static int main_if(int argc,char * argv[]) { rtems_bsdnet_show_if_stats (); return 0; }