+ u_int32_t ifi_ipackets; /* packets received on interface */
+ u_int32_t ifi_ierrors; /* input errors on interface */
+ u_int32_t ifi_opackets; /* packets sent on interface */
+ u_int32_t ifi_oerrors; /* output errors on interface */
+ u_int32_t ifi_collisions; /* collisions on csma interfaces */
+ u_int32_t ifi_ibytes; /* total number of octets received */
+ u_int32_t ifi_obytes; /* total number of octets sent */
+ u_int32_t ifi_imcasts; /* packets received via multicast */
+ u_int32_t ifi_omcasts; /* packets sent via multicast */
+ u_int32_t ifi_iqdrops; /* dropped on input, this interface */
+ u_int32_t ifi_noproto; /* destined for unsupported protocol */
+ u_int32_t ifi_recvtiming; /* usec spent receiving when timing */
+ u_int32_t ifi_xmittiming; /* usec spent xmitting when timing */
+ struct IF_DATA_TIMEVAL ifi_lastchange; /* time of last administrative change */
+ u_int32_t ifi_unused2; /* used to be the default_proto */
+ u_int32_t ifi_hwassist; /* HW offload capabilities */
+ u_int32_t ifi_reserved1; /* for future use */
+ u_int32_t ifi_reserved2; /* for future use */
+};
+
+/*
+ * Structure describing information about an interface
+ * which may be of interest to management entities.
+ */
+struct if_data64 {
+ /* generic interface information */
+ u_char ifi_type; /* ethernet, tokenring, etc */
+ u_char ifi_typelen; /* Length of frame type id */
+ u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
+ u_char ifi_addrlen; /* media address length */
+ u_char ifi_hdrlen; /* media header length */
+ u_char ifi_recvquota; /* polling quota for receive intrs */
+ u_char ifi_xmitquota; /* polling quota for xmit intrs */
+ u_char ifi_unused1; /* for future use */
+ u_int32_t ifi_mtu; /* maximum transmission unit */
+ u_int32_t ifi_metric; /* routing metric (external only) */
+ u_int64_t ifi_baudrate; /* linespeed */
+ /* volatile statistics */
+ u_int64_t ifi_ipackets; /* packets received on interface */
+ u_int64_t ifi_ierrors; /* input errors on interface */
+ u_int64_t ifi_opackets; /* packets sent on interface */
+ u_int64_t ifi_oerrors; /* output errors on interface */
+ u_int64_t ifi_collisions; /* collisions on csma interfaces */
+ u_int64_t ifi_ibytes; /* total number of octets received */
+ u_int64_t ifi_obytes; /* total number of octets sent */
+ u_int64_t ifi_imcasts; /* packets received via multicast */
+ u_int64_t ifi_omcasts; /* packets sent via multicast */
+ u_int64_t ifi_iqdrops; /* dropped on input, this interface */
+ u_int64_t ifi_noproto; /* destined for unsupported protocol */
+ u_int32_t ifi_recvtiming; /* usec spent receiving when timing */
+ u_int32_t ifi_xmittiming; /* usec spent xmitting when timing */
+ struct IF_DATA_TIMEVAL ifi_lastchange; /* time of last administrative change */
+};
+
+#ifdef PRIVATE
+struct if_traffic_class {
+ u_int64_t ifi_ibepackets; /* TC_BE packets received on interface */
+ u_int64_t ifi_ibebytes; /* TC_BE bytes received on interface */
+ u_int64_t ifi_obepackets; /* TC_BE packet sent on interface */
+ u_int64_t ifi_obebytes; /* TC_BE bytes sent on interface */
+ u_int64_t ifi_ibkpackets; /* TC_BK packets received on interface */
+ u_int64_t ifi_ibkbytes; /* TC_BK bytes received on interface */
+ u_int64_t ifi_obkpackets; /* TC_BK packet sent on interface */
+ u_int64_t ifi_obkbytes; /* TC_BK bytes sent on interface */
+ u_int64_t ifi_ivipackets; /* TC_VI packets received on interface */
+ u_int64_t ifi_ivibytes; /* TC_VI bytes received on interface */
+ u_int64_t ifi_ovipackets; /* TC_VI packets sent on interface */
+ u_int64_t ifi_ovibytes; /* TC_VI bytes sent on interface */
+ u_int64_t ifi_ivopackets; /* TC_VO packets received on interface */
+ u_int64_t ifi_ivobytes; /* TC_VO bytes received on interface */
+ u_int64_t ifi_ovopackets; /* TC_VO packets sent on interface */
+ u_int64_t ifi_ovobytes; /* TC_VO bytes sent on interface */
+ u_int64_t ifi_ipvpackets; /* TC priv packets received on interface */
+ u_int64_t ifi_ipvbytes; /* TC priv bytes received on interface */
+ u_int64_t ifi_opvpackets; /* TC priv packets sent on interface */
+ u_int64_t ifi_opvbytes; /* TC priv bytes sent on interface */
+};
+
+struct if_data_extended {
+ u_int64_t ifi_alignerrs; /* unaligned (32-bit) input pkts */
+ u_int64_t ifi_dt_bytes; /* Data threshold counter */
+ u_int64_t ifi_fpackets; /* forwarded packets on interface */
+ u_int64_t ifi_fbytes; /* forwarded bytes on interface */
+ u_int64_t reserved[12]; /* for future */
+};
+
+struct if_packet_stats {
+ /* TCP */
+ u_int64_t ifi_tcp_badformat;
+ u_int64_t ifi_tcp_unspecv6;
+ u_int64_t ifi_tcp_synfin;
+ u_int64_t ifi_tcp_badformatipsec;
+ u_int64_t ifi_tcp_noconnnolist;
+ u_int64_t ifi_tcp_noconnlist;
+ u_int64_t ifi_tcp_listbadsyn;
+ u_int64_t ifi_tcp_icmp6unreach;
+ u_int64_t ifi_tcp_deprecate6;
+ u_int64_t ifi_tcp_rstinsynrcv;
+ u_int64_t ifi_tcp_ooopacket;
+ u_int64_t ifi_tcp_dospacket;
+ u_int64_t ifi_tcp_cleanup;
+ u_int64_t ifi_tcp_synwindow;
+ u_int64_t reserved[6];
+ /* UDP */
+ u_int64_t ifi_udp_port_unreach;
+ u_int64_t ifi_udp_faithprefix;
+ u_int64_t ifi_udp_port0;
+ u_int64_t ifi_udp_badlength;
+ u_int64_t ifi_udp_badchksum;
+ u_int64_t ifi_udp_badmcast;
+ u_int64_t ifi_udp_cleanup;
+ u_int64_t ifi_udp_badipsec;
+ u_int64_t _reserved[4];
+};
+
+struct if_description {
+ u_int32_t ifd_maxlen; /* must be IF_DESCSIZE */
+ u_int32_t ifd_len; /* actual ifd_desc length */
+ u_int8_t *ifd_desc; /* ptr to desc buffer */
+};
+
+struct if_bandwidths {
+ uint64_t eff_bw; /* effective bandwidth */
+ uint64_t max_bw; /* maximum theoretical bandwidth */
+};
+
+struct if_latencies {
+ u_int64_t eff_lt; /* effective latency */
+ u_int64_t max_lt; /* maximum theoretical latency */
+};
+
+#define IF_NETEM_PARAMS_PSCALE 100000
+struct if_netem_params {
+ /* bandwidth limit */
+ uint64_t ifnetem_bandwidth_bps;
+
+ /* latency (normal distribution with jitter as stdev) */
+ uint32_t ifnetem_latency_ms;
+ uint32_t ifnetem_jitter_ms;
+
+ /*
+ * NetEm probabilistic model parameters has a scaling factor of 100,000
+ * for 5 digits precision. For instance, probability 12.345% is
+ * expressed as uint32_t fixed point 12345 in ifnet_*_p variable below.
+ */
+ /* random packet corruption */
+ uint32_t ifnetem_corruption_p;
+
+ /* random packet duplication */
+ uint32_t ifnetem_duplication_p;
+
+ /* 4 state Markov loss model */
+ uint32_t ifnetem_loss_p_gr_gl; /* P( gap_loss | gap_rx ) */
+ uint32_t ifnetem_loss_p_gr_bl; /* P( burst_loss | gap_rx ) */
+ uint32_t ifnetem_loss_p_bl_br; /* P( burst_rx | burst_loss ) */
+ uint32_t ifnetem_loss_p_bl_gr; /* P( gap_rx | burst_loss ) */
+ uint32_t ifnetem_loss_p_br_bl; /* P( burst_loss | burst_rx ) */
+
+ /* random packet reordering */
+ uint32_t ifnetem_reordering_p;
+};
+
+struct if_rxpoll_stats {
+ u_int32_t ifi_poll_off_req; /* total # of POLL_OFF reqs */
+ u_int32_t ifi_poll_off_err; /* total # of POLL_OFF errors */
+ u_int32_t ifi_poll_on_req; /* total # of POLL_ON reqs */
+ u_int32_t ifi_poll_on_err; /* total # of POLL_ON errors */
+
+ u_int32_t ifi_poll_wakeups_avg; /* avg # of wakeup reqs */
+ u_int32_t ifi_poll_wakeups_lowat; /* wakeups low watermark */
+ u_int32_t ifi_poll_wakeups_hiwat; /* wakeups high watermark */
+
+ u_int64_t ifi_poll_packets; /* total # of polled packets */
+ u_int32_t ifi_poll_packets_avg; /* average polled packets */
+ u_int32_t ifi_poll_packets_min; /* smallest polled packets */
+ u_int32_t ifi_poll_packets_max; /* largest polled packets */
+ u_int32_t ifi_poll_packets_lowat; /* packets low watermark */
+ u_int32_t ifi_poll_packets_hiwat; /* packets high watermark */
+
+ u_int64_t ifi_poll_bytes; /* total # of polled bytes */
+ u_int32_t ifi_poll_bytes_avg; /* average polled bytes */
+ u_int32_t ifi_poll_bytes_min; /* smallest polled bytes */
+ u_int32_t ifi_poll_bytes_max; /* largest polled bytes */
+ u_int32_t ifi_poll_bytes_lowat; /* bytes low watermark */
+ u_int32_t ifi_poll_bytes_hiwat; /* bytes high watermark */
+
+ u_int32_t ifi_poll_packets_limit; /* max packets per poll call */
+ u_int64_t ifi_poll_interval_time; /* poll interval (nsec) */
+};
+
+struct if_netif_stats {
+ u_int64_t ifn_rx_mit_interval; /* rx mitigation ival (nsec) */
+ u_int32_t ifn_rx_mit_mode; /* 0: static, 1: dynamic */
+ u_int32_t ifn_rx_mit_packets_avg; /* average # of packets */
+ u_int32_t ifn_rx_mit_packets_min; /* smallest # of packets */
+ u_int32_t ifn_rx_mit_packets_max; /* largest # of packets */
+ u_int32_t ifn_rx_mit_bytes_avg; /* average # of bytes */
+ u_int32_t ifn_rx_mit_bytes_min; /* smallest # of bytes */
+ u_int32_t ifn_rx_mit_bytes_max; /* largest # of bytes */
+ u_int32_t ifn_rx_mit_cfg_idx; /* current config selector */
+ u_int32_t ifn_rx_mit_cfg_packets_lowat; /* pkts low watermark */
+ u_int32_t ifn_rx_mit_cfg_packets_hiwat; /* pkts high watermark */
+ u_int32_t ifn_rx_mit_cfg_bytes_lowat; /* bytes low watermark */
+ u_int32_t ifn_rx_mit_cfg_bytes_hiwat; /* bytes high watermark */
+ u_int32_t ifn_rx_mit_cfg_interval; /* delay interval (nsec) */
+};
+
+struct if_tcp_ecn_perf_stat {
+ u_int64_t total_txpkts;
+ u_int64_t total_rxmitpkts;
+ u_int64_t total_rxpkts;
+ u_int64_t total_oopkts;
+ u_int64_t total_reorderpkts;
+ u_int64_t rtt_avg;
+ u_int64_t rtt_var;
+ u_int64_t sack_episodes;
+ u_int64_t rxmit_drop;
+ u_int64_t rst_drop;
+ u_int64_t oo_percent;
+ u_int64_t reorder_percent;
+ u_int64_t rxmit_percent;
+};
+
+struct if_tcp_ecn_stat {
+ u_int64_t timestamp;
+ u_int64_t ecn_client_setup;
+ u_int64_t ecn_server_setup;
+ u_int64_t ecn_client_success;
+ u_int64_t ecn_server_success;
+ u_int64_t ecn_peer_nosupport;
+ u_int64_t ecn_syn_lost;
+ u_int64_t ecn_synack_lost;
+ u_int64_t ecn_recv_ce;
+ u_int64_t ecn_recv_ece;
+ u_int64_t ecn_conn_recv_ce;
+ u_int64_t ecn_conn_recv_ece;
+ u_int64_t ecn_conn_plnoce;
+ u_int64_t ecn_conn_plce;
+ u_int64_t ecn_conn_noplce;
+ u_int64_t ecn_fallback_synloss;
+ u_int64_t ecn_fallback_reorder;
+ u_int64_t ecn_fallback_ce;
+ u_int64_t ecn_off_conn;
+ u_int64_t ecn_total_conn;
+ u_int64_t ecn_fallback_droprst;
+ u_int64_t ecn_fallback_droprxmt;
+ u_int64_t ecn_fallback_synrst;
+ struct if_tcp_ecn_perf_stat ecn_on;
+ struct if_tcp_ecn_perf_stat ecn_off;
+};
+
+struct if_lim_perf_stat {
+ u_int64_t lim_dl_max_bandwidth; /* bits per second */
+ u_int64_t lim_ul_max_bandwidth; /* bits per second */
+ u_int64_t lim_total_txpkts; /* Total transmit packets, count */
+ u_int64_t lim_total_rxpkts; /* Total receive packets, count */
+ u_int64_t lim_total_retxpkts; /* Total retransmit packets */
+ u_int64_t lim_packet_loss_percent; /* Packet loss rate */
+ u_int64_t lim_total_oopkts; /* Total out-of-order packets */
+ u_int64_t lim_packet_ooo_percent; /* Out-of-order packet rate */
+ u_int64_t lim_rtt_variance; /* RTT variance, milliseconds */
+ u_int64_t lim_rtt_average; /* RTT average, milliseconds */
+ u_int64_t lim_rtt_min; /* RTT minimum, milliseconds */
+ u_int64_t lim_conn_timeouts; /* connection timeouts */
+ u_int64_t lim_conn_attempts; /* connection attempts */
+ u_int64_t lim_conn_timeout_percent; /* Rate of connection timeouts */
+ u_int64_t lim_bk_txpkts; /* Transmit packets with BK service class, that use delay based algorithms */
+ u_int64_t lim_dl_detected:1, /* Low internet */
+ lim_ul_detected:1;
+};
+
+#define IF_VAR_H_HAS_IFNET_STATS_PER_FLOW 1
+struct ifnet_stats_per_flow {
+ u_int64_t bk_txpackets;
+ u_int64_t txpackets;
+ u_int64_t rxpackets;
+ u_int32_t txretransmitbytes;
+ u_int32_t rxoutoforderbytes;
+ u_int32_t rxmitpkts;
+ u_int32_t rcvoopack;
+ u_int32_t pawsdrop;
+ u_int32_t sack_recovery_episodes;
+ u_int32_t reordered_pkts;
+ u_int32_t dsack_sent;
+ u_int32_t dsack_recvd;
+ u_int32_t srtt;
+ u_int32_t rttupdated;
+ u_int32_t rttvar;
+ u_int32_t rttmin;
+ u_int32_t bw_sndbw_max;
+ u_int32_t bw_rcvbw_max;
+ u_int32_t ecn_recv_ece;
+ u_int32_t ecn_recv_ce;
+ u_int16_t ecn_flags;
+ u_int16_t ipv4:1,
+ local:1,
+ connreset:1,
+ conntimeout:1,
+ rxmit_drop:1,
+ ecn_fallback_synloss:1,
+ ecn_fallback_droprst:1,
+ ecn_fallback_droprxmt:1,
+ ecn_fallback_ce:1,
+ ecn_fallback_reorder:1;