aboutsummaryrefslogtreecommitdiffstats
path: root/executor
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2019-11-12 11:49:34 +0100
committerDmitry Vyukov <dvyukov@google.com>2019-11-14 09:21:37 +0100
commit2b6d94ac9b2288c0932aa9b968e62c055c17d05f (patch)
treed3049954b76b1455fb6d9c1c7af8a5d3b6723b93 /executor
parent966d14f910ba7efd83e330eafe712304dc436dc8 (diff)
executor: extend netlink_device_change() to allow name changes
Extend existing helper netlink_device_change() in order to allow to change netdevice names. Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Diffstat (limited to 'executor')
-rw-r--r--executor/common_linux.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index 30d189667..a936b610c 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -251,7 +251,8 @@ static void netlink_add_hsr(int sock, const char* name, const char* slave1, cons
#if SYZ_EXECUTOR || SYZ_ENABLE_NETDEV || SYZ_TUN_ENABLE
static void netlink_device_change(int sock, const char* name, bool up,
- const char* master, const void* mac, int macsize)
+ const char* master, const void* mac, int macsize,
+ const char* new_name)
{
struct ifinfomsg hdr;
memset(&hdr, 0, sizeof(hdr));
@@ -259,6 +260,8 @@ static void netlink_device_change(int sock, const char* name, bool up,
hdr.ifi_flags = hdr.ifi_change = IFF_UP;
hdr.ifi_index = if_nametoindex(name);
netlink_init(RTM_NEWLINK, 0, &hdr, sizeof(hdr));
+ if (new_name)
+ netlink_attr(IFLA_IFNAME, new_name, strlen(new_name));
if (master) {
int ifindex = if_nametoindex(master);
netlink_attr(IFLA_MASTER, &ifindex, sizeof(ifindex));
@@ -430,7 +433,7 @@ static void initialize_tun(void)
inet_pton(AF_INET6, REMOTE_IPV6, &in6_addr);
netlink_add_neigh(sock, TUN_IFACE, &in6_addr, sizeof(in6_addr), &macaddr, ETH_ALEN);
macaddr = LOCAL_MAC;
- netlink_device_change(sock, TUN_IFACE, true, 0, &macaddr, ETH_ALEN);
+ netlink_device_change(sock, TUN_IFACE, true, 0, &macaddr, ETH_ALEN, NULL);
close(sock);
}
#endif
@@ -669,20 +672,20 @@ static void initialize_netdevices(void)
sprintf(veth1, "veth1_to_%s", devmasters[i]);
netlink_add_veth(sock, slave1, veth1);
sprintf(master, "%s0", devmasters[i]);
- netlink_device_change(sock, slave0, false, master, 0, 0);
- netlink_device_change(sock, slave1, false, master, 0, 0);
+ netlink_device_change(sock, slave0, false, master, 0, 0, NULL);
+ netlink_device_change(sock, slave1, false, master, 0, 0, NULL);
}
// bond/team_slave_* will set up automatically when set their master.
// But bridge_slave_* need to set up manually.
- netlink_device_change(sock, "bridge_slave_0", true, 0, 0, 0);
- netlink_device_change(sock, "bridge_slave_1", true, 0, 0, 0);
+ netlink_device_change(sock, "bridge_slave_0", true, 0, 0, 0, NULL);
+ netlink_device_change(sock, "bridge_slave_1", true, 0, 0, 0, NULL);
// Setup hsr device (slightly different from what we do for devmasters).
netlink_add_veth(sock, "hsr_slave_0", "veth0_to_hsr");
netlink_add_veth(sock, "hsr_slave_1", "veth1_to_hsr");
netlink_add_hsr(sock, "hsr0", "hsr_slave_0", "hsr_slave_1");
- netlink_device_change(sock, "hsr_slave_0", true, 0, 0, 0);
- netlink_device_change(sock, "hsr_slave_1", true, 0, 0, 0);
+ netlink_device_change(sock, "hsr_slave_0", true, 0, 0, 0, NULL);
+ netlink_device_change(sock, "hsr_slave_1", true, 0, 0, 0, NULL);
netdevsim_add((int)procid, 4); // Number of port is in sync with value in sys/linux/socket_netlink_generic_devlink.txt
@@ -697,7 +700,7 @@ static void initialize_netdevices(void)
netlink_add_addr6(sock, devices[i].name, addr);
}
uint64 macaddr = DEV_MAC + ((i + 10ull) << 40);
- netlink_device_change(sock, devices[i].name, true, 0, &macaddr, devices[i].macsize);
+ netlink_device_change(sock, devices[i].name, true, 0, &macaddr, devices[i].macsize, NULL);
}
close(sock);
}
@@ -739,7 +742,7 @@ static void initialize_netdevices_init(void)
int macsize = devtypes[i].macsize;
uint64 macaddr = 0xbbbbbb + ((unsigned long long)i << (8 * (macsize - 2))) +
(procid << (8 * (macsize - 1)));
- netlink_device_change(sock, dev, !devtypes[i].noup, 0, &macaddr, macsize);
+ netlink_device_change(sock, dev, !devtypes[i].noup, 0, &macaddr, macsize, NULL);
}
close(sock);
}