
    h5                        d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ  G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z eeed            eeed             eeed            eeed            eeed           dS )    )Packetbind_layers)
FlagsField
XByteField	ByteFieldXShortField
ShortFieldStrLenFieldBitFieldBitEnumFieldByteEnumFieldFieldLenFieldPacketListFieldFieldListFieldMACFieldPacketFieldConditionalField	XIntField)Ether)	ETHER_ANYc                   .   e Zd ZdZ edddd           edd           edd           ed	d
           edd           edd           edd           edd           edd           edd           edd           eddd           gZ	d Z
dS )IssueATACommandIssue ATA Commandflagsr      zezdzzawerr_featuresector_count   
cmd_status   lba0lba1lba2lba3lba4lba5reserveddata c                     | j         dz  S )Ni   )r   xs    U/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/aoe.py<lambda>zIssueATACommand.<lambda>!   s    Q^c5I     length_fromc                 
    d|fS Nr*    selfss     r.   extract_paddingzIssueATACommand.extract_padding#       1ur0   N)__name__
__module____qualname__namer   r   r   r   r
   fields_descr9   r5   r0   r.   r   r      s        D:gq!Z88:mQ//9^Q//:lD11:fa((:fa((:fa((:fa((:fa((:fa((;z1--;vr+I+IK K KLK    r0   r   c                       e Zd ZdZ edd           edd           edd           eddd           edddd	d
dddd           eddd           e	ddd           gZ
d ZdS )QueryConfigInformationQuery Config Informationbuffer_countr   firmwarer   aoe   ccmdzRead config stringzTest config stringzTest config string prefixzSet config stringzForce set config string)r   r         rF   config_lengthNconfig)	length_ofc                     | j         S N)rJ   r,   s    r.   r/   zQueryConfigInformation.<lambda>4   s    Q_ r0   r1   c                 
    d|fS r4   r5   r6   s     r.   r9   z&QueryConfigInformation.extract_padding6   r:   r0   )r;   r<   r=   r>   r	   r   r   r   r   r
   r?   r9   r5   r0   r.   rA   rA   '   s        %D:na00:j!,,9^Q//8E1a((<12F2F2M2E2K	/M /M N N
 !=$(KKK;x+D+DF F FGK    r0   rA   c            	       b    e Zd Zd Z edd           edddddd           ede          gZd	S )
	Directiver(   r   dcmdzNo directivezAdd mac address to mask listz!Delete mac address from mask listr   r   rH   mac_addrN)	r;   r<   r=   r>   r   r   r   r   r?   r5   r0   r.   rQ   rQ   :   sd        D9Z++ =%3%C%H"J "JK K 8J	224KKKr0   rQ   c                       e Zd ZdZ edd           eddddd           eddd	d
ddd           eddd           edded           gZ	d Z
dS )MacMaskListMac Mask Listr(   r   mcmdzRead Mac Mask ListzEdit Mac Mask List)r   r   merrorr*   zUnspecified errorzBad dcmd directivezMask List Fullr   r   rH   rI   	dir_countN
directivescount_ofc                     | j         S rN   )r[   pkts    r.   r/   zMacMaskList.<lambda>O   s    #- r0   
count_fromc                 
    d|fS r4   r5   r6   s     r.   r9   zMacMaskList.extract_paddingQ   r:   r0   )r;   r<   r=   r>   r   r   r   r   rQ   r?   r9   r5   r0   r.   rV   rV   D   s        D9Z++ =0D0D-F -F G G =1"2E2F2B/D /D E E !=d\JJJ"?<y.G.GI I I	JK    r0   rV   c            
           e Zd ZdZ edddddd           edd	d
           ed
d	 ede          d           gZ	d Z
d	S )ReserveReleaseReserve / Releasercmdr   zRead Reserve ListzSet Reserve ListzForce Set Reserve ListrS   nb_macN	mac_addrsr]   r*   c                     | j         S rN   )ri   r`   s    r.   r/   zReserveRelease.<lambda>\   s     r0   rb   c                 
    d|fS r4   r5   r6   s     r.   r9   zReserveRelease.extract_padding^   r:   r0   )r;   r<   r=   r>   r   r   r   r   r   r?   r9   r5   r0   r.   rf   rf   U   s        D =0C0B0H-J -J K K !=4+FFF!>+tXXb)5L5L-C-CE E E	FK    r0   rf   c                      e Zd ZdZ eddd           edddg d           eddd	d
ddddd           edd           edd           eddddddd           e	dd           e
 ed e            e          d            e
 ed e            e          d            e
 ed e            e          d             e
 ed! e            e          d"           gZd# Zd$S )%AOEzATA over Ethernetversionr   rF   r   r   )ResponseErrorr1r2errorzUnrecognized command codezBad argument parameterzDevice unavailablezConfig string presentzUnsupported exceptionzTarget is reserved)r   rH   rI   rF         majori  minor   cmdr   rB   rW   rg   rZ   tag	i_ata_cmdc                     | j         dk    S )Nr   rz   r,   s    r.   r/   zAOE.<lambda>v       aeqj r0   q_conf_infoc                     | j         dk    S )Nr   r~   r,   s    r.   r/   zAOE.<lambda>z   r   r0   
mac_m_listc                     | j         dk    S )NrH   r~   r,   s    r.   r/   zAOE.<lambda>}   r   r0   res_relc                     | j         dk    S )NrI   r~   r,   s    r.   r/   zAOE.<lambda>   r   r0   c                 
    d|fS r4   r5   r6   s     r.   r9   zAOE.extract_padding   r:   r0   N)r;   r<   r=   r>   r   r   r   r   r   r   r   r   r   rA   rV   rf   r?   r9   r5   r0   r.   rn   rn   b   s       D8Iq!,,:gq! .: .: .: ; ; =!1L1I1E1H1H1E.G .G H H ;w//:gt,, =/B/I/>/B,D ,D E E 9UA&&##KK__=N=N0?%A %A$8$8: : $#KK0F0F0H0H0F%H %H %9$8: : $#KKkkmm0;%= %=$8$8: : $#KK	>>;K;K0>%@ %@$8$8: :5;K<    r0   rn   i  )typer~   r   rH   rI   N)scapy.packetr   r   scapy.fieldsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   scapy.layers.l2r   
scapy.datar   r   rA   rQ   rV   rf   rn   r5   r0   r.   <module>r      sr   - , , , , , , ,                                                                        " ! ! ! ! !                f   (    V   &4 4 4 4 4 4 4 4    &   "
 
 
 
 
V 
 
 
! ! ! ! !& ! ! !H E3V $ $ $ $ Ca ( ( ( ( C'Q / / / / C! $ $ $ $ CQ ' ' ' ' ' 'r0   