svn commit: r247669 - head/tools/regression/pjdfstest
Pawel Jakub Dawidek
pjd at FreeBSD.org
Sat Mar 2 21:16:41 UTC 2013
Author: pjd
Date: Sat Mar 2 21:16:40 2013
New Revision: 247669
URL: http://svnweb.freebsd.org/changeset/base/247669
Log:
Add support for bindat(2) and connectat(2).
Sponsored by: The FreeBSD Foundation
Modified:
head/tools/regression/pjdfstest/Makefile
head/tools/regression/pjdfstest/pjdfstest.c
Modified: head/tools/regression/pjdfstest/Makefile
==============================================================================
--- head/tools/regression/pjdfstest/Makefile Sat Mar 2 21:12:54 2013 (r247668)
+++ head/tools/regression/pjdfstest/Makefile Sat Mar 2 21:16:40 2013 (r247669)
@@ -6,7 +6,7 @@ ${PROG}: ${PROG}.c
@OSTYPE=`uname`; \
CFLAGS=-D__OS_$${OSTYPE}__; \
if [ $$OSTYPE = "FreeBSD" ]; then \
- CFLAGS="$$CFLAGS -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS -DHAS_LCHFLAGS -DHAS_FREEBSD_ACL"; \
+ CFLAGS="$$CFLAGS -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS -DHAS_LCHFLAGS -DHAS_FREEBSD_ACL -DHAS_BINDAT -DHAS_CONNECTAT"; \
elif [ $$OSTYPE = "SunOS" ]; then \
CFLAGS="$$CFLAGS -DHAS_TRUNCATE64 -DHAS_STAT64"; \
CFLAGS="$$CFLAGS -lsocket"; \
Modified: head/tools/regression/pjdfstest/pjdfstest.c
==============================================================================
--- head/tools/regression/pjdfstest/pjdfstest.c Sat Mar 2 21:12:54 2013 (r247668)
+++ head/tools/regression/pjdfstest/pjdfstest.c Sat Mar 2 21:16:40 2013 (r247669)
@@ -82,7 +82,13 @@ enum action {
ACTION_MKNOD,
ACTION_MKNODAT,
ACTION_BIND,
+#ifdef HAS_BINDAT
+ ACTION_BINDAT,
+#endif
ACTION_CONNECT,
+#ifdef HAS_CONNECTAT
+ ACTION_CONNECTAT,
+#endif
ACTION_CHMOD,
ACTION_FCHMOD,
#ifdef HAS_LCHMOD
@@ -154,7 +160,13 @@ static struct syscall_desc syscalls[] =
{ "mknod", ACTION_MKNOD, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE} },
{ "mknodat", ACTION_MKNODAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE} },
{ "bind", ACTION_BIND, { TYPE_STRING, TYPE_NONE } },
+#ifdef HAS_BINDAT
+ { "bindat", ACTION_BINDAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
+#endif
{ "connect", ACTION_CONNECT, { TYPE_STRING, TYPE_NONE } },
+#ifdef HAS_CONNECTAT
+ { "connectat", ACTION_CONNECTAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
+#endif
{ "chmod", ACTION_CHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
{ "fchmod", ACTION_FCHMOD, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NONE } },
#ifdef HAS_LCHMOD
@@ -732,6 +744,22 @@ call_syscall(struct syscall_desc *scall,
rval = bind(rval, (struct sockaddr *)&sunx, sizeof(sunx));
break;
}
+#ifdef HAS_BINDAT
+ case ACTION_BINDAT:
+ {
+ struct sockaddr_un sunx;
+
+ sunx.sun_family = AF_UNIX;
+ strncpy(sunx.sun_path, STR(1), sizeof(sunx.sun_path) - 1);
+ sunx.sun_path[sizeof(sunx.sun_path) - 1] = '\0';
+ rval = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (rval < 0)
+ break;
+ rval = bindat(NUM(0), rval, (struct sockaddr *)&sunx,
+ sizeof(sunx));
+ break;
+ }
+#endif
case ACTION_CONNECT:
{
struct sockaddr_un sunx;
@@ -745,6 +773,22 @@ call_syscall(struct syscall_desc *scall,
rval = connect(rval, (struct sockaddr *)&sunx, sizeof(sunx));
break;
}
+#ifdef HAS_CONNECTAT
+ case ACTION_CONNECTAT:
+ {
+ struct sockaddr_un sunx;
+
+ sunx.sun_family = AF_UNIX;
+ strncpy(sunx.sun_path, STR(1), sizeof(sunx.sun_path) - 1);
+ sunx.sun_path[sizeof(sunx.sun_path) - 1] = '\0';
+ rval = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (rval < 0)
+ break;
+ rval = connectat(NUM(0), rval, (struct sockaddr *)&sunx,
+ sizeof(sunx));
+ break;
+ }
+#endif
case ACTION_CHMOD:
rval = chmod(STR(0), (mode_t)NUM(1));
break;
More information about the svn-src-head
mailing list