Commit 28e57409 authored by salles's avatar salles

On passe le quantum 1500 pour tout le monde et donc le dbit garanti est

dfini  1500 pour tous en permanence.
Il est donc dsormais immdiatement possible d'ajouter ou supprimer une
classe bittorrent  un adhrent

darcs-hash:20060507194519-72cb0-c97a37acdf4b942079400a89cc302ebc82128b54.gz
parent 018f2d59
......@@ -536,10 +536,6 @@ class firewall_komaz(firewall_crans) :
redirect_chain('mangle', prev_chain, next_chain, subnet)
print OK
adherents = db.search('paiement=ok')['adherent']
# On calcule le dbit garanti pour un adhrent
debit_adh = p2p.debit_max/(len(adherents)+1)
# Cration des classes et qdisc
for interface in [self.eth_ext, self.eth_int] :
# On vide les classes et qdisc
......@@ -549,11 +545,12 @@ class firewall_komaz(firewall_crans) :
warn += str(c) + '\n'
# On construit les classes et qdisc de base
# La partie principale qui dfinit le comportement par dfaut
tc("qdisc add dev %s root handle 1: htb" % interface)
tc("qdisc add dev %s root handle 1: htb r2q 1" % interface)
tc("class add dev %s parent 1: classid 1:1 htb rate %s ceil %s" % (interface, p2p.debit_max, p2p.debit_max))
tc("class add dev %s parent 1:1 classid 1:9998 htb rate %s ceil %s" % (interface, debit_adh, debit_adh))
tc("class add dev %s parent 1:1 classid 1:9998 htb rate %s ceil %s" % (interface, p2p.debit_adh, p2p.debit_adh))
tc("qdisc add dev %s parent 1:9998 handle 9999: sfq perturb 10" % interface)
adherents = db.search('paiement=ok')['adherent']
self.anim = anim('\tGnration des classes de filtrage p2p', len(adherents))
# On construit ensuite les classes et qdisc pour chaque adhrent
for adherent in adherents :
......@@ -561,7 +558,7 @@ class firewall_komaz(firewall_crans) :
class_id = int(adherent.id())+1 # On ne peut pas reprendre le numro 1
qdisc_id = class_id+5000 # Il nous faut un n infrieur 9998 unique
for interface in [self.eth_ext, self.eth_int] :
tc("class add dev %s parent 1:1 classid 1:%d htb rate %s ceil %s" % (interface, class_id, debit_adh, p2p.debit_max))
tc("class add dev %s parent 1:1 classid 1:%d htb rate %s ceil %s" % (interface, class_id, p2p.debit_adh, p2p.debit_max))
tc("qdisc add dev %s parent 1:%d handle %d: sfq perturb 10" % (interface, class_id, qdisc_id))
# Classification des adhrents dans leur classe respective
......@@ -644,7 +641,8 @@ class firewall_komaz(firewall_crans) :
recherche = db.search('ip=%s'% ip)['machine']
if not recherche :
# Il faut supprimer cette entre
option = '-D'
iptables_option = '-D'
tc_option = 'del'
subnet = IpSubnet(ip, conf_fw.mask[len(conf_fw.mask)-1])
regles = iptables("-t mangle -L SUBNET-%s -n | grep %s" % (subnet, ip)).split('\n')
# On slectionne la premire qui doit contenir ce que l'on veut
......@@ -653,7 +651,8 @@ class firewall_komaz(firewall_crans) :
class_id = mark.split(':')[1]
elif len(recherche) == 1 :
# Il faut ajouter cette entre
option = '-A'
iptables_option = '-A'
tc_option = 'add'
machine = recherche[0]
adherent = machine.proprietaire()
ip = machine.ip()
......@@ -661,9 +660,13 @@ class firewall_komaz(firewall_crans) :
class_id = int(adherent.id())+1 # On ne peut pas reprendre le numro 1
else :
warn += "Plusieurs machines avec l'IP %s\n" % ip
iptables("-t mangle %s SUBNET-%s -o crans -d %s -m mark " % (option, subnet, ip) +
qdisc_id = class_id+5000 # Il nous faut un n infrieur 9998 unique
for interface in [self.eth_ext, self.eth_int] :
tc("class add %s %s parent 1:1 classid 1:%d htb rate %s ceil %s" % (tc_option, interface, class_id, p2p.debit_adh, p2p.debit_max))
tc("qdisc add %s %s parent 1:%d handle %d: sfq perturb 10" % (tc_option, interface, class_id, qdisc_id))
iptables("-t mangle %s SUBNET-%s -o crans -d %s -m mark " % (iptables_option, subnet, ip) +
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
iptables("-t mangle %s SUBNET-%s -o ens -s %s -m mark " % (option, subnet, ip) +
iptables("-t mangle %s SUBNET-%s -o ens -s %s -m mark " % (iptables_option, subnet, ip) +
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
except IptablesError, c:
warn += str(c) + '\n'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment