func setupNetwork(env process.Env) error { _, ipNet, err := net.ParseCIDR(env["network_cidr"]) if err != nil { return fmt.Errorf("initc: failed to parse network CIDR: %s", err) } mtu, err := strconv.ParseInt(env["container_iface_mtu"], 0, 64) if err != nil { return fmt.Errorf("initc: failed to parse container interface MTU: %s", err) } logger, _ := cf_lager.New("hook") configurer := network.NewConfigurer(logger.Session("initc: hook.CHILD_AFTER_PIVOT")) err = configurer.ConfigureContainer(&network.ContainerConfig{ Hostname: env["id"], ContainerIntf: env["network_container_iface"], ContainerIP: net.ParseIP(env["network_container_ip"]), GatewayIP: net.ParseIP(env["network_host_ip"]), Subnet: ipNet, Mtu: int(mtu), }) if err != nil { return fmt.Errorf("initc: failed to configure container network: %s", err) } return nil }
func main() { cf_lager.AddFlags(flag.CommandLine) flag.Parse() logger, _ := cf_lager.New("hook") oldWd, err := os.Getwd() if err != nil { panic(err) } cwd := path.Dir(os.Args[0]) os.Chdir(cwd) defer os.Chdir(oldWd) config, err := process.EnvFromFile("../etc/config") if err != nil { panic(fmt.Sprintf("error reading config file in hook: %s", err)) } runner := &logging.Runner{linux_command_runner.New(), logger} configurer := network.NewConfigurer(logger.Session("linux_backend: hook.CHILD_AFTER_PIVOT")) linux_backend.RegisterHooks(hook.DefaultHookSet, runner, config, configurer) hook.Main(os.Args[1:]) }