diff options
| author | Felix Fietkau | 2023-12-04 19:31:03 +0000 |
|---|---|---|
| committer | Felix Fietkau | 2023-12-05 09:27:55 +0000 |
| commit | a296f1bac4302c2102a0d2fd1e825c4dadddf0f4 (patch) | |
| tree | 9b4640b64aa14aca85d5e78ee1f282781c45064c | |
| parent | e259bbd49cf7b074a2ade5e62351e4e8f5fd76aa (diff) | |
| download | udebug-a296f1bac4302c2102a0d2fd1e825c4dadddf0f4.tar.gz | |
lib: add netlink handler function
Signed-off-by: Felix Fietkau <nbd@nbd.name>
| -rw-r--r-- | lib.c | 21 | ||||
| -rw-r--r-- | udebug.h | 2 |
2 files changed, 23 insertions, 0 deletions
@@ -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) { @@ -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); |