X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Fplanetlab%2Fscripts%2Fpl-vif-create.py;h=6b7227873ca748555ac1ef8084a4b520425678fc;hb=6285ca51026efb69642eea9dfc7c480e722d84a9;hp=998ed53bdb3e265859e607ea512788b683d10bad;hpb=dadecc92b7cd8fb8732b53f6fbbc7bd1519c4ff6;p=nepi.git diff --git a/src/nepi/resources/planetlab/scripts/pl-vif-create.py b/src/nepi/resources/planetlab/scripts/pl-vif-create.py index 998ed53b..6b722787 100644 --- a/src/nepi/resources/planetlab/scripts/pl-vif-create.py +++ b/src/nepi/resources/planetlab/scripts/pl-vif-create.py @@ -3,9 +3,8 @@ # Copyright (C) 2013 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,14 +16,14 @@ # # Author: Alina Quereilhac +from __future__ import print_function + import base64 import errno import passfd import socket import vsys -from optparse import OptionParser, SUPPRESS_HELP - -# TODO: GRE OPTION!! CONFIGURE THE VIF-UP IN GRE MODE!! +from optparse import OptionParser STOP_MSG = "STOP" PASSFD_MSG = "PASSFD" @@ -41,7 +40,7 @@ def recv_msg(conn): while '\n' not in chunk: try: chunk = conn.recv(1024) - except (OSError, socket.error), e: + except (OSError, socket.error) as e: if e[0] != errno.EINTR: raise # Ignore eintr errors @@ -75,8 +74,11 @@ def stop_action(): return "STOP-ACK" def passfd_action(fd, args): + """ Sends the file descriptor associated to the TAP device + to another process through a unix socket. + """ address = args.pop(0) - print address + print(address) sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) sock.connect(address) passfd.sendfd(sock, fd, '0') @@ -84,7 +86,8 @@ def passfd_action(fd, args): def get_options(): usage = ("usage: %prog -t -a -n " - "-s -p -f -S ") + "-s -p -q -f " + "-S ") parser = OptionParser(usage = usage) @@ -109,13 +112,18 @@ def get_options(): help = "Peer end point for the interface ", default = None, type="str") - parser.add_option("-f", "--if-name-file", dest="if_name_file", - help = "File to store the interface name assigned by the OS", - default = "if_name", type="str") + parser.add_option("-q", "--txqueuelen", dest="txqueuelen", + help = "Size of transmision queue. Defaults to 0.", + default = 0, + type="int") + + parser.add_option("-f", "--vif-name-file", dest="vif_name_file", + help = "File to store the virtual interface name assigned by the OS", + default = "vif_name", type="str") parser.add_option("-S", "--socket-name", dest="socket_name", help = "Name for the unix socket used to interact with this process", - default = "tap.sock", type="str") + type="str") (options, args) = parser.parse_args() @@ -123,21 +131,23 @@ def get_options(): if options.vif_type and options.vif_type == "IFF_TUN": vif_type = vsys.IFF_TUN - return (vif_type, options.ip4_address, options.net_prefix, options.snat, - options.pointopoint, options.if_name_file, options.socket_name) + return (vif_type, options.ip4_address, options.net_prefix, + options.snat, options.pointopoint, options.txqueuelen, + options.vif_name_file, options.socket_name) if __name__ == '__main__': - (vif_type, ip4_address, net_prefix, snat, pointopoint, - if_name_file, socket_name) = get_options() + (vif_type, ip4_address, net_prefix, snat, pointopoint, + txqueuelen, vif_name_file, socket_name) = get_options() - (fd, if_name) = vsys.fd_tuntap(vif_type) - vsys.vif_up(if_name, ip4_address, net_prefix, snat, pointopoint) - - # Saving interface name to 'if_name_file - f = open(if_name_file, 'w') - f.write(if_name) - f.close() + (fd, vif_name) = vsys.fd_tuntap(vif_type) + + vsys.vif_up(vif_name, ip4_address, net_prefix, snat = snat, + pointopoint = pointopoint, txqueuelen = txqueuelen) + + # Saving interface name to vif_name_file + with open(vif_name_file, 'w') as f: + f.write(vif_name) # create unix socket to receive instructions sock = create_socket(socket_name) @@ -153,7 +163,7 @@ if __name__ == '__main__': while not stop: try: (msg, args) = recv_msg(conn) - except socket.timeout, e: + except socket.timeout as e: # Ingore time-out continue