152 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * netlink/idiag/idiagnl.h		Inetdiag Netlink
 | |
|  *
 | |
|  *	This library is free software; you can redistribute it and/or
 | |
|  *	modify it under the terms of the GNU Lesser General Public
 | |
|  *	License as published by the Free Software Foundation version 2.1
 | |
|  *	of the License.
 | |
|  *
 | |
|  * Copyright (c) 2013 Sassano Systems LLC <joe@sassanosystems.com>
 | |
|  */
 | |
| 
 | |
| #ifndef NETLINK_IDIAGNL_H_
 | |
| #define NETLINK_IDIAGNL_H_
 | |
| 
 | |
| #include <netlink/netlink.h>
 | |
| #include <linux/sock_diag.h>
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /*************************************************************
 | |
|  * The following part contains DEPRECATED names and defines.
 | |
|  * Don't use them.
 | |
|  *************************************************************/
 | |
| 
 | |
| /**
 | |
|  * Inet Diag message types
 | |
|  *
 | |
|  * deprecated: use TCPDIAG_GETSOCK, DCCPDIAG_GETSOCK and
 | |
|  * INET_DIAG_GETSOCK_MAX from linux/inet_diag.h
 | |
|  */
 | |
| #define IDIAG_TCPDIAG_GETSOCK	18
 | |
| #define IDIAG_DCCPDIAG_GETSOCK	19
 | |
| #define IDIAG_GETSOCK_MAX	24
 | |
| 
 | |
| /**
 | |
|  * Socket state identifiers
 | |
|  * @ingroup idiag
 | |
|  * @deprecated: use instead the TCP_* defines from netinet/tcp.h.
 | |
|  */
 | |
| enum {
 | |
| 	IDIAG_SS_UNKNOWN           = 0,
 | |
| 
 | |
| 	IDIAG_SS_ESTABLISHED       = 1,  /* TCP_ESTABLISHED */
 | |
| 	IDIAG_SS_SYN_SENT          = 2,  /* TCP_SYN_SENT */
 | |
| 	IDIAG_SS_SYN_RECV          = 3,  /* TCP_SYN_RECV */
 | |
| 	IDIAG_SS_FIN_WAIT1         = 4,  /* TCP_FIN_WAIT1 */
 | |
| 	IDIAG_SS_FIN_WAIT2         = 5,  /* TCP_FIN_WAIT2 */
 | |
| 	IDIAG_SS_TIME_WAIT         = 6,  /* TCP_TIME_WAIT */
 | |
| 	IDIAG_SS_CLOSE             = 7,  /* TCP_CLOSE */
 | |
| 	IDIAG_SS_CLOSE_WAIT        = 8,  /* TCP_CLOSE_WAIT */
 | |
| 	IDIAG_SS_LAST_ACK          = 9,  /* TCP_LAST_ACK */
 | |
| 	IDIAG_SS_LISTEN            = 10, /* TCP_LISTEN */
 | |
| 	IDIAG_SS_CLOSING           = 11, /* TCP_CLOSING */
 | |
| 
 | |
| 	IDIAG_SS_MAX               = 12,
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Macro to represent all socket states.
 | |
|  * @ingroup idiag
 | |
|  * @deprecated
 | |
|  */
 | |
| #define IDIAG_SS_ALL  IDIAGNL_SS_ALL
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Inet Diag extended attributes
 | |
|  * @ingroup idiag
 | |
|  * @deprecated These attributes should not be used. They mirror the
 | |
|  * INET_DIAG_* extension flags from kernel headers. Use those instead. */
 | |
| enum {
 | |
| 	IDIAG_ATTR_NONE         = 0, /* INET_DIAG_NONE */
 | |
| 	IDIAG_ATTR_MEMINFO      = 1, /* INET_DIAG_MEMINFO */
 | |
| 	IDIAG_ATTR_INFO         = 2, /* INET_DIAG_INFO */
 | |
| 	IDIAG_ATTR_VEGASINFO    = 3, /* INET_DIAG_VEGASINFO */
 | |
| 	IDIAG_ATTR_CONG         = 4, /* INET_DIAG_CONG */
 | |
| 	IDIAG_ATTR_TOS          = 5, /* INET_DIAG_TOS */
 | |
| 	IDIAG_ATTR_TCLASS       = 6, /* INET_DIAG_TCLASS */
 | |
| 	IDIAG_ATTR_SKMEMINFO    = 7, /* INET_DIAG_SKMEMINFO */
 | |
| 	IDIAG_ATTR_SHUTDOWN     = 8, /* INET_DIAG_SHUTDOWN */
 | |
| 
 | |
| 	/* IDIAG_ATTR_MAX was wrong, because it did not correspond to
 | |
| 	 * INET_DIAG_MAX. Anyway, freeze it to the previous value. */
 | |
| 	IDIAG_ATTR_MAX          = 9,
 | |
| 
 | |
| 	IDIAG_ATTR_ALL          = (1<<IDIAG_ATTR_MAX) - 1,
 | |
| };
 | |
| 
 | |
| 
 | |
| /* deprectated keep these only for compatibility, DO NOT USE THEM */
 | |
| #define	IDIAG_SK_MEMINFO_RMEM_ALLOC SK_MEMINFO_RMEM_ALLOC
 | |
| #define	IDIAG_SK_MEMINFO_RCVBUF SK_MEMINFO_RCVBUF
 | |
| #define	IDIAG_SK_MEMINFO_WMEM_ALLOC SK_MEMINFO_WMEM_ALLOC
 | |
| #define	IDIAG_SK_MEMINFO_SNDBUF SK_MEMINFO_SNDBUF
 | |
| #define	IDIAG_SK_MEMINFO_FWD_ALLOC SK_MEMINFO_FWD_ALLOC
 | |
| #define	IDIAG_SK_MEMINFO_WMEM_QUEUED SK_MEMINFO_WMEM_QUEUED
 | |
| #define	IDIAG_SK_MEMINFO_OPTMEM SK_MEMINFO_OPTMEM
 | |
| #define	IDIAG_SK_MEMINFO_BACKLOG SK_MEMINFO_BACKLOG
 | |
| #define	IDIAG_SK_MEMINFO_VARS SK_MEMINFO_VARS
 | |
| 
 | |
| /* deprecated names. */
 | |
| #define IDIAG_TIMER_OFF                 IDIAGNL_TIMER_OFF
 | |
| #define IDIAG_TIMER_ON                  IDIAGNL_TIMER_ON
 | |
| #define IDIAG_TIMER_KEEPALIVE           IDIAGNL_TIMER_KEEPALIVE
 | |
| #define IDIAG_TIMER_TIMEWAIT            IDIAGNL_TIMER_TIMEWAIT
 | |
| #define IDIAG_TIMER_PERSIST             IDIAGNL_TIMER_PERSIST
 | |
| #define IDIAG_TIMER_UNKNOWN             IDIAGNL_TIMER_UNKNOWN
 | |
| 
 | |
| /*************************************************************/
 | |
| 
 | |
| /**
 | |
|  * Macro to represent all socket states.
 | |
|  * @ingroup idiag
 | |
|  */
 | |
| #define IDIAGNL_SS_ALL (((1<<12)-1))
 | |
| 
 | |
| /**
 | |
|  * Socket timer indentifiers
 | |
|  * @ingroupd idiag
 | |
|  */
 | |
| enum {
 | |
| 	IDIAGNL_TIMER_OFF               = 0,
 | |
| 	IDIAGNL_TIMER_ON                = 1,
 | |
| 	IDIAGNL_TIMER_KEEPALIVE         = 2,
 | |
| 	IDIAGNL_TIMER_TIMEWAIT          = 3,
 | |
| 	IDIAGNL_TIMER_PERSIST           = 4,
 | |
| 	IDIAGNL_TIMER_UNKNOWN           = 5,
 | |
| };
 | |
| 
 | |
| extern char *	idiagnl_state2str(int, char *, size_t);
 | |
| extern int	idiagnl_str2state(const char *);
 | |
| 
 | |
| extern int	idiagnl_connect(struct nl_sock *);
 | |
| extern int	idiagnl_send_simple(struct nl_sock *, int, uint8_t, uint16_t,
 | |
|                                     uint16_t);
 | |
| 
 | |
| extern char *		idiagnl_timer2str(int, char *, size_t);
 | |
| extern int		idiagnl_str2timer(const char *);
 | |
| extern char *		idiagnl_attrs2str(int, char *, size_t);
 | |
| extern char *		idiagnl_tcpstate2str(uint8_t, char *, size_t);
 | |
| extern char *		idiagnl_tcpopts2str(uint8_t, char *, size_t);
 | |
| extern char *		idiagnl_shutdown2str(uint8_t, char *, size_t);
 | |
| extern char *		idiagnl_exts2str(uint8_t, char *, size_t);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif /* __cplusplus */
 | |
| 
 | |
| #endif /* NETLINK_IDIAGNL_H_ */
 | 
