@@ -111,31 +111,33 @@ func createNamespace(name string) (*os.File, error) {
111111 // unshare(CLONE_NEWNET) = 0
112112 // mount("/proc/self/ns/net", "/var/run/netns/ns0", 0x56177d0e29a5, MS_BIND, NULL) = 0
113113 log .Printf ("createNamespace" )
114- f , err := unshare ()
114+ origF , err := unshare ()
115115 if err != nil {
116116 return nil , err
117117 }
118118
119119 if err := mountNamespaceDir (); err != nil {
120- closeFile (f )
120+ closeFile (origF )
121121 return nil , err
122122 }
123123
124124 nsPath := filepath .Join (nsDir , name )
125- f , err = os .Create (nsPath )
125+ f , err : = os .Create (nsPath )
126126 if err != nil {
127+ closeFile (origF )
127128 return nil , err
128129 }
129130 if f .Close (); err != nil {
131+ closeFile (origF )
130132 return nil , err
131133 }
132134
133135 err = syscall .Mount ("/proc/self/ns/net" , nsPath , "" , syscall .MS_BIND , "" )
134136 if err != nil {
135- closeFile (f )
137+ closeFile (origF )
136138 return nil , err
137139 }
138- return f , nil
140+ return origF , nil
139141}
140142
141143// Sets namespace to /var/run/netns/${name}, creating
@@ -192,7 +194,9 @@ func main() {
192194 flag .Usage = func () {
193195 fmt .Fprintf (
194196 flag .CommandLine .Output (),
195- "Usage: %s NAMESPACE COMMAND ARG...\n " ,
197+ "Usage: %s NAMESPACE COMMAND ARG...\n " +
198+ "Runs COMMAND in the given named network NAMESPACE,\n " +
199+ "creating the namespace if it doesn't already exist.\n " ,
196200 os .Args [0 ])
197201 flag .PrintDefaults ()
198202 }
0 commit comments