| // +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 |
| } |