package opnsense type protocolStatisticsResponse struct { Statistics struct { TCP struct { SentPackets int `json:"sent-packets"` SentDataPackets int `json:"sent-data-packets"` SentDataBytes int `json:"sent-data-bytes"` SentRetransmittedPackets int `json:"sent-retransmitted-packets"` SentRetransmittedBytes int `json:"sent-retransmitted-bytes"` SentUnnecessaryRetransmittedPackets int `json:"sent-unnecessary-retransmitted-packets"` SentResendsByMtuDiscovery int `json:"sent-resends-by-mtu-discovery"` SentAckOnlyPackets int `json:"sent-ack-only-packets"` SentPacketsDelayed int `json:"sent-packets-delayed"` SentUrgOnlyPackets int `json:"sent-urg-only-packets"` SentWindowProbePackets int `json:"sent-window-probe-packets"` SentWindowUpdatePackets int `json:"sent-window-update-packets"` SentControlPackets int `json:"sent-control-packets"` ReceivedPackets int `json:"received-packets"` ReceivedAckPackets int `json:"received-ack-packets"` ReceivedAckBytes int `json:"received-ack-bytes"` ReceivedDuplicateAcks int `json:"received-duplicate-acks"` ReceivedUDPTunneledPkts int `json:"received-udp-tunneled-pkts"` ReceivedBadUDPTunneledPkts int `json:"received-bad-udp-tunneled-pkts"` ReceivedAcksForUnsentData int `json:"received-acks-for-unsent-data"` ReceivedInSequencePackets int `json:"received-in-sequence-packets"` ReceivedInSequenceBytes int `json:"received-in-sequence-bytes"` ReceivedCompletelyDuplicatePackets int `json:"received-completely-duplicate-packets"` ReceivedCompletelyDuplicateBytes int `json:"received-completely-duplicate-bytes"` ReceivedOldDuplicatePackets int `json:"received-old-duplicate-packets"` ReceivedSomeDuplicatePackets int `json:"received-some-duplicate-packets"` ReceivedSomeDuplicateBytes int `json:"received-some-duplicate-bytes"` ReceivedOutOfOrder int `json:"received-out-of-order"` ReceivedOutOfOrderBytes int `json:"received-out-of-order-bytes"` ReceivedAfterWindowPackets int `json:"received-after-window-packets"` ReceivedAfterWindowBytes int `json:"received-after-window-bytes"` ReceivedWindowProbes int `json:"received-window-probes"` ReceiveWindowUpdatePackets int `json:"receive-window-update-packets"` ReceivedAfterClosePackets int `json:"received-after-close-packets"` DiscardBadChecksum int `json:"discard-bad-checksum"` DiscardBadHeaderOffset int `json:"discard-bad-header-offset"` DiscardTooShort int `json:"discard-too-short"` DiscardReassemblyQueueFull int `json:"discard-reassembly-queue-full"` ConnectionRequests int `json:"connection-requests"` ConnectionsAccepts int `json:"connections-accepts"` BadConnectionAttempts int `json:"bad-connection-attempts"` ListenQueueOverflows int `json:"listen-queue-overflows"` IgnoredInWindowResets int `json:"ignored-in-window-resets"` ConnectionsEstablished int `json:"connections-established"` ConnectionsHostcacheRtt int `json:"connections-hostcache-rtt"` ConnectionsHostcacheRttvar int `json:"connections-hostcache-rttvar"` ConnectionsHostcacheSsthresh int `json:"connections-hostcache-ssthresh"` ConnectionsClosed int `json:"connections-closed"` ConnectionDrops int `json:"connection-drops"` ConnectionsUpdatedRttOnClose int `json:"connections-updated-rtt-on-close"` ConnectionsUpdatedVarianceOnClose int `json:"connections-updated-variance-on-close"` ConnectionsUpdatedSsthreshOnClose int `json:"connections-updated-ssthresh-on-close"` EmbryonicConnectionsDropped int `json:"embryonic-connections-dropped"` SegmentsUpdatedRtt int `json:"segments-updated-rtt"` SegmentUpdateAttempts int `json:"segment-update-attempts"` RetransmitTimeouts int `json:"retransmit-timeouts"` ConnectionsDroppedByRetransmitTimeout int `json:"connections-dropped-by-retransmit-timeout"` PersistTimeout int `json:"persist-timeout"` ConnectionsDroppedByPersistTimeout int `json:"connections-dropped-by-persist-timeout"` ConnectionsDroppedByFinwait2Timeout int `json:"connections-dropped-by-finwait2-timeout"` KeepaliveTimeout int `json:"keepalive-timeout"` KeepaliveProbes int `json:"keepalive-probes"` ConnectionsDroppedByKeepalives int `json:"connections-dropped-by-keepalives"` AckHeaderPredictions int `json:"ack-header-predictions"` DataPacketHeaderPredictions int `json:"data-packet-header-predictions"` Syncache struct { EntriesAdded int `json:"entries-added"` Retransmitted int `json:"retransmitted"` Duplicates int `json:"duplicates"` Dropped int `json:"dropped"` Completed int `json:"completed"` BucketOverflow int `json:"bucket-overflow"` CacheOverflow int `json:"cache-overflow"` Reset int `json:"reset"` Stale int `json:"stale"` Aborted int `json:"aborted"` BadAck int `json:"bad-ack"` Unreachable int `json:"unreachable"` ZoneFailures int `json:"zone-failures"` SentCookies int `json:"sent-cookies"` ReceivdCookies int `json:"receivd-cookies"` } `json:"syncache"` Hostcache struct { EntriesAdded int `json:"entries-added"` BufferOverflows int `json:"buffer-overflows"` } `json:"hostcache"` Sack struct { RecoveryEpisodes int `json:"recovery-episodes"` SegmentRetransmits int `json:"segment-retransmits"` ByteRetransmits int `json:"byte-retransmits"` ReceivedBlocks int `json:"received-blocks"` SentOptionBlocks int `json:"sent-option-blocks"` ScoreboardOverflows int `json:"scoreboard-overflows"` } `json:"sack"` Ecn struct { CePackets int `json:"ce-packets"` Ect0Packets int `json:"ect0-packets"` Ect1Packets int `json:"ect1-packets"` Handshakes int `json:"handshakes"` CongestionReductions int `json:"congestion-reductions"` } `json:"ecn"` TCPSignature struct { ReceivedGoodSignature int `json:"received-good-signature"` ReceivedBadSignature int `json:"received-bad-signature"` FailedMakeSignature int `json:"failed-make-signature"` NoSignatureExpected int `json:"no-signature-expected"` NoSignatureProvided int `json:"no-signature-provided"` } `json:"tcp-signature"` Pmtud struct { PmtudActivated int `json:"pmtud-activated"` PmtudActivatedMinMss int `json:"pmtud-activated-min-mss"` PmtudFailed int `json:"pmtud-failed"` } `json:"pmtud"` Tw struct { TwResponds int `json:"tw_responds"` TwRecycles int `json:"tw_recycles"` TwResets int `json:"tw_resets"` } `json:"tw"` TCPConnectionCountByState struct { Closed int `json:"CLOSED"` Listen int `json:"LISTEN"` SynSent int `json:"SYN_SENT"` SynRcvd int `json:"SYN_RCVD"` Established int `json:"ESTABLISHED"` CloseWait int `json:"CLOSE_WAIT"` FinWait1 int `json:"FIN_WAIT_1"` Closing int `json:"CLOSING"` LastAck int `json:"LAST_ACK"` FinWait2 int `json:"FIN_WAIT_2"` TimeWait int `json:"TIME_WAIT"` } `json:"TCP connection count by state"` } `json:"tcp"` UDP struct { ReceivedDatagrams int `json:"received-datagrams"` DroppedIncompleteHeaders int `json:"dropped-incomplete-headers"` DroppedBadDataLength int `json:"dropped-bad-data-length"` DroppedBadChecksum int `json:"dropped-bad-checksum"` DroppedNoChecksum int `json:"dropped-no-checksum"` DroppedNoSocket int `json:"dropped-no-socket"` DroppedBroadcastMulticast int `json:"dropped-broadcast-multicast"` DroppedFullSocketBuffer int `json:"dropped-full-socket-buffer"` NotForHashedPcb int `json:"not-for-hashed-pcb"` DeliveredPackets int `json:"delivered-packets"` OutputPackets int `json:"output-packets"` MulticastSourceFilterMatches int `json:"multicast-source-filter-matches"` } `json:"udp"` IP struct { ReceivedPackets int `json:"received-packets"` DroppedBadChecksum int `json:"dropped-bad-checksum"` DroppedBelowMinimumSize int `json:"dropped-below-minimum-size"` DroppedShortPackets int `json:"dropped-short-packets"` DroppedTooLong int `json:"dropped-too-long"` DroppedShortHeaderLength int `json:"dropped-short-header-length"` DroppedShortData int `json:"dropped-short-data"` DroppedBadOptions int `json:"dropped-bad-options"` DroppedBadVersion int `json:"dropped-bad-version"` ReceivedFragments int `json:"received-fragments"` DroppedFragments int `json:"dropped-fragments"` DroppedFragmentsAfterTimeout int `json:"dropped-fragments-after-timeout"` ReassembledPackets int `json:"reassembled-packets"` ReceivedLocalPackets int `json:"received-local-packets"` DroppedUnknownProtocol int `json:"dropped-unknown-protocol"` ForwardedPackets int `json:"forwarded-packets"` FastForwardedPackets int `json:"fast-forwarded-packets"` PacketsCannotForward int `json:"packets-cannot-forward"` ReceivedUnknownMulticastGroup int `json:"received-unknown-multicast-group"` RedirectsSent int `json:"redirects-sent"` SentPackets int `json:"sent-packets"` SendPacketsFabricatedHeader int `json:"send-packets-fabricated-header"` DiscardNoMbufs int `json:"discard-no-mbufs"` DiscardNoRoute int `json:"discard-no-route"` SentFragments int `json:"sent-fragments"` FragmentsCreated int `json:"fragments-created"` DiscardCannotFragment int `json:"discard-cannot-fragment"` DiscardTunnelNoGif int `json:"discard-tunnel-no-gif"` DiscardBadAddress int `json:"discard-bad-address"` } `json:"ip"` Icmp struct { IcmpCalls int `json:"icmp-calls"` ErrorsNotFromMessage int `json:"errors-not-from-message"` OutputHistogram []struct { Name string `json:"name"` Count int `json:"count"` } `json:"output-histogram"` DroppedBadCode int `json:"dropped-bad-code"` DroppedTooShort int `json:"dropped-too-short"` DroppedBadChecksum int `json:"dropped-bad-checksum"` DroppedBadLength int `json:"dropped-bad-length"` DroppedMulticastEcho int `json:"dropped-multicast-echo"` DroppedMulticastTimestamp int `json:"dropped-multicast-timestamp"` InputHistogram []struct { Name string `json:"name"` Count int `json:"count"` } `json:"input-histogram"` SentPackets int `json:"sent-packets"` DiscardInvalidReturnAddress int `json:"discard-invalid-return-address"` DiscardNoRoute int `json:"discard-no-route"` IcmpAddressResponses string `json:"icmp-address-responses"` } `json:"icmp"` Carp struct { ReceivedInetPackets int `json:"received-inet-packets"` ReceivedInet6Packets int `json:"received-inet6-packets"` DroppedWrongTTL int `json:"dropped-wrong-ttl"` DroppedShortHeader int `json:"dropped-short-header"` DroppedBadChecksum int `json:"dropped-bad-checksum"` DroppedBadVersion int `json:"dropped-bad-version"` DroppedShortPacket int `json:"dropped-short-packet"` DroppedBadAuthentication int `json:"dropped-bad-authentication"` DroppedBadVhid int `json:"dropped-bad-vhid"` DroppedBadAddressList int `json:"dropped-bad-address-list"` SentInetPackets int `json:"sent-inet-packets"` SentInet6Packets int `json:"sent-inet6-packets"` SendFailedMemoryError int `json:"send-failed-memory-error"` } `json:"carp"` Pfsync struct { ReceivedInetPackets int `json:"received-inet-packets"` ReceivedInet6Packets int `json:"received-inet6-packets"` InputHistogram []struct { Name string `json:"name"` Count int `json:"count"` } `json:"input-histogram"` DroppedBadInterface int `json:"dropped-bad-interface"` DroppedBadTTL int `json:"dropped-bad-ttl"` DroppedShortHeader int `json:"dropped-short-header"` DroppedBadVersion int `json:"dropped-bad-version"` DroppedBadAuth int `json:"dropped-bad-auth"` DroppedBadAction int `json:"dropped-bad-action"` DroppedShort int `json:"dropped-short"` DroppedBadValues int `json:"dropped-bad-values"` DroppedStaleState int `json:"dropped-stale-state"` DroppedFailedLookup int `json:"dropped-failed-lookup"` SentInetPackets int `json:"sent-inet-packets"` SendInet6Packets int `json:"send-inet6-packets"` OutputHistogram []struct { Name string `json:"name"` Count int `json:"count"` } `json:"output-histogram"` DiscardedNoMemory int `json:"discarded-no-memory"` SendErrors int `json:"send-errors"` } `json:"pfsync"` Arp struct { SentRequests int `json:"sent-requests"` SentFailures int `json:"sent-failures"` SentReplies int `json:"sent-replies"` ReceivedRequests int `json:"received-requests"` ReceivedReplies int `json:"received-replies"` ReceivedPackets int `json:"received-packets"` DroppedNoEntry int `json:"dropped-no-entry"` EntriesTimeout int `json:"entries-timeout"` DroppedDuplicateAddress int `json:"dropped-duplicate-address"` } `json:"arp"` } `json:"statistics"` } type ProtocolStatistics struct { TCPConnectionCountByState map[string]int } func (c *Client) FetchProtocolStatistics() (ProtocolStatistics, *APICallError) { var ( resp protocolStatisticsResponse data ProtocolStatistics ) url, ok := c.endpoints["protocolStatistics"] if !ok { return data, &APICallError{ Endpoint: "protocolStatistics", StatusCode: 404, Message: "endpoint not found in client endpoints", } } if err := c.do("GET", url, nil, &resp); err != nil { return data, err } return data, nil }