+ assert_return(!m->current_container, -EINVAL);
+
+ sd_rtnl_message_get_type(m, &rtm_type);
+
+ switch (rtm_type) {
+ case RTM_NEWLINK:
+ case RTM_SETLINK:
+ case RTM_GETLINK:
+ case RTM_DELLINK:
+ if (type == IFLA_LINKINFO)
+ return add_rtattr(m, type, NULL, 0);
+ else
+ return -ENOTSUP;
+ default:
+ return -ENOTSUP;
+ }
+
+ return 0;
+}
+
+int sd_rtnl_message_close_container(sd_rtnl_message *m) {
+ assert_return(m, -EINVAL);
+ assert_return(m->current_container, -EINVAL);
+
+ m->current_container = NULL;
+
+ return 0;
+}
+
+static int message_read(sd_rtnl_message *m, unsigned short *type, void **data) {
+ uint16_t rtm_type;
+ int r;
+
+ assert(m);
+ assert(m->next_rta);
+ assert(type);
+ assert(data);