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 }