[klee-commits] [1498] Skeleton files for socket models.
cristic at stanford.edu
cristic at stanford.edu
Fri Mar 13 16:14:24 PDT 2009
Revision: 1498
http://keeda.stanford.edu/viewvc/viewvc.cgi?view=rev&revision=1498
Author: cristic
Date: 2009-03-13 16:14:24 -0700 (Fri, 13 Mar 2009)
Log Message:
-----------
Skeleton files for socket models.
Added Paths:
-----------
models/simple/sockets.c
models/simple/sockets.h
Added: models/simple/sockets.c
===================================================================
--- models/simple/sockets.c (rev 0)
+++ models/simple/sockets.c 2009-03-13 23:14:24 UTC (rev 1498)
@@ -0,0 +1,91 @@
+#include "sockets.h"
+
+#include <linux/net.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdio.h>
+
+void klee_warning(const char*);
+void klee_warning_once(const char*);
+int klee_get_errno(void);
+
+int __socketcall(int type, int *args) __attribute__((weak));
+int __socketcall(int type, int *args) {
+ switch (type) {
+ case SYS_SOCKET:
+ return __fd_socket(args[0], args[1], args[2]);
+ case SYS_BIND:
+ return __fd_bind(args[0], (const struct sockaddr *)args[1], args[2]);
+ case SYS_CONNECT:
+ return __fd_connect(args[0], (const struct sockaddr *)args[1], args[2]);
+ case SYS_LISTEN:
+ return __fd_listen(args[0], args[1]);
+ case SYS_ACCEPT:
+ return __fd_accept(args[0], (struct sockaddr *)args[1], (socklen_t *)args[2]);
+ case SYS_GETSOCKNAME:
+ case SYS_GETPEERNAME:
+ case SYS_SOCKETPAIR:
+ break;
+ case SYS_SEND:
+ return __fd_send(args[0], (const void *)args[1], (size_t)args[2], args[3]);
+ case SYS_RECV:
+ return __fd_recv(args[0], (void *)args[1], (size_t)args[2], args[3]);
+ case SYS_SENDTO:
+ case SYS_RECVFROM:
+ break;
+ case SYS_SHUTDOWN:
+ return __fd_shutdown(args[0], args[1]);
+ case SYS_SETSOCKOPT:
+ klee_warning("ignoring setsockopt");
+ return 0;
+ case SYS_GETSOCKOPT:
+ klee_warning("ignoring getsockopt");
+ return 0;
+ case SYS_SENDMSG:
+ case SYS_RECVMSG:
+ break;
+ }
+ printf("__socketcall(type=%d: unknown): errno=ENOSYS\n", type);
+ errno = ENOSYS;
+ return -1;
+}
+
+
+int __fd_socket(int domain, int type, int protocol) {
+ return -1;
+}
+
+
+int __fd_bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
+ return 0;
+}
+
+int __fd_connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) {
+ return 0;
+}
+
+int __fd_listen(int sockfd, int backlog) {
+ return 0;
+}
+
+int __fd_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) {
+ return 0;
+}
+
+int __fd_shutdown(int fd, int how) {
+ return 0;
+}
+
+ssize_t __fd_recv(int fd, void *buf, size_t len, int flags)
+{
+ if (flags != 0)
+ klee_warning("recv: flags is not zero, ignoring");
+ return read(fd, buf, len);
+}
+
+ssize_t __fd_send(int fd, const void *buf, size_t len, int flags)
+{
+ if (flags != 0)
+ klee_warning("send: flags is not zero, ignoring");
+ return write(fd, buf, len);
+}
Added: models/simple/sockets.h
===================================================================
--- models/simple/sockets.h (rev 0)
+++ models/simple/sockets.h 2009-03-13 23:14:24 UTC (rev 1498)
@@ -0,0 +1,17 @@
+#ifndef __EXE_SOCKETS__
+#define __EXE_SOCKETS__
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+int __fd_socket(int domain, int type, int protocol);
+int __fd_bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
+int __fd_connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
+int __fd_listen(int sockfd, int backlog);
+int __fd_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
+int __fd_shutdown(int sockfd, int how);
+ssize_t __fd_recv(int fd, void *buf, size_t len, int flags);
+ssize_t __fd_send(int fd, const void *buf, size_t len, int flags);
+
+#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://keeda.Stanford.EDU/pipermail/klee-commits/attachments/20090313/13d78133/attachment.html
More information about the klee-commits
mailing list