MCPcopy
hub / github.com/lxc/incus / setup

Method setup

internal/server/network/driver_bridge.go:993–2079  ·  view source on GitHub ↗

setup restarts the network.

(oldConfig map[string]string)

Source from the content-addressed store, hash-verified

991
992// setup restarts the network.
993func (n *bridge) setup(oldConfig map[string]string) error {
994 // If we are in mock mode, just no-op.
995 if n.state.OS.MockMode {
996 return nil
997 }
998
999 n.logger.Debug("Setting up network")
1000
1001 reverter := revert.New()
1002 defer reverter.Fail()
1003
1004 // Create directory.
1005 if !util.PathExists(internalUtil.VarPath("networks", n.name)) {
1006 err := os.MkdirAll(internalUtil.VarPath("networks", n.name), 0o711)
1007 if err != nil {
1008 return err
1009 }
1010 }
1011
1012 var err error
1013
1014 // Build up the bridge interface's settings.
1015 bridge := ip.Bridge{
1016 Link: ip.Link{
1017 Name: n.name,
1018 MTU: bridgeMTUDefault,
1019 },
1020 }
1021
1022 // Get a list of tunnels.
1023 tunnels := n.getTunnels()
1024
1025 // Decide the MTU for the bridge interface.
1026 if n.config["bridge.mtu"] != "" {
1027 mtuInt, err := strconv.ParseUint(n.config["bridge.mtu"], 10, 32)
1028 if err != nil {
1029 return fmt.Errorf("Invalid MTU %q: %w", n.config["bridge.mtu"], err)
1030 }
1031
1032 bridge.MTU = uint32(mtuInt)
1033 } else if len(tunnels) > 0 {
1034 bridge.MTU = 1400
1035 }
1036
1037 // Decide the MAC address of bridge interface.
1038 if n.config["bridge.hwaddr"] != "" {
1039 bridge.Address, err = net.ParseMAC(n.config["bridge.hwaddr"])
1040 if err != nil {
1041 return fmt.Errorf("Failed parsing MAC address %q: %w", n.config["bridge.hwaddr"], err)
1042 }
1043 } else {
1044 // If no cluster wide static MAC address set, then generate one.
1045 var seedNodeID int64
1046
1047 if n.checkClusterWideMACSafe(n.config) != nil {
1048 // If not safe to use a cluster wide MAC, then use cluster node's ID to
1049 // generate a stable per-node & network derived random MAC.
1050 seedNodeID = n.state.DB.Cluster.GetNodeID()

Callers 2

StartMethod · 0.95
UpdateMethod · 0.95

Calls 15

getTunnelsMethod · 0.95
isRunningMethod · 0.95
AddMethod · 0.95
SetMTUMethod · 0.95
deleteChildrenMethod · 0.95
AddMethod · 0.95
SetUpMethod · 0.95
hasIPv4FirewallMethod · 0.95
hasIPv6FirewallMethod · 0.95
bootRoutesV4Method · 0.95
FlushMethod · 0.95

Tested by

no test coverage detected