@@ -111,31 +111,33 @@ func createNamespace(name string) (*os.File, error) {
111
111
// unshare(CLONE_NEWNET) = 0
112
112
// mount("/proc/self/ns/net", "/var/run/netns/ns0", 0x56177d0e29a5, MS_BIND, NULL) = 0
113
113
log .Printf ("createNamespace" )
114
- f , err := unshare ()
114
+ origF , err := unshare ()
115
115
if err != nil {
116
116
return nil , err
117
117
}
118
118
119
119
if err := mountNamespaceDir (); err != nil {
120
- closeFile (f )
120
+ closeFile (origF )
121
121
return nil , err
122
122
}
123
123
124
124
nsPath := filepath .Join (nsDir , name )
125
- f , err = os .Create (nsPath )
125
+ f , err : = os .Create (nsPath )
126
126
if err != nil {
127
+ closeFile (origF )
127
128
return nil , err
128
129
}
129
130
if f .Close (); err != nil {
131
+ closeFile (origF )
130
132
return nil , err
131
133
}
132
134
133
135
err = syscall .Mount ("/proc/self/ns/net" , nsPath , "" , syscall .MS_BIND , "" )
134
136
if err != nil {
135
- closeFile (f )
137
+ closeFile (origF )
136
138
return nil , err
137
139
}
138
- return f , nil
140
+ return origF , nil
139
141
}
140
142
141
143
// Sets namespace to /var/run/netns/${name}, creating
@@ -192,7 +194,9 @@ func main() {
192
194
flag .Usage = func () {
193
195
fmt .Fprintf (
194
196
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 " ,
196
200
os .Args [0 ])
197
201
flag .PrintDefaults ()
198
202
}
0 commit comments