zenith-stack 0.1.0

Zenith 全协议栈框架:AF_XDP + eBPF + TLS 1.3 + HTTP/1-2-3 + Web + Proxy + WAF,按需导入
Documentation
ELF��y@@�axay�cj���������y���c���������U {j����-�8q�q�
dL!f1�0aqc���������U�c�����������y���'y���������c���������q�q�
dL!V
�����	�c���������i�.��$V;�a-�qa�T�V@�T�dW��b-�qadqbL!qbdqcdL#LV?�����c������������c���������,)�g(-�qaT�`�c������������c�������������qi&	?<�o�_!U8�c�������������qa	{���	c�����������y�c���������y���y�	&
?B�qT	V	�q!WU5�c���������W�T��c����������y{���c����������y�y���&	
?B�1TV�1�WU*�c���������+�(��c������������c���������}qaqb	q	>qd>4<�c���������
���c������������c���������\q	qb���qbVU�q��-�c���������

�������c�������������gW<�gqV��qaqcdLT?����c�������������iq�V�qq
dL2qqdL4�A��qqdL5T���T����G�W�Lc�rqqdLE�Q�L4�ChqqdL5�Q�LC�_qqdLE�Q�L4�CUqqdL5�Q�LC�LqqdLE�Q�L4�CBqqdL5�Q�LC�9	qqdLE�Q�L4�C/	q q!dL5�Q�LC�&q"q#dLE�Q�L4�Cq$q%dL5�Q�LC�
q&q'dLE�Q�L4�C	
q(q)dL5�Q�LC&�TV��q.q/dL2�q0q1dL4�A��q2q3dL5T���T����G�W�Lc�rq4q5dLE�Q�L4�Chq6q7dL5�Q�LC�_q8q9dLE�Q�L4�CUq:q;dL5�Q�LC�Lq<q=dLE�Q�L4�CBq>q?dL5�Q�LC�9	q@qAdLE�Q�L4�C/	qBqCdL5�Q�LC�&qDqEdLE�Q�L4�CqFqGdL5�Q�LC�
qHqIdLE�Q�L4�C	
qJqKdL5�Q�LC&1TVO�c������������c�����������a�����3��q*q+dLE�Q�L4q,q-dL#�1�LBTV��qLqMdLE�Q�L4qNqOdL#�1�LBTV��
TV���c���������O�L�TV���c���������D�A�GPL�4���!2CRap������/7?GOW_u}����������.6>FNVl�*����Q�W��W�	�	W��W��Wx�/Xx�Y��	Y��Y��YPpP��0���0���z��z��P��P��W��W��Y��Y��X��X��Y��Y��P��P��P��P��	P�	�	P�	�
P��P�
�P��P��Q��P��	Y��Y��Q��Q��Q�	�	Q��V��V��V� �!V��P��Q��P��P�	�	P�	�	P�	�
V�
�V��V�
�
P��
V��V��P��W��P�
�
P��P��Q��z��P��P��P��P��P��P��)P�+�.P�.�/P��0���v(���W��W� �!W��P��P��P��P��P��)Q�+�-Q�.�.Q�����������������������������	���
��������� 
�� � ��+�+��+�,��,�,���T��U��U��U��U��U��U��U��U��U��U��U��U� � U�+�+U�+�,U�,�,S� �!��!�"��"�"��"�#��#�$��$�$��$�%��%�%��%�&��&�'	��'�'
��'�(��(�(��(�)
��)�)��,�-��-�-��-�-��!�!T�!�"U�"�#U�#�#U�#�$U�$�$U�$�%U�%�&U�&�&U�&�'U�'�'U�'�(U�(�)U�)�)U�,�,U�,�-U�-�-S�*�*P�*�*P�.�.P�/�/P%%%r%st�4%I:;&III'I&	4%I:;
$%>I%:;4%I?:;
I!I7$%>4%I?:;:;
%I:;8!I7.%:;'I !%:;I4%:;I%:;.%:;' !
%I:;
k.@z%:;'I?"%:;I4%:;I4"%:;I1XYW1 1!4"1"U##41$1XY%1U#XYW&"1'1U#XY()4%:;I*4"%:;I+1XYW�
�3@8=MMNS	]:bg|M��
�
�,�
��
	
�� �
��
��

�
��@
��"� K\nP
��a
��s
���!� ��n �
���
����7� 2�3	456
��
��P3;
G
PX`
?Ƃ�+Ȋ�� �+�+!f�#f�$fM%fM+h
"�*<$3=%3>&3?'3@(3A)3B/M,4N-4O.?P
X�0\1\+2\�^�3~�4~M%~M5��B�+@�+�AZ6X[7X[8X\9?]:?^;?_<X`=Xa	>?b
?3c@3dC��4�M%�MD�$J(iEXj7XjFtkG?lHXmIXn?�o@�p
X�
X�K��H�PL��M�PN�O�+�ZP�#��Q!+% M$MS@�

T#++KUL?4MM\"+�0&�i0� �q!y"Dz@ �
 �DL!"T���! �i0� �q!y�	0��i	0� �q!!y�
(p V X#V@ q
 �DL!T�{
 Y�@
 |
 �DL!T@0�	 �DL!'T@ �	 �DL!T@ �	 �DL!T$@"5g�]�^ Ve Xm#Vu!}@ _
 �DL!T��h!�i0� �q!y�0��i0� �q!y@ i
 �DL!T@0n	 �DL!#T%�'&�%i�&q!y%�7
&�&�&	�!
�@ 8	 �DL!)T@ D	 �DL!T'@( ]/+@ 1
 �DL!T@ V
 �DL!T"�R�+$V�K"%W�MM�P<�P^�P(V5��6�+(D�@ � �DL!&T"+X�
@ � �DL!(T"`�
"	a��"
,Z��"-[��
@  � �DL!2T")`�
"
)a�"*.Z�"*/[�
+@!  �DL!3T("�V5ʎ_�P@# � �DL!*T+@$0% �DL!0T+@%0& �DL!1T+?Y�@Xhs~�������?O_jhp��	�	�
��������
��������������������)�+�/������)�+�/����)�+�/�� �+�,�-�.�� �+�,�-�.�� �+�,���������������������������� �+�+�+�,� �)�,�-�.�/� �)�,�-�.�/� �)�,�-� �!�!�"�"�"�"�#�#�$�$�$�$�%�%�%�%�&�&�'�'�'�'�(�(�(�(�)�,�-�-�-�'6g{�������������"/59HN\adsw{������������
&.2DKOS[_gjsw��������������%,>NW_fjs{����������Ubuntu clang version 21.1.8 (6ubuntu1)src/xdp_main.c/mnt/f/Rust_API/web/Full_protocol_web/zenith/bpfbpf_map_lookup_elembpf_redirect_maplongunsigned long long__u64_licensechar__ARRAY_SIZE_TYPE__xsk_maptypeintmax_entrieskey_sizevalue_sizestats_mapconfig_mapexpectation_mapunsigned int__u32u32unsigned short__u16unsigned char__u8u8get_config_u64u64keyvalget_config_u32check_eth_header_Boolctxdatadata_enddata_metaingress_ifindexrx_queue_indexegress_ifindexxdp_mdethh_desth_sourceh_protoethhdrupdate_statsstat_idinccheck_ipv4_headerl3_hdriphihlversiontostot_lenidfrag_offttlprotocolchecksaddrdaddriphdrip_lencheck_ipv6_headerip6hpriorityflow_lblpayload_lennexthdrhop_limitipv6hdris_ipv6_extension_headerproto_whitelist_allowedprotobitmapwhitelist_enabledzenith_xdp_mainqueue_idexp_keyxsk_fdmtul3_protoexp_cfgl4_hdrdst_portu16iallowed_portfail_closedpkt_lenmin_ttlfrag_policyport_countport_allowed480p0��X�	������x�
x��
8	`
h��@�����  @ @*�3�>	P 
@*�3�F @*�3�V� @*�3�` kr!w! �!@�!`�!��!��"� 
��#�%�&�
    �'int__ARRAY_SIZE_TYPE__typemax_entrieskey_sizevalue_sizexsk_mapexpectation_mapstats_mapconfig_mapxdp_mddatadata_enddata_metaingress_ifindexrx_queue_indexegress_ifindex__u32unsigned intctxzenith_xdp_mainxdp/mnt/f/Rust_API/web/Full_protocol_web/zenith/bpf/src/xdp_main.cint zenith_xdp_main(struct xdp_md *ctx)    void *data_end = (void *)(long)ctx->data_end;    void *data = (void *)(long)ctx->data;/mnt/f/Rust_API/web/Full_protocol_web/zenith/bpf/include/xdp_common.h    val = bpf_map_lookup_elem(&config_map, &key);    if (val)        return *val;    if ((void *)(data + sizeof(struct ethhdr)) > data_end)    switch (eth->h_proto) {    queue_id = ctx->rx_queue_index;    xsk_fd = bpf_map_lookup_elem(&xsk_map, &queue_id);    if (!xsk_fd) {    val = bpf_map_lookup_elem(&stats_map, &stat_id);        __sync_fetch_and_add(val, inc);    if (mtu > 0) {    __u16 l3_proto = eth->h_proto;    if (eth->h_proto == bpf_htons(ETH_P_VLAN)) {        if ((void *)((u8 *)l3_hdr + 4) > data_end) {        l3_proto = *(__u16 *)((u8 *)l3_hdr + 2);    if (l3_proto == bpf_htons(ETH_P_IP)) {    if ((void *)(iph + 1) > data_end)    if (iph->version != 4)    u32 ip_len = iph->ihl * 4;    if ((void *)((u8 *)iph + ip_len) > data_end)    u32 daddr = iph->daddr;        if (!check_ipv4_header(l3_hdr, data_end)) {    if ((void *)(ip6h + 1) > data_end)    if (ip6h->version != 6)        if (!check_ipv6_header(l3_hdr, data_end)) {        if (is_ipv6_extension_header(ip6h->nexthdr)) {    switch (nexthdr) {        return XDP_PASS;        if (!proto_whitelist_allowed(iph->protocol)) {    if (whitelist_enabled == 0 && bitmap == 0)    if (proto >= 64)        if (!proto_whitelist_allowed(ip6h->nexthdr)) {        u32 exp_key = 0;        u8 *exp_cfg = bpf_map_lookup_elem(&expectation_map, &exp_key);        if (exp_cfg) {                u32 ihl = iph->ihl * 4;                proto = iph->protocol;            u8 min_ttl = exp_cfg[9];            if (min_ttl > 0 && ttl < min_ttl) {                proto = ip6h->nexthdr;            if (proto == IPPROTO_TCP || proto == IPPROTO_UDP) {                if ((void *)((u8 *)l4_hdr + 4) > data_end) {}                u8 frag_policy = exp_cfg[8];                if ((frag_policy == 1 || frag_policy == 2) &&                    (iph->frag_off & bpf_htons(0x3FFF)) != 0) {                u16 dst_port = bpf_ntohs(*(__u16 *)((u8 *)l4_hdr + 2));                if (proto == IPPROTO_TCP) {                    __builtin_memcpy(&port_count, &exp_cfg[12], sizeof(port_count));                    if (port_count > 0) {                                __builtin_memcpy(&allowed_port,                                if (dst_port == allowed_port)                            if (i < port_count) {                        if (!port_allowed) {                    __builtin_memcpy(&port_count, &exp_cfg[46], sizeof(port_count));    return bpf_redirect_map(&xsk_map, queue_id, XDP_PASS);char_license.mapslicense��  �$���#t�K)��}%|8��$P�	(X�,,���$��	(��A���A0���|���|���� ���8��P��	x�|��	���;	���,,��c
��|�	�(�v0H��PP��#T`��(T��|��	����d��0t��[��[������ ��<(��@@��&@H��P��
x��|��	��| �	�0�<�@�<�H�c�P�c�X�
���|��	���|��	����,�����X�|p�	���;	���	8��+����$��	(��,,��$8�	(@�,,H�Q�X���p�Q ���
���|��	���$8�	(@�,,p��$��	(��,,��Q�������Q ����
0�|H�	�x�|��	���;	����
�������,
���C ���k����	��8	�|P	�	��	�|�	�	��	�;	��	��
��	����	�,
��	���	��
���
�&|(
�N+�8
�N0�`
�|x
�	��
�|��
�|�
�	��
�;	��
�����", ��'T0��XP��$XX��<T��|��	���8	 ����	����	���
$���+
!��k
.� ��
#�(�+
!�H�k
.����
#���+
!���k
.����
#���+
!�
�k
.�0
��
#�8
�+
!�`
�k
.��
��
#��
�+
!��
�k
.��
��
#��
�+
!��
�k
.���
#� �+
!�H�k
.�`��
#�h�+
!���k
.����
#���+
!���k
.����
#��+
!�(�k
.�H��
#�P�+
!�x�k
.����
#���+
!���k
.����
#���+
!��k
.�(��
#�0��
�H� h�
$,p�+
!D��k
.P���
#<��+
!D��k
.P ��
#<(�+
!DP�k
.Pp��
#<x�+
!D��k
.P���
#<��+
!D��k
.P��
#<�+
!D8�k
.PP��
#<X�+
!D��k
.P���
#<��+
!D��k
.P���
#<��+
!D�k
.P8��
#<@�+
!Dh�k
.P���
#<��+
!D��k
.P���
#<��+
!D�k
.P��
#< �+
!DH�k
.Ph��
#<p�+
!D��k
.P���
#<���
`��|�	��;	�@�|X�	�h�;	�p�]'�x�]���+
!���k
.����
#���+
!��k
.�0��
�@�+
!Dh�k
.P���
#<��+
!D��k
.P���
`���
��|(�	�8��
`h�|��	�����|��~�
1BJ~���3H��8D����RY�#�#�$z�����Ak!:Ec�
�yL��6ؽuؙ��C��,���B#o;�	)
"%a �J	=!�~.�f	=�~ � 0.&JLJ @	=� �J	=� � � �.
�~ R ..R �J	=� � R#!(.� �J	=� � $&<.$ �~<�.(!&<$
J�� �J	=� �X	=� � .$ 
J � �J	=� �X	=� ,� < �~ ��	=� � � � +Z � �X�~<	� !�~ �J�~<	� ! �~ � �~  �.�~ � �~.
� �<�J	=� �X�~<	� !�~ �X�~<	� ! �~ �.�~  �.�~ � �~.
� �~<�J	=� �X	=� � � 
� =
= 	 
 !�~ � �~ �J	=� �X	=� � � 
� =
= !�~ � y &% +40.�~ �J	=� � �.�J	=� � � � �} "�J'
 /$J<�~ �J	=�  � 0#$M!&�~J.� �~ #� !".M�~f� �~ � #!"�~J.� �~ � �~ #� !"�~J.� �~ � #!"�~J.� �~ � �~ #� !"�~J.� �~ � #!"�~J.� �~ � �~ #� !"�~J.� �~ � #!"�~J.� �~ � �~ #� !"�~J.� �~ � #!"�~J.� �~ � �~ #� !"�~J.� �~ � #!"�~J.� �~ � �~ #� !"�~J.� �~ � #	 
<$M!&�}J.� �} #� !".M�}f� �} � #!"�}J.� �} � �} #� !"�}J.� �} � #!"�}J.� �} � �} #� !"�}J.� �} � #!"�}J.� �} � �} #� !"�}J.� �} � #!"�}J.� �} � �} #� !"�}J.� �} � #!"�}J.� �} � �} #� !"�}J.� �} � #!"�}J.� �} � �} #� !"�}J.� �} � #	 �}<�J	=� � � �J	=� � '�  �}J!� �~J.� �~ � #!"�~J.� �~ � 2!.�}J.� �} � #!"�}J.� �} � 2f.�~.�J	=� � �}.�J	=� /mnt/f/Rust_API/web/Full_protocol_web/zenith/bpf/usr/include/bpfincludesrc/xdp_main.cbpf_helper_defs.hvmlinux.hxdp_common.h�����` � �@ �  �8
�
8x����X�

�
p
0x�8	�	�	`
�
��@xh
#' $(,048<@DHLPTX\`dhlptx|�������������������������������� $(,048<@DHLPTX\`dhlptx|���� 
(08@HPX`hpx���������������� (0����
�,@P`p�������� 0@P`p�������� 0@P`p�������� 0@P`p�������� 0@P`p�������� 0@P`p�������� 0@P`p�������� 0@P`p�������� 0@P`p��������		 	0	@	P	`	p	�	�	�	�	�	�	�	�	

 
0
@
P
`
p
�
�
�
�
�
�
�
�
 0@P`p�������� 0@P`p��������

 
0
@
P
`
p
�
�
�
�
�
�
�
�
 0@P`p�������� 0	"&*6K`u�
.debug_abbrev.text.rel.BTF.ext.debug_rnglists.debug_loclists.rel.debug_str_offsets.maps.debug_str.debug_line_str.rel.debug_addr.relxdpstats_mapexpectation_mapxsk_mapconfig_map.rel.debug_infozenith_xdp_main.llvm_addrsig_license.rel.debug_line.rel.debug_framexdp_main.c.strtab.symtab.rel.BTF"Nx;@�@��	@�]�Y���P2T�"�? �
�	@h_`	"�*�F�,�B	@�_ _04.�~28z	@�e`6L3�2	@HhP�B@	@�h
8R(	@�w �`R��	@�w�j0V[��L�o�Hx*�[�