eBPF for Windows
bpf.h File Reference

Go to the source code of this file.

Functions

Link-related functions
int bpf_link_detach (int link_fd)
 Detach a link. More...
 
int bpf_link_get_fd_by_id (__u32 id)
 Get a file descriptor referring to a link with a given ID. More...
 
int bpf_link_get_next_id (__u32 start_id, __u32 *next_id)
 Look for the next link ID greater than a given ID. More...
 
Map-related functions
int bpf_create_map (enum bpf_map_type map_type, int key_size, int value_size, int max_entries, __u32 map_flags)
 Create a new map. More...
 
int bpf_create_map_xattr (const struct bpf_create_map_attr *create_attr)
 Create a new map. More...
 
int bpf_map_delete_elem (int fd, const void *key)
 Look up and delete an element by key in a specified map. More...
 
int bpf_map_get_fd_by_id (__u32 id)
 Get a file descriptor referring to a map with a given ID. More...
 
int bpf_map_get_next_id (__u32 start_id, __u32 *next_id)
 Look for the next map ID greater than a given ID. More...
 
int bpf_map_get_next_key (int fd, const void *key, void *next_key)
 Look up an element by key in a map and get the next key. If the specific key is not found, the first key in the map is passed back. More...
 
int bpf_map_lookup_elem (int fd, const void *key, void *value)
 Look up an element by key in a specified map and return its value. More...
 
int bpf_map_update_elem (int fd, const void *key, const void *value, __u64 flags)
 Create or update an element (key/value pair) in a specified map. More...
 
Object-related functions
int bpf_obj_get (const char *pathname)
 Get a file descriptor for a pinned object by pin path. More...
 
int bpf_obj_get_info_by_fd (int bpf_fd, void *info, __u32 *info_len)
 Obtain information about the eBPF object referred to by bpf_fd. This function populates up to info_len bytes of info, which will be in one of the following formats depending on the eBPF object type of bpf_fd: More...
 
int bpf_obj_pin (int fd, const char *pathname)
 Pin an eBPF program or map referred to by fd to the provided pathname. More...
 
Program-related functions
int bpf_prog_get_fd_by_id (__u32 id)
 Get a file descriptor referring to a program with a given ID. More...
 
int bpf_prog_get_next_id (__u32 start_id, __u32 *next_id)
 Look for the next program ID greater than a given ID. More...
 

Function Documentation

◆ bpf_create_map()

int bpf_create_map ( enum bpf_map_type  map_type,
int  key_size,
int  value_size,
int  max_entries,
__u32  map_flags 
)

Create a new map.

Parameters
[in]map_typeType of map to create.
[in]key_sizeSize in bytes of keys.
[in]value_sizeSize in bytes of values.
[in]max_entriesMaximum number of entries in the map.
[in]map_flagsFlags (currently 0).
Returns
A new file descriptor that refers to the map. A negative value indicates an error occurred and errno was set.
Exceptions
EINVALAn invalid argument was provided.
ENOMEMOut of memory.

◆ bpf_create_map_xattr()

int bpf_create_map_xattr ( const struct bpf_create_map_attr *  create_attr)

Create a new map.

Parameters
[in]create_attrStructure of attributes using which a map gets created.
Returns
A new file descriptor that refers to the map. A negative value indicates an error occurred and errno was set.
Exceptions
EINVALAn invalid argument was provided.
ENOMEMOut of memory.

◆ bpf_link_detach()

int bpf_link_detach ( int  link_fd)

Detach a link.

Parameters
[in]link_fdFile descriptor of link to detach.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
EBADFThe file descriptor was not found.
See also
bpf_link__destroy
bpf_link__disconnect

◆ bpf_link_get_fd_by_id()

int bpf_link_get_fd_by_id ( __u32  id)

Get a file descriptor referring to a link with a given ID.

Parameters
[in]idID of link to find.
Returns
A new file descriptor that refers to the link. A negative value indicates an error occurred and errno was set.
Exceptions
ENOENTNo link with the specified ID was found.

◆ bpf_link_get_next_id()

int bpf_link_get_next_id ( __u32  start_id,
__u32 next_id 
)

Look for the next link ID greater than a given ID.

Parameters
[in]start_idID to look for an ID after. The start_id need not exist.
[out]next_idPointer to where to write the next ID.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
ENOENTNo more IDs found.

◆ bpf_map_delete_elem()

int bpf_map_delete_elem ( int  fd,
const void *  key 
)

Look up and delete an element by key in a specified map.

Parameters
[in]fdFile descriptor of map to update.
[in]keyPointer to key to look up.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
EINVALAn invalid argument was provided.
EBADFThe file descriptor was not found.
ENOMEMOut of memory.

◆ bpf_map_get_fd_by_id()

int bpf_map_get_fd_by_id ( __u32  id)

Get a file descriptor referring to a map with a given ID.

Parameters
[in]idID of map to find.
Returns
A new file descriptor that refers to the map. A negative value indicates an error occurred and errno was set.
Exceptions
ENOENTNo map with the specified ID was found.

◆ bpf_map_get_next_id()

int bpf_map_get_next_id ( __u32  start_id,
__u32 next_id 
)

Look for the next map ID greater than a given ID.

Parameters
[in]start_idID to look for an ID after. The start_id need not exist.
[out]next_idPointer to where to write the next ID.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
ENOENTNo more IDs found.

◆ bpf_map_get_next_key()

int bpf_map_get_next_key ( int  fd,
const void *  key,
void *  next_key 
)

Look up an element by key in a map and get the next key. If the specific key is not found, the first key in the map is passed back.

Parameters
[in]fdFile descriptor of map.
[in]keyPointer to key to look up.
[out]next_keyPointer to memory in which to write the next key.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
EINVALAn invalid argument was provided.
EBADFThe file descriptor was not found.
ENOMEMOut of memory.

◆ bpf_map_lookup_elem()

int bpf_map_lookup_elem ( int  fd,
const void *  key,
void *  value 
)

Look up an element by key in a specified map and return its value.

Parameters
[in]fdFile descriptor of map.
[in]keyPointer to key to look up.
[out]valuePointer to memory in which to write the value.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
EINVALAn invalid argument was provided.
EBADFThe file descriptor was not found.
ENOMEMOut of memory.

◆ bpf_map_update_elem()

int bpf_map_update_elem ( int  fd,
const void *  key,
const void *  value,
__u64  flags 
)

Create or update an element (key/value pair) in a specified map.

Parameters
[in]fdFile descriptor of map.
[in]keyPointer to key.
[in]valuePointer to value.
[in]flagsFlags (currently 0).
Exceptions
EINVALAn invalid argument was provided.
EBADFThe file descriptor was not found.
ENOMEMOut of memory.

◆ bpf_obj_get()

int bpf_obj_get ( const char *  pathname)

Get a file descriptor for a pinned object by pin path.

Parameters
[in]pathPin path for the object.
Returns
file descriptor for the pinned object, or -1 if not found.

◆ bpf_obj_get_info_by_fd()

int bpf_obj_get_info_by_fd ( int  bpf_fd,
void *  info,
__u32 info_len 
)

Obtain information about the eBPF object referred to by bpf_fd. This function populates up to info_len bytes of info, which will be in one of the following formats depending on the eBPF object type of bpf_fd:

Parameters
[in]bpf_fdFile descriptor referring to an eBPF object.
[out]infoPointer to memory in which to write the info obtained.
[in,out]info_lenOn input, contains the maximum number of bytes to write into the info. On output, contains the actual number of bytes written.
Return values
0The operation was successful.
<0An error occured, and errno was set.

◆ bpf_obj_pin()

int bpf_obj_pin ( int  fd,
const char *  pathname 
)

Pin an eBPF program or map referred to by fd to the provided pathname.

Parameters
[in]fdFile descriptor referring to the program or map to pin.
[in]pathnamePath name to pin the object to.
Return values
0The operation was successful.
<0An error occured, and errno was set.

◆ bpf_prog_get_fd_by_id()

int bpf_prog_get_fd_by_id ( __u32  id)

Get a file descriptor referring to a program with a given ID.

Parameters
[in]idID of program to find.
Returns
A new file descriptor that refers to the program. A negative value indicates an error occurred and errno was set.
Exceptions
ENOENTNo program with the specified ID was found.

◆ bpf_prog_get_next_id()

int bpf_prog_get_next_id ( __u32  start_id,
__u32 next_id 
)

Look for the next program ID greater than a given ID.

Parameters
[in]start_idID to look for an ID after. The start_id need not exist.
[out]next_idPointer to where to write the next ID.
Return values
0The operation was successful.
<0An error occured, and errno was set.
Exceptions
ENOENTNo more IDs found.