#ifndef XDP_MANIP_H #define XDP_MANIP_H 1 #include #include #include static __always_inline void swap_eth_addr(struct ethhdr *const ethhdr) { unsigned char src_eth[ETH_ALEN]; __builtin_memcpy(src_eth, ethhdr->h_source, sizeof(ethhdr->h_source)); __builtin_memcpy(ethhdr->h_source, ethhdr->h_dest, sizeof(ethhdr->h_source)); __builtin_memcpy(ethhdr->h_dest, src_eth, sizeof(src_eth)); } static __always_inline void swap_ip4_addr(struct iphdr *const iphdr) { __be32 src_ip = iphdr->saddr; iphdr->saddr = iphdr->daddr; iphdr->daddr = src_ip; } static __always_inline void swap_udp_port(struct udphdr *const udphdr) { __be16 src_port = udphdr->source; udphdr->source = udphdr->dest; udphdr->dest = src_port; } #endif