github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/volume/volume_propagation_linux.go (about) 1 // +build linux 2 3 package volume 4 5 import ( 6 "strings" 7 ) 8 9 // DefaultPropagationMode defines what propagation mode should be used by 10 // default if user has not specified one explicitly. 11 const DefaultPropagationMode string = "rprivate" 12 13 // propagation modes 14 var propagationModes = map[string]bool{ 15 "private": true, 16 "rprivate": true, 17 "slave": true, 18 "rslave": true, 19 "shared": true, 20 "rshared": true, 21 } 22 23 // GetPropagation extracts and returns the mount propagation mode. If there 24 // are no specifications, then by default it is "private". 25 func GetPropagation(mode string) string { 26 for _, o := range strings.Split(mode, ",") { 27 if propagationModes[o] { 28 return o 29 } 30 } 31 return DefaultPropagationMode 32 } 33 34 // HasPropagation checks if there is a valid propagation mode present in 35 // passed string. Returns true if a valid propagation mode specifier is 36 // present, false otherwise. 37 func HasPropagation(mode string) bool { 38 for _, o := range strings.Split(mode, ",") { 39 if propagationModes[o] { 40 return true 41 } 42 } 43 return false 44 }