blob: 06d7be228b8f38970834e7f10aa83a846c859ddc [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sockscripter.h"
// Bind all api abstractions to real posix calls.
class PosixCalls : public ApiAbstraction {
public:
int socket(int domain, int type, int protocol) override {
return ::socket(domain, type, protocol);
}
int close(int fd) override { return ::close(fd); }
int setsockopt(int fd, int level, int optname, const void* optval, socklen_t optlen) override {
return ::setsockopt(fd, level, optname, optval, optlen);
}
int getsockopt(int fd, int level, int optname, void* optval, socklen_t* optlen) override {
return ::getsockopt(fd, level, optname, optval, optlen);
}
int bind(int fd, const struct sockaddr* addr, socklen_t len) override {
return ::bind(fd, addr, len);
}
int connect(int fd, const struct sockaddr* addr, socklen_t len) override {
return ::connect(fd, addr, len);
}
int accept(int fd, struct sockaddr* addr, socklen_t* len) override {
return ::accept(fd, addr, len);
}
int listen(int fd, int backlog) override { return ::listen(fd, backlog); }
ssize_t send(int fd, const void* buf, size_t len, int flags) override {
return ::send(fd, buf, len, flags);
}
ssize_t sendto(int fd, const void* buf, size_t buflen, int flags, const struct sockaddr* addr,
socklen_t addrlen) override {
return ::sendto(fd, buf, buflen, flags, addr, addrlen);
}
ssize_t recv(int fd, void* buf, size_t len, int flags) override {
return ::recv(fd, buf, len, flags);
}
ssize_t recvfrom(int fd, void* buf, size_t buflen, int flags, struct sockaddr* addr,
socklen_t* addrlen) override {
return ::recvfrom(fd, buf, buflen, flags, addr, addrlen);
}
int getsockname(int fd, struct sockaddr* addr, socklen_t* len) override {
return ::getsockname(fd, addr, len);
}
int getpeername(int fd, struct sockaddr* addr, socklen_t* len) override {
return ::getpeername(fd, addr, len);
}
};
int main(int argc, char* const argv[]) {
PosixCalls calls;
SockScripter scripter(&calls);
return scripter.Execute(argc, argv);
}