// Copyright 2017 Prometheus Team// 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 ()// XfrmStat models the contents of /proc/net/xfrm_stat.typeXfrmStatstruct {// All errors which are not matched by other XfrmInError int// No buffer is left XfrmInBufferError int// Header Error XfrmInHdrError int// No state found // i.e. either inbound SPI, address, or IPSEC protocol at SA is wrong XfrmInNoStates int// Transformation protocol specific error // e.g. SA Key is wrong XfrmInStateProtoError int// Transformation mode specific error XfrmInStateModeError int// Sequence error // e.g. sequence number is out of window XfrmInStateSeqError int// State is expired XfrmInStateExpired int// State has mismatch option // e.g. UDP encapsulation type is mismatched XfrmInStateMismatch int// State is invalid XfrmInStateInvalid int// No matching template for states // e.g. Inbound SAs are correct but SP rule is wrong XfrmInTmplMismatch int// No policy is found for states // e.g. Inbound SAs are correct but no SP is found XfrmInNoPols int// Policy discards XfrmInPolBlock int// Policy error XfrmInPolError int// All errors which are not matched by others XfrmOutError int// Bundle generation error XfrmOutBundleGenError int// Bundle check error XfrmOutBundleCheckError int// No state was found XfrmOutNoStates int// Transformation protocol specific error XfrmOutStateProtoError int// Transportation mode specific error XfrmOutStateModeError int// Sequence error // i.e sequence number overflow XfrmOutStateSeqError int// State is expired XfrmOutStateExpired int// Policy discads XfrmOutPolBlock int// Policy is dead XfrmOutPolDead int// Policy Error XfrmOutPolError int// Forward routing of a packet is not allowed XfrmFwdHdrError int// State is invalid, perhaps expired XfrmOutStateInvalid int// State hasn’t been fully acquired before use XfrmAcquireError int}// NewXfrmStat reads the xfrm_stat statistics.func () (XfrmStat, error) { , := NewFS(DefaultMountPoint)if != nil {returnXfrmStat{}, }return .NewXfrmStat()}// NewXfrmStat reads the xfrm_stat statistics from the 'proc' filesystem.func ( FS) () (XfrmStat, error) { , := os.Open(.proc.Path("net/xfrm_stat"))if != nil {returnXfrmStat{}, }defer .Close()var ( = XfrmStat{} = bufio.NewScanner() )for .Scan() { := strings.Fields(.Text())iflen() != 2 {returnXfrmStat{}, fmt.Errorf("%w: %q line %q", ErrFileParse, .Name(), .Text()) } := [0] , := strconv.Atoi([1])if != nil {returnXfrmStat{}, }switch {case"XfrmInError": .XfrmInError = case"XfrmInBufferError": .XfrmInBufferError = case"XfrmInHdrError": .XfrmInHdrError = case"XfrmInNoStates": .XfrmInNoStates = case"XfrmInStateProtoError": .XfrmInStateProtoError = case"XfrmInStateModeError": .XfrmInStateModeError = case"XfrmInStateSeqError": .XfrmInStateSeqError = case"XfrmInStateExpired": .XfrmInStateExpired = case"XfrmInStateInvalid": .XfrmInStateInvalid = case"XfrmInTmplMismatch": .XfrmInTmplMismatch = case"XfrmInNoPols": .XfrmInNoPols = case"XfrmInPolBlock": .XfrmInPolBlock = case"XfrmInPolError": .XfrmInPolError = case"XfrmOutError": .XfrmOutError = case"XfrmInStateMismatch": .XfrmInStateMismatch = case"XfrmOutBundleGenError": .XfrmOutBundleGenError = case"XfrmOutBundleCheckError": .XfrmOutBundleCheckError = case"XfrmOutNoStates": .XfrmOutNoStates = case"XfrmOutStateProtoError": .XfrmOutStateProtoError = case"XfrmOutStateModeError": .XfrmOutStateModeError = case"XfrmOutStateSeqError": .XfrmOutStateSeqError = case"XfrmOutStateExpired": .XfrmOutStateExpired = case"XfrmOutPolBlock": .XfrmOutPolBlock = case"XfrmOutPolDead": .XfrmOutPolDead = case"XfrmOutPolError": .XfrmOutPolError = case"XfrmFwdHdrError": .XfrmFwdHdrError = case"XfrmOutStateInvalid": .XfrmOutStateInvalid = case"XfrmAcquireError": .XfrmAcquireError = } }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.