1 /* 2 * CDDL HEADER START 3 * 4 * This file and its contents are supplied under the terms of the 5 * Common Development and Distribution License ("CDDL"), version 1.0. 6 * You may only use this file in accordance with the terms of version 7 * 1.0 of the CDDL. 8 * 9 * A full copy of the text of the CDDL should have accompanied this 10 * source. A copy of the CDDL is also available via the Internet at 11 * http://www.illumos.org/license/CDDL. 12 * 13 * CDDL HEADER END 14 */ 15 /* 16 * Copyright (c) 2015, 2016 by Delphix. All rights reserved. 17 */ 18 19 #ifndef _CONNSTAT_H 20 #define _CONNSTAT_H 21 22 #include <sys/types.h> 23 #include <sys/socket.h> 24 #include <ofmt.h> 25 #include <sys/stropts.h> 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 typedef struct connstat_conn_attr_s { 32 struct sockaddr_storage ca_laddr; 33 struct sockaddr_storage ca_raddr; 34 int ca_lport; 35 int ca_rport; 36 int ca_state; 37 } connstat_conn_attr_t; 38 39 typedef struct conn_walk_state_s { 40 ofmt_handle_t cws_ofmt; 41 uint_t cws_flags; 42 connstat_conn_attr_t cws_filter; 43 } conn_walk_state_t; 44 45 /* cws_flags */ 46 #define CS_LOOPBACK 0x0001 /* Include loopback connections */ 47 #define CS_IPV4 0x0002 /* Show only IPv4 connections */ 48 #define CS_IPV6 0x0004 /* Show only IPv6 connections */ 49 #define CS_LADDR 0x0008 /* Filter by laddr in cws_filter */ 50 #define CS_RADDR 0x0010 /* Filter by raddr in cws_filter */ 51 #define CS_LPORT 0x0020 /* Filter by lport in cws_filter */ 52 #define CS_RPORT 0x0040 /* Filter by rport in cws_filter */ 53 #define CS_STATE 0x0080 /* Filter by state in cws_filter */ 54 #define CS_PARSABLE 0x0100 /* Parsable output */ 55 56 typedef ofmt_field_t *connstat_getfieldsfunc_t(void); 57 typedef void connstat_walkfunc_t(struct strbuf *, conn_walk_state_t *); 58 59 typedef struct connstat_proto_s { 60 char *csp_proto; 61 char *csp_default_fields; 62 int csp_miblevel; 63 int csp_mibv4name; 64 int csp_mibv6name; 65 connstat_getfieldsfunc_t *csp_getfields; 66 connstat_walkfunc_t *csp_v4walk; 67 connstat_walkfunc_t *csp_v6walk; 68 } connstat_proto_t; 69 70 boolean_t print_string(ofmt_arg_t *, char *, uint_t); 71 boolean_t print_uint16(ofmt_arg_t *, char *, uint_t); 72 boolean_t print_uint32(ofmt_arg_t *, char *, uint_t); 73 boolean_t print_uint64(ofmt_arg_t *, char *, uint_t); 74 75 #ifdef __cplusplus 76 } 77 #endif 78 79 #endif /* _CONNSTAT_H */