103544faaSPeter Seiderer // SPDX-License-Identifier: GPL-2.0
203544faaSPeter Seiderer /*
303544faaSPeter Seiderer * proc_net_pktgen: kselftest for /proc/net/pktgen interface
403544faaSPeter Seiderer *
503544faaSPeter Seiderer * Copyright (c) 2025 Peter Seiderer <ps.report@gmx.net>
603544faaSPeter Seiderer *
703544faaSPeter Seiderer */
803544faaSPeter Seiderer #include <errno.h>
903544faaSPeter Seiderer #include <fcntl.h>
1003544faaSPeter Seiderer #include <stdlib.h>
1103544faaSPeter Seiderer #include <unistd.h>
1203544faaSPeter Seiderer
1303544faaSPeter Seiderer #include "../kselftest_harness.h"
1403544faaSPeter Seiderer
1503544faaSPeter Seiderer static const char ctrl_cmd_stop[] = "stop";
1603544faaSPeter Seiderer static const char ctrl_cmd_start[] = "start";
1703544faaSPeter Seiderer static const char ctrl_cmd_reset[] = "reset";
1803544faaSPeter Seiderer
1903544faaSPeter Seiderer static const char wrong_ctrl_cmd[] = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
2003544faaSPeter Seiderer
2103544faaSPeter Seiderer static const char thr_cmd_add_loopback_0[] = "add_device lo@0";
2203544faaSPeter Seiderer static const char thr_cmd_rm_loopback_0[] = "rem_device_all";
2303544faaSPeter Seiderer
2403544faaSPeter Seiderer static const char wrong_thr_cmd[] = "forsureawrongcommand";
2503544faaSPeter Seiderer static const char legacy_thr_cmd[] = "max_before_softirq";
2603544faaSPeter Seiderer
2703544faaSPeter Seiderer static const char wrong_dev_cmd[] = "forsurewrongcommand";
2803544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_0[] = "min_pkt_size";
2903544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_1[] = "min_pkt_size ";
3003544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_2[] = "min_pkt_size 0";
3103544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_3[] = "min_pkt_size 1";
3203544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_4[] = "min_pkt_size 100";
3303544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_5[] = "min_pkt_size=1001";
3403544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_6[] = "min_pkt_size =2002";
3503544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_7[] = "min_pkt_size= 3003";
3603544faaSPeter Seiderer static const char dev_cmd_min_pkt_size_8[] = "min_pkt_size = 4004";
3703544faaSPeter Seiderer static const char dev_cmd_max_pkt_size_0[] = "max_pkt_size 200";
3803544faaSPeter Seiderer static const char dev_cmd_pkt_size_0[] = "pkt_size 300";
3903544faaSPeter Seiderer static const char dev_cmd_imix_weights_0[] = "imix_weights 0,7 576,4 1500,1";
4003544faaSPeter Seiderer static const char dev_cmd_imix_weights_1[] = "imix_weights 101,1 102,2 103,3 104,4 105,5 106,6 107,7 108,8 109,9 110,10 111,11 112,12 113,13 114,14 115,15 116,16 117,17 118,18 119,19 120,20";
4103544faaSPeter Seiderer static const char dev_cmd_imix_weights_2[] = "imix_weights 100,1 102,2 103,3 104,4 105,5 106,6 107,7 108,8 109,9 110,10 111,11 112,12 113,13 114,14 115,15 116,16 117,17 118,18 119,19 120,20 121,21";
42*3099f9e1SPeter Seiderer static const char dev_cmd_imix_weights_3[] = "imix_weights";
43*3099f9e1SPeter Seiderer static const char dev_cmd_imix_weights_4[] = "imix_weights ";
44*3099f9e1SPeter Seiderer static const char dev_cmd_imix_weights_5[] = "imix_weights 0";
45*3099f9e1SPeter Seiderer static const char dev_cmd_imix_weights_6[] = "imix_weights 0,";
4603544faaSPeter Seiderer static const char dev_cmd_debug_0[] = "debug 1";
4703544faaSPeter Seiderer static const char dev_cmd_debug_1[] = "debug 0";
4803544faaSPeter Seiderer static const char dev_cmd_frags_0[] = "frags 100";
4903544faaSPeter Seiderer static const char dev_cmd_delay_0[] = "delay 100";
5003544faaSPeter Seiderer static const char dev_cmd_delay_1[] = "delay 2147483647";
5103544faaSPeter Seiderer static const char dev_cmd_rate_0[] = "rate 0";
5203544faaSPeter Seiderer static const char dev_cmd_rate_1[] = "rate 100";
5303544faaSPeter Seiderer static const char dev_cmd_ratep_0[] = "ratep 0";
5403544faaSPeter Seiderer static const char dev_cmd_ratep_1[] = "ratep 200";
5503544faaSPeter Seiderer static const char dev_cmd_udp_src_min_0[] = "udp_src_min 1";
5603544faaSPeter Seiderer static const char dev_cmd_udp_dst_min_0[] = "udp_dst_min 2";
5703544faaSPeter Seiderer static const char dev_cmd_udp_src_max_0[] = "udp_src_max 3";
5803544faaSPeter Seiderer static const char dev_cmd_udp_dst_max_0[] = "udp_dst_max 4";
5903544faaSPeter Seiderer static const char dev_cmd_clone_skb_0[] = "clone_skb 1";
6003544faaSPeter Seiderer static const char dev_cmd_clone_skb_1[] = "clone_skb 0";
6103544faaSPeter Seiderer static const char dev_cmd_count_0[] = "count 100";
6203544faaSPeter Seiderer static const char dev_cmd_src_mac_count_0[] = "src_mac_count 100";
6303544faaSPeter Seiderer static const char dev_cmd_dst_mac_count_0[] = "dst_mac_count 100";
6403544faaSPeter Seiderer static const char dev_cmd_burst_0[] = "burst 0";
6503544faaSPeter Seiderer static const char dev_cmd_node_0[] = "node 100";
6603544faaSPeter Seiderer static const char dev_cmd_xmit_mode_0[] = "xmit_mode start_xmit";
6703544faaSPeter Seiderer static const char dev_cmd_xmit_mode_1[] = "xmit_mode netif_receive";
6803544faaSPeter Seiderer static const char dev_cmd_xmit_mode_2[] = "xmit_mode queue_xmit";
6903544faaSPeter Seiderer static const char dev_cmd_xmit_mode_3[] = "xmit_mode nonsense";
7003544faaSPeter Seiderer static const char dev_cmd_flag_0[] = "flag UDPCSUM";
7103544faaSPeter Seiderer static const char dev_cmd_flag_1[] = "flag !UDPCSUM";
7203544faaSPeter Seiderer static const char dev_cmd_flag_2[] = "flag nonsense";
7303544faaSPeter Seiderer static const char dev_cmd_dst_min_0[] = "dst_min 101.102.103.104";
7403544faaSPeter Seiderer static const char dev_cmd_dst_0[] = "dst 101.102.103.104";
7503544faaSPeter Seiderer static const char dev_cmd_dst_max_0[] = "dst_max 201.202.203.204";
7603544faaSPeter Seiderer static const char dev_cmd_dst6_0[] = "dst6 2001:db38:1234:0000:0000:0000:0000:0000";
7703544faaSPeter Seiderer static const char dev_cmd_dst6_min_0[] = "dst6_min 2001:db8:1234:0000:0000:0000:0000:0000";
7803544faaSPeter Seiderer static const char dev_cmd_dst6_max_0[] = "dst6_max 2001:db8:1234:0000:0000:0000:0000:0000";
7903544faaSPeter Seiderer static const char dev_cmd_src6_0[] = "src6 2001:db38:1234:0000:0000:0000:0000:0000";
8003544faaSPeter Seiderer static const char dev_cmd_src_min_0[] = "src_min 101.102.103.104";
8103544faaSPeter Seiderer static const char dev_cmd_src_max_0[] = "src_max 201.202.203.204";
8203544faaSPeter Seiderer static const char dev_cmd_dst_mac_0[] = "dst_mac 01:02:03:04:05:06";
8303544faaSPeter Seiderer static const char dev_cmd_src_mac_0[] = "src_mac 11:12:13:14:15:16";
8403544faaSPeter Seiderer static const char dev_cmd_clear_counters_0[] = "clear_counters";
8503544faaSPeter Seiderer static const char dev_cmd_flows_0[] = "flows 100";
8603544faaSPeter Seiderer static const char dev_cmd_spi_0[] = "spi 100";
8703544faaSPeter Seiderer static const char dev_cmd_flowlen_0[] = "flowlen 100";
8803544faaSPeter Seiderer static const char dev_cmd_queue_map_min_0[] = "queue_map_min 1";
8903544faaSPeter Seiderer static const char dev_cmd_queue_map_max_0[] = "queue_map_max 2";
9003544faaSPeter Seiderer static const char dev_cmd_mpls_0[] = "mpls 00000001";
9103544faaSPeter Seiderer static const char dev_cmd_mpls_1[] = "mpls 00000001,000000f2";
9203544faaSPeter Seiderer static const char dev_cmd_mpls_2[] = "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f";
9303544faaSPeter Seiderer static const char dev_cmd_mpls_3[] = "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f,00000f10";
9403544faaSPeter Seiderer static const char dev_cmd_vlan_id_0[] = "vlan_id 1";
9503544faaSPeter Seiderer static const char dev_cmd_vlan_p_0[] = "vlan_p 1";
9603544faaSPeter Seiderer static const char dev_cmd_vlan_cfi_0[] = "vlan_cfi 1";
9703544faaSPeter Seiderer static const char dev_cmd_vlan_id_1[] = "vlan_id 4096";
9803544faaSPeter Seiderer static const char dev_cmd_svlan_id_0[] = "svlan_id 1";
9903544faaSPeter Seiderer static const char dev_cmd_svlan_p_0[] = "svlan_p 1";
10003544faaSPeter Seiderer static const char dev_cmd_svlan_cfi_0[] = "svlan_cfi 1";
10103544faaSPeter Seiderer static const char dev_cmd_svlan_id_1[] = "svlan_id 4096";
10203544faaSPeter Seiderer static const char dev_cmd_tos_0[] = "tos 0";
10303544faaSPeter Seiderer static const char dev_cmd_tos_1[] = "tos 0f";
10403544faaSPeter Seiderer static const char dev_cmd_tos_2[] = "tos 0ff";
10503544faaSPeter Seiderer static const char dev_cmd_traffic_class_0[] = "traffic_class f0";
10603544faaSPeter Seiderer static const char dev_cmd_skb_priority_0[] = "skb_priority 999";
10703544faaSPeter Seiderer
FIXTURE(proc_net_pktgen)10803544faaSPeter Seiderer FIXTURE(proc_net_pktgen) {
10903544faaSPeter Seiderer int ctrl_fd;
11003544faaSPeter Seiderer int thr_fd;
11103544faaSPeter Seiderer int dev_fd;
11203544faaSPeter Seiderer };
11303544faaSPeter Seiderer
FIXTURE_SETUP(proc_net_pktgen)11403544faaSPeter Seiderer FIXTURE_SETUP(proc_net_pktgen) {
11503544faaSPeter Seiderer int r;
11603544faaSPeter Seiderer ssize_t len;
11703544faaSPeter Seiderer
11803544faaSPeter Seiderer r = system("modprobe pktgen");
11903544faaSPeter Seiderer ASSERT_EQ(r, 0) TH_LOG("CONFIG_NET_PKTGEN not enabled, module pktgen not loaded?");
12003544faaSPeter Seiderer
12103544faaSPeter Seiderer self->ctrl_fd = open("/proc/net/pktgen/pgctrl", O_RDWR);
12203544faaSPeter Seiderer ASSERT_GE(self->ctrl_fd, 0) TH_LOG("CONFIG_NET_PKTGEN not enabled, module pktgen not loaded?");
12303544faaSPeter Seiderer
12403544faaSPeter Seiderer self->thr_fd = open("/proc/net/pktgen/kpktgend_0", O_RDWR);
12503544faaSPeter Seiderer ASSERT_GE(self->thr_fd, 0) TH_LOG("CONFIG_NET_PKTGEN not enabled, module pktgen not loaded?");
12603544faaSPeter Seiderer
12703544faaSPeter Seiderer len = write(self->thr_fd, thr_cmd_add_loopback_0, sizeof(thr_cmd_add_loopback_0));
12803544faaSPeter Seiderer ASSERT_EQ(len, sizeof(thr_cmd_add_loopback_0)) TH_LOG("device lo@0 already registered?");
12903544faaSPeter Seiderer
13003544faaSPeter Seiderer self->dev_fd = open("/proc/net/pktgen/lo@0", O_RDWR);
13103544faaSPeter Seiderer ASSERT_GE(self->dev_fd, 0) TH_LOG("device entry for lo@0 missing?");
13203544faaSPeter Seiderer }
13303544faaSPeter Seiderer
FIXTURE_TEARDOWN(proc_net_pktgen)13403544faaSPeter Seiderer FIXTURE_TEARDOWN(proc_net_pktgen) {
13503544faaSPeter Seiderer int ret;
13603544faaSPeter Seiderer ssize_t len;
13703544faaSPeter Seiderer
13803544faaSPeter Seiderer ret = close(self->dev_fd);
13903544faaSPeter Seiderer EXPECT_EQ(ret, 0);
14003544faaSPeter Seiderer
14103544faaSPeter Seiderer len = write(self->thr_fd, thr_cmd_rm_loopback_0, sizeof(thr_cmd_rm_loopback_0));
14203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(thr_cmd_rm_loopback_0));
14303544faaSPeter Seiderer
14403544faaSPeter Seiderer ret = close(self->thr_fd);
14503544faaSPeter Seiderer EXPECT_EQ(ret, 0);
14603544faaSPeter Seiderer
14703544faaSPeter Seiderer ret = close(self->ctrl_fd);
14803544faaSPeter Seiderer EXPECT_EQ(ret, 0);
14903544faaSPeter Seiderer }
15003544faaSPeter Seiderer
TEST_F(proc_net_pktgen,wrong_ctrl_cmd)15103544faaSPeter Seiderer TEST_F(proc_net_pktgen, wrong_ctrl_cmd) {
15203544faaSPeter Seiderer for (int i = 0; i <= sizeof(wrong_ctrl_cmd); i++) {
15303544faaSPeter Seiderer ssize_t len;
15403544faaSPeter Seiderer
15503544faaSPeter Seiderer len = write(self->ctrl_fd, wrong_ctrl_cmd, i);
15603544faaSPeter Seiderer EXPECT_EQ(len, -1);
15703544faaSPeter Seiderer EXPECT_EQ(errno, EINVAL);
15803544faaSPeter Seiderer }
15903544faaSPeter Seiderer }
16003544faaSPeter Seiderer
TEST_F(proc_net_pktgen,ctrl_cmd)16103544faaSPeter Seiderer TEST_F(proc_net_pktgen, ctrl_cmd) {
16203544faaSPeter Seiderer ssize_t len;
16303544faaSPeter Seiderer
16403544faaSPeter Seiderer len = write(self->ctrl_fd, ctrl_cmd_stop, sizeof(ctrl_cmd_stop));
16503544faaSPeter Seiderer EXPECT_EQ(len, sizeof(ctrl_cmd_stop));
16603544faaSPeter Seiderer
16703544faaSPeter Seiderer len = write(self->ctrl_fd, ctrl_cmd_stop, sizeof(ctrl_cmd_stop) - 1);
16803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(ctrl_cmd_stop) - 1);
16903544faaSPeter Seiderer
17003544faaSPeter Seiderer len = write(self->ctrl_fd, ctrl_cmd_start, sizeof(ctrl_cmd_start));
17103544faaSPeter Seiderer EXPECT_EQ(len, sizeof(ctrl_cmd_start));
17203544faaSPeter Seiderer
17303544faaSPeter Seiderer len = write(self->ctrl_fd, ctrl_cmd_start, sizeof(ctrl_cmd_start) - 1);
17403544faaSPeter Seiderer EXPECT_EQ(len, sizeof(ctrl_cmd_start) - 1);
17503544faaSPeter Seiderer
17603544faaSPeter Seiderer len = write(self->ctrl_fd, ctrl_cmd_reset, sizeof(ctrl_cmd_reset));
17703544faaSPeter Seiderer EXPECT_EQ(len, sizeof(ctrl_cmd_reset));
17803544faaSPeter Seiderer
17903544faaSPeter Seiderer len = write(self->ctrl_fd, ctrl_cmd_reset, sizeof(ctrl_cmd_reset) - 1);
18003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(ctrl_cmd_reset) - 1);
18103544faaSPeter Seiderer }
18203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,wrong_thr_cmd)18303544faaSPeter Seiderer TEST_F(proc_net_pktgen, wrong_thr_cmd) {
18403544faaSPeter Seiderer for (int i = 0; i <= sizeof(wrong_thr_cmd); i++) {
18503544faaSPeter Seiderer ssize_t len;
18603544faaSPeter Seiderer
18703544faaSPeter Seiderer len = write(self->thr_fd, wrong_thr_cmd, i);
18803544faaSPeter Seiderer EXPECT_EQ(len, -1);
18903544faaSPeter Seiderer EXPECT_EQ(errno, EINVAL);
19003544faaSPeter Seiderer }
19103544faaSPeter Seiderer }
19203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,legacy_thr_cmd)19303544faaSPeter Seiderer TEST_F(proc_net_pktgen, legacy_thr_cmd) {
19403544faaSPeter Seiderer for (int i = 0; i <= sizeof(legacy_thr_cmd); i++) {
19503544faaSPeter Seiderer ssize_t len;
19603544faaSPeter Seiderer
19703544faaSPeter Seiderer len = write(self->thr_fd, legacy_thr_cmd, i);
19803544faaSPeter Seiderer if (i < (sizeof(legacy_thr_cmd) - 1)) {
19903544faaSPeter Seiderer /* incomplete command string */
20003544faaSPeter Seiderer EXPECT_EQ(len, -1);
20103544faaSPeter Seiderer EXPECT_EQ(errno, EINVAL);
20203544faaSPeter Seiderer } else {
20303544faaSPeter Seiderer /* complete command string without/with trailing '\0' */
20403544faaSPeter Seiderer EXPECT_EQ(len, i);
20503544faaSPeter Seiderer }
20603544faaSPeter Seiderer }
20703544faaSPeter Seiderer }
20803544faaSPeter Seiderer
TEST_F(proc_net_pktgen,wrong_dev_cmd)20903544faaSPeter Seiderer TEST_F(proc_net_pktgen, wrong_dev_cmd) {
21003544faaSPeter Seiderer for (int i = 0; i <= sizeof(wrong_dev_cmd); i++) {
21103544faaSPeter Seiderer ssize_t len;
21203544faaSPeter Seiderer
21303544faaSPeter Seiderer len = write(self->dev_fd, wrong_dev_cmd, i);
21403544faaSPeter Seiderer EXPECT_EQ(len, -1);
21503544faaSPeter Seiderer EXPECT_EQ(errno, EINVAL);
21603544faaSPeter Seiderer }
21703544faaSPeter Seiderer }
21803544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_min_pkt_size)21903544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_min_pkt_size) {
22003544faaSPeter Seiderer ssize_t len;
22103544faaSPeter Seiderer
22203544faaSPeter Seiderer /* with trailing '\0' */
22303544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_0, sizeof(dev_cmd_min_pkt_size_0));
22403544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_0));
22503544faaSPeter Seiderer
22603544faaSPeter Seiderer /* without trailing '\0' */
22703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_0, sizeof(dev_cmd_min_pkt_size_0) - 1);
22803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_0) - 1);
22903544faaSPeter Seiderer
23003544faaSPeter Seiderer /* with trailing '\0' */
23103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_1, sizeof(dev_cmd_min_pkt_size_1));
23203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_1));
23303544faaSPeter Seiderer
23403544faaSPeter Seiderer /* without trailing '\0' */
23503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_1, sizeof(dev_cmd_min_pkt_size_1) - 1);
23603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_1) - 1);
23703544faaSPeter Seiderer
23803544faaSPeter Seiderer /* with trailing '\0' */
23903544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_2, sizeof(dev_cmd_min_pkt_size_2));
24003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_2));
24103544faaSPeter Seiderer
24203544faaSPeter Seiderer /* without trailing '\0' */
24303544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_2, sizeof(dev_cmd_min_pkt_size_2) - 1);
24403544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_2) - 1);
24503544faaSPeter Seiderer
24603544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_3, sizeof(dev_cmd_min_pkt_size_3));
24703544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_3));
24803544faaSPeter Seiderer
24903544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_4, sizeof(dev_cmd_min_pkt_size_4));
25003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_4));
25103544faaSPeter Seiderer
25203544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_5, sizeof(dev_cmd_min_pkt_size_5));
25303544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_5));
25403544faaSPeter Seiderer
25503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_6, sizeof(dev_cmd_min_pkt_size_6));
25603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_6));
25703544faaSPeter Seiderer
25803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_7, sizeof(dev_cmd_min_pkt_size_7));
25903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_7));
26003544faaSPeter Seiderer
26103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_min_pkt_size_8, sizeof(dev_cmd_min_pkt_size_8));
26203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_8));
26303544faaSPeter Seiderer }
26403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_max_pkt_size)26503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_max_pkt_size) {
26603544faaSPeter Seiderer ssize_t len;
26703544faaSPeter Seiderer
26803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_max_pkt_size_0, sizeof(dev_cmd_max_pkt_size_0));
26903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_max_pkt_size_0));
27003544faaSPeter Seiderer }
27103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_pkt_size)27203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_pkt_size) {
27303544faaSPeter Seiderer ssize_t len;
27403544faaSPeter Seiderer
27503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_pkt_size_0, sizeof(dev_cmd_pkt_size_0));
27603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_pkt_size_0));
27703544faaSPeter Seiderer }
27803544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_imix_weights)27903544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_imix_weights) {
28003544faaSPeter Seiderer ssize_t len;
28103544faaSPeter Seiderer
28203544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_0, sizeof(dev_cmd_imix_weights_0));
28303544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_imix_weights_0));
28403544faaSPeter Seiderer
28503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_1, sizeof(dev_cmd_imix_weights_1));
28603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_imix_weights_1));
28703544faaSPeter Seiderer
28803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_2, sizeof(dev_cmd_imix_weights_2));
28903544faaSPeter Seiderer EXPECT_EQ(len, -1);
29003544faaSPeter Seiderer EXPECT_EQ(errno, E2BIG);
291*3099f9e1SPeter Seiderer
292*3099f9e1SPeter Seiderer /* with trailing '\0' */
293*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_3, sizeof(dev_cmd_imix_weights_3));
294*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
295*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
296*3099f9e1SPeter Seiderer
297*3099f9e1SPeter Seiderer /* without trailing '\0' */
298*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_3, sizeof(dev_cmd_imix_weights_3) - 1);
299*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
300*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
301*3099f9e1SPeter Seiderer
302*3099f9e1SPeter Seiderer /* with trailing '\0' */
303*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_4, sizeof(dev_cmd_imix_weights_4));
304*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
305*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
306*3099f9e1SPeter Seiderer
307*3099f9e1SPeter Seiderer /* without trailing '\0' */
308*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_4, sizeof(dev_cmd_imix_weights_4) - 1);
309*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
310*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
311*3099f9e1SPeter Seiderer
312*3099f9e1SPeter Seiderer /* with trailing '\0' */
313*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_5, sizeof(dev_cmd_imix_weights_5));
314*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
315*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
316*3099f9e1SPeter Seiderer
317*3099f9e1SPeter Seiderer /* without trailing '\0' */
318*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_5, sizeof(dev_cmd_imix_weights_5) - 1);
319*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
320*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
321*3099f9e1SPeter Seiderer
322*3099f9e1SPeter Seiderer /* with trailing '\0' */
323*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_6, sizeof(dev_cmd_imix_weights_6));
324*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
325*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
326*3099f9e1SPeter Seiderer
327*3099f9e1SPeter Seiderer /* without trailing '\0' */
328*3099f9e1SPeter Seiderer len = write(self->dev_fd, dev_cmd_imix_weights_6, sizeof(dev_cmd_imix_weights_6) - 1);
329*3099f9e1SPeter Seiderer EXPECT_EQ(len, -1);
330*3099f9e1SPeter Seiderer EXPECT_EQ(errno, EINVAL);
33103544faaSPeter Seiderer }
33203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_debug)33303544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_debug) {
33403544faaSPeter Seiderer ssize_t len;
33503544faaSPeter Seiderer
33603544faaSPeter Seiderer /* debug on */
33703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_debug_0, sizeof(dev_cmd_debug_0));
33803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_debug_0));
33903544faaSPeter Seiderer
34003544faaSPeter Seiderer /* debug off */
34103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_debug_1, sizeof(dev_cmd_debug_1));
34203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_debug_1));
34303544faaSPeter Seiderer }
34403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_frags)34503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_frags) {
34603544faaSPeter Seiderer ssize_t len;
34703544faaSPeter Seiderer
34803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_frags_0, sizeof(dev_cmd_frags_0));
34903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_frags_0));
35003544faaSPeter Seiderer }
35103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_delay)35203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_delay) {
35303544faaSPeter Seiderer ssize_t len;
35403544faaSPeter Seiderer
35503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_delay_0, sizeof(dev_cmd_delay_0));
35603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_delay_0));
35703544faaSPeter Seiderer
35803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_delay_1, sizeof(dev_cmd_delay_1));
35903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_delay_1));
36003544faaSPeter Seiderer }
36103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_rate)36203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_rate) {
36303544faaSPeter Seiderer ssize_t len;
36403544faaSPeter Seiderer
36503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_rate_0, sizeof(dev_cmd_rate_0));
36603544faaSPeter Seiderer EXPECT_EQ(len, -1);
36703544faaSPeter Seiderer EXPECT_EQ(errno, EINVAL);
36803544faaSPeter Seiderer
36903544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_rate_1, sizeof(dev_cmd_rate_1));
37003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_rate_1));
37103544faaSPeter Seiderer }
37203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_ratep)37303544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_ratep) {
37403544faaSPeter Seiderer ssize_t len;
37503544faaSPeter Seiderer
37603544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_ratep_0, sizeof(dev_cmd_ratep_0));
37703544faaSPeter Seiderer EXPECT_EQ(len, -1);
37803544faaSPeter Seiderer EXPECT_EQ(errno, EINVAL);
37903544faaSPeter Seiderer
38003544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_ratep_1, sizeof(dev_cmd_ratep_1));
38103544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_ratep_1));
38203544faaSPeter Seiderer }
38303544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_udp_src_min)38403544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_udp_src_min) {
38503544faaSPeter Seiderer ssize_t len;
38603544faaSPeter Seiderer
38703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_udp_src_min_0, sizeof(dev_cmd_udp_src_min_0));
38803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_udp_src_min_0));
38903544faaSPeter Seiderer }
39003544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_udp_dst_min)39103544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_udp_dst_min) {
39203544faaSPeter Seiderer ssize_t len;
39303544faaSPeter Seiderer
39403544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_udp_dst_min_0, sizeof(dev_cmd_udp_dst_min_0));
39503544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_udp_dst_min_0));
39603544faaSPeter Seiderer }
39703544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_udp_src_max)39803544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_udp_src_max) {
39903544faaSPeter Seiderer ssize_t len;
40003544faaSPeter Seiderer
40103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_udp_src_max_0, sizeof(dev_cmd_udp_src_max_0));
40203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_udp_src_max_0));
40303544faaSPeter Seiderer }
40403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_udp_dst_max)40503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_udp_dst_max) {
40603544faaSPeter Seiderer ssize_t len;
40703544faaSPeter Seiderer
40803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_udp_dst_max_0, sizeof(dev_cmd_udp_dst_max_0));
40903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_udp_dst_max_0));
41003544faaSPeter Seiderer }
41103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_clone_skb)41203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_clone_skb) {
41303544faaSPeter Seiderer ssize_t len;
41403544faaSPeter Seiderer
41503544faaSPeter Seiderer /* clone_skb on (gives EOPNOTSUPP on lo device) */
41603544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_clone_skb_0, sizeof(dev_cmd_clone_skb_0));
41703544faaSPeter Seiderer EXPECT_EQ(len, -1);
41803544faaSPeter Seiderer EXPECT_EQ(errno, EOPNOTSUPP);
41903544faaSPeter Seiderer
42003544faaSPeter Seiderer /* clone_skb off */
42103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_clone_skb_1, sizeof(dev_cmd_clone_skb_1));
42203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_clone_skb_1));
42303544faaSPeter Seiderer }
42403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_count)42503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_count) {
42603544faaSPeter Seiderer ssize_t len;
42703544faaSPeter Seiderer
42803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_count_0, sizeof(dev_cmd_count_0));
42903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_count_0));
43003544faaSPeter Seiderer }
43103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_src_mac_count)43203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_src_mac_count) {
43303544faaSPeter Seiderer ssize_t len;
43403544faaSPeter Seiderer
43503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_src_mac_count_0, sizeof(dev_cmd_src_mac_count_0));
43603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_src_mac_count_0));
43703544faaSPeter Seiderer }
43803544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst_mac_count)43903544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst_mac_count) {
44003544faaSPeter Seiderer ssize_t len;
44103544faaSPeter Seiderer
44203544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst_mac_count_0, sizeof(dev_cmd_dst_mac_count_0));
44303544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst_mac_count_0));
44403544faaSPeter Seiderer }
44503544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_burst)44603544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_burst) {
44703544faaSPeter Seiderer ssize_t len;
44803544faaSPeter Seiderer
44903544faaSPeter Seiderer /* burst off */
45003544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_burst_0, sizeof(dev_cmd_burst_0));
45103544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_burst_0));
45203544faaSPeter Seiderer }
45303544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_node)45403544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_node) {
45503544faaSPeter Seiderer ssize_t len;
45603544faaSPeter Seiderer
45703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_node_0, sizeof(dev_cmd_node_0));
45803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_node_0));
45903544faaSPeter Seiderer }
46003544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_xmit_mode)46103544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_xmit_mode) {
46203544faaSPeter Seiderer ssize_t len;
46303544faaSPeter Seiderer
46403544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_xmit_mode_0, sizeof(dev_cmd_xmit_mode_0));
46503544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_0));
46603544faaSPeter Seiderer
46703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_xmit_mode_1, sizeof(dev_cmd_xmit_mode_1));
46803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_1));
46903544faaSPeter Seiderer
47003544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_xmit_mode_2, sizeof(dev_cmd_xmit_mode_2));
47103544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_2));
47203544faaSPeter Seiderer
47303544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_xmit_mode_3, sizeof(dev_cmd_xmit_mode_3));
47403544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_3));
47503544faaSPeter Seiderer }
47603544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_flag)47703544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_flag) {
47803544faaSPeter Seiderer ssize_t len;
47903544faaSPeter Seiderer
48003544faaSPeter Seiderer /* flag UDPCSUM on */
48103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_flag_0, sizeof(dev_cmd_flag_0));
48203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_flag_0));
48303544faaSPeter Seiderer
48403544faaSPeter Seiderer /* flag UDPCSUM off */
48503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_flag_1, sizeof(dev_cmd_flag_1));
48603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_flag_1));
48703544faaSPeter Seiderer
48803544faaSPeter Seiderer /* flag invalid */
48903544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_flag_2, sizeof(dev_cmd_flag_2));
49003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_flag_2));
49103544faaSPeter Seiderer }
49203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst_min)49303544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst_min) {
49403544faaSPeter Seiderer ssize_t len;
49503544faaSPeter Seiderer
49603544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst_min_0, sizeof(dev_cmd_dst_min_0));
49703544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst_min_0));
49803544faaSPeter Seiderer }
49903544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst)50003544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst) {
50103544faaSPeter Seiderer ssize_t len;
50203544faaSPeter Seiderer
50303544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst_0, sizeof(dev_cmd_dst_0));
50403544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst_0));
50503544faaSPeter Seiderer }
50603544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst_max)50703544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst_max) {
50803544faaSPeter Seiderer ssize_t len;
50903544faaSPeter Seiderer
51003544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst_max_0, sizeof(dev_cmd_dst_max_0));
51103544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst_max_0));
51203544faaSPeter Seiderer }
51303544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst6)51403544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst6) {
51503544faaSPeter Seiderer ssize_t len;
51603544faaSPeter Seiderer
51703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst6_0, sizeof(dev_cmd_dst6_0));
51803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst6_0));
51903544faaSPeter Seiderer }
52003544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst6_min)52103544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst6_min) {
52203544faaSPeter Seiderer ssize_t len;
52303544faaSPeter Seiderer
52403544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst6_min_0, sizeof(dev_cmd_dst6_min_0));
52503544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst6_min_0));
52603544faaSPeter Seiderer }
52703544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst6_max)52803544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst6_max) {
52903544faaSPeter Seiderer ssize_t len;
53003544faaSPeter Seiderer
53103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst6_max_0, sizeof(dev_cmd_dst6_max_0));
53203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst6_max_0));
53303544faaSPeter Seiderer }
53403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_src6)53503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_src6) {
53603544faaSPeter Seiderer ssize_t len;
53703544faaSPeter Seiderer
53803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_src6_0, sizeof(dev_cmd_src6_0));
53903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_src6_0));
54003544faaSPeter Seiderer }
54103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_src_min)54203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_src_min) {
54303544faaSPeter Seiderer ssize_t len;
54403544faaSPeter Seiderer
54503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_src_min_0, sizeof(dev_cmd_src_min_0));
54603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_src_min_0));
54703544faaSPeter Seiderer }
54803544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_src_max)54903544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_src_max) {
55003544faaSPeter Seiderer ssize_t len;
55103544faaSPeter Seiderer
55203544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_src_max_0, sizeof(dev_cmd_src_max_0));
55303544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_src_max_0));
55403544faaSPeter Seiderer }
55503544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_dst_mac)55603544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_dst_mac) {
55703544faaSPeter Seiderer ssize_t len;
55803544faaSPeter Seiderer
55903544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_dst_mac_0, sizeof(dev_cmd_dst_mac_0));
56003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_dst_mac_0));
56103544faaSPeter Seiderer }
56203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_src_mac)56303544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_src_mac) {
56403544faaSPeter Seiderer ssize_t len;
56503544faaSPeter Seiderer
56603544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_src_mac_0, sizeof(dev_cmd_src_mac_0));
56703544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_src_mac_0));
56803544faaSPeter Seiderer }
56903544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_clear_counters)57003544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_clear_counters) {
57103544faaSPeter Seiderer ssize_t len;
57203544faaSPeter Seiderer
57303544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_clear_counters_0, sizeof(dev_cmd_clear_counters_0));
57403544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_clear_counters_0));
57503544faaSPeter Seiderer }
57603544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_flows)57703544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_flows) {
57803544faaSPeter Seiderer ssize_t len;
57903544faaSPeter Seiderer
58003544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_flows_0, sizeof(dev_cmd_flows_0));
58103544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_flows_0));
58203544faaSPeter Seiderer }
58303544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_spi)58403544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_spi) {
58503544faaSPeter Seiderer ssize_t len;
58603544faaSPeter Seiderer
58703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_spi_0, sizeof(dev_cmd_spi_0));
58803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_spi_0)) TH_LOG("CONFIG_XFRM not enabled?");
58903544faaSPeter Seiderer }
59003544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_flowlen)59103544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_flowlen) {
59203544faaSPeter Seiderer ssize_t len;
59303544faaSPeter Seiderer
59403544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_flowlen_0, sizeof(dev_cmd_flowlen_0));
59503544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_flowlen_0));
59603544faaSPeter Seiderer }
59703544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_queue_map_min)59803544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_queue_map_min) {
59903544faaSPeter Seiderer ssize_t len;
60003544faaSPeter Seiderer
60103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_queue_map_min_0, sizeof(dev_cmd_queue_map_min_0));
60203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_queue_map_min_0));
60303544faaSPeter Seiderer }
60403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_queue_map_max)60503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_queue_map_max) {
60603544faaSPeter Seiderer ssize_t len;
60703544faaSPeter Seiderer
60803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_queue_map_max_0, sizeof(dev_cmd_queue_map_max_0));
60903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_queue_map_max_0));
61003544faaSPeter Seiderer }
61103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_mpls)61203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_mpls) {
61303544faaSPeter Seiderer ssize_t len;
61403544faaSPeter Seiderer
61503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_mpls_0, sizeof(dev_cmd_mpls_0));
61603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_mpls_0));
61703544faaSPeter Seiderer
61803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_mpls_1, sizeof(dev_cmd_mpls_1));
61903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_mpls_1));
62003544faaSPeter Seiderer
62103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_mpls_2, sizeof(dev_cmd_mpls_2));
62203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_mpls_2));
62303544faaSPeter Seiderer
62403544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_mpls_3, sizeof(dev_cmd_mpls_3));
62503544faaSPeter Seiderer EXPECT_EQ(len, -1);
62603544faaSPeter Seiderer EXPECT_EQ(errno, E2BIG);
62703544faaSPeter Seiderer }
62803544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_vlan_id)62903544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_vlan_id) {
63003544faaSPeter Seiderer ssize_t len;
63103544faaSPeter Seiderer
63203544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_vlan_id_0, sizeof(dev_cmd_vlan_id_0));
63303544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_vlan_id_0));
63403544faaSPeter Seiderer
63503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_vlan_p_0, sizeof(dev_cmd_vlan_p_0));
63603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_vlan_p_0));
63703544faaSPeter Seiderer
63803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_vlan_cfi_0, sizeof(dev_cmd_vlan_cfi_0));
63903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_vlan_cfi_0));
64003544faaSPeter Seiderer
64103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_vlan_id_1, sizeof(dev_cmd_vlan_id_1));
64203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_vlan_id_1));
64303544faaSPeter Seiderer }
64403544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_svlan_id)64503544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_svlan_id) {
64603544faaSPeter Seiderer ssize_t len;
64703544faaSPeter Seiderer
64803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_svlan_id_0, sizeof(dev_cmd_svlan_id_0));
64903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_svlan_id_0));
65003544faaSPeter Seiderer
65103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_svlan_p_0, sizeof(dev_cmd_svlan_p_0));
65203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_svlan_p_0));
65303544faaSPeter Seiderer
65403544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_svlan_cfi_0, sizeof(dev_cmd_svlan_cfi_0));
65503544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_svlan_cfi_0));
65603544faaSPeter Seiderer
65703544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_svlan_id_1, sizeof(dev_cmd_svlan_id_1));
65803544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_svlan_id_1));
65903544faaSPeter Seiderer }
66003544faaSPeter Seiderer
66103544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_tos)66203544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_tos) {
66303544faaSPeter Seiderer ssize_t len;
66403544faaSPeter Seiderer
66503544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_tos_0, sizeof(dev_cmd_tos_0));
66603544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_tos_0));
66703544faaSPeter Seiderer
66803544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_tos_1, sizeof(dev_cmd_tos_1));
66903544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_tos_1));
67003544faaSPeter Seiderer
67103544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_tos_2, sizeof(dev_cmd_tos_2));
67203544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_tos_2));
67303544faaSPeter Seiderer }
67403544faaSPeter Seiderer
67503544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_traffic_class)67603544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_traffic_class) {
67703544faaSPeter Seiderer ssize_t len;
67803544faaSPeter Seiderer
67903544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_traffic_class_0, sizeof(dev_cmd_traffic_class_0));
68003544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_traffic_class_0));
68103544faaSPeter Seiderer }
68203544faaSPeter Seiderer
TEST_F(proc_net_pktgen,dev_cmd_skb_priority)68303544faaSPeter Seiderer TEST_F(proc_net_pktgen, dev_cmd_skb_priority) {
68403544faaSPeter Seiderer ssize_t len;
68503544faaSPeter Seiderer
68603544faaSPeter Seiderer len = write(self->dev_fd, dev_cmd_skb_priority_0, sizeof(dev_cmd_skb_priority_0));
68703544faaSPeter Seiderer EXPECT_EQ(len, sizeof(dev_cmd_skb_priority_0));
68803544faaSPeter Seiderer }
68903544faaSPeter Seiderer
69003544faaSPeter Seiderer TEST_HARNESS_MAIN
691