5 int do_ports_state (int argc, const char **argv UNUSED, struct ngadmin *nga)
8 const struct swi_attr *sa;
9 unsigned char *ports = NULL;
13 printf("this command takes no argument\n");
18 sa = ngadmin_getCurrentSwitch(nga);
20 printf("must be logged\n");
25 ports = malloc(sa->ports * sizeof(unsigned char));
26 i = ngadmin_getPortsStatus(nga, ports);
33 for (i = 0; i < sa->ports; i++) {
34 printf("port %i: ", i + 1);
42 printf("up, 10M half-duplex");
46 printf("up, 10M full-duplex");
50 printf("up, 100M half-duplex");
54 printf("up, 100M full-duplex");
58 printf("up, 1000M full-duplex");
62 printf("unknown (%i)", ports[i]);
75 int do_ports_statistics_reset (int argc, const char **argv UNUSED, struct ngadmin *nga)
81 printf("this command takes no argument\n");
85 if (ngadmin_getCurrentSwitch(nga) == NULL) {
86 printf("must be logged\n");
90 i = ngadmin_resetPortsStatistics(nga);
97 int do_ports_statistics_show (int argc, const char **argv UNUSED, struct ngadmin *nga)
100 const struct swi_attr *sa;
101 struct port_stats *ps = NULL;
105 printf("this command takes no argument\n");
110 sa = ngadmin_getCurrentSwitch(nga);
112 printf("must be logged\n");
117 ps = calloc(sa->ports, sizeof(struct port_stats));
118 i = ngadmin_getPortsStatistics(nga, ps);
125 printf("Port\tReceived\tSent\tCRC errors\n");
126 for (i = 0; i < sa->ports; i++)
127 printf("% 4i%12llu%12llu%14llu\n", i + 1, ps[i].recv, ps[i].sent, ps[i].crc);