aboutsummaryrefslogtreecommitdiffstats
path: root/executor
diff options
context:
space:
mode:
authorHangbin Liu <liuhangbin@gmail.com>2018-04-13 09:44:48 +0800
committerDmitry Vyukov <dvyukov@google.com>2018-04-13 09:38:31 +0200
commit0a0c5db668972ea332ee720d81f9c67616340845 (patch)
tree3621ccd527ef70b170601aef4017c1c73772a718 /executor
parente694ebbaeeb59ccacf0c62b1aed816667a8d4668 (diff)
executor: add two slave interfaces for bridge,bond,team
Bridge device is used for forwarding. Bond/team device is used for load balance and fail over. So it would make more sense to add two slave interfaces for these devices. Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Diffstat (limited to 'executor')
-rw-r--r--executor/common_linux.h31
-rw-r--r--executor/syscalls_linux.h10
2 files changed, 29 insertions, 12 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index 90566cb26..99821d535 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -405,10 +405,15 @@ static void initialize_netdevices(void)
{
unsigned i;
const char* devtypes[] = {"ip6gretap", "bridge", "vcan", "bond", "team"};
+ // If you extend this array, also update netdev_addr_id in vnet.txt.
const char* devnames[] = {"lo", "sit0", "bridge0", "vcan0", "tunl0",
"gre0", "gretap0", "ip_vti0", "ip6_vti0",
"ip6tnl0", "ip6gre0", "ip6gretap0",
- "erspan0", "bond0", "veth0", "veth1", "team0"};
+ "erspan0", "bond0", "veth0", "veth1", "team0",
+ "veth0_to_bridge", "veth1_to_bridge",
+ "veth0_to_bond", "veth1_to_bond",
+ "veth0_to_team", "veth1_to_team"};
+ const char* devmasters[] = {"bridge", "bond", "team"};
#ifdef SYZ_EXECUTOR
if (!flag_enable_tun)
@@ -418,6 +423,24 @@ static void initialize_netdevices(void)
execute_command(0, "ip link add dev %s0 type %s", devtypes[i], devtypes[i]);
// This adds connected veth0 and veth1 devices.
execute_command(0, "ip link add type veth");
+
+ // This creates connected bridge/bond/team_slave devices of type veth,
+ // and makes them slaves of bridge/bond/team devices, respectively.
+ // Note: slave devices don't need MAC/IP addresses, only master devices.
+ // veth0_to_* is not slave devices, which still need ip addresses.
+ for (i = 0; i < sizeof(devmasters) / (sizeof(devmasters[0])); i++) {
+ execute_command(0, "ip link add name %s_slave_0 type veth peer name veth0_to_%s", devmasters[i], devmasters[i]);
+ execute_command(0, "ip link add name %s_slave_1 type veth peer name veth1_to_%s", devmasters[i], devmasters[i]);
+ execute_command(0, "ip link set %s_slave_0 master %s0", devmasters[i], devmasters[i]);
+ execute_command(0, "ip link set %s_slave_1 master %s0", devmasters[i], devmasters[i]);
+ execute_command(0, "ip link set veth0_to_%s up", devmasters[i]);
+ execute_command(0, "ip link set veth1_to_%s up", devmasters[i]);
+ }
+ // bond/team_slave_* will set up automatically when set their master.
+ // But bridge_slave_* need to set up manually.
+ execute_command(0, "ip link set bridge_slave_0 up");
+ execute_command(0, "ip link set bridge_slave_1 up");
+
for (i = 0; i < sizeof(devnames) / (sizeof(devnames[0])); i++) {
char addr[32];
// Assign some unique address to devices. Some devices won't up without this.
@@ -431,12 +454,6 @@ static void initialize_netdevices(void)
execute_command(0, "ip link set dev %s address %s", devnames[i], addr);
execute_command(0, "ip link set dev %s up", devnames[i]);
}
- // This creates connected bond_slave and team_slave devices of type veth,
- // and makes them slaves of bond0 and team0 devices, respectively.
- // Note: slave devices don't need MAC/IP addresses, only master devices.
- execute_command(0, "ip link add name bond_slave type veth peer name team_slave");
- execute_command(0, "ip link set bond_slave master bond0");
- execute_command(0, "ip link set team_slave master team0");
}
#endif
diff --git a/executor/syscalls_linux.h b/executor/syscalls_linux.h
index afac83c41..eabccb072 100644
--- a/executor/syscalls_linux.h
+++ b/executor/syscalls_linux.h
@@ -2,7 +2,7 @@
#if defined(__i386__) || 0
#define GOARCH "386"
-#define SYZ_REVISION "6407907d09e232b45a7d4f6edef0e9fd7ca187c0"
+#define SYZ_REVISION "a0aee1b27859f6bcf4a24b8029808fc00dd551ab"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -1704,7 +1704,7 @@ call_t syscalls[] = {
#if defined(__x86_64__) || 0
#define GOARCH "amd64"
-#define SYZ_REVISION "a811d9b34c3430ab60df872f603784987e1fa302"
+#define SYZ_REVISION "71ed5825bf3c0e9b34a33f2feb7fd317f9750a76"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -3458,7 +3458,7 @@ call_t syscalls[] = {
#if defined(__arm__) || 0
#define GOARCH "arm"
-#define SYZ_REVISION "ad5ac18a55973b308028ae2a73316eeab244e351"
+#define SYZ_REVISION "ed1efc9855ce67169ddb3588a5f7295bd619e729"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -5169,7 +5169,7 @@ call_t syscalls[] = {
#if defined(__aarch64__) || 0
#define GOARCH "arm64"
-#define SYZ_REVISION "f673a6d25977f06bf0fe47dde6ea05a5353d415d"
+#define SYZ_REVISION "c5fb5b3d90f9def73427208738dc45b834b182f9"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -6852,7 +6852,7 @@ call_t syscalls[] = {
#if defined(__ppc64__) || defined(__PPC64__) || defined(__powerpc64__) || 0
#define GOARCH "ppc64le"
-#define SYZ_REVISION "db704e8ab4315a153e81c9a4b9e194339a85cf6d"
+#define SYZ_REVISION "5e276440fd688bd3069d880322531857c1a92184"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912