xref: /f-stack/tools/netstat/netstat.h (revision d4a07e70)
11eaf0ac3Slogwang /*-
222ce4affSfengbojiang  * SPDX-License-Identifier: BSD-3-Clause
322ce4affSfengbojiang  *
41eaf0ac3Slogwang  * Copyright (c) 1992, 1993
51eaf0ac3Slogwang  *	Regents of the University of California.  All rights reserved.
61eaf0ac3Slogwang  *
71eaf0ac3Slogwang  * Redistribution and use in source and binary forms, with or without
81eaf0ac3Slogwang  * modification, are permitted provided that the following conditions
91eaf0ac3Slogwang  * are met:
101eaf0ac3Slogwang  * 1. Redistributions of source code must retain the above copyright
111eaf0ac3Slogwang  *    notice, this list of conditions and the following disclaimer.
121eaf0ac3Slogwang  * 2. Redistributions in binary form must reproduce the above copyright
131eaf0ac3Slogwang  *    notice, this list of conditions and the following disclaimer in the
141eaf0ac3Slogwang  *    documentation and/or other materials provided with the distribution.
1522ce4affSfengbojiang  * 3. Neither the name of the University nor the names of its contributors
161eaf0ac3Slogwang  *    may be used to endorse or promote products derived from this software
171eaf0ac3Slogwang  *    without specific prior written permission.
181eaf0ac3Slogwang  *
191eaf0ac3Slogwang  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
201eaf0ac3Slogwang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
211eaf0ac3Slogwang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
221eaf0ac3Slogwang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
231eaf0ac3Slogwang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
241eaf0ac3Slogwang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
251eaf0ac3Slogwang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
261eaf0ac3Slogwang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
271eaf0ac3Slogwang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
281eaf0ac3Slogwang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
291eaf0ac3Slogwang  * SUCH DAMAGE.
301eaf0ac3Slogwang  *
311eaf0ac3Slogwang  *	@(#)netstat.h	8.2 (Berkeley) 1/4/94
321eaf0ac3Slogwang  * $FreeBSD$
331eaf0ac3Slogwang  */
341eaf0ac3Slogwang 
351eaf0ac3Slogwang #include <sys/cdefs.h>
361eaf0ac3Slogwang 
37*d4a07e70Sfengbojiang #ifdef FSTACK
38*d4a07e70Sfengbojiang #ifndef __unused
39*d4a07e70Sfengbojiang #define __unused __attribute__((__unused__))
40*d4a07e70Sfengbojiang #endif
41*d4a07e70Sfengbojiang #endif
42*d4a07e70Sfengbojiang 
431eaf0ac3Slogwang #define	satosin(sa)	((struct sockaddr_in *)(sa))
441eaf0ac3Slogwang #define	satosin6(sa)	((struct sockaddr_in6 *)(sa))
451eaf0ac3Slogwang #define	sin6tosa(sin6)	((struct sockaddr *)(sin6))
461eaf0ac3Slogwang 
471eaf0ac3Slogwang extern int	Aflag;	/* show addresses of protocol control block */
481eaf0ac3Slogwang extern int	aflag;	/* show all sockets (including servers) */
491eaf0ac3Slogwang extern int	bflag;	/* show i/f total bytes in/out */
5022ce4affSfengbojiang extern int	cflag;	/* show congestion control stats */
5122ce4affSfengbojiang extern int	Cflag;	/* show congestion control algo and stack */
521eaf0ac3Slogwang extern int	dflag;	/* show i/f dropped packets */
531eaf0ac3Slogwang extern int	gflag;	/* show group (multicast) routing or stats */
541eaf0ac3Slogwang extern int	hflag;	/* show counters in human readable format */
551eaf0ac3Slogwang extern int	iflag;	/* show interfaces */
561eaf0ac3Slogwang extern int	Lflag;	/* show size of listen queues */
571eaf0ac3Slogwang extern int	mflag;	/* show memory stats */
581eaf0ac3Slogwang extern int	noutputs;	/* how much outputs before we exit */
591eaf0ac3Slogwang extern int	numeric_addr;	/* show addresses numerically */
601eaf0ac3Slogwang extern int	numeric_port;	/* show ports numerically */
6122ce4affSfengbojiang extern int	Pflag;	/* show TCP log ID */
621eaf0ac3Slogwang extern int	rflag;	/* show routing tables (or routing stats) */
631eaf0ac3Slogwang extern int	Rflag;	/* show flowid / RSS information */
641eaf0ac3Slogwang extern int	sflag;	/* show protocol statistics */
651eaf0ac3Slogwang extern int	Tflag;  /* show TCP control block info */
661eaf0ac3Slogwang extern int	Wflag;	/* wide display */
671eaf0ac3Slogwang extern int	xflag;	/* extended display, includes all socket buffer info */
681eaf0ac3Slogwang extern int	zflag;	/* zero stats */
691eaf0ac3Slogwang 
701eaf0ac3Slogwang extern int	interval; /* repeat interval for i/f stats */
711eaf0ac3Slogwang 
721eaf0ac3Slogwang extern char	*interface; /* desired i/f for stats, or NULL for all i/fs */
731eaf0ac3Slogwang extern int	unit;	/* unit number for above */
741eaf0ac3Slogwang 
751eaf0ac3Slogwang extern int	live;	/* true if we are examining a live system */
761eaf0ac3Slogwang 
771eaf0ac3Slogwang typedef	int kreadfn_t(u_long, void *, size_t);
781eaf0ac3Slogwang int	fetch_stats(const char *, u_long, void *, size_t, kreadfn_t);
791eaf0ac3Slogwang int	fetch_stats_ro(const char *, u_long, void *, size_t, kreadfn_t);
801eaf0ac3Slogwang 
811eaf0ac3Slogwang int	kread(u_long addr, void *buf, size_t size);
821eaf0ac3Slogwang uint64_t kread_counter(u_long addr);
831eaf0ac3Slogwang int	kread_counters(u_long addr, void *buf, size_t size);
841eaf0ac3Slogwang void	kset_dpcpu(u_int);
851eaf0ac3Slogwang const char *plural(uintmax_t);
861eaf0ac3Slogwang const char *plurales(uintmax_t);
871eaf0ac3Slogwang const char *pluralies(uintmax_t);
881eaf0ac3Slogwang 
891eaf0ac3Slogwang struct sockaddr;
901eaf0ac3Slogwang struct socket;
911eaf0ac3Slogwang struct xsocket;
921eaf0ac3Slogwang int	sotoxsocket(struct socket *, struct xsocket *);
931eaf0ac3Slogwang void	protopr(u_long, const char *, int, int);
941eaf0ac3Slogwang void	tcp_stats(u_long, const char *, int, int);
951eaf0ac3Slogwang void	udp_stats(u_long, const char *, int, int);
961eaf0ac3Slogwang #ifdef SCTP
971eaf0ac3Slogwang void	sctp_protopr(u_long, const char *, int, int);
981eaf0ac3Slogwang void	sctp_stats(u_long, const char *, int, int);
991eaf0ac3Slogwang #endif
1001eaf0ac3Slogwang void	arp_stats(u_long, const char *, int, int);
1011eaf0ac3Slogwang void	ip_stats(u_long, const char *, int, int);
1021eaf0ac3Slogwang void	icmp_stats(u_long, const char *, int, int);
1031eaf0ac3Slogwang void	igmp_stats(u_long, const char *, int, int);
1041eaf0ac3Slogwang void	pim_stats(u_long, const char *, int, int);
1051eaf0ac3Slogwang void	carp_stats(u_long, const char *, int, int);
1061eaf0ac3Slogwang void	pfsync_stats(u_long, const char *, int, int);
1071eaf0ac3Slogwang #ifdef IPSEC
1081eaf0ac3Slogwang void	ipsec_stats(u_long, const char *, int, int);
1091eaf0ac3Slogwang void	esp_stats(u_long, const char *, int, int);
1101eaf0ac3Slogwang void	ah_stats(u_long, const char *, int, int);
1111eaf0ac3Slogwang void	ipcomp_stats(u_long, const char *, int, int);
1121eaf0ac3Slogwang #endif
1131eaf0ac3Slogwang 
11422ce4affSfengbojiang #ifdef INET
11522ce4affSfengbojiang struct in_addr;
11622ce4affSfengbojiang 
11722ce4affSfengbojiang char	*inetname(struct in_addr *);
11822ce4affSfengbojiang #endif
11922ce4affSfengbojiang 
1201eaf0ac3Slogwang #ifdef INET6
12122ce4affSfengbojiang struct in6_addr;
12222ce4affSfengbojiang 
12322ce4affSfengbojiang char	*inet6name(struct in6_addr *);
1241eaf0ac3Slogwang void	ip6_stats(u_long, const char *, int, int);
1251eaf0ac3Slogwang void	ip6_ifstats(char *);
1261eaf0ac3Slogwang void	icmp6_stats(u_long, const char *, int, int);
1271eaf0ac3Slogwang void	icmp6_ifstats(char *);
1281eaf0ac3Slogwang void	pim6_stats(u_long, const char *, int, int);
1291eaf0ac3Slogwang void	rip6_stats(u_long, const char *, int, int);
1301eaf0ac3Slogwang void	mroute6pr(void);
1311eaf0ac3Slogwang void	mrt6_stats(void);
1321eaf0ac3Slogwang 
1331eaf0ac3Slogwang struct sockaddr_in6;
1341eaf0ac3Slogwang struct in6_addr;
1351eaf0ac3Slogwang void in6_fillscopeid(struct sockaddr_in6 *);
1361eaf0ac3Slogwang void	inet6print(const char *, struct in6_addr *, int, const char *, int);
1371eaf0ac3Slogwang #endif /*INET6*/
1381eaf0ac3Slogwang 
1391eaf0ac3Slogwang #ifdef IPSEC
1401eaf0ac3Slogwang void	pfkey_stats(u_long, const char *, int, int);
1411eaf0ac3Slogwang #endif
1421eaf0ac3Slogwang 
1431eaf0ac3Slogwang void	mbpr(void *, u_long);
1441eaf0ac3Slogwang 
1451eaf0ac3Slogwang void	netisr_stats(void);
1461eaf0ac3Slogwang 
1471eaf0ac3Slogwang void	hostpr(u_long, u_long);
1481eaf0ac3Slogwang void	impstats(u_long, u_long);
1491eaf0ac3Slogwang 
1501eaf0ac3Slogwang void	intpr(void (*)(char *), int);
1511eaf0ac3Slogwang 
1521eaf0ac3Slogwang void	pr_family(int);
1531eaf0ac3Slogwang void	rt_stats(void);
1541eaf0ac3Slogwang 
1551eaf0ac3Slogwang char	*routename(struct sockaddr *, int);
1561eaf0ac3Slogwang const char *netname(struct sockaddr *, struct sockaddr *);
1571eaf0ac3Slogwang void	routepr(int, int);
15822ce4affSfengbojiang int	p_sockaddr(const char *name, struct sockaddr *sa,
15922ce4affSfengbojiang 	    struct sockaddr *mask, int flags, int width);
16022ce4affSfengbojiang const char *fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask,
16122ce4affSfengbojiang 	    int flags);
1621eaf0ac3Slogwang 
1631eaf0ac3Slogwang #ifdef NETGRAPH
1641eaf0ac3Slogwang void	netgraphprotopr(u_long, const char *, int, int);
1651eaf0ac3Slogwang #endif
1661eaf0ac3Slogwang 
1671eaf0ac3Slogwang void	unixpr(u_long, u_long, u_long, u_long, u_long, bool *);
1681eaf0ac3Slogwang 
1691eaf0ac3Slogwang void	mroutepr(void);
1701eaf0ac3Slogwang void	mrt_stats(void);
1711eaf0ac3Slogwang void	bpf_stats(char *);
17222ce4affSfengbojiang void	nhops_print(int fibnum, int af);
17322ce4affSfengbojiang void	nhgrp_print(int fibnum, int af);
174