chiark / gitweb /
sd-netlink: make NLTypeSystem internal
authorDavid Herrmann <dh.herrmann@gmail.com>
Tue, 23 Jun 2015 09:07:59 +0000 (11:07 +0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 09:04:18 +0000 (10:04 +0100)
Same as NLType, move NLTypeSystem into netlink-types.c and hide it from
the outside. Provide an accessor function for the 'max' field that is used
to allocate suitable array sizes.

Note that this will probably be removed later on, anyway. Once we support
bigger type-systems, it just seems impractical to allocate such big arrays
for each container entry. An RBTree would probably do just fine.

src/libsystemd/sd-netlink/netlink-message.c
src/libsystemd/sd-netlink/netlink-types.c
src/libsystemd/sd-netlink/netlink-types.h

index 1780585f0854e20eaa3b47c86b10d696377bbbfe..1245371f7bab415693a616c0bf964c9c1a8fba4d 100644 (file)
@@ -754,7 +754,7 @@ int sd_netlink_message_enter_container(sd_netlink_message *m, unsigned short typ
         r = rtnl_message_parse(m,
                                &m->rta_offset_tb[m->n_containers],
                                &m->rta_tb_size[m->n_containers],
-                               type_system->max,
+                               type_system_get_max(type_system),
                                container,
                                size);
         if (r < 0) {
@@ -890,7 +890,7 @@ int sd_netlink_message_rewind(sd_netlink_message *m) {
                 r = rtnl_message_parse(m,
                                        &m->rta_offset_tb[m->n_containers],
                                        &m->rta_tb_size[m->n_containers],
-                                       type_system->max,
+                                       type_system_get_max(type_system),
                                        (struct rtattr*)((uint8_t*)NLMSG_DATA(m->hdr) + NLMSG_ALIGN(size)),
                                        NLMSG_PAYLOAD(m->hdr, size));
                 if (r < 0)
index 7715ff8a444982198c847c1d46446843d5402881..70dbd4f8dcc8aaf043a87b50be71d234f2669d1c 100644 (file)
@@ -46,6 +46,11 @@ struct NLType {
         const NLTypeSystemUnion *type_system_union;
 };
 
+struct NLTypeSystem {
+        uint16_t max;
+        const NLType *types;
+};
+
 static const NLTypeSystem rtnl_link_type_system;
 
 static const NLType rtnl_link_info_data_veth_types[VETH_INFO_MAX + 1] = {
@@ -495,6 +500,11 @@ void type_get_type_system_union(const NLType *nl_type, const NLTypeSystemUnion *
         *ret = nl_type->type_system_union;
 }
 
+uint16_t type_system_get_max(const NLTypeSystem *type_system) {
+        assert(type_system);
+        return type_system->max;
+}
+
 int type_system_get_type(const NLTypeSystem *type_system, const NLType **ret, uint16_t type) {
         const NLType *nl_type;
 
index cb6a78fb3ebd38f28fff397dd219147361246a4c..c11bdbdf4c289837720edf69323dd26a9a8438e1 100644 (file)
@@ -53,15 +53,12 @@ struct NLTypeSystemUnion {
         const NLTypeSystem *type_systems;
 };
 
-struct NLTypeSystem {
-        uint16_t max;
-        const NLType *types;
-};
-
 uint16_t type_get_type(const NLType *type);
 size_t type_get_size(const NLType *type);
 void type_get_type_system(const NLType *type, const NLTypeSystem **ret);
 void type_get_type_system_union(const NLType *type, const NLTypeSystemUnion **ret);
+
+uint16_t type_system_get_max(const NLTypeSystem *type_system);
 int type_system_get_type(const NLTypeSystem *type_system, const NLType **ret, uint16_t type);
 int type_system_get_type_system(const NLTypeSystem *type_system, const NLTypeSystem **ret, uint16_t type);
 int type_system_get_type_system_union(const NLTypeSystem *type_system, const NLTypeSystemUnion **ret, uint16_t type);