On refuse la MAC si elle n'est pas d'un constructeur connu plutot que de

refuser celles ne commencant pas par 00.

darcs-hash:20050923213505-41617-664368838711143f2797c92dc99c5a058bd55d6b.gz
This commit is contained in:
pauget 2005-09-23 23:35:05 +02:00
parent 7419250d8d
commit 201f976b98
2 changed files with 7686 additions and 4 deletions

View file

@ -1862,12 +1862,29 @@ class machine(base_classes_crans) :
raise ValueError(u'Mac déja utilisée sur le réseau.',1)
# La MAC serait-elle une MAC à la con ?
if mac.lower() == "00:04:4b:80:80:03":
if mac == "00:04:4b:80:80:03":
raise ValueError(u"Il s'agit de l'unique adresse MAC achetée par nVidia pour ses cartes réseau. Il faut changer cette adresse.",2)
elif mac.lower()[0:11] == "44:45:53:54":
elif mac[0:11] == "44:45:53:54":
raise ValueError(u"Il s'agit de l'adresse MAC d'une interface PPP.", 2)
elif mac[0:2] != "00":
raise ValueError(u"L'adresse MAC correspond à un pont réseau, désactivez ce pont réseau (ou contactez une nounou si ce n'est pas un pont réseau).",2)
# Le test final
# Extraction des trois premiers chiffres de la mac en
# supprimant les zéros superflus pour coller au format
# de la base d'arpwatch
prefix=mac[:8].replace(':0',':') + '\t'
if prefix[0]=='0' : prefix=prefix[1:]
vendor = ''
try:
for line in open('/usr/scripts/gestion/ethercodes.dat').readlines() :
if line.find(prefix)==0 :
vendor = line.replace(prefix,'').strip()
break
except IOError:
# Le fichier existe pas, on sors
raise RuntimeError("Fichier de fabiquants de MAC non trouvé !")
if not vendor :
raise ValueError(u"Le constructeur correspondant à cette adresse MAC ne peut être trouvé.\nL'adresse MAC correspond peut-être à un pont réseau, désactivez ce pont réseau.\nContactez nounou si la MAC est bien celle d'une carte.",2)
# Lock de la mac
self.lock('macAddress',mac)