diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1996-09-04 14:17:43 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1996-09-04 14:17:43 +0000 |
commit | a0c8d7373311facda78d250751203371cc0487b2 (patch) | |
tree | cfb65b4d0bff35f71cede7ae09e647433845236f /otherlibs/win32unix/sockopt.c | |
parent | ac9f8e8094ea19199a24fd5c67053718198ed172 (diff) |
Merge du stage de Pascal Cuoq
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@952 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/win32unix/sockopt.c')
-rw-r--r-- | otherlibs/win32unix/sockopt.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/otherlibs/win32unix/sockopt.c b/otherlibs/win32unix/sockopt.c new file mode 100644 index 000000000..1cda657ed --- /dev/null +++ b/otherlibs/win32unix/sockopt.c @@ -0,0 +1,42 @@ +/***********************************************************************/ +/* */ +/* Objective Caml */ +/* */ +/* Xavier Leroy and Pascal Cuoq, projet Cristal, INRIA Rocquencourt */ +/* */ +/* Copyright 1996 Institut National de Recherche en Informatique et */ +/* Automatique. Distributed only by permission. */ +/* */ +/***********************************************************************/ + +/* $Id$ */ + +#include <mlvalues.h> +#include "unixwin.h" +#include <winsock.h> +#include <sys/types.h> + +static int sockopt[] = { + SO_DEBUG, SO_BROADCAST, SO_REUSEADDR, SO_KEEPALIVE, + SO_DONTROUTE, SO_OOBINLINE }; + +value unix_getsockopt(socket, option) + value socket, option; +{ + int optval, optsize; + optsize = sizeof(optval); + if (getsockopt(_get_osfhandle(Int_val(socket)), SOL_SOCKET, + sockopt[Int_val(option)], &optval, &optsize) == -1) + uerror("getsockopt", Nothing); + return Val_int(optval); +} + +value unix_setsockopt(socket, option, status) + value socket, option, status; +{ + int optval = Int_val(status); + if (setsockopt(_get_osfhandle(Int_val(socket)), SOL_SOCKET, + sockopt[Int_val(option)], &optval, sizeof(optval)) == -1) + uerror("setsockopt", Nothing); + return Val_unit; +} |