Optimisations...
darcs-hash:20050715161011-d1718-18e5676a1d2cd44acce031f06114355539801e69.gz
This commit is contained in:
parent
10eda9a824
commit
996d55c8a4
1 changed files with 17 additions and 19 deletions
|
@ -50,7 +50,7 @@ def DecToQuad(ip_dec) :
|
||||||
except :
|
except :
|
||||||
raise ValueError('IP Invalide')
|
raise ValueError('IP Invalide')
|
||||||
|
|
||||||
def param(net) :
|
def param(net, raw=False) :
|
||||||
"""
|
"""
|
||||||
net est un résau fourni sous la forme xxx.xxx.xxx.xxx/yy
|
net est un résau fourni sous la forme xxx.xxx.xxx.xxx/yy
|
||||||
si donnée valide retourne un dictionnaire :
|
si donnée valide retourne un dictionnaire :
|
||||||
|
@ -58,6 +58,9 @@ def param(net) :
|
||||||
'netmask' : yyy.yyy.yyy.yyy ,
|
'netmask' : yyy.yyy.yyy.yyy ,
|
||||||
'broadcast' : zzz.zzz.zzz.zzz }
|
'broadcast' : zzz.zzz.zzz.zzz }
|
||||||
sinon retourne {}
|
sinon retourne {}
|
||||||
|
|
||||||
|
Si raw = False, alors, on ne convertit pas les résultats sous forme pointée.
|
||||||
|
Ils restent sous forme d'un entier.
|
||||||
"""
|
"""
|
||||||
reseau = {}
|
reseau = {}
|
||||||
ip, mask = net.split('/')
|
ip, mask = net.split('/')
|
||||||
|
@ -70,21 +73,15 @@ def param(net) :
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
# Calcul du netmask
|
# Calcul du netmask
|
||||||
dec_netmask=0
|
non_dec_netmask = (1L<<(32-mask)) - 1
|
||||||
non_dec_netmask=0 # On calcule aussi le complémentaire
|
dec_netmask = (1L<<32) - 1 - non_dec_netmask
|
||||||
for i in range(0,32) :
|
|
||||||
if i < mask :
|
|
||||||
dec_netmask += 2**(31-i)
|
|
||||||
else :
|
|
||||||
non_dec_netmask += 2**(31-i)
|
|
||||||
|
|
||||||
reseau['netmask'] = DecToQuad(dec_netmask)
|
reseau = { 'netmask' : dec_netmask,
|
||||||
|
'network' : dec_ip & dec_netmask,
|
||||||
# Calcul du network
|
'broadcast' : dec_ip | non_dec_netmask }
|
||||||
reseau['network'] = DecToQuad( dec_ip & dec_netmask )
|
if not raw:
|
||||||
|
for i in reseau.keys():
|
||||||
# Calcul du broadcast
|
reseau[i] = DecToQuad(reseau[i])
|
||||||
reseau['broadcast'] = DecToQuad( dec_ip | non_dec_netmask )
|
|
||||||
return reseau
|
return reseau
|
||||||
|
|
||||||
def AddrInNet(ip,net) :
|
def AddrInNet(ip,net) :
|
||||||
|
@ -98,11 +95,12 @@ def AddrInNet(ip,net) :
|
||||||
if type(net)==str : net = [ net ]
|
if type(net)==str : net = [ net ]
|
||||||
|
|
||||||
r = False
|
r = False
|
||||||
|
ip = QuadToDec(ip)
|
||||||
for ne in net :
|
for ne in net :
|
||||||
n = param(ne)
|
n = param(ne, raw=True)
|
||||||
if ip == n['broadcast'] or ip == n['network'] :
|
if ip == n['broadcast'] or ip == n['network'] :
|
||||||
return False
|
return False
|
||||||
r = r or QuadToDec(n['netmask']) & QuadToDec(ip) == QuadToDec(n['network'])
|
r = r or n['netmask'] & ip == n['network']
|
||||||
|
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue