Merge pull request #6908 from wanyaoqi/automated-cherry-pick-of-#6906-upstream-release-3.2

Automated cherry pick of #6906: disable dhclient
This commit is contained in:
yunion-ci-robot
2020-06-22 23:42:03 +08:00
committed by GitHub
2 changed files with 35 additions and 0 deletions
@@ -18,6 +18,8 @@ import (
"fmt"
"net"
"os"
"strconv"
"strings"
"syscall"
"yunion.io/x/jsonutils"
@@ -48,6 +50,7 @@ type IBridgeDriver interface {
SetupBridgeDev() error
SetupInterface() error
PersistentMac() error
DisableDHCPClient() error
GenerateIfupScripts(scriptPath string, nic jsonutils.JSONObject) error
GenerateIfdownScripts(scriptPath string, nic jsonutils.JSONObject) error
@@ -327,6 +330,35 @@ func (d *SBaseBridgeDriver) WarmupConfig() error {
return nil
}
func (d *SBaseBridgeDriver) DisableDHCPClient() error {
if d.inter != nil {
filename := fmt.Sprintf("/var/run/dhclient-%s.pid", d.inter.String())
if !fileutils2.Exists(filename) {
return nil
}
s, err := fileutils2.FileGetContents(filename)
if err != nil {
return errors.Wrap(err, "get dhclient pid")
}
pid, err := strconv.Atoi(strings.TrimSpace(s))
if err != nil {
return errors.Wrap(err, "convert pid str to int")
}
if fileutils2.Exists(fmt.Sprintf("/proc/%d/cmdline", pid)) {
cmdline, err := fileutils2.FileGetContents(fmt.Sprintf("/proc/%d/cmdline", pid))
if err != nil {
return errors.Wrap(err, "get proc cmdline")
}
if strings.Contains(cmdline, "dhclient") {
// kill process
p, _ := os.FindProcess(pid)
return p.Kill()
}
}
}
return nil
}
func NewDriver(bridgeDriver, bridge, inter, ip string) (IBridgeDriver, error) {
if bridgeDriver == DRV_OPEN_VSWITCH {
return NewOVSBridgeDriver(bridge, inter, ip)
+3
View File
@@ -349,6 +349,9 @@ func NewNIC(desc string) (*SNIC, error) {
if err := nic.BridgeDev.PersistentMac(); err != nil {
return nil, err
}
if err := nic.BridgeDev.DisableDHCPClient(); err != nil {
return nil, errors.Wrap(err, "disable dhcp client")
}
var dhcpRelay []string
if nic.EnableDHCPRelay() {