- fprintf(stderr, "Sending %d frames\n", count);
- for (i = 0; i < count; i++) {
- ret = write(ss, &cf, sizeof(cf));
- if (ret != sizeof(cf)) {
- perror("write");
- exit(1);
+ switch (method) {
+ case READWRITE: {
+ if (!quiet) fprintf(stderr, "Sending %d frames via write()\n", count);
+ clock_gettime(CLOCK_MONOTONIC, &t1);
+ for (i = 0; i < count; i++) {
+ ret = write(ss, &cf, sizeof(cf));
+ if (ret != sizeof(cf)) {
+ perror("write");
+ exit(1);
+ }
+ }
+ clock_gettime(CLOCK_MONOTONIC, &t2);
+ break;
+ }
+ case MMSG: {
+ if (!quiet) fprintf(stderr, "Sending %d frames via sendmmsg()\n", count);
+ struct mmsghdr msgs[count];
+ struct iovec iovecs[count];
+ memset(msgs, 0, sizeof(msgs));
+ memset(iovecs, 0, sizeof(iovecs));
+ for (i = 0; i < count; i++) {
+ iovecs[i].iov_base = &cf;
+ iovecs[i].iov_len = sizeof(cf);
+ msgs[i].msg_hdr.msg_iov = &iovecs[i];
+ msgs[i].msg_hdr.msg_iovlen = 1;