Adding PlanetLabGRETunnel
[nepi.git] / src / nepi / resources / planetlab / scripts / pl-vif-up.py
index 609f2d1..d37a4ee 100644 (file)
@@ -22,12 +22,16 @@ import vsys
 from optparse import OptionParser
 
 def get_options():
-    usage = ("usage: %prog -N <vif-name> -t <vif-type> -a <ip4-address> "
-                    "-n <net-prefix> -s <snat> -p <pointopoint> -q <txqueuelen> "
+    usage = ("usage: %prog -u <slicename> -N <vif-name> -t <vif-type> -a <ip4-address> "
+                    "-n <net-prefix> -S <snat> -p <pointopoint> -q <txqueuelen> "
                     "-g <gre_key> -G <gre_remote> -f <vif-name-file> ")
  
     parser = OptionParser(usage = usage)
 
+    parser.add_option("-u", "--slicename", dest="slicename",
+        help = "The name of the PlanetLab slice ",
+        type="str")
+
     parser.add_option("-N", "--vif-name", dest="vif_name",
         help = "The name of the virtual interface, or a "
                 "unique numeric identifier to name the interface "
@@ -83,21 +87,20 @@ def get_options():
     if options.vif_type and options.vif_type == "IFF_TUN":
         vif_type = vsys.IFF_TUN
 
-    return (options.vif_name, vif_type, options.ip4_address, 
+    return (options.slicename, options.vif_name, vif_type, options.ip4_address, 
             options.net_prefix, options.snat, options.pointopoint, 
             options.txqueuelen, options.gre_key, options.gre_remote,
             options.vif_name_file)
 
 if __name__ == '__main__':
 
-    (vif_name, vif_type, ip4_address, net_prefix, snat, pointopoint,
+    (slicename, vif_name, vif_type, ip4_address, net_prefix, snat, pointopoint,
         txqueuelen, gre_key, gre_remote, vif_name_file) = get_options()
 
     if (gre_key):
         import pwd
         import getpass
 
-        slicename = getpass.getuser()
         sliceid = pwd.getpwnam(slicename).pw_uid
 
         if vif_type == vsys.IFF_TAP:
@@ -106,12 +109,22 @@ if __name__ == '__main__':
             vif_prefix = "tun"
 
         # if_name should be a unique numeric vif id
-        vif_name = "%s%s-%d" % (vif_prefix, sliceid, vif_name) 
+        vif_name = "%s%s-%s" % (vif_prefix, sliceid, vif_name) 
 
-    vsys.vif_up(vif_name, ip4_address, net_prefix, snat = snat, 
+    try:
+        vsys.vif_up(vif_name, ip4_address, net_prefix, snat = snat, 
             pointopoint = pointopoint, txqueuelen = txqueuelen, 
             gre_key = gre_key, gre_remote = gre_remote)
 
+    except RuntimeError as e:
+        import sys
+        import traceback
+        traceback.print_exc(file=sys.stderr)
+
+        # Ignore warnings
+        if e.message.find("WARNING:") < 0:
+            sys.exit(1)
+
     # Saving interface name to vif_name_file
     f = open(vif_name_file, 'w')
     f.write(vif_name)