Mode | Name | Size | |
-rw-r--r-- | CMakeLists.txt | 5824 | logstatsplain |
-rw-r--r-- | FEATURE.yaml | 2071 | logstatsplain |
-rw-r--r-- | asm_mips.h | 10683 | logstatsplain |
-rw-r--r-- | asm_x86.c | 43781 | logstatsplain |
-rw-r--r-- | asm_x86.h | 3019 | logstatsplain |
-rw-r--r-- | atomics.h | 3432 | logstatsplain |
-rw-r--r-- | backtrace.c | 6937 | logstatsplain |
-rw-r--r-- | bihash_12_4.h | 1929 | logstatsplain |
-rw-r--r-- | bihash_16_8.h | 2534 | logstatsplain |
-rw-r--r-- | bihash_16_8_32.h | 2554 | logstatsplain |
-rw-r--r-- | bihash_24_16.h | 2808 | logstatsplain |
-rw-r--r-- | bihash_24_8.h | 2744 | logstatsplain |
-rw-r--r-- | bihash_32_8.h | 3024 | logstatsplain |
-rw-r--r-- | bihash_40_8.h | 3069 | logstatsplain |
-rw-r--r-- | bihash_48_8.h | 3199 | logstatsplain |
-rw-r--r-- | bihash_8_16.h | 2922 | logstatsplain |
-rw-r--r-- | bihash_8_8.h | 2848 | logstatsplain |
-rw-r--r-- | bihash_8_8_stats.h | 2961 | logstatsplain |
-rw-r--r-- | bihash_all_vector.c | 1502 | logstatsplain |
-rw-r--r-- | bihash_doc.h | 10086 | logstatsplain |
-rw-r--r-- | bihash_template.c | 33253 | logstatsplain |
-rw-r--r-- | bihash_template.h | 15006 | logstatsplain |
-rw-r--r-- | bihash_vec8_8.h | 3279 | logstatsplain |
-rw-r--r-- | bitmap.c | 3672 | logstatsplain |
-rw-r--r-- | bitmap.h | 21036 | logstatsplain |
-rw-r--r-- | bitops.h | 5462 | logstatsplain |
-rw-r--r-- | byte_order.h | 5356 | logstatsplain |
-rw-r--r-- | cJSON.c | 78105 | logstatsplain |
-rw-r--r-- | cJSON.h | 16010 | logstatsplain |
-rw-r--r-- | cache.h | 4417 | logstatsplain |
-rw-r--r-- | callback.h | 4682 | logstatsplain |
-rw-r--r-- | callback_data.h | 14450 | logstatsplain |
-rw-r--r-- | clib.h | 9449 | logstatsplain |
-rw-r--r-- | clib_error.h | 937 | logstatsplain |
-rw-r--r-- | config.h.in | 882 | logstatsplain |
-rw-r--r-- | cpu.c | 10280 | logstatsplain |
-rw-r--r-- | cpu.h | 13152 | logstatsplain |
-rw-r--r-- | crc32.h | 2418 | logstatsplain |
-rw-r--r-- | dir.dox | 743 | logstatsplain |
-rw-r--r-- | dlist.h | 3581 | logstatsplain |
-rw-r--r-- | dlmalloc.c | 167028 | logstatsplain |
-rw-r--r-- | dlmalloc.h | 63287 | logstatsplain |
-rw-r--r-- | elf.c | 46523 | logstatsplain |
-rw-r--r-- | elf.h | 33165 | logstatsplain |
-rw-r--r-- | elf_clib.c | 8368 | logstatsplain |
-rw-r--r-- | elf_clib.h | 4270 | logstatsplain |
-rw-r--r-- | elog.c | 28972 | logstatsplain |
-rw-r--r-- | elog.h | 17187 | logstatsplain |
-rw-r--r-- | error.c | 6377 | logstatsplain |
-rw-r--r-- | error.h | 5902 | logstatsplain |
-rw-r--r-- | error_bootstrap.h | 4730 | logstatsplain |
-rw-r--r-- | fifo.c | 3960 | logstatsplain |
-rw-r--r-- | fifo.h | 9723 | logstatsplain |
-rw-r--r-- | file.h | 4943 | logstatsplain |
-rw-r--r-- | format.c | 16140 | logstatsplain |
-rw-r--r-- | format.h | 9901 | logstatsplain |
-rw-r--r-- | format_table.c | 7588 | logstatsplain |
-rw-r--r-- | format_table.h | 3313 | logstatsplain |
-rw-r--r-- | hash.c | 21380 | logstatsplain |
-rw-r--r-- | hash.h | 26237 | logstatsplain |
-rw-r--r-- | heap.c | 18194 | logstatsplain |
-rw-r--r-- | heap.h | 8558 | logstatsplain |
-rw-r--r-- | interrupt.c | 2498 | logstatsplain |
-rw-r--r-- | interrupt.h | 3612 | logstatsplain |
-rw-r--r-- | jsonformat.c | 13370 | logstatsplain |
-rw-r--r-- | jsonformat.h | 4829 | logstatsplain |
-rw-r--r-- | lb_hash_hash.h | 1794 | logstatsplain |
d--------- | linux | 173 | logstatsplain |
-rw-r--r-- | llist.h | 9916 | logstatsplain |
-rw-r--r-- | lock.h | 4984 | logstatsplain |
-rw-r--r-- | longjmp.S | 19971 | logstatsplain |
-rw-r--r-- | longjmp.h | 3995 | logstatsplain |
-rw-r--r-- | macros.c | 7138 | logstatsplain |
-rw-r--r-- | macros.h | 1728 | logstatsplain |
-rw-r--r-- | maplog.c | 13651 | logstatsplain |
-rw-r--r-- | maplog.h | 6058 | logstatsplain |
-rw-r--r-- | math.h | 2193 | logstatsplain |
-rw-r--r-- | mem.c | 2670 | logstatsplain |
-rw-r--r-- | mem.h | 14426 | logstatsplain |
-rw-r--r-- | mem_bulk.c | 6427 | logstatsplain |
-rw-r--r-- | mem_dlmalloc.c | 21485 | logstatsplain |
-rw-r--r-- | memcpy.h | 4300 | logstatsplain |
-rw-r--r-- | memcpy_x86_64.h | 15102 | logstatsplain |
-rw-r--r-- | mhash.c | 10404 | logstatsplain |
-rw-r--r-- | mhash.h | 4941 | logstatsplain |
-rw-r--r-- | mpcap.c | 6422 | logstatsplain |
-rw-r--r-- | mpcap.h | 4786 | logstatsplain |
-rw-r--r-- | os.h | 3061 | logstatsplain |
-rw-r--r-- | pcap.c | 6609 | logstatsplain |
-rw-r--r-- | pcap.h | 6101 | logstatsplain |
-rw-r--r-- | pcap_funcs.h | 1808 | logstatsplain |
d--------- | perfmon | 165 | logstatsplain |
-rw-r--r-- | pmalloc.c | 18548 | logstatsplain |
-rw-r--r-- | pmalloc.h | 4212 | logstatsplain |
-rw-r--r-- | pool.c | 2602 | logstatsplain |
-rw-r--r-- | pool.h | 18127 | logstatsplain |
-rw-r--r-- | ptclosure.c | 2428 | logstatsplain |
-rw-r--r-- | ptclosure.h | 1143 | logstatsplain |
-rw-r--r-- | random.c | 3331 | logstatsplain |
-rw-r--r-- | random.h | 4858 | logstatsplain |
-rw-r--r-- | random_buffer.c | 2590 | logstatsplain |
-rw-r--r-- | random_buffer.h | 3831 | logstatsplain |
-rw-r--r-- | random_isaac.c | 11782 | logstatsplain |
-rw-r--r-- | random_isaac.h | 2986 | logstatsplain |
-rw-r--r-- | rbtree.c | 11450 | logstatsplain |
-rw-r--r-- | rbtree.h | 3215 | logstatsplain |
-rw-r--r-- | ring.h | 3037 | logstatsplain |
-rw-r--r-- | serialize.c | 30569 | cache_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.c | 10643 | logstatsplain |
-rw-r--r-- | test_heap.c | 4718 | logstatsplain |
-rw-r--r-- | test_interrupt.c | 2080 | logstatsplain |
-rw-r--r-- | test_longjmp.c | 3336 | logstatsplain |
-rw-r--r-- | test_macros.c | 1632 | logstatsplain |
-rw-r--r-- | test_maplog.c | 3116 | logstatsplain |
-rw-r--r-- | test_pmalloc.c | 4513 | logstatsplain |
-rw-r--r-- | test_pool_iterate.c | 2250 | logstatsplain |
-rw-r--r-- | test_ptclosure.c | 3916 | logstatsplain |
-rw-r--r-- | test_random.c | 5052 | logstatsplain |
-rw-r--r-- | test_random_isaac.c | 3853 | logstatsplain |
-rw-r--r-- | test_rwlock.c | 7325 | logstatsplain |
-rw-r--r-- | test_serialize.c | 7822 | logstatsplain |
-rw-r--r-- | test_socket.c | 3526 | logstatsplain |
-rw-r--r-- | test_spinlock.c | 5549 | logstatsplain |
-rw-r--r-- | test_time.c | 3060 | logstatsplain |
-rw-r--r-- | test_time_range.c | 4700 | logstatsplain |
-rw-r--r-- | test_tw_timer.c | 38791 | logstatsplain |
-rw-r--r-- | test_valloc.c | 6186 | logstatsplain |
-rw-r--r-- | test_vec.c | 26955 | logstatsplain |
-rw-r--r-- | test_vec.h | 6071 | logstatsplain |
-rw-r--r-- | time.c | 10798 | logstatsplain |
-rw-r--r-- | time.h | 7893 | logstatsplain |
-rw-r--r-- | time_range.c | 11071 | logstatsplain |
-rw-r--r-- | time_range.h | 3091 | logstatsplain |
-rw-r--r-- | timing_wheel.c | 20517 | logstatsplain |
-rw-r--r-- | timing_wheel.h | 4564 | logstatsplain |
-rw-r--r-- | tw_timer_16t_1w_2048sl.c | 823 | logstatsplain |
-rw-r--r-- | tw_timer_16t_1w_2048sl.h | 1570 | logstatsplain |
-rw-r--r-- | tw_timer_16t_2w_512sl.c | 822 | logstatsplain |
-rw-r--r-- | tw_timer_16t_2w_512sl.h | 1570 | logstatsplain |
-rw-r--r-- | tw_timer_1t_3w_1024sl_ov.c | 825 | logstatsplain |
-rw-r--r-- | tw_timer_1t_3w_1024sl_ov.h | 1607 | logstatsplain |
-rw-r--r-- | tw_timer_2t_1w_2048sl.c | 822 | logstatsplain |
-rw-r--r-- | tw_timer_2t_1w_2048sl.h | 1566 | logstatsplain |
-rw-r--r-- | tw_timer_2t_2w_512sl.c | 821 | logstatsplain |
-rw-r--r-- | tw_timer_2t_2w_512sl.h | 1565 | logstatsplain |
-rw-r--r-- | tw_timer_4t_3w_256sl.c | 821 | logstatsplain |
-rw-r--r-- | tw_timer_4t_3w_256sl.h | 1560 | logstatsplain |
-rw-r--r-- | tw_timer_4t_3w_4sl_ov.c | 937 | logstatsplain |
-rw-r--r-- | tw_timer_4t_3w_4sl_ov.h | 1590 | logstatsplain |
-rw-r--r-- | tw_timer_template.c | 24478 | logstatsplain |
-rw-r--r-- | tw_timer_template.h | 7274 | logstatsplain |
-rw-r--r-- | types.h | 6569 | logstatsplain |
-rw-r--r-- | unformat.c | 22887 | logstatsplain |
-rw-r--r-- | unix-formats.c | 10652 | logstatsplain |
-rw-r--r-- | unix-misc.c | 5220 | logstatsplain |
-rw-r--r-- | unix.h | 2413 | logstatsplain |
-rw-r--r-- | unix_error.def | 5826 | logstatsplain |
-rw-r--r-- | valloc.c | 9703 | logstatsplain |
-rw-r--r-- | valloc.h | 2160 | logstatsplain |
-rw-r--r-- | vec.c | 3884 | logstatsplain |
-rw-r--r-- | vec.h | 41282 | logstatsplain |
-rw-r--r-- | vec_bootstrap.h | 7691 | logstatsplain |
-rw-r--r-- | vector.c | 2007 | logstatsplain |
-rw-r--r-- | vector.h | 10785 | logstatsplain |
d--------- | vector | 347 | logstatsplain |
-rw-r--r-- | vector_altivec.h | 4445 | logstatsplain |
-rw-r--r-- | vector_avx2.h | 11172 | logstatsplain |
-rw-r--r-- | vector_avx512.h | 24436 | logstatsplain |
-rw-r--r-- | vector_neon.h | 9082 | logstatsplain |
-rw-r--r-- | vector_sse42.h | 14872 | logstatsplain |
-rw-r--r-- | warnings.h | 3352 | logstatsplain |
-rw-r--r-- | xxhash.h | 2952 | logstatsplain |