github.com/cilium/cilium@v1.16.2/tools/dev-doctor/etcnfsconfcheck.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package main
     5  
     6  import (
     7  	"fmt"
     8  	"os"
     9  
    10  	"gopkg.in/ini.v1"
    11  )
    12  
    13  // An etcdNFSConfCheck checks /etc/nfs.conf.
    14  type etcNFSConfCheck struct{}
    15  
    16  func (etcNFSConfCheck) Name() string {
    17  	return "/etc/nfs.conf"
    18  }
    19  
    20  func (etcNFSConfCheck) Run() (checkResult, string) {
    21  	data, err := os.ReadFile("/etc/nfs.conf")
    22  	switch {
    23  	case os.IsNotExist(err):
    24  		return checkError, "/etc/nfs.conf does not exist"
    25  	case err != nil:
    26  		return checkFailed, err.Error()
    27  	}
    28  
    29  	var nfsConf struct {
    30  		NFSD struct {
    31  			TCP string `ini:"tcp"`
    32  		} `ini:"nfsd"`
    33  	}
    34  	if err := ini.MapTo(&nfsConf, data); err != nil {
    35  		return checkError, err.Error()
    36  	}
    37  
    38  	switch {
    39  	case nfsConf.NFSD.TCP == "":
    40  		return checkError, `nfsd.tcp is not set, want "y"`
    41  	case nfsConf.NFSD.TCP != "y":
    42  		return checkError, fmt.Sprintf(`nfsd.tcp is %q, want "y"`, nfsConf.NFSD.TCP)
    43  	}
    44  
    45  	return checkOK, `nfsd.tcp is "y"`
    46  }
    47  
    48  func (etcNFSConfCheck) Hint() string {
    49  	return `Ensure that /etc/nfs.conf includes "[nfsd]\ntcp=y\n".`
    50  }