SHA256
1
0
forked from pool/systemd
systemd/513-nspawn-veth.patch

40 lines
1.9 KiB
Diff
Raw Normal View History

diff -Naur systemd-210/src/libsystemd/sd-rtnl/rtnl-message.c systemd-210.mod/src/libsystemd/sd-rtnl/rtnl-message.c
--- systemd-210/src/libsystemd/sd-rtnl/rtnl-message.c 2014-11-19 13:10:23.998310815 +0100
+++ systemd-210.mod/src/libsystemd/sd-rtnl/rtnl-message.c 2014-12-08 12:03:18.059734333 +0100
@@ -722,6 +722,7 @@
int sd_rtnl_message_open_container(sd_rtnl_message *m, unsigned short type) {
uint16_t rtm_type;
+ int r;
assert_return(m, -EINVAL);
assert_return(!m->sealed, -EPERM);
@@ -729,15 +730,21 @@
sd_rtnl_message_get_type(m, &rtm_type);
if (rtnl_message_type_is_link(rtm_type)) {
-
if ((type == IFLA_LINKINFO && m->n_containers == 0) ||
(type == IFLA_INFO_DATA && m->n_containers == 1 &&
- GET_CONTAINER(m, 0)->rta_type == IFLA_LINKINFO))
- return add_rtattr(m, type, NULL, 0);
- else if (type == VETH_INFO_PEER && m->n_containers == 2 &&
+ GET_CONTAINER(m, 0)->rta_type == IFLA_LINKINFO)) {
+ r = add_rtattr(m, type, NULL, 0);
+ if ( r > 0)
+ m->container_offsets[m->n_containers ++] = r;
+ return r;
+ } else if (type == VETH_INFO_PEER && m->n_containers == 2 &&
GET_CONTAINER(m, 1)->rta_type == IFLA_INFO_DATA &&
- GET_CONTAINER(m, 0)->rta_type == IFLA_LINKINFO)
- return add_rtattr(m, type, NULL, sizeof(struct ifinfomsg));
+ GET_CONTAINER(m, 0)->rta_type == IFLA_LINKINFO) {
+ r = add_rtattr(m, type, NULL, sizeof(struct ifinfomsg));
+ if ( r > 0)
+ m->container_offsets[m->n_containers ++] = r;
+ return r;
+ }
}
return -ENOTSUP;