netlink: Avoid left-over bytes in request on MTU configuration
When nl_link() configures the MTU, it shouldn't send extra bytes, otherwise we'll get a kernel warning: netlink: 4 bytes leftover after parsing attributes in process `pasta'. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
08b7a2ec38
commit
ed58ad1a59
1 changed files with 7 additions and 4 deletions
11
netlink.c
11
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);
|
||||
|
|
Loading…
Reference in a new issue