chiark / gitweb /
sd-rtnl:introduce table-based lookup and typesafe read() functions
[elogind.git] / src / libsystemd / sd-rtnl / rtnl-internal.h
index 0667be58380499112c3c34328089026f549e9056..0c17d94c59cdd0df4657214511350eb33ee5d511 100644 (file)
@@ -94,7 +94,8 @@ struct sd_rtnl_message {
         size_t container_offsets[RTNL_CONTAINER_DEPTH]; /* offset from hdr to each container's start */
         unsigned n_containers; /* number of containers */
         size_t next_rta_offset; /* offset from hdr to next rta */
-
+        size_t *rta_offset_tb;
+        unsigned short rta_tb_size;
         bool sealed:1;
 };
 
@@ -103,6 +104,14 @@ int message_new(sd_rtnl *rtnl, sd_rtnl_message **ret, size_t initial_size);
 int socket_write_message(sd_rtnl *nl, sd_rtnl_message *m);
 int socket_read_message(sd_rtnl *nl, sd_rtnl_message **ret);
 
+int rtnl_message_read_internal(sd_rtnl_message *m, unsigned short type, void **data);
+int rtnl_message_parse(sd_rtnl_message *m,
+                       size_t **rta_offset_tb,
+                       unsigned short *rta_tb_size,
+                       int max,
+                       struct rtattr *rta,
+                       unsigned int rt_len);
+
 /* Make sure callbacks don't destroy the rtnl connection */
 #define RTNL_DONT_DESTROY(rtnl) \
         _cleanup_rtnl_unref_ _unused_ sd_rtnl *_dont_destroy_##rtnl = sd_rtnl_ref(rtnl)