summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2023-12-04 19:31:03 +0000
committerFelix Fietkau2023-12-05 09:27:55 +0000
commita296f1bac4302c2102a0d2fd1e825c4dadddf0f4 (patch)
tree9b4640b64aa14aca85d5e78ee1f282781c45064c
parente259bbd49cf7b074a2ade5e62351e4e8f5fd76aa (diff)
downloadudebug-a296f1bac4302c2102a0d2fd1e825c4dadddf0f4.tar.gz
lib: add netlink handler function
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--lib.c21
-rw-r--r--udebug.h2
2 files changed, 23 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 0bb287e..55a272a 100644
--- a/lib.c
+++ b/lib.c
@@ -150,6 +150,27 @@ void udebug_ubus_apply_config(struct udebug *ud, struct udebug_ubus_ring *rings,
}
}
+void udebug_netlink_msg(struct udebug_buf *buf, uint16_t proto, const void *data, size_t len)
+{
+ struct {
+ uint16_t pkttype;
+ uint16_t arphdr;
+ uint16_t _pad[5];
+ uint16_t proto;
+ } hdr = {
+ .arphdr = cpu_to_be16(824),
+ .proto = cpu_to_be16(proto),
+ };
+
+ if (!udebug_buf_valid(buf))
+ return;
+
+ udebug_entry_init(buf);
+ udebug_entry_append(buf, &hdr, sizeof(hdr));
+ udebug_entry_append(buf, data, len);
+ udebug_entry_add(buf);
+}
+
void udebug_ubus_init(struct udebug_ubus *ctx, struct ubus_context *ubus,
const char *service, udebug_config_cb cb)
{
diff --git a/udebug.h b/udebug.h
index ae48837..88f663b 100644
--- a/udebug.h
+++ b/udebug.h
@@ -19,6 +19,8 @@ struct udebug_ubus {
udebug_config_cb cb;
};
+void udebug_netlink_msg(struct udebug_buf *buf, uint16_t proto, const void *data, size_t len);
+
void udebug_ubus_init(struct udebug_ubus *ctx, struct ubus_context *ubus,
const char *service, udebug_config_cb cb);
void udebug_ubus_ring_init(struct udebug *ud, struct udebug_ubus_ring *ring);