Beispiel #1
0
 def start_dhcp_on(net_if, range_low, range_high, mask, netns=None):
     cmd = [('dnsmasq --dhcp-range=' + range_low + ',' + range_high + ',' +
             mask + ' --interface ' + net_if)]
     if netns != None:
         run_in_netns(cmd, netns)
     else:
         info_exe(cmd)
Beispiel #2
0
 def append_if(self, rif_obj):
     in_if = rif_obj.get_in_if()
     cmd = "ip link set " + in_if.name + " netns " + self.name
     in_if.set_netns(self.name)
     self.if_lst.append(rif_obj)
     info_exe(cmd)
     return (len(self.if_lst) - 1)
Beispiel #3
0
    def shape_traffic(self, params=None, dist_db=None):
        if params != None:
            pass
        elif self.params != None:
            params = self.params
        else:
            log("no traffic params is set!")
        #log("shaping traffic for:"+str(self.link.name))
        cmds = traffic_cmd_compile(params, dist_db=dist_db)
        # determine linux system if name to apply control to
        if_name = ""
        if self.out:
            new_ifb = ifb.create_new()
            new_ifb.start()
            #raw_input("after starting ifb")
            self.link_if.redirect_to(new_ifb)
            if_name = new_ifb.name
            #raw_input("after redirecting to new ifb: "+if_name)
        else:
            if_name = self.link_if.name
            #raw_input("shaping in traffic with vif")

        for i in range(0, len(cmds)):
            cmds[i] = (cmds[i].format(if_name))
        #log(cmds)
        #raw_input("in if_link.shape_traffic(): ")
        info_exe(cmds)
Beispiel #4
0
 def __init__(self, uname, pwd, template_lst, dist_db=None, ifb_count=0):
     # ASSUME: we got sudo
     helper.info_exe('chmod +x ./bash/*')
     # a list of 'dev' instances
     self.node_list = []
     # a dict that stores <name, template_ref(vm_ref)> pairs
     self.template_dict = {}
     self.emp_ids = [0]
     self.session = xen_net.init_session(uname, pwd)
     self.init_templates(template_lst)
     self.switch_set = Set()
     self.dev_set = Set()
     self.router_set = Set()
     self.ssh = xen_net.init_shell('localhost', uname, pwd)
     self.controlled_link_set = Set()
     # init a dummy bridge
     #self.dummy=self.create_new_xbr('dummy', record=False)
     # TODO: here we need a change
     self.ifb_count = 0
     if ifb_count > 0:
         ifb.init(ifb_count)
         self.ifb_count = ifb_count
     pass
     # init distribution db
     self.dist_db = None
     if dist_db != None:
         self.init_dist_db(dist_db)
Beispiel #5
0
 def uninstall(self, session):
     for neigh in self.neighbors:
         link_if = self.neighbors[neigh]
         link_if.delete()
     if not self.default:
         session.xenapi.network.destroy(self.br)
         cmd = "ovs-vsctl del-br " + self.name
         info_exe(cmd)
     else:
         log("default XenSwitch " + self.name + " not being deleted!")
Beispiel #6
0
    def shutdown(self):
        cmd = "ip netns list | grep " + self.name
        output = helper.info_exe(cmd)

        if self.name in output:
            cmd = ("ip netns del " + self.name + " && " + "ovs-vsctl del-br " +
                   self.name)
            helper.info_exe(cmd)
            log("deletion cmd:" + str(cmd))
        else:
            log("router netns " + self.name + " is not started")
            return
Beispiel #7
0
    def shape_traffic(self, params=None):
        #log("shaping traffic for:"+str(self.link.name))
        cmds = traffic_cmd_compile(params)
        # determine linux system if name to apply control to
        if_name = ""
        if node_type == ntype.SWITCH:
            new_ifb = ifb.create_new()
            new_ifb.start()
            self.link_if.redirect_to(new_ifb)
            if_name = new_ifb.name
        elif node_type == ntype.DEV:
            if_name = self.link_if.name
        else:
            log("unsupported node type: " + str(node_type))

        for i in range(0, len(cmds)):
            cmds[i] = (cmds[i].format(if_name))
        info_exe(cmds)
Beispiel #8
0
 def check_tap(self):
     if self.vif_prefix == "tap":
         return True
     cmd = "ovs-vsctl list-ports " + self.br_name + " | grep tap" + self.get_name_suffix(
     )
     #log("check_tap in xvif: "+cmd)
     code = info_exe(cmd)
     if code == 1:
         return True
     else:
         return False
Beispiel #9
0
 def add_port(self, port):
     cmd = "ovs-vsctl add-port " + self.name + " " + port
     info_exe(cmd)
Beispiel #10
0
 def create_veth_pairs(peer1, peer2):
     cmd = "ip link add " + peer1 + " type veth peer name " + peer2
     output = info_exe(cmd)
     if type(output) is str:
         return linux_netif(peer1), linux_netif(peer2)
Beispiel #11
0
 def start(self):
     path = './bash/xrouter_start.sh'
     cmd = (path + " " + self.name + " " + self.external_if + " " +
            self.internal_if + " " + self.ipaddr)
     helper.info_exe(cmd)
Beispiel #12
0
 def clear():
     cmd = "modprobe -r ifb"
     info_exe(cmd)
Beispiel #13
0
 def setup(self, name):
     cmd = "ip netns add " + self.name
     info_exe(cmd)
Beispiel #14
0
 def add_if(self, rif_obj, index):
     in_if = rif_obj.get_in_if()
     cmd = "ip link set " + in_if.name + " netns " + self.name
     in_if.set_netns(self.name)
     self.if_lst[index] = rif_obj
     info_exe(cmd)
Beispiel #15
0
	def start_if(self, ifid, switch_name):
		if_lst=self.get_iflst()
		cmd="ovs-vsctl add-port "+switch_name+" "+if_lst[ifid].get_out_if().name
		info_exe(cmd)
Beispiel #16
0
 def delete(self):
     cmd = "ip netns del " + self.name
     output = info_exe(cmd)
Beispiel #17
0
 def init(total):
     cmds = "modprobe -r ifb; modprobe ifb numifbs=" + str(total)
     info_exe(cmds)
     ifb.ifb_total = total