summaryrefslogtreecommitdiff
path: root/src/shared/bpf-link.c
diff options
context:
space:
mode:
authorJulia Kartseva <hex@fb.com>2021-04-19 13:27:07 -0700
committerJulia Kartseva <hex@fb.com>2021-04-26 16:26:24 -0700
commit3d027d4d60d37de89eaebf2d106ec0c6a492db72 (patch)
tree990459a5cc332041be344612fe37312591244b0b /src/shared/bpf-link.c
parent8dd210ab666201a236890b17bc74032bf71d6f73 (diff)
downloadsystemd-3d027d4d60d37de89eaebf2d106ec0c6a492db72.tar.gz
shared, bpf: add bpf link serialization
core: serialize socket_bind bpf links
Diffstat (limited to 'src/shared/bpf-link.c')
-rw-r--r--src/shared/bpf-link.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/shared/bpf-link.c b/src/shared/bpf-link.c
index 94d1a8c7ac..f718cb7d2d 100644
--- a/src/shared/bpf-link.c
+++ b/src/shared/bpf-link.c
@@ -1,6 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1+ */
#include "bpf-link.h"
+#include "serialize.h"
bool can_link_bpf_program(struct bpf_program *prog) {
_cleanup_(bpf_link_freep) struct bpf_link *link = NULL;
@@ -14,6 +15,21 @@ bool can_link_bpf_program(struct bpf_program *prog) {
return libbpf_get_error(link) == -EBADF;
}
+int serialize_bpf_link(FILE *f, FDSet *fds, const char *key, struct bpf_link *link) {
+ int fd;
+
+ assert(key);
+
+ if (!link)
+ return -ENOENT;
+
+ if (libbpf_get_error(link) != 0)
+ return -EINVAL;
+
+ fd = bpf_link__fd(link);
+ return serialize_fd(f, fds, key, fd);
+}
+
struct bpf_link *bpf_link_free(struct bpf_link *link) {
/* bpf_link__destroy handles link == NULL case */
(void) bpf_link__destroy(link);