File: stats.go

package info (click to toggle)
golang-gvisor-gvisor 0.0~20240729.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 21,300 kB
  • sloc: asm: 3,361; ansic: 1,197; cpp: 348; makefile: 92; python: 89; sh: 83
file content (74 lines) | stat: -rw-r--r-- 3,250 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright 2021 The gVisor Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package arp

import (
	"gvisor.dev/gvisor/pkg/tcpip"
	"gvisor.dev/gvisor/pkg/tcpip/stack"
)

var _ stack.NetworkEndpointStats = (*Stats)(nil)

// Stats holds statistics related to ARP.
//
// +stateify savable
type Stats struct {
	// ARP holds ARP statistics.
	ARP tcpip.ARPStats
}

// IsNetworkEndpointStats implements stack.NetworkEndpointStats.
func (*Stats) IsNetworkEndpointStats() {}

// +stateify savable
type sharedStats struct {
	localStats Stats
	arp        multiCounterARPStats
}

// LINT.IfChange(multiCounterARPStats)

// +stateify savable
type multiCounterARPStats struct {
	packetsReceived                                 tcpip.MultiCounterStat
	disabledPacketsReceived                         tcpip.MultiCounterStat
	malformedPacketsReceived                        tcpip.MultiCounterStat
	requestsReceived                                tcpip.MultiCounterStat
	requestsReceivedUnknownTargetAddress            tcpip.MultiCounterStat
	outgoingRequestInterfaceHasNoLocalAddressErrors tcpip.MultiCounterStat
	outgoingRequestBadLocalAddressErrors            tcpip.MultiCounterStat
	outgoingRequestsDropped                         tcpip.MultiCounterStat
	outgoingRequestsSent                            tcpip.MultiCounterStat
	repliesReceived                                 tcpip.MultiCounterStat
	outgoingRepliesDropped                          tcpip.MultiCounterStat
	outgoingRepliesSent                             tcpip.MultiCounterStat
}

func (m *multiCounterARPStats) init(a, b *tcpip.ARPStats) {
	m.packetsReceived.Init(a.PacketsReceived, b.PacketsReceived)
	m.disabledPacketsReceived.Init(a.DisabledPacketsReceived, b.DisabledPacketsReceived)
	m.malformedPacketsReceived.Init(a.MalformedPacketsReceived, b.MalformedPacketsReceived)
	m.requestsReceived.Init(a.RequestsReceived, b.RequestsReceived)
	m.requestsReceivedUnknownTargetAddress.Init(a.RequestsReceivedUnknownTargetAddress, b.RequestsReceivedUnknownTargetAddress)
	m.outgoingRequestInterfaceHasNoLocalAddressErrors.Init(a.OutgoingRequestInterfaceHasNoLocalAddressErrors, b.OutgoingRequestInterfaceHasNoLocalAddressErrors)
	m.outgoingRequestBadLocalAddressErrors.Init(a.OutgoingRequestBadLocalAddressErrors, b.OutgoingRequestBadLocalAddressErrors)
	m.outgoingRequestsDropped.Init(a.OutgoingRequestsDropped, b.OutgoingRequestsDropped)
	m.outgoingRequestsSent.Init(a.OutgoingRequestsSent, b.OutgoingRequestsSent)
	m.repliesReceived.Init(a.RepliesReceived, b.RepliesReceived)
	m.outgoingRepliesDropped.Init(a.OutgoingRepliesDropped, b.OutgoingRepliesDropped)
	m.outgoingRepliesSent.Init(a.OutgoingRepliesSent, b.OutgoingRepliesSent)
}

// LINT.ThenChange(../../tcpip.go:ARPStats)