grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ,-ÞiùPã@s¬ddlmZddlZddlmZGdd„dejƒZGdd„dejƒZGd d „d ej ƒZ Gd d „d ejƒZ Gd d„dƒZ ddd„Z dd„Zdd„ZGdd„dƒZddd„ZdS)é)ÚlinesepNé)Úget_table_type_namec@s eZdZdejfdejfgZdS)Ú OffsetUnionZoffsetuÚoffsetN)Ú__name__Ú __module__Ú __qualname__ÚctZc_uint16Zc_int16Ú_fields_©r r ú4/usr/lib/python3.9/site-packages/bcc/disassembler.pyrsrc@s eZdZdejfdejfgZdS)ÚImmUnionÚimmuÚimmN)rrr r Zc_uint32Zc_int32r r r r r rsrc@s@eZdZdZdZdejfdejdfdejdfdefdefgZ d S) ÚBPFInstrFieldsr)ÚoÚiÚopcodeÚdstéÚsrcrrN) rrr Ú_pack_Ú _anonymous_r Zc_uint8rrr r r r r rs  ürc@s&eZdZdZdZdefdejfgZdS)ÚBPFInstrrÚsÚinstrN) rrr rrrr Úc_uint64r r r r r r"srcb@sìeZdZdZgd¢Zddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdadcœaZeddde„ƒZdfS)gÚ BPFDecoderr)]ZunspecZmap_lookup_elemZmap_update_elemZmap_delete_elemZ probe_readZ ktime_get_nsZ trace_printkZget_prandom_u32Zget_smp_processor_idZskb_store_bytesZl3_csum_replaceZl4_csum_replaceZ tail_callZclone_redirectZget_current_pid_tgidZget_current_uid_gidZget_current_commZget_cgroup_classidZ skb_vlan_pushZ skb_vlan_popZskb_get_tunnel_keyZskb_set_tunnel_keyZperf_event_readZredirectZget_route_realmZperf_event_outputZskb_load_bytesZ get_stackidZ csum_diffZskb_get_tunnel_optZskb_set_tunnel_optZskb_change_protoZskb_change_typeZskb_under_cgroupZget_hash_recalcZget_current_taskZprobe_write_userZcurrent_task_under_cgroupZskb_change_tailZ skb_pull_dataZ csum_updateZset_hash_invalidZget_numa_node_idZskb_change_headZxdp_adjust_headZprobe_read_strZget_socket_cookieZget_socket_uidZset_hashZ setsockoptZskb_adjust_roomZ redirect_mapZsk_redirect_mapZsock_map_updateZxdp_adjust_metaZperf_event_read_valueZperf_prog_read_valueZ getsockoptZoverride_returnZsock_ops_cb_flags_setZmsg_redirect_mapZmsg_apply_bytesZmsg_cork_bytesZ msg_pull_dataZbindZxdp_adjust_tailZskb_get_xfrm_stateZ get_stackZskb_load_bytes_relativeZ fib_lookupZsock_hash_updateZmsg_redirect_hashZsk_redirect_hashZlwt_push_encapZlwt_seg6_store_bytesZlwt_seg6_adjust_srhZlwt_seg6_actionZ rc_repeatZ rc_keydownZ skb_cgroup_idZget_current_cgroup_idZget_local_storageZsk_select_reuseportZskb_ancestor_cgroup_idZ sk_lookup_tcpZ sk_lookup_udpZ sk_releaseZ map_push_elemZ map_pop_elemZ map_peek_elemZ msg_push_dataZ msg_pop_dataZrc_pointer_rel)Úadd32Údstimmú+=é )ÚjaÚjoffNé@)Úaddr r!r%)rÚdstsrcr!r")r&r'r!r%)Úsub32r ú-=r")ÚjeqÚ jdstimmoffú==r%)Úsubr r)r%)Úlddwr.Nr%)r(r'r)r")r*Ú jdstsrcoffr,r%)r-r'r)r%)ZldabswÚldabsNr")Úmul32r ú*=r")Újgtr+ú>r%)Úmulr r2r%)Zldabshr0Né)r1r'r2r")r3r/r4r%)r5r'r2r%)Zldabsbr0Né)Údiv32r ú/=r")Újger+ú>=r%)Údivr r9r%)Zldabsdwr0Nr%)r8r'r9r")r:r/r;r%)r<r'r9r%)ZldindwÚldindNr")Úor32Ú dstimm_bwú|=r")Újsetr+ú&r%)Úorr?r@r%)Zldindhr=Nr6)r>r'r@r")rAr/rBr%)rCr'r@r%)Zldindbr=Nr7)Úand32r?ú&=r")Újner+ú!=r%)Úandr?rEr%)Zldinddwr=Nr%)rDr'rEr")rFr/rGr%)rHr'rEr%)ZldxwÚ ldstsrcoffNr")ZstwÚ sdstoffimmNr")ZstxwÚ sdstoffsrcNr")Úlsh32r ú<<=r")Újsgtr+ús>r%)Úlshr rMr%)ZldxhrINr6)ZsthrJNr6)ZstxhrKNr6)rLr'rMr")rNr/rOr%)rPr'rMr%)ZldxbrINr7)ZstbrJNr7)ZstxbrKNr7)Úrsh32r ú>>=r")Újsger+ús>=r%)Úrshr rRr%)ZldxdwrINr%)ZstdwrJNr%)ZstxdwrKNr%)rQr'rRr")rSr/rTr%)rUr'rRr%)Zneg32rú~r")ÚcallrWNr%)ÚnegrrVr%)Úmod32r ú%=r")Úexitr[Nr%)Úmodr rZr%)rYr'rZr")r\r'rZr%)Úxor32r?ú^=r")Újltr+ú>=r")Újsltr+ús|jB}d|j|fd fWS|dk�rŒd||jfdfWS|dk�r²d||jd|jfdfWS|dk�rÜd|j||jd|jfdfWS|dk�rd||jd|j|jfdfWS|dk�r0d||jd|j|jfdfWS|dk�rTd |j|||jfdfWS|d!k�rÎ|j|jk�r¶z d"||j |j|jfdfWWSt �y´d#||jfdfYWS0d$|d|jfdfWS|d%k�râ|dfWStd&ƒ‚Wnt �y d'|jYS0dS)(Nr z r%d %s %drr?z r%d %s 0x%xr$z goto %s <%d>z%+drr'z r%d %s r%dr+zif r%d %s %d goto pc%s <%d>r/zif r%d %s r%d goto pc%s <%d>r.z1lddw requires two instructions to be disassembledzr%d = r"z r%d = 0x%xr0zr0 = *(u%s*)skb[%s]r=zr0 = *(u%d*)skb[r%d %s]rIzr%d = *(u%d*)(r%d %s)rJz*(u%d*)(r%d %s) = %drKz*(u%d*)(r%d %s) = r%drzr%d = %s (u%s)r%drWz %s bpf_%s#%dz%s z%s %sr[zunknown opcode classzunknown <0x%x>) ÚopcodesrrrrrrÚ ExceptionÚBPF_PSEUDO_CALLÚ bpf_helpersÚ IndexErrorÚKeyError) ÚclsrÚwÚw1ÚnameZopclassÚopÚbitsrr r r Údecodeés–  ÿÿ  þþ   þþ     ÿÿ  ÿÿ  ÿÿ  ÿÿ      zBPFDecoder.decodeN)rrr rÌrÍrÊÚ classmethodrÖr r r r r'sÌ^ brcCs&t |||¡\}}d||j|f|fS)Nz%4d: (%02x) %s)rrÖr)rÚw0rÒrÚskipr r r Údisassemble_instruction3srÚc Csªt t |¡t t¡¡}tt|ƒdƒ}|d}d}g}td|ƒD]D}||}|rd|d8}d|}nt|d||ƒ\}}|  |¡|}qBt|d|dƒ\}}|  |¡|S)Nr7rrz%4d: (64-bit upper word)) r ÚcastZc_char_pZPOINTERrÚintÚlenÚrangerÚÚappend) ÚbpfstrZptrZnuminstrrØrÙÚ instr_listrrÒZ instr_strr r r Údisassemble_str7s    râcCs d|g}|t|ƒ7}t |¡S)NzDisassemble of BPF program %s:)rârÚjoin)Z func_nameràrár r r Údisassemble_progJs  räc"@sÀeZdZejdejdejdejdejdej dej dej dej d ej d ejd ejd ejd ejdejdejddejddiZedd„ƒZed!dd„ƒZed"dd„ƒZedd„ƒZed#dd „ƒZdS)$Ú MapDecoderZ_BoolÚcharZwchar_tz unsigned charZshortzunsigned shortrÜz unsigned intZlongz unsigned longz long longzunsigned long longÚfloatZdoublez long doubleéZ__int128zunsigned __int128cCs~z^t|tjƒrd}nHt|tjƒr&d}n6t|tjƒrR|j|jdt|jƒd}n |j|}Wnt yxt|ƒ}Yn0|S)NÚstructÚunionú[ú]) Ú issubclassr Ú StructureÚUnionZArrayÚ ctype2strZ_type_ÚstrZ_length_rÏ)rÐÚtÚfield_type_namer r r Ú get_ct_namebs     zMapDecoder.get_ct_nameFNcCs*|sdS|durd|||fSd||fS)NÚz[%d,%d +%d bit]z [%d +%d] r )rÐrÚsizeZenabledZ bitoffsetr r r Úformat_size_infoqs zMapDecoder.format_size_inforõrc Csœg}zº|jD]®\}}t|tjƒp*t|tjƒ}| |¡} t||ƒj} t |¡} |  || | |¡} |r¤|  d|| | f¡||  ||d|| ¡7}|  d||f¡q |  d|| | |f¡q WnØt �y–d} |jD]¸}t |ƒdk�r(|\}}}| |¡} |  || ||¡} |  d|| | ||f¡n`|\}}| |¡} t||ƒj} t |¡} d}d} |  || | |¡} |  d|| | |f¡|| 7}| |7} qØYn0|S)Nz%s%s%s {z z%s} %s;z %s%s%s %s;réz %s%s%s %s:%d;)r rír rîrïrôÚgetattrrZsizeofr÷rßÚ print_ct_mapÚ ValueErrorrÝ)rÐròÚindentrÚsizeinfoÚ map_linesÚ field_nameZ field_typeÚ is_structuredróZ field_offsetZ field_sizeZsizedescZ offset_bitsZfieldZ field_bitsr r r rúysj  ÿ    ÿþ þ   ÿ ý     ÿ þzMapDecoder.print_ct_mapcCsft|tjƒpt|tjƒ}| |¡}|rTd|g}||j|d|d�7}| d|¡nd||fg}|S)Nz %s {z ©rýz } %s;z %s %s;)rír rîrïrôrúrß)rÐròrÿrýrÚ type_namerþr r r Úprint_map_ctype­s  ÿ  zMapDecoder.print_map_ctypecCsLd|||j|jfg}||j|jd|d�7}||j|jd|d�7}t |¡S)Nz-Layout of BPF map %s (type %s, FD %d, ID %d):ÚkeyrÚvalue)Zmap_fdZmap_idrZKeyZLeafrrã)rÐÚmap_nameÚmap_objÚmap_typerýrþr r r Ú decode_mapºsýzMapDecoder.decode_map)FN)rõrF)F)rrr r Zc_boolZc_charZc_wcharZc_ubyteZc_shortZc_ushortZc_intZc_uintZc_longZc_ulongZ c_longlongZ c_ulonglongZc_floatZc_doubleZ c_longdoubleZc_int64rrðr×rôr÷rúrr r r r r råOs8  ð   3 råFcCst|ƒ}tj||||d�S)Nr)rrår )rrrrýZ map_type_namer r r r Äsr )N)F)ÚosrZctypesr ÚtablerrïrrrîrrrrÚrârärår r r r r Ús    u