Repository Structure

Last Update : 25 April, 2023 | Published : 21 April, 2023 | 2 Min Read
xdp_prog_func

The main function in the program is xdp_prog_func, which is the actual XDP hook function.

  • This function is executed whenever a packet passes through the XDP hook.

  • The function first retrieves the data record associated with the XDP_PASS action from the xdp_stats_map using the bpf_map_lookup_elem() function.

  • If the lookup is successful, the function increments the packet counter associated with the XDP_PASS action using an atomic add operation (lock_xadd()).



common_kern_user.h

The common_kern_user.h header file is used by both the kernel-side BPF programs and userspace programs to share common structures and definitions.

struct datarec

In this specific case, the struct datarec is defined in common_kern_user.h as a data record that will be stored in a BPF map.

  • It has a single field rx_packets of type __u64, which is an unsigned 64-bit integer that represents the number of received packets.
XDP_ACTION_MAX

The XDP_ACTION_MAX is also defined in common_kern_user.h and represents the maximum number of actions that can be performed by an XDP (eXpress Data Path) program.

  • It is defined as XDP_REDIRECT + 1, where XDP_REDIRECT .
  • XDP_REDIRECT is a predefined constant that represents the maximum value of the enum xdp_action enumeration, which is an enum used to define different actions that can be taken by an XDP (eXpress Data Path) program in the Linux kernel.
enum xdp_action {
	XDP_ABORTED = 0,
	XDP_DROP,
	XDP_PASS,
	XDP_TX,
	XDP_REDIRECT,
};
  • In the provided code, the value of XDP_REDIRECT is used as the maximum number of entries in the xdp_stats_map BPF array map, which is used to store statistics for each possible XDP action.
  • By setting XDP_REDIRECT + 1 as the maximum number of entries, the xdp_stats_map array map will have enough space to store statistics for all possible XDP actions, including XDP_REDIRECT.
  • Therefore, the value of XDP_REDIRECT is used to determine the size of the array map and ensure that it has enough entries to accommodate all possible actions.

Looking for Cloud-Native Talent?
Let us make your life easy!

We heard the pain of building the Talent, keeping up with Concepts, Culture, Technology and Tools. We have been there! Hence, we built the new Ai-based automated solution to solve the problems for everyone.

Contact Us