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