<automatique> pour les macs et u'' si pas d'ipv6

This commit is contained in:
Daniel STAN 2014-03-02 00:28:15 +01:00
parent 8f9c6c1d17
commit 99d864b81c
2 changed files with 10 additions and 2 deletions

View file

@ -134,7 +134,10 @@ def ip6_of_mac(mac, rid):
# En théorie, format_mac est inutile, car on ne devrait avoir # En théorie, format_mac est inutile, car on ne devrait avoir
# que des mac formatées. # que des mac formatées.
mac = format_mac(mac).replace(u':', u'') mac = format_mac(mac)
if mac == u'<automatique>':
return u''
mac = mac.replace(u':', u'')
# hex retourne un str, donc on concatène, suivant la RFC # hex retourne un str, donc on concatène, suivant la RFC
euid64v6 = hex(int(mac[:2], 16)^0b00000010) + mac[2:6] + u'fffe' + mac[6:12] euid64v6 = hex(int(mac[:2], 16)^0b00000010) + mac[2:6] + u'fffe' + mac[6:12]
@ -183,6 +186,9 @@ def format_mac(mac):
Transforme une adresse pour obtenir la forme xx:xx:xx:xx:xx:xx Transforme une adresse pour obtenir la forme xx:xx:xx:xx:xx:xx
Retourne la mac formatée. Retourne la mac formatée.
""" """
mac = unicode(mac).lower()
if mac == u'<automatique>':
return mac
mac = netaddr.EUI(mac) mac = netaddr.EUI(mac)
if not mac: if not mac:
raise ValueError(u"MAC nulle interdite\nIl doit être possible de modifier l'adresse de la carte.") raise ValueError(u"MAC nulle interdite\nIl doit être possible de modifier l'adresse de la carte.")

View file

@ -309,7 +309,9 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
# La machine peut-elle avoir une ipv4 ? # La machine peut-elle avoir une ipv4 ?
if 'v6' not in realm: if 'v6' not in realm:
uldif['ipHostNumber'] = [ unicode(crans_utils.ip4_of_rid(int(rid[0]))) ] uldif['ipHostNumber'] = [ unicode(crans_utils.ip4_of_rid(int(rid[0]))) ]
uldif['ip6HostNumber'] = [ unicode(crans_utils.ip6_of_mac(uldif['macAddress'][0], int(rid[0]))) ]
ip6 = unicode(crans_utils.ip6_of_mac(uldif['macAddress'][0], int(rid[0])))
uldif['ip6HostNumber'] = [ ip6 ] if ip6 else []
# Mid # Mid
uldif['mid'] = [ unicode(self._find_id('mid', lockId=lockId)) ] uldif['mid'] = [ unicode(self._find_id('mid', lockId=lockId)) ]