pydhcplib.DhcpBasicPacket(3) Classe de base contenant un paquet dhcp.

SYNOPSIS

from pydhcplib.DhcpBasicPacket import DhcpBasicPacket

packet = DchpBasicPacket()

DESCRIPTION

La classe pydhcplib.DhcpBasicPacket est la classe élémentaire de traitement d'un paquet dhcp. Elle contient le strict nécessaire au traitement de paquets, tous les ajouts et fonctions évoluées sont déportées vers la classe DhcpPacket.

Un paquet dhcp est constitué de 2 parties distinctes : l'entête et les options. L'entête d'un paquet à une taille fixe, et tous les champs sont définis (voir RFC 2131). La taille de la partie optionnelle est quand à elle variable et ne contenir qu'une seule option. Dans le DhcpBasicPacket, chaques champs, optionnel ou non, est manipulé par les mêmes fonction. Ainsi les methodes SetOption ou GetOption servent autant à fixer ou récupérer le contenu d'un champs de l'entête qu'un champs optionnel.

METHODES

IsDhcpPacket() - Renvoie True si le "Magic Cookie" est retrouvé au bon endroit dans le packet. Sinon renvoie False.

DeleteOption(string) - Sert à supprimer un champs ou son contenu. Si le champs n'existe pas, False est renvoyé. Si le champs est dans la partie optionnelle du paquet dhcp, il est supprimé. Si le champs est dans l'entête du paquet, l'ensemble des octets le constituant sont mis à 0. string est le nom de l'option à supprimer.

GetOption(string) - Sert à récupérer la valeur d'une option. La methode renvoie une liste d'octet avec le contenu de l'option ou False si l'option n'existe pas. Les champs de l'entête du paquet dhcp sont considérés comme des options et renvois toujours quelquechose.

SetOption(string,list) - Sert à fixer la valeur d'une option. Le premier argument est le nom de l'option, le deuxième une liste d'octet (comme [0,25,200]). Les noms d'options possible sont les noms des champs de l'entête et les noms des options définies dans le module pydhcplib.dhcp_constants. La taille de la liste d'octet dépend de la définition du champs dans pydhcplib.dhcp_constants.

IsOption(string) - L'argument est un nom d'option. Renvoie True si l'option existe dans le paquet. Renvoie toujours True pour un champs de l'entête. Renvoie False si l'option n'existe pas et n'est pas un champs d'entête.

EncodePacket() - Génère un paquet dhcp (une chaine de caractère) encodant l'entête ainsi que toutes les options définies préalablement dans le paquet (sans oublier le "Magic Cookie"). Cette chaine est un paquet dhcp valide.

DecodePacket(string) - Prend en argument un paquet dhcp "brut" (une chaine de caractère en fait) et décode tous les éléments pour les rendre manipulable avec SetOption, GetOption, ou DeleteOption.

EXEMPLES

Programme d'exemple :

from pydhcplib.dhcp_packet import DhcpPacket
from pydhcplib.type_strlist import strlist
from pydhcplib.type_ipv4 import ipv4

packet = DhcpBasicPacket()
packet.SetOption("domain_name",strlist("anemon.org").list())
packet.SetOption("router",ipv4("192.168.0.1").list()+[6,4,2,1])
packet.SetOption("time_server",[100,100,100,7,6,4,2,1])
packet.SetOption("yiaddr",[192,168,0,18])

BUGS

Probablement plein... pydhcplib est en cours de développement. Voir http://pydhcplib.tuxfamily.org/ pour plus d'informations.

AUTHOR

Mathieu Ignacio (mignacio[AT]april.org)