/* * for the MontaukOS git port. * * MontaukOS does have TCP -- the kernel exposes it as IPC handles through * montauk::socket(), not as BSD descriptors -- but nothing bridges the two * into the fd space that read()/write() use, and git's transports assume a * descriptor it can hand to a sub-process. Until that bridge exists, every * call here fails with ENOSYS, which surfaces as "unable to connect" from * `git clone git://...` rather than as a crash. * * That leaves the local transports -- init, add, commit, log, diff, and * clone/fetch/push against a path on disk -- which are what this port is for. * * Implementations in montauk-compat.c. */ #ifndef _MONTAUK_GIT_SYS_SOCKET_H_ #define _MONTAUK_GIT_SYS_SOCKET_H_ #include typedef unsigned int socklen_t; typedef unsigned short sa_family_t; #define AF_UNSPEC 0 #define AF_UNIX 1 #define AF_LOCAL 1 #define AF_INET 2 #define AF_INET6 10 #define PF_UNSPEC AF_UNSPEC #define PF_UNIX AF_UNIX #define PF_INET AF_INET #define PF_INET6 AF_INET6 #define SOCK_STREAM 1 #define SOCK_DGRAM 2 #define SOL_SOCKET 1 #define SO_REUSEADDR 2 #define SO_ERROR 4 #define SO_KEEPALIVE 9 #define SO_LINGER 13 #define SHUT_RD 0 #define SHUT_WR 1 #define SHUT_RDWR 2 #define MSG_PEEK 2 struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; /* Large enough for sockaddr_in6, aligned like the real thing. */ struct sockaddr_storage { sa_family_t ss_family; unsigned long __ss_align; char __ss_padding[112]; }; struct linger { int l_onoff; int l_linger; }; int socket(int domain, int type, int protocol); int connect(int fd, const struct sockaddr *addr, socklen_t len); int bind(int fd, const struct sockaddr *addr, socklen_t len); int listen(int fd, int backlog); int accept(int fd, struct sockaddr *addr, socklen_t *len); int shutdown(int fd, int how); int setsockopt(int fd, int level, int name, const void *val, socklen_t len); int getsockopt(int fd, int level, int name, void *val, socklen_t *len); int getsockname(int fd, struct sockaddr *addr, socklen_t *len); int getpeername(int fd, struct sockaddr *addr, socklen_t *len); ssize_t send(int fd, const void *buf, size_t len, int flags); ssize_t recv(int fd, void *buf, size_t len, int flags); #endif /* _MONTAUK_GIT_SYS_SOCKET_H_ */