xdp_server
nsd.xdp.xdp_server.queue_count = 1;
nsd.xdp.xdp_server.queue_count = res;
if (nsd.child_count < nsd.xdp.xdp_server.queue_count) {
nsd.xdp.xdp_server.queue_count);
nsd.child_count = nsd.xdp.xdp_server.queue_count;
nsd.xdp.xdp_server.region = nsd.region;
nsd.xdp.xdp_server.interface_name = nsd.options->xdp_interface;
nsd.xdp.xdp_server.bpf_prog_filename = nsd.options->xdp_program_path;
nsd.xdp.xdp_server.bpf_prog_should_load = nsd.options->xdp_program_load;
nsd.xdp.xdp_server.bpf_bpffs_path = nsd.options->xdp_bpffs_path;
nsd.xdp.xdp_server.force_copy = nsd.options->xdp_force_copy;
nsd.xdp.xdp_server.nsd = &nsd;
if (xdp_server_init(&nsd.xdp.xdp_server)) {
struct xdp_server xdp_server;
struct xdp_server *server;
xdp_server_cleanup(&nsd->xdp.xdp_server);
struct xdp_server *xdp,
if ((int)nsd->xdp.xdp_server.queue_count <= nsd->this_child->child_num) {
nsd->xdp.xdp_server.queue_count,
nsd->xdp.xdp_server.interface_name);
nsd->xdp.xdp_server.queue_index = nsd->this_child->child_num;
nsd->xdp.xdp_server.queries = xdp_queries;
nsd->xdp.xdp_server.queue_index,
nsd->xdp.xdp_server.interface_name);
add_xdp_handler(nsd, &nsd->xdp.xdp_server, data);
static int load_xdp_program_and_map(struct xdp_server *xdp);
static void unload_xdp_program(struct xdp_server *xdp);
static int figure_ip_addresses(struct xdp_server *xdp);
static void add_ip_address(struct xdp_server *xdp,
static int dest_ip_allowed4(struct xdp_server *xdp, struct iphdr *ipv4);
static int dest_ip_allowed6(struct xdp_server *xdp, struct ipv6hdr *ipv6);
static int xdp_sockets_init(struct xdp_server *xdp);
static void xdp_sockets_cleanup(struct xdp_server *xdp);
process_packet(struct xdp_server *xdp,
static int load_xdp_program_and_map(struct xdp_server *xdp) {
xsk_configure_socket(struct xdp_server *xdp, struct xsk_socket_info *xsk_info,
static int xdp_sockets_init(struct xdp_server *xdp) {
static void xdp_sockets_cleanup(struct xdp_server *xdp) {
int xdp_server_init(struct xdp_server *xdp) {
void xdp_server_cleanup(struct xdp_server *xdp) {
static void unload_xdp_program(struct xdp_server *xdp) {
static int dest_ip_allowed6(struct xdp_server *xdp, struct ipv6hdr *ipv6) {
static int dest_ip_allowed4(struct xdp_server *xdp, struct iphdr *ipv4) {
add_ip_address(struct xdp_server *xdp, struct sockaddr_storage *addr) {
static int figure_ip_addresses(struct xdp_server *xdp) {
process_packet(struct xdp_server *xdp, uint8_t *pkt,
void xdp_handle_recv_and_send(struct xdp_server *xdp) {
static int xsk_configure_socket(struct xdp_server *xdp,
void xdp_server_cleanup(struct xdp_server *xdp);
void xdp_handle_recv_and_send(struct xdp_server *xdp);
int xdp_server_init(struct xdp_server *xdp);