On rajoute des fonctions pour calculer des sous-rseaux l'aide d'ip ou de
rseau et de valeur de masques. darcs-hash:20060425123300-72cb0-f5eb5cbcc7cd1b08985de7819f4114a6c0446169.gz
This commit is contained in:
parent
5eace4fbfe
commit
cb9f32db38
1 changed files with 43 additions and 2 deletions
|
@ -79,8 +79,8 @@ def param(net, raw=False) :
|
|||
return {}
|
||||
|
||||
# Calcul du netmask
|
||||
non_dec_netmask = (1L<<(32-mask)) - 1
|
||||
dec_netmask = (1L<<32) - 1 - non_dec_netmask
|
||||
non_dec_netmask = netmask(mask, dec=False)
|
||||
dec_netmask = netmask(mask)
|
||||
|
||||
reseau = { 'netmask' : dec_netmask,
|
||||
'network' : dec_ip & dec_netmask,
|
||||
|
@ -131,4 +131,45 @@ if __name__ == '__main__' :
|
|||
import sys
|
||||
print param(sys.argv[1])
|
||||
|
||||
def netmask(mask, dec=True) :
|
||||
""" On génère le sous réseau /bits
|
||||
"""
|
||||
non_dec_netmask = (1L<<(32-mask)) - 1
|
||||
dec_netmask = (1L<<32) - 1 - non_dec_netmask
|
||||
if dec :
|
||||
return dec_netmask
|
||||
else :
|
||||
return non_dec_netmask
|
||||
|
||||
def IpSubnet(ip, mask) :
|
||||
dec_mask = netmask(mask)
|
||||
dec_ip = QuadToDec(ip)
|
||||
start_ip = DecToQuad(dec_ip & dec_mask)
|
||||
subnet = start_ip + "/%s" % mask
|
||||
return subnet
|
||||
|
||||
def subnets(net, subnet_mask) :
|
||||
""" On construit une liste des sous réseaux /subnet_mask
|
||||
compris dans le sous réseau /mask comprenant l'ip ip
|
||||
"""
|
||||
subnets = []
|
||||
# On récupère une ip du réseau indiqué
|
||||
ip = net.split('/')[0]
|
||||
# On récupère la valeur du masque
|
||||
mask = int(net.split('/')[1])
|
||||
# On transforme les valeurs d'entrées en valeurs décimales
|
||||
# On définit la valeur du sous réseau initial
|
||||
dec_netmask = netmask(mask)
|
||||
dec_ip = QuadToDec(ip)
|
||||
dec_subnet_netmask = netmask(subnet_mask)
|
||||
# On calcule la première ip du sous réseau indiqué
|
||||
start_ip = dec_ip & dec_netmask
|
||||
seq_ip = start_ip
|
||||
# On fait une itération sur toutes les ip du sous réseau
|
||||
while (seq_ip & dec_netmask) == start_ip:
|
||||
# On récupère le sous réseau de la taille demandée
|
||||
subnet = DecToQuad(seq_ip & dec_subnet_netmask) + "/%s" % subnet_mask
|
||||
if not subnets.count(subnet) :
|
||||
subnets.append(subnet)
|
||||
seq_ip += 1
|
||||
return subnets
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue