WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH 3 of 8] Tunnelling: creation and destruction of tunnels

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 3 of 8] Tunnelling: creation and destruction of tunnels
From: Rob Hoes <rob.hoes@xxxxxxxxxx>
Date: Fri, 9 Jul 2010 15:59:49 +0100
Delivery-date: Fri, 09 Jul 2010 08:05:00 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1278687586@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1278687586@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.4.3
# HG changeset patch
# User Rob Hoes <rob.hoes@xxxxxxxxxx>
# Date 1278671988 -3600
# Node ID a7baa421f3d5efc6198dab2849359a4cecf7efd0
# Parent  2c476bb5574a9e4c53960dd759d03578c20a31ea
Tunnelling: creation and destruction of tunnels

Signed-off-by: Rob Hoes <rob.hoes@xxxxxxxxxx>

diff -r 2c476bb5574a -r a7baa421f3d5 ocaml/xapi/xapi_tunnel.ml
--- a/ocaml/xapi/xapi_tunnel.ml
+++ b/ocaml/xapi/xapi_tunnel.ml
@@ -14,11 +14,36 @@
 module D = Debug.Debugger(struct let name="xapi" end) 
 open D
 
+let choose_tunnel_device_name ~__context ~host = 
+       let pifs = List.filter (fun self -> Db.PIF.get_host ~__context ~self = 
host) (Db.PIF.get_all ~__context) in
+       let devices = List.map (fun self -> Db.PIF.get_device ~__context ~self) 
pifs in
+       let rec choose n = 
+               let name = Printf.sprintf "tunnel%d" n in
+               if List.mem name devices
+               then choose (n + 1)
+               else name in
+       choose 0
+
 let create ~__context ~transport_PIF ~network =
-       debug "CREATE TUNNEL";
-       Ref.make ()
+       let tunnel = Ref.make () in
+       let access_PIF = Ref.make () in
+       let host = Db.PIF.get_host ~__context ~self:transport_PIF in
+       let device = choose_tunnel_device_name ~__context ~host in
+       let device_name = device in
+       let mAC = Xapi_vif_helpers.gen_mac (0, Uuid.to_string (Uuid.make_uuid 
())) in
+       Db.PIF.create ~__context ~ref:access_PIF ~uuid:(Uuid.to_string 
(Uuid.make_uuid ()))
+               ~device ~device_name ~network ~host ~mAC ~mTU:(-1L) ~vLAN:(-1L) 
~metrics:Ref.null
+               ~physical:false ~currently_attached:false 
+               ~ip_configuration_mode:`None ~iP:"" ~netmask:"" ~gateway:"" 
~dNS:"" ~bond_slave_of:Ref.null 
+               ~vLAN_master_of:Ref.null ~management:false ~other_config:[] 
~disallow_unplug:false;
+       Db.Tunnel.create ~__context ~ref:tunnel ~uuid:(Uuid.to_string 
(Uuid.make_uuid ()))
+               ~access_PIF ~transport_PIF ~status:["active", "false"] 
~other_config:[];
+       Xapi_pif.plug ~__context ~self:access_PIF;
+       tunnel
        
 let destroy ~__context ~self =
-       debug "DESTROY TUNNEL";
-       ()
+       let pif = Db.Tunnel.get_access_PIF ~__context ~self in
+       Xapi_pif.unplug ~__context ~self:pif;
+       Db.PIF.destroy ~__context ~self:pif;
+       Db.Tunnel.destroy ~__context ~self
 
diff -r 2c476bb5574a -r a7baa421f3d5 ocaml/xapi/xapi_vif_helpers.mli
--- a/ocaml/xapi/xapi_vif_helpers.mli
+++ b/ocaml/xapi/xapi_vif_helpers.mli
@@ -64,4 +64,7 @@
   __context:Context.t ->
   vm:[ `VM ] Ref.t ->
   preserve_mac_address:bool -> [ `VIF ] Ref.t -> API.ref_VIF
-  
+
+(** Generate a MAC address *)  
+val gen_mac : int * string -> string
+
 ocaml/xapi/xapi_tunnel.ml       |  33 +++++++++++++++++++++++++++++----
 ocaml/xapi/xapi_vif_helpers.mli |   5 ++++-
 2 files changed, 33 insertions(+), 5 deletions(-)


Attachment: xen-api.hg-3.patch
Description: Text Data

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api