aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2019-05-17 18:02:11 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-10-25 13:15:56 +0200
commit5b49e1f605a770e8f8fcdcbd1a8ff85591fc0c8e (patch)
tree761c9bb8cef506a915bda5d68c173e779f68e106
parentd01bb02a96019cda0fa8c46e5c6d5eb66a273f17 (diff)
executor: create netdevsim device
Create testing netdevsim instance with 4 ports. Signed-off-by: Jiri Pirko <jiri@mellanox.com>
-rw-r--r--executor/common_linux.h10
-rw-r--r--pkg/csource/generated.go10
2 files changed, 20 insertions, 0 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index b56453510..a62aaea9c 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -444,6 +444,14 @@ static void initialize_tun(void)
#define DEV_IPV6 "fe80::%02x"
#define DEV_MAC 0x00aaaaaaaaaa
+static void netdevsim_add(unsigned int addr, unsigned int port_count)
+{
+ char buf[16];
+
+ sprintf(buf, "%u %u", addr, port_count);
+ write_file("/sys/bus/netdevsim/new_device", buf);
+}
+
// We test in a separate namespace, which does not have any network devices initially (even lo).
// Create/up as many as we can.
static void initialize_netdevices(void)
@@ -570,6 +578,8 @@ static void initialize_netdevices(void)
netlink_device_change(sock, "hsr_slave_0", true, 0, 0, 0);
netlink_device_change(sock, "hsr_slave_1", true, 0, 0, 0);
+ netdevsim_add((int)procid, 4);
+
for (i = 0; i < sizeof(devices) / (sizeof(devices[0])); i++) {
// Assign some unique address to devices. Some devices won't up without this.
// Shift addresses by 10 because 0 subnet address can mean special things.
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index 2b91d15d2..bcfc0a01f 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -1451,6 +1451,14 @@ static void initialize_tun(void)
#define DEV_IPV4 "172.20.20.%d"
#define DEV_IPV6 "fe80::%02x"
#define DEV_MAC 0x00aaaaaaaaaa
+
+static void netdevsim_add(unsigned int addr, unsigned int port_count)
+{
+ char buf[16];
+
+ sprintf(buf, "%u %u", addr, port_count);
+ write_file("/sys/bus/netdevsim/new_device", buf);
+}
static void initialize_netdevices(void)
{
#if SYZ_EXECUTOR
@@ -1541,6 +1549,8 @@ static void initialize_netdevices(void)
netlink_device_change(sock, "hsr_slave_0", true, 0, 0, 0);
netlink_device_change(sock, "hsr_slave_1", true, 0, 0, 0);
+ netdevsim_add((int)procid, 4);
+
for (i = 0; i < sizeof(devices) / (sizeof(devices[0])); i++) {
char addr[32];
sprintf(addr, DEV_IPV4, i + 10);