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