summaryrefslogtreecommitdiff
path: root/cpukit/libnetworking/rtems/rtems_showudpstat.c
blob: c6b45604942f374984f321103ae35541120e5f38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <machine/rtems-bsd-kernel-space.h>

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <sys/param.h>
#include <sys/queue.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <sys/proc.h>
#include <sys/mbuf.h>
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_var.h>
#include <netinet/udp.h>
#include <netinet/udp_var.h>

#include <rtems/rtems_bsdnet.h>

/*
 * Display UDP statistics
 * Don't lock the rest of the network tasks out while printing.
 * It's no big deal if the values change while being printed.
 */
static void
showudpstat (const char *name, unsigned long n)
{
	if (n)
		printf ("%35s%12lu\n", name, n);
}

void
rtems_bsdnet_show_udp_stats (void)
{
	printf ("************ UDP Statistics ************\n");
	showudpstat ("total input packets", udpstat.udps_ipackets);
	showudpstat ("packet shorter than header", udpstat.udps_hdrops);
	showudpstat ("checksum error", udpstat.udps_badsum);
	showudpstat ("data length larger than packet", udpstat.udps_badlen);
	showudpstat ("no socket on port", udpstat.udps_noport);
	showudpstat ("of above, arrived as broadcast", udpstat.udps_noportbcast);
	showudpstat ("not delivered, input socket full", udpstat.udps_fullsock);
	showudpstat ("input packets missing pcb cache", udpstat.udpps_pcbcachemiss);
	showudpstat ("input packets not for hashed pcb", udpstat.udpps_pcbhashmiss);
	showudpstat ("total output packets", udpstat.udps_opackets);
	printf ("\n");
}