package network import ( "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/network" ) // WithDriver sets the driver of the network func WithDriver(driver string) func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.Driver = driver } } // WithIPv6 Enables IPv6 on the network func WithIPv6() func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.EnableIPv6 = true } } // WithCheckDuplicate sets the CheckDuplicate field on create network request func WithCheckDuplicate() func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.CheckDuplicate = true } } // WithInternal enables Internal flag on the create network request func WithInternal() func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.Internal = true } } // WithAttachable sets Attachable flag on the create network request func WithAttachable() func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.Attachable = true } } // WithMacvlan sets the network as macvlan with the specified parent func WithMacvlan(parent string) func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.Driver = "macvlan" if parent != "" { n.Options = map[string]string{ "parent": parent, } } } } // WithIPvlan sets the network as ipvlan with the specified parent and mode func WithIPvlan(parent, mode string) func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { n.Driver = "ipvlan" if n.Options == nil { n.Options = map[string]string{} } if parent != "" { n.Options["parent"] = parent } if mode != "" { n.Options["ipvlan_mode"] = mode } } } // WithOption adds the specified key/value pair to network's options func WithOption(key, value string) func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { if n.Options == nil { n.Options = map[string]string{} } n.Options[key] = value } } // WithIPAM adds an IPAM with the specified Subnet and Gateway to the network func WithIPAM(subnet, gateway string) func(*types.NetworkCreate) { return func(n *types.NetworkCreate) { if n.IPAM == nil { n.IPAM = &network.IPAM{} } n.IPAM.Config = append(n.IPAM.Config, network.IPAMConfig{ Subnet: subnet, Gateway: gateway, AuxAddress: map[string]string{}, }) } }