blob: 70eba28a9d8adb2de47487b3061e7a105a9ef241 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#ifndef XDP_MANIP_H
#define XDP_MANIP_H 1
#include <linux/if_ether.h>
#include <linux/ip.h>
#include <linux/udp.h>
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
|