// Copyright 2018 The Prometheus 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 procfsimport ()// NetDevSNMP6 is parsed from files in /proc/net/dev_snmp6/ or /proc/<PID>/net/dev_snmp6/.// The outer map's keys are interface names and the inner map's keys are stat names.//// If you'd like a total across all interfaces, please use the Snmp6() method of the Proc type.typeNetDevSNMP6map[string]map[string]uint64// Returns kernel/system statistics read from interface files within the /proc/net/dev_snmp6/// directory.func ( FS) () (NetDevSNMP6, error) {returnnewNetDevSNMP6(.proc.Path("net/dev_snmp6"))}// Returns kernel/system statistics read from interface files within the /proc/<PID>/net/dev_snmp6/// directory.func ( Proc) () (NetDevSNMP6, error) {returnnewNetDevSNMP6(.path("net/dev_snmp6"))}// newNetDevSNMP6 creates a new NetDevSNMP6 from the contents of the given directory.func newNetDevSNMP6( string) (NetDevSNMP6, error) { := make(NetDevSNMP6)// The net/dev_snmp6 folders contain one file per interface , := os.ReadDir()if != nil {// On systems with IPv6 disabled, this directory won't exist. // Do nothing.iferrors.Is(, os.ErrNotExist) {return , }return , }for , := range { , := os.Open( + "/" + .Name())if != nil {return , }defer .Close() [.Name()], = parseNetDevSNMP6Stats()if != nil {return , } }return , nil}func parseNetDevSNMP6Stats( io.Reader) (map[string]uint64, error) { := make(map[string]uint64) := bufio.NewScanner()for .Scan() { := strings.Fields(.Text())iflen() < 2 {continue } , := [0], [1]// Expect stat name to contain "6" or be "ifIndex"ifstrings.Contains(, "6") || == "ifIndex" { , := strconv.ParseUint(, 10, 64)if != nil {return , } [] = } }return , .Err()}
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.