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 set_ip(self, ip, flush=False):
     cmd = []
     if flush:
         cmd.append("ip addr flush dev " + self.name)
     cmd.append("ip addr add " + str(ip) + " dev " + self.name)
     run_in_netns(cmd, self.netns)
     self.ip = ip
     self.mask = ipv4.mask_from_suffix(ip.split('/')[1])
Beispiel #3
0
 def redirect_to(self, ifb):
     cmds = [
         "tc qdisc add dev " + self.name + " handle ffff: ingress",
         "tc filter add dev " + self.name +
         """ parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev """
         + ifb.name
     ]
     #log(str(cmds), logging.CRITICAL)
     #raw_input("pls check the redirect commands.")
     run_in_netns(cmds)
Beispiel #4
0
    def normal_nat(self, wan_ifids, lan_ifid):
        lan_ip_prefix = ipaddr.ipmask2prefix(self.if_lst[lan_ifid].ip,
                                             self.if_lst[lan_ifid].mask)
        for wan_ifid in wan_ifids:
            wan_if_name = self.if_lst[wan_ifid].name
            wan_if_ip = self.if_lst[wan_ifid].ip
            cmd = """iptables -t nat -A POSTROUTING -s %s 
				-o %s -j SNAT --to %s""" % (lan_ip_prefix, wan_if_name, wan_if_ip)
            cmd_lst.append(cmd)
        log("final cmd lst for normal nat:" + str(cmd_lst))
        run_in_netns(cmd_lst, self.name)
Beispiel #5
0
    def shape_traffic(self, node_type, params):
        cmds = traffic_cmd_compile(params)
        # determine linux system if name to apply control to
        if_name = ""
        netns = None
        if node_type == ntype.PROUTER:
            if_name = self.link_if.get_in_if().name
            netns = self.link_if.get_in_if().netns
        elif node_type == ntype.SWITCH:
            if_name = self.link_if.get_out_if().name

        for i in range(0, len(cmds)):
            cmds[i] = (cmds[i].format(if_name))
        #log(str(cmds))
        #raw_input("before shaping the traffic")
        run_in_netns(cmds, netns)
Beispiel #6
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!")
     cmds = traffic_cmd_compile(params, dist_db=dist_db)
     # determine linux system if name to apply control to
     if_name = self.link_if.peer[0].name
     netns = self.link_if.peer[0].netns
     for i in range(0, len(cmds)):
         cmds[i] = (cmds[i].format(if_name))
     #log(str(cmds))
     #raw_input("before shaping the traffic")
     run_in_netns(cmds, netns)
Beispiel #7
0
 def enable_ip_forward(self):
     cmd = ["echo 1 > /proc/sys/net/ipv4/ip_forward"]
     run_in_netns(cmd, self.name)
Beispiel #8
0
 def close_out_conn(self):
     cmd = ["iptables -D OUTPUT -j ACCEPT"]
     run_in_netns(cmd, self.name)
Beispiel #9
0
 def open_out_conn(self):
     cmd = ["iptables -A OUTPUT -j ACCEPT"]
     run_in_netns(cmd, self.name)
Beispiel #10
0
 def delete(self):
     cmd = ["ip link del " + self.name]
     run_in_netns(cmd, self.netns)
Beispiel #11
0
 def start(self):
     cmd = ["ip link set " + self.name + " up"]
     run_in_netns(cmd, self.netns)
Beispiel #12
0
 def stop(self):
     cmd = ["ip link set " + self.name + " down"]
     run_in_netns(cmd, self.netns)
Beispiel #13
0
 def allow_established_conn(self):
     cmd = [("iptables -A INPUT -i " + self.name +
             " -m state --state ESTABLISHED,RELATED -j ACCEPT")]
     run_in_netns(cmd, self.netns)
Beispiel #14
0
 def accept_from_if(self):
     cmd = ["iptables -A INPUT -i " + self.name + " -j ACCEPT"]
     run_in_netns(cmd, self.netns)
Beispiel #15
0
 def unmasq_nat(self):
     cmd = [
         "iptables -t nat -D POSTROUTING -o " + self.name + " -j MASQUERADE"
     ]
     run_in_netns(cmd, self.netns)
Beispiel #16
0
 def connect2br(self, br):
     cmd = ["ovs-vsctl add-port " + br + " " + self.name]
     run_in_netns(cmd)