summaryrefslogtreecommitdiffstats
path: root/src/vppinfra
ModeNameSize
-rw-r--r--CMakeLists.txt5824logstatsplain
-rw-r--r--FEATURE.yaml2071logstatsplain
-rw-r--r--asm_mips.h10683logstatsplain
-rw-r--r--asm_x86.c43781logstatsplain
-rw-r--r--asm_x86.h3019logstatsplain
-rw-r--r--atomics.h3432logstatsplain
-rw-r--r--backtrace.c6937logstatsplain
-rw-r--r--bihash_12_4.h1929logstatsplain
-rw-r--r--bihash_16_8.h2534logstatsplain
-rw-r--r--bihash_16_8_32.h2554logstatsplain
-rw-r--r--bihash_24_16.h2808logstatsplain
-rw-r--r--bihash_24_8.h2744logstatsplain
-rw-r--r--bihash_32_8.h3024logstatsplain
-rw-r--r--bihash_40_8.h3069logstatsplain
-rw-r--r--bihash_48_8.h3199logstatsplain
-rw-r--r--bihash_8_16.h2922logstatsplain
-rw-r--r--bihash_8_8.h2848logstatsplain
-rw-r--r--bihash_8_8_stats.h2961logstatsplain
-rw-r--r--bihash_all_vector.c1502logstatsplain
-rw-r--r--bihash_doc.h10086logstatsplain
-rw-r--r--bihash_template.c33253logstatsplain
-rw-r--r--bihash_template.h15006logstatsplain
-rw-r--r--bihash_vec8_8.h3279logstatsplain
-rw-r--r--bitmap.c3672logstatsplain
-rw-r--r--bitmap.h21036logstatsplain
-rw-r--r--bitops.h5462logstatsplain
-rw-r--r--byte_order.h5356logstatsplain
-rw-r--r--cJSON.c78105logstatsplain
-rw-r--r--cJSON.h16010logstatsplain
-rw-r--r--cache.h4417logstatsplain
-rw-r--r--callback.h4682logstatsplain
-rw-r--r--callback_data.h14450logstatsplain
-rw-r--r--clib.h9449logstatsplain
-rw-r--r--clib_error.h937logstatsplain
-rw-r--r--config.h.in882logstatsplain
-rw-r--r--cpu.c10280logstatsplain
-rw-r--r--cpu.h13152logstatsplain
-rw-r--r--crc32.h2418logstatsplain
-rw-r--r--dir.dox743logstatsplain
-rw-r--r--dlist.h3581logstatsplain
-rw-r--r--dlmalloc.c167028logstatsplain
-rw-r--r--dlmalloc.h63287logstatsplain
-rw-r--r--elf.c46523logstatsplain
-rw-r--r--elf.h33165logstatsplain
-rw-r--r--elf_clib.c8368logstatsplain
-rw-r--r--elf_clib.h4270logstatsplain
-rw-r--r--elog.c28972logstatsplain
-rw-r--r--elog.h17187logstatsplain
-rw-r--r--error.c6377logstatsplain
-rw-r--r--error.h5902logstatsplain
-rw-r--r--error_bootstrap.h4730logstatsplain
-rw-r--r--fifo.c3960logstatsplain
-rw-r--r--fifo.h9723logstatsplain
-rw-r--r--file.h4943logstatsplain
-rw-r--r--format.c16140logstatsplain
-rw-r--r--format.h9901logstatsplain
-rw-r--r--format_table.c7588logstatsplain
-rw-r--r--format_table.h3313logstatsplain
-rw-r--r--hash.c21380logstatsplain
-rw-r--r--hash.h26237logstatsplain
-rw-r--r--heap.c18194logstatsplain
-rw-r--r--heap.h8558logstatsplain
-rw-r--r--interrupt.c2498logstatsplain
-rw-r--r--interrupt.h3612logstatsplain
-rw-r--r--jsonformat.c13370logstatsplain
-rw-r--r--jsonformat.h4829logstatsplain
-rw-r--r--lb_hash_hash.h1794logstatsplain
d---------linux173logstatsplain
-rw-r--r--llist.h9916logstatsplain
-rw-r--r--lock.h4984logstatsplain
-rw-r--r--longjmp.S19971logstatsplain
-rw-r--r--longjmp.h3995logstatsplain
-rw-r--r--macros.c7138logstatsplain
-rw-r--r--macros.h1728logstatsplain
-rw-r--r--maplog.c13651logstatsplain
-rw-r--r--maplog.h6058logstatsplain
-rw-r--r--math.h2193logstatsplain
-rw-r--r--mem.c2670logstatsplain
-rw-r--r--mem.h14426logstatsplain
-rw-r--r--mem_bulk.c6427logstatsplain
-rw-r--r--mem_dlmalloc.c21485logstatsplain
-rw-r--r--memcpy.h4300logstatsplain
-rw-r--r--memcpy_x86_64.h15102logstatsplain
-rw-r--r--mhash.c10404logstatsplain
-rw-r--r--mhash.h4941logstatsplain
-rw-r--r--mpcap.c6422logstatsplain
-rw-r--r--mpcap.h4786logstatsplain
-rw-r--r--os.h3061logstatsplain
-rw-r--r--pcap.c6609logstatsplain
-rw-r--r--pcap.h6101logstatsplain
-rw-r--r--pcap_funcs.h1808logstatsplain
d---------perfmon165logstatsplain
-rw-r--r--pmalloc.c18548logstatsplain
-rw-r--r--pmalloc.h4212logstatsplain
-rw-r--r--pool.c2602logstatsplain
-rw-r--r--pool.h18127logstatsplain
-rw-r--r--ptclosure.c2428logstatsplain
-rw-r--r--ptclosure.h1143logstatsplain
-rw-r--r--random.c3331logstatsplain
-rw-r--r--random.h4858logstatsplain
-rw-r--r--random_buffer.c2590logstatsplain
-rw-r--r--random_buffer.h3831logstatsplain
-rw-r--r--random_isaac.c11782logstatsplain
-rw-r--r--random_isaac.h2986logstatsplain
-rw-r--r--rbtree.c11450logstatsplain
-rw-r--r--rbtree.h3215logstatsplain
-rw-r--r--ring.h3037logstatsplain
-rw-r--r--serialize.c30569cache_entry_by_name, name); if (!p) { dns_cache_unlock (dm); e = clib_error_return (0, "%s is not in the cache...", name); vec_free (name); return e; } ep = pool_elt_at_index (dm->entries, p[0]); ep->expiration_time = 0; return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (test_dns_expire_command) = { .path = "test dns expire", .short_help = "test dns expire ", .function = test_dns_expire_command_fn, }; /* *INDENT-ON* */ #endif void vnet_send_dns6_reply (vlib_main_t * vm, dns_main_t * dm, dns_pending_request_t * pr, dns_cache_entry_t * ep, vlib_buffer_t * b0) { clib_warning ("Unimplemented..."); } void vnet_send_dns4_reply (vlib_main_t * vm, dns_main_t * dm, dns_pending_request_t * pr, dns_cache_entry_t * ep, vlib_buffer_t * b0) { u32 bi = 0; ip4_address_t src_address; ip4_header_t *ip; udp_header_t *udp; dns_header_t *dh; vlib_frame_t *f; u32 *to_next; u8 *dns_response; u8 *reply; /* vl_api_dns_resolve_name_reply_t _rnr, *rnr = &_rnr; */ dns_resolve_name_t _rn, *rn = &_rn; vl_api_dns_resolve_ip_reply_t _rir, *rir = &_rir; u32 ttl = 64, tmp; u32 qp_offset; dns_query_t *qp; dns_rr_t *rr; u8 *rrptr; int is_fail = 0; int is_recycle = (b0 != 0); ASSERT (ep && ep->dns_response); if (pr->request_type == DNS_PEER_PENDING_NAME_TO_IP) { /* Quick and dirty way to dig up the A-record address. $$ FIXME */ clib_memset (rn, 0, sizeof (*rn)); if (vnet_dns_response_to_reply (ep->dns_response, rn, &ttl)) { /* clib_warning ("response_to_reply failed..."); */ is_fail = 1; } else if (ip_addr_version (&rn->address) != AF_IP4) { /* clib_warning ("No A-record..."); */ is_fail = 1; } } else if (pr->request_type == DNS_PEER_PENDING_IP_TO_NAME) { clib_memset (rir, 0, sizeof (*rir)); if (vnet_dns_response_to_name (ep->dns_response, rir, &ttl)) { /* clib_warning ("response_to_name failed..."); */ is_fail = 1; } } else { clib_warning ("Unknown request type %d", pr->request_type); return; } /* Initialize a buffer */ if (b0 == 0) { if (vlib_buffer_alloc (vm, &bi, 1) != 1) return; b0 = vlib_get_buffer (vm, bi); } else { /* Use the buffer we were handed. Reinitialize it... */ vlib_buffer_t bt = { }; /* push/pop the reference count */ u8 save_ref_count = b0->ref_count; vlib_buffer_copy_template (b0, &bt); b0->ref_count = save_ref_count; bi = vlib_get_buffer_index (vm, b0); } if (b0->flags & VLIB_BUFFER_NEXT_PRESENT) vlib_buffer_free_one (vm, b0->next_buffer); /* * Reset the buffer. We recycle the DNS request packet in the cache * hit case, and reply immediately from the request node. * * In the resolution-required / deferred case, resetting a freshly-allocated * buffer won't hurt. We hope. */ b0->flags |= (VNET_BUFFER_F_LOCALLY_ORIGINATED | VLIB_BUFFER_TOTAL_LENGTH_VALID); vnet_buffer (b0)->sw_if_index[VLIB_RX] = 0; /* "local0" */ vnet_buffer (b0)->sw_if_index[VLIB_TX] = 0; /* default VRF for now */ if (!ip4_sas (0 /* default VRF for now */, ~0, (const ip4_address_t *) &pr->dst_address, &src_address)) return; ip = vlib_buffer_get_current (b0); udp = (udp_header_t *) (ip + 1); dns_response = (u8 *) (udp + 1); clib_memset (ip, 0, sizeof (*ip) + sizeof (*udp)); /* * Start with the variadic portion of the exercise. * Turn the name into a set of DNS "labels". Max length * per label is 63, enforce that. */ reply = name_to_labels (pr->name); vec_free (pr->name); qp_offset = vec_len (reply); /* Add space for the query header */ vec_validate (reply, qp_offset + sizeof (dns_query_t) - 1); qp = (dns_query_t *) (reply + qp_offset); if (pr->request_type == DNS_PEER_PENDING_NAME_TO_IP) qp->type = clib_host_to_net_u16 (DNS_TYPE_A); else qp->type = clib_host_to_net_u16 (DNS_TYPE_PTR); qp->class = clib_host_to_net_u16 (DNS_CLASS_IN); /* Punch in space for the dns_header_t */ vec_insert (reply, sizeof (dns_header_t), 0); dh = (dns_header_t *) reply; /* Transaction ID = pool index */ dh->id = pr->id; /* Announce that we did a recursive lookup */ tmp = DNS_AA | DNS_RA | DNS_RD | DNS_OPCODE_QUERY | DNS_QR; if (is_fail) tmp |= DNS_RCODE_NAME_ERROR; dh->flags = clib_host_to_net_u16 (tmp); dh->qdcount = clib_host_to_net_u16 (1); dh->anscount = (is_fail == 0) ? clib_host_to_net_u16 (1) : 0; dh->nscount = 0; dh->arcount = 0; /* If the name resolution worked, cough up an appropriate RR */ if (is_fail == 0) { /* Add the answer. First, a name pointer (0xC00C) */ vec_add1 (reply, 0xC0); vec_add1 (reply, 0x0C); /* Now, add single A-rec RR */ if (pr->request_type == DNS_PEER_PENDING_NAME_TO_IP) { vec_add2 (reply, rrptr, sizeof (dns_rr_t) + sizeof (ip4_address_t)); rr = (dns_rr_t *) rrptr; rr->type = clib_host_to_net_u16 (DNS_TYPE_A); rr->class = clib_host_to_net_u16 (1 /* internet */ ); rr->ttl = clib_host_to_net_u32 (ttl); rr->rdlength = clib_host_to_net_u16 (sizeof (ip4_address_t)); ip_address_copy_addr (rr->rdata, &rn->address); } else { /* Or a single PTR RR */ u8 *vecname = format (0, "%s", rir->name); u8 *label_vec = name_to_labels (vecname); vec_free (vecname); vec_add2 (reply, rrptr, sizeof (dns_rr_t) + vec_len (label_vec)); rr = (dns_rr_t *) rrptr; rr->type = clib_host_to_net_u16 (DNS_TYPE_PTR); rr->class = clib_host_to_net_u16 (1 /* internet */ ); rr->ttl = clib_host_to_net_u32 (ttl); rr->rdlength = clib_host_to_net_u16 (vec_len (label_vec)); clib_memcpy (rr->rdata, label_vec, vec_len (label_vec)); vec_free (label_vec); } } clib_memcpy (dns_response, reply, vec_len (reply)); /* Set the packet length */ b0->current_length = sizeof (*ip) + sizeof (*udp) + vec_len (reply); /* IP header */ ip->ip_version_and_header_length = 0x45; ip->length = clib_host_to_net_u16 (vlib_buffer_length_in_chain (vm, b0)); ip->ttl = 255; ip->protocol = IP_PROTOCOL_UDP; ip->src_address.as_u32 = src_address.as_u32; clib_memcpy (ip->dst_address.as_u8, pr->dst_address, sizeof (ip4_address_t)); ip->checksum = ip4_header_checksum (ip); /* UDP header */ udp->src_port = clib_host_to_net_u16 (UDP_DST_PORT_dns); udp->dst_port = pr->dst_port; udp->length = clib_host_to_net_u16 (sizeof (udp_header_t) + vec_len (reply)); udp->checksum = 0; vec_free (reply); /* * Ship pkts made out of whole cloth to ip4_lookup * Caller will ship recycled dns reply packets to ip4_lookup */ if (is_recycle == 0) { f = vlib_get_frame_to_node (vm, ip4_lookup_node.index); to_next = vlib_frame_vector_args (f); to_next[0] = bi; f->n_vectors = 1; vlib_put_frame_to_node (vm, ip4_lookup_node.index, f); } } #include static clib_error_t * dns_init (vlib_main_t * vm) { dns_main_t *dm = &dns_main; dm->vnet_main = vnet_get_main (); dm->name_cache_size = 1000; dm->max_ttl_in_seconds = 86400; dm->random_seed = 0xDEADDABE; dm->api_main = vlibapi_get_main (); /* Ask for a correctly-sized block of API message decode slots */ dm->msg_id_base = setup_message_id_table (); return 0; } /* *INDENT-OFF* */ VLIB_INIT_FUNCTION (dns_init) = { .init_order = VLIB_INITS ("flow_classify_init", "dns_init"), }; VLIB_PLUGIN_REGISTER () = { .version = VPP_BUILD_VER, .description = "Simple DNS name resolver", }; /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */ pinfra/test_fpool.c?h=v23.10-rc0&id=05120fb1a12f05bb7a56e8af6276d34688bc5542'>logstatsplain
-rw-r--r--test_hash.c10643logstatsplain
-rw-r--r--test_heap.c4718logstatsplain
-rw-r--r--test_interrupt.c2080logstatsplain
-rw-r--r--test_longjmp.c3336logstatsplain
-rw-r--r--test_macros.c1632logstatsplain
-rw-r--r--test_maplog.c3116logstatsplain
-rw-r--r--test_pmalloc.c4513logstatsplain
-rw-r--r--test_pool_iterate.c2250logstatsplain
-rw-r--r--test_ptclosure.c3916logstatsplain
-rw-r--r--test_random.c5052logstatsplain
-rw-r--r--test_random_isaac.c3853logstatsplain
-rw-r--r--test_rwlock.c7325logstatsplain
-rw-r--r--test_serialize.c7822logstatsplain
-rw-r--r--test_socket.c3526logstatsplain
-rw-r--r--test_spinlock.c5549logstatsplain
-rw-r--r--test_time.c3060logstatsplain
-rw-r--r--test_time_range.c4700logstatsplain
-rw-r--r--test_tw_timer.c38791logstatsplain
-rw-r--r--test_valloc.c6186logstatsplain
-rw-r--r--test_vec.c26955logstatsplain
-rw-r--r--test_vec.h6071logstatsplain
-rw-r--r--time.c10798logstatsplain
-rw-r--r--time.h7893logstatsplain
-rw-r--r--time_range.c11071logstatsplain
-rw-r--r--time_range.h3091logstatsplain
-rw-r--r--timing_wheel.c20517logstatsplain
-rw-r--r--timing_wheel.h4564logstatsplain
-rw-r--r--tw_timer_16t_1w_2048sl.c823logstatsplain
-rw-r--r--tw_timer_16t_1w_2048sl.h1570logstatsplain
-rw-r--r--tw_timer_16t_2w_512sl.c822logstatsplain
-rw-r--r--tw_timer_16t_2w_512sl.h1570logstatsplain
-rw-r--r--tw_timer_1t_3w_1024sl_ov.c825logstatsplain
-rw-r--r--tw_timer_1t_3w_1024sl_ov.h1607logstatsplain
-rw-r--r--tw_timer_2t_1w_2048sl.c822logstatsplain
-rw-r--r--tw_timer_2t_1w_2048sl.h1566logstatsplain
-rw-r--r--tw_timer_2t_2w_512sl.c821logstatsplain
-rw-r--r--tw_timer_2t_2w_512sl.h1565logstatsplain
-rw-r--r--tw_timer_4t_3w_256sl.c821logstatsplain
-rw-r--r--tw_timer_4t_3w_256sl.h1560logstatsplain
-rw-r--r--tw_timer_4t_3w_4sl_ov.c937logstatsplain
-rw-r--r--tw_timer_4t_3w_4sl_ov.h1590logstatsplain
-rw-r--r--tw_timer_template.c24478logstatsplain
-rw-r--r--tw_timer_template.h7274logstatsplain
-rw-r--r--types.h6569logstatsplain
-rw-r--r--unformat.c22887logstatsplain
-rw-r--r--unix-formats.c10652logstatsplain
-rw-r--r--unix-misc.c5220logstatsplain
-rw-r--r--unix.h2413logstatsplain
-rw-r--r--unix_error.def5826logstatsplain
-rw-r--r--valloc.c9703logstatsplain
-rw-r--r--valloc.h2160logstatsplain
-rw-r--r--vec.c3884logstatsplain
-rw-r--r--vec.h41282logstatsplain
-rw-r--r--vec_bootstrap.h7691logstatsplain
-rw-r--r--vector.c2007logstatsplain
-rw-r--r--vector.h10785logstatsplain
d---------vector347logstatsplain
-rw-r--r--vector_altivec.h4445logstatsplain
-rw-r--r--vector_avx2.h11172logstatsplain
-rw-r--r--vector_avx512.h24436logstatsplain
-rw-r--r--vector_neon.h9082logstatsplain
-rw-r--r--vector_sse42.h14872logstatsplain
-rw-r--r--warnings.h3352logstatsplain
-rw-r--r--xxhash.h2952logstatsplain