1
0
mirror of https://github.com/rancher/os.git synced 2025-08-07 17:54:12 +00:00

Refactor network config to put that match as the key

This commit is contained in:
Darren Shepherd 2015-03-18 05:34:59 -07:00
parent bffd9865ea
commit e143d04885

View File

@ -35,11 +35,34 @@ func applyNetworkConfigs(cfg *config.Config) error {
} }
//apply network config //apply network config
for _, netConf := range cfg.Network.Interfaces { for _, link := range links {
for _, link := range links { linkName := link.Attrs().Name
err := applyNetConf(link, netConf) var match config.InterfaceConfig
for key, netConf := range cfg.Network.Interfaces {
if netConf.Match == "" {
netConf.Match = key
}
if netConf.Match == "" {
continue
}
// "" means match has not been found
if match.Match == "" && matches(linkName, netConf.Match) {
match = netConf
}
if netConf.Match == linkName {
// Found exact match, use it over wildcard match
match = netConf
}
}
if match.Match != "" {
err = applyNetConf(link, match)
if err != nil { if err != nil {
log.Errorf("Failed to apply settings to %s : %v", link.Attrs().Name, err) log.Errorf("Failed to apply settings to %s : %v", linkName, err)
} }
} }
} }
@ -56,60 +79,58 @@ func applyNetworkConfigs(cfg *config.Config) error {
} }
func applyNetConf(link netlink.Link, netConf config.InterfaceConfig) error { func applyNetConf(link netlink.Link, netConf config.InterfaceConfig) error {
if matches(link.Attrs().Name, netConf.Match) { if netConf.DHCP {
if netConf.DHCP { log.Infof("Running DHCP on %s", link.Attrs().Name)
log.Infof("Running DHCP on %s", link.Attrs().Name) cmd := exec.Command("udhcpc", "-i", link.Attrs().Name, "-t", "20", "-n")
cmd := exec.Command("udhcpc", "-i", link.Attrs().Name, "-t", "20", "-n") cmd.Stdout = os.Stdout
cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr
cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil {
if err := cmd.Run(); err != nil { log.Error(err)
log.Error(err) }
} } else if netConf.Address == "" {
} else { return nil
if netConf.Address == "" { } else {
return errors.New("DHCP is false and Address is not set") addr, err := netlink.ParseAddr(netConf.Address)
} if err != nil {
addr, err := netlink.ParseAddr(netConf.Address) return err
if err != nil { }
return err if err := netlink.AddrAdd(link, addr); err != nil {
} log.Error("addr add failed")
if err := netlink.AddrAdd(link, addr); err != nil { return err
log.Error("addr add failed") }
return err log.Infof("Set %s on %s", netConf.Address, link.Attrs().Name)
} }
log.Infof("Set %s on %s", netConf.Address, link.Attrs().Name)
if netConf.MTU > 0 {
if err := netlink.LinkSetMTU(link, netConf.MTU); err != nil {
log.Error("set MTU Failed")
return err
}
}
if err := netlink.LinkSetUp(link); err != nil {
log.Error("failed to setup link")
return err
}
if netConf.Gateway != "" {
gatewayIp := net.ParseIP(netConf.Gateway)
if gatewayIp == nil {
return errors.New("Invalid gateway address " + netConf.Gateway)
} }
if netConf.MTU > 0 { route := netlink.Route{
if err := netlink.LinkSetMTU(link, netConf.MTU); err != nil { Scope: netlink.SCOPE_UNIVERSE,
log.Error("set MTU Failed") Gw: net.ParseIP(netConf.Gateway),
return err
}
} }
if err := netlink.RouteAdd(&route); err != nil {
if err := netlink.LinkSetUp(link); err != nil { log.Error("gateway set failed")
log.Error("failed to setup link")
return err return err
} }
if netConf.Gateway != "" { log.Infof("Set default gateway %s", netConf.Gateway)
gatewayIp := net.ParseIP(netConf.Gateway)
if gatewayIp == nil {
return errors.New("Invalid gateway address " + netConf.Gateway)
}
route := netlink.Route{
Scope: netlink.SCOPE_UNIVERSE,
Gw: net.ParseIP(netConf.Gateway),
}
if err := netlink.RouteAdd(&route); err != nil {
log.Error("gateway set failed")
return err
}
log.Infof("Set default gateway %s", netConf.Gateway)
}
} }
return nil return nil
} }