aboutgitcodebugslistschat
path: root/netlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'netlink.c')
-rw-r--r--netlink.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/netlink.c b/netlink.c
index 532868d..a530f3f 100644
--- a/netlink.c
+++ b/netlink.c
@@ -479,13 +479,16 @@ next:
void nl_link(int ns, unsigned int ifi, void *mac, int up, int mtu)
{
int change = !MAC_IS_ZERO(mac) || up || mtu;
- struct {
+ struct req_t {
struct nlmsghdr nlh;
struct ifinfomsg ifm;
struct rtattr rta;
union {
unsigned char mac[ETH_ALEN];
- unsigned int mtu;
+ struct {
+ unsigned int mtu;
+ uint8_t end;
+ } mtu;
} set;
} req = {
.nlh.nlmsg_type = change ? RTM_NEWLINK : RTM_GETLINK,
@@ -513,8 +516,8 @@ void nl_link(int ns, unsigned int ifi, void *mac, int up, int mtu)
}
if (mtu) {
- req.nlh.nlmsg_len = sizeof(req);
- req.set.mtu = mtu;
+ req.nlh.nlmsg_len = offsetof(struct req_t, set.mtu.end);
+ req.set.mtu.mtu = mtu;
req.rta.rta_type = IFLA_MTU;
req.rta.rta_len = RTA_LENGTH(sizeof(unsigned int));
nl_req(ns, buf, &req, req.nlh.nlmsg_len);