// +build linux package volume import ( "strings" mounttypes "github.com/docker/docker/api/types/mount" ) // DefaultPropagationMode defines what propagation mode should be used by // default if user has not specified one explicitly. // propagation modes const DefaultPropagationMode = mounttypes.PropagationRPrivate var propagationModes = map[mounttypes.Propagation]bool{ mounttypes.PropagationPrivate: true, mounttypes.PropagationRPrivate: true, mounttypes.PropagationSlave: true, mounttypes.PropagationRSlave: true, mounttypes.PropagationShared: true, mounttypes.PropagationRShared: true, } // GetPropagation extracts and returns the mount propagation mode. If there // are no specifications, then by default it is "private". func GetPropagation(mode string) mounttypes.Propagation { for _, o := range strings.Split(mode, ",") { prop := mounttypes.Propagation(o) if propagationModes[prop] { return prop } } return DefaultPropagationMode } // HasPropagation checks if there is a valid propagation mode present in // passed string. Returns true if a valid propagation mode specifier is // present, false otherwise. func HasPropagation(mode string) bool { for _, o := range strings.Split(mode, ",") { if propagationModes[mounttypes.Propagation(o)] { return true } } return false }