@@ -199,8 +199,19 @@ func (driver *driver) createEndpoint(w http.ResponseWriter, r *http.Request) {
199199 ip := create .Interface .Address
200200 Log .Infof ("Got IP from IPAM %s" , ip )
201201
202+ local := vethPair (endID [:5 ])
203+ if err := netlink .LinkAdd (local ); err != nil {
204+ Log .Error (err )
205+ errorResponsef (w , "could not create veth pair" )
206+ return
207+ }
208+ link , _ := netlink .LinkByName (local .PeerName )
209+ mac := link .Attrs ().HardwareAddr .String ()
210+
202211 resp := & api.CreateEndpointResponse {
203- Interface : & api.EndpointInterface {},
212+ Interface : & api.EndpointInterface {
213+ MacAddress : mac ,
214+ },
204215 }
205216
206217 objectResponse (w , resp )
@@ -215,6 +226,12 @@ func (driver *driver) deleteEndpoint(w http.ResponseWriter, r *http.Request) {
215226 return
216227 }
217228 Log .Debugf ("Delete endpoint request: %+v" , & delete )
229+
230+ local := vethPair (delete .EndpointID [:5 ])
231+ if err := netlink .LinkDel (local ); err != nil {
232+ Log .Warningf ("unable to delete veth on leave: %s" , err )
233+ }
234+
218235 emptyResponse (w )
219236 Log .Infof ("Delete endpoint %s" , delete .EndpointID )
220237}
@@ -247,52 +264,36 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) {
247264 domainid = default_vd
248265 }
249266 gatewayIP := FindNetworkGateway (domainid , netID )
250- // create and attach local name to the bridge
267+
251268 local := vethPair (endID [:5 ])
252- if err := netlink .LinkAdd (local ); err != nil {
253- Log .Error (err )
254- errorResponsef (w , "could not create veth pair" )
255- return
256- }
257269
258270 if_local_name := "tap" + endID [:5 ]
259271
260- //getting mac address of tap...
261- cmdStr0 := "ifconfig " + local .PeerName + " | awk '/HWaddr/ {print $NF}'"
262- Log .Infof ("mac address cmd: %s" , cmdStr0 )
263- cmd0 := exec .Command ("/bin/sh" , "-c" , cmdStr0 )
264- var out0 bytes.Buffer
265- cmd0 .Stdout = & out0
266- err0 := cmd0 .Run ()
267- if err0 != nil {
268- Log .Error ("Error thrown: " , err0 )
269- }
270- mac := out0 .String ()
271- Log .Infof ("output of cmd: %s\n " , mac )
272+ link , _ := netlink .LinkByName (local .PeerName )
273+ mac := link .Attrs ().HardwareAddr .String ()
274+ Log .Infof ("mac address: %s\n " , mac )
272275
273276 //first command {adding port on plumgrid}
274- cmdStr1 := "sudo /opt/pg/bin/ifc_ctl gateway add_port " + if_local_name
275- Log .Infof ("second cmd: %s" , cmdStr1 )
276- cmd1 := exec .Command ("/bin/sh" , "-c" , cmdStr1 )
277- var out1 bytes.Buffer
278- cmd1 .Stdout = & out1
279- err1 := cmd1 .Run ()
280- if err1 != nil {
281- Log .Error ("Error thrown: " , err1 )
277+ cmdStr := "sudo /opt/pg/bin/ifc_ctl gateway add_port " + if_local_name
278+ Log .Infof ("addport cmd: %s" , cmdStr )
279+ cmd := exec .Command ("/bin/sh" , "-c" , cmdStr )
280+ var addport bytes.Buffer
281+ cmd .Stdout = & addport
282+ if err := cmd .Run (); err != nil {
283+ Log .Error ("Error thrown: " , err )
282284 }
283- Log .Infof ("output of cmd : %+v\n " , out1 .String ())
285+ Log .Infof ("output: %+v\n " , addport .String ())
284286
285287 //second command {up the port on plumgrid}
286- cmdStr2 := "sudo /opt/pg/bin/ifc_ctl gateway ifup " + if_local_name + " access_container cont_" + endID [:2 ] + " " + mac [:17 ] + " pgtag2=" + bridgeID + " pgtag1=" + domainid
287- Log .Infof ("third cmd: %s" , cmdStr2 )
288- cmd2 := exec .Command ("/bin/sh" , "-c" , cmdStr2 )
289- var out2 bytes.Buffer
290- cmd2 .Stdout = & out2
291- err2 := cmd2 .Run ()
292- if err2 != nil {
293- Log .Error ("Error thrown: " , err2 )
288+ cmdStr = "sudo /opt/pg/bin/ifc_ctl gateway ifup " + if_local_name + " access_container cont_" + endID [:8 ] + " " + mac + " pgtag2=" + bridgeID + " pgtag1=" + domainid
289+ Log .Infof ("ifup cmd: %s" , cmdStr )
290+ cmd = exec .Command ("/bin/sh" , "-c" , cmdStr )
291+ var ifup bytes.Buffer
292+ cmd .Stdout = & ifup
293+ if err := cmd .Run (); err != nil {
294+ Log .Error ("Error thrown: " , err )
294295 }
295- Log .Infof ("output of cmd : %+v\n " , out2 .String ())
296+ Log .Infof ("output: %+v\n " , ifup .String ())
296297
297298 if netlink .LinkSetUp (local ) != nil {
298299 errorResponsef (w , `unable to bring veth up` )
@@ -309,7 +310,7 @@ func (driver *driver) joinEndpoint(w http.ResponseWriter, r *http.Request) {
309310 Gateway : gatewayIP ,
310311 }
311312
312- AddMetaconfig (domainid , bridgeID , j .SandboxKey [22 :], endID , mac [: 17 ] )
313+ AddMetaconfig (domainid , bridgeID , j .SandboxKey [22 :], endID , mac )
313314
314315 objectResponse (w , res )
315316 Log .Infof ("Join endpoint %s:%s to %s" , j .NetworkID , j .EndpointID , j .SandboxKey )
@@ -329,33 +330,26 @@ func (driver *driver) leaveEndpoint(w http.ResponseWriter, r *http.Request) {
329330 if_local_name := "tap" + l .EndpointID [:5 ]
330331
331332 //first command {adding port on plumgrid}
332- cmdStr1 := "sudo /opt/pg/bin/ifc_ctl gateway ifdown " + if_local_name
333- Log .Infof ("second cmd: %s" , cmdStr1 )
334- cmd1 := exec .Command ("/bin/sh" , "-c" , cmdStr1 )
335- var out1 bytes.Buffer
336- cmd1 .Stdout = & out1
337- err1 := cmd1 .Run ()
338- if err1 != nil {
339- Log .Error ("Error thrown: " , err1 )
333+ cmdStr := "sudo /opt/pg/bin/ifc_ctl gateway ifdown " + if_local_name
334+ Log .Infof ("ifdown cmd: %s" , cmdStr )
335+ cmd := exec .Command ("/bin/sh" , "-c" , cmdStr )
336+ var ifdown bytes.Buffer
337+ cmd .Stdout = & ifdown
338+ if err := cmd .Run (); err != nil {
339+ Log .Error ("Error thrown: " , err )
340340 }
341- Log .Infof ("output of cmd : %+v\n " , out1 .String ())
341+ Log .Infof ("output: %+v\n " , ifdown .String ())
342342
343343 //second command {up the port on plumgrid}
344- cmdStr2 := "sudo /opt/pg/bin/ifc_ctl gateway del_port " + if_local_name
345- Log .Infof ("third cmd: %s" , cmdStr2 )
346- cmd2 := exec .Command ("/bin/sh" , "-c" , cmdStr2 )
347- var out2 bytes.Buffer
348- cmd2 .Stdout = & out2
349- err2 := cmd2 .Run ()
350- if err2 != nil {
351- Log .Error ("Error thrown: " , err2 )
352- }
353- Log .Infof ("output of cmd: %+v\n " , out2 .String ())
354-
355- local := vethPair (l .EndpointID [:5 ])
356- if err := netlink .LinkDel (local ); err != nil {
357- Log .Warningf ("unable to delete veth on leave: %s" , err )
344+ cmdStr = "sudo /opt/pg/bin/ifc_ctl gateway del_port " + if_local_name
345+ Log .Infof ("delport cmd: %s" , cmdStr )
346+ cmd = exec .Command ("/bin/sh" , "-c" , cmdStr )
347+ var delport bytes.Buffer
348+ cmd .Stdout = & delport
349+ if err := cmd .Run (); err != nil {
350+ Log .Error ("Error thrown: " , err )
358351 }
352+ Log .Infof ("output: %+v\n " , delport .String ())
359353
360354 RemoveMetaconfig (domainid , bridgeID , l .EndpointID )
361355
0 commit comments