; tDc@sddZdkZdkZdZdZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdZNdZOdZPdZQdZRdZSd ZTd ZUdKeiVfdLYZWeXdMjo0dkYZYdNeYiZfdOYZ[eYi\ndS(Ps$Dynamic Host Configuration Protocol.NiiicSciiiiiii i i i i iiiiiiiiiiiiiiiiiii i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;i<i=i@iAiDiEiFiGiHiIiJiKiLsDHCPcBs1tZddefddeifdddfdddfdd d fd d dfd d dfdd dfdd dfdd dfdd dfddddfddddfddddfdd effZeee fe di e ee eeefffZdZdZd Zd!ZRS("NsopsBshrdshlnishopsisxidsIl>[=ssecssHsflagssciaddrsyiaddrssiaddrsgiaddrschaddrs16sisssnames64si@sfiles128sismagicsc CsX|itgi}|iD]}|dt|dq~dt|iSdS(Nii( sselfs __hdr_len__ssumsappends_[1]soptssoslensdata(sselfs_[1]so((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pys__len__zscCs%|i|it|iSdS(N(sselfspack_hdrs pack_optssstrsdata(sself((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pys__str__~scCs}|i odSng}xC|iD]8\}}|idt|tt||fq#W|iddi|SdS(sReturn packed options string.ss%s%s%ssN( sselfsoptsslstsdatasappendschrslensjoin(sselfslstsdata((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pys pack_optss  0 cCstii|||i|i |_|i}g}x|ot |d}|djo|d}Pq8|djo|d}q8t |d}|i ||dd|!f|d|}q8W||_ ||_dS(Niiii(sdpktsPacketsunpacksselfsbufschaddrshlnsdataslsordstsnsappendsopts(sselfsbufslstsn((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pysunpacks"     (s__name__s __module__sDHCP_OP_REQUESTsarps ARP_HRD_ETHs DHCP_MAGICs__hdr__sDHCP_OPT_MSGTYPEschrs DHCPDISCOVERsDHCP_OPT_PARAM_REQsjoinsmapsDHCP_OPT_REQ_IPsDHCP_OPT_ROUTERsDHCP_OPT_NETMASKsDHCP_OPT_DNS_SVRSsoptss__len__s__str__s pack_optssunpack(((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pysDHCP`s <   s__main__s DHCPTestCastcBstZdZRS(NcCs/d}t|}|i|t|jdS(Ns,ScUcSc5=U2 e Guinevere<MSFT 5.07 ,./!+(sssDHCPsdhcpsselfs failUnlesssstr(sselfsdhcpss((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pys test_DHCPs (s__name__s __module__s test_DHCP(((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pys DHCPTestCasts(]s__doc__sarpsdpktsDHCP_OP_REQUESTs DHCP_OP_REPLYs DHCP_MAGICsDHCP_OPT_NETMASKsDHCP_OPT_TIMEOFFSETsDHCP_OPT_ROUTERsDHCP_OPT_TIMESERVERsDHCP_OPT_NAMESERVERsDHCP_OPT_DNS_SVRSsDHCP_OPT_LOGSERVsDHCP_OPT_COOKIESERVsDHCP_OPT_LPRSERVsDHCP_OPT_IMPSERVsDHCP_OPT_RESSERVsDHCP_OPT_HOSTNAMEsDHCP_OPT_BOOTFILESIZEsDHCP_OPT_DUMPFILEsDHCP_OPT_DOMAINsDHCP_OPT_SWAPSERVsDHCP_OPT_ROOTPATHsDHCP_OPT_EXTENPATHsDHCP_OPT_IPFORWARDsDHCP_OPT_SRCROUTEsDHCP_OPT_POLICYFILTERsDHCP_OPT_MAXASMSIZEsDHCP_OPT_IPTTLsDHCP_OPT_MTUTIMEOUTsDHCP_OPT_MTUTABLEsDHCP_OPT_MTUSIZEsDHCP_OPT_LOCALSUBNETSsDHCP_OPT_BROADCASTADDRsDHCP_OPT_DOMASKDISCOVsDHCP_OPT_MASKSUPPLYsDHCP_OPT_DOROUTEDISCsDHCP_OPT_ROUTERSOLICITsDHCP_OPT_STATICROUTEsDHCP_OPT_TRAILERENCAPsDHCP_OPT_ARPTIMEOUTsDHCP_OPT_ETHERENCAPsDHCP_OPT_TCPTTLsDHCP_OPT_TCPKEEPALIVEsDHCP_OPT_TCPALIVEGARBAGEsDHCP_OPT_NISDOMAINsDHCP_OPT_NISSERVERSsDHCP_OPT_NISTIMESERVsDHCP_OPT_VENDSPECIFICs DHCP_OPT_NBNSs DHCP_OPT_NBDDsDHCP_OPT_NBTCPIPsDHCP_OPT_NBTCPSCOPEsDHCP_OPT_XFONTsDHCP_OPT_XDISPLAYMGRsDHCP_OPT_REQ_IPsDHCP_OPT_LEASE_SECsDHCP_OPT_OPTIONOVERLOADsDHCP_OPT_MSGTYPEsDHCP_OPT_SERVER_IDsDHCP_OPT_PARAM_REQsDHCP_OPT_MESSAGEsDHCP_OPT_MAXMSGSIZEsDHCP_OPT_RENEWTIMEsDHCP_OPT_REBINDTIMEsDHCP_OPT_VENDOR_IDsDHCP_OPT_CLIENT_IDsDHCP_OPT_NISPLUSDOMAINsDHCP_OPT_NISPLUSSERVERSsDHCP_OPT_MOBILEIPAGENTsDHCP_OPT_SMTPSERVERsDHCP_OPT_POP3SERVERsDHCP_OPT_NNTPSERVERsDHCP_OPT_WWWSERVERsDHCP_OPT_FINGERSERVERsDHCP_OPT_IRCSERVERsDHCP_OPT_STSERVERsDHCP_OPT_STDASERVERs DHCPDISCOVERs DHCPOFFERs DHCPREQUESTs DHCPDECLINEsDHCPACKsDHCPNAKs DHCPRELEASEs DHCPINFORMsPacketsDHCPs__name__sunittestsTestCases DHCPTestCastsmain(XsDHCP_OPT_STDASERVERs DHCPDISCOVERsDHCP_OPT_XDISPLAYMGRsDHCP_OPT_NISPLUSSERVERSsDHCP_OPT_XFONTsDHCP_OPT_TRAILERENCAPsDHCP_OPT_NBTCPIPsDHCP_OPT_POLICYFILTERsDHCP_OPT_MTUTABLEsDHCP_OPT_IPTTLsDHCP_OPT_DUMPFILEsDHCP_OPT_HOSTNAMEsDHCP_OPT_FINGERSERVERsDHCP_OPT_ETHERENCAPsDHCP_OPT_NISSERVERSsDHCP_OPT_ROUTERSOLICITsDHCP_OPT_LOCALSUBNETSsDHCP_OPT_DOMAINsDHCP_OPT_DNS_SVRSsDHCP_OPT_NISTIMESERVsDHCP_OPT_MTUSIZEsDHCP_OPT_SERVER_IDsDHCP_OPT_BOOTFILESIZEsDHCP_OPT_VENDSPECIFICsDHCP_OPT_IMPSERVsDHCP_OPT_REQ_IPsDHCP_OPT_NBTCPSCOPEsarpsDHCP_OP_REQUESTs DHCP_OP_REPLYsDHCP_OPT_MOBILEIPAGENTsDHCP_OPT_MASKSUPPLYsDHCP_OPT_NISDOMAINsDHCP_OPT_TIMESERVERsDHCP_OPT_TCPKEEPALIVEs DHCPTestCastsDHCP_OPT_DOROUTEDISCs DHCPRELEASEsDHCP_OPT_REBINDTIMEsDHCP_OPT_NAMESERVERs DHCPREQUESTsDHCP_OPT_BROADCASTADDRsDHCP_OPT_SRCROUTEsDHCP_OPT_MAXASMSIZEsDHCP_OPT_ROUTERsunittestsDHCP_OPT_DOMASKDISCOVs DHCP_MAGICsDHCP_OPT_POP3SERVERsDHCP_OPT_NNTPSERVERsDHCP_OPT_MSGTYPEsDHCP_OPT_ARPTIMEOUTsDHCP_OPT_IPFORWARDsDHCP_OPT_OPTIONOVERLOADsDHCP_OPT_ROOTPATHsDHCP_OPT_VENDOR_IDsdpkts DHCPINFORMsDHCP_OPT_CLIENT_IDsDHCP_OPT_SMTPSERVERsDHCPsDHCP_OPT_COOKIESERVsDHCP_OPT_LPRSERVsDHCP_OPT_WWWSERVERsDHCP_OPT_MAXMSGSIZEsDHCP_OPT_MESSAGEsDHCP_OPT_STATICROUTEs DHCPDECLINEsDHCP_OPT_RESSERVsDHCP_OPT_LEASE_SECsDHCP_OPT_IRCSERVERsDHCP_OPT_TIMEOFFSETs DHCP_OPT_NBNSs DHCP_OPT_NBDDsDHCP_OPT_SWAPSERVsDHCP_OPT_NETMASKsDHCP_OPT_STSERVERsDHCP_OPT_TCPTTLsDHCP_OPT_MTUTIMEOUTsDHCPACKsDHCP_OPT_RENEWTIMEsDHCPNAKsDHCP_OPT_TCPALIVEGARBAGEsDHCP_OPT_LOGSERVsDHCP_OPT_NISPLUSDOMAINs DHCPOFFERsDHCP_OPT_EXTENPATHsDHCP_OPT_PARAM_REQ((s9/mnt/gmirror/ports/net/py-dpkt/work/dpkt-1.6/dpkt/dhcp.pys?s>