Add Syscalls wrapper for writev() and use in XfrmController

Bug:62618292

Test: runtest -x tests/netd_integration_test.cpp

Change-Id: I743c3867aed62d099de6d80bed89e02e11bac5fc
diff --git a/libnetdutils/Syscalls.cpp b/libnetdutils/Syscalls.cpp
index 00e2422..b0301d2 100644
--- a/libnetdutils/Syscalls.cpp
+++ b/libnetdutils/Syscalls.cpp
@@ -109,6 +109,14 @@
         return rv;
     }
 
+    StatusOr<size_t> writev(Fd fd, const std::vector<iovec>& iov) const override {
+        auto rv = syscallRetry(::writev, fd.get(), iov.data(), iov.size());
+        if (rv == -1) {
+            return statusFromErrno(errno, "writev() failed");
+        }
+        return rv;
+    }
+
     StatusOr<size_t> write(Fd fd, const Slice buf) const override {
         auto rv = syscallRetry(::write, fd.get(), buf.base(), buf.size());
         if (rv == -1) {