diff options
author | Lukas Larsson <[email protected]> | 2014-07-11 10:46:37 +0200 |
---|---|---|
committer | Henrik Nord <[email protected]> | 2014-07-22 09:29:22 +0200 |
commit | 8a6390613225ec3f3e2d5bbf537d2e0737342e87 (patch) | |
tree | a89fa6a8466484f4d3e91793659dc77763af5565 /lib/kernel/test/gen_tcp_api_SUITE_data | |
parent | 450f0f893b5d28e6d967b163111f8a8a6032b0e1 (diff) | |
download | otp-8a6390613225ec3f3e2d5bbf537d2e0737342e87.tar.gz otp-8a6390613225ec3f3e2d5bbf537d2e0737342e87.tar.bz2 otp-8a6390613225ec3f3e2d5bbf537d2e0737342e87.zip |
kernel: When doing an fdopen we now also bind the fd to the specified addr/port
Diffstat (limited to 'lib/kernel/test/gen_tcp_api_SUITE_data')
-rw-r--r-- | lib/kernel/test/gen_tcp_api_SUITE_data/Makefile.src | 8 | ||||
-rw-r--r-- | lib/kernel/test/gen_tcp_api_SUITE_data/gen_tcp_api_SUITE.c | 61 |
2 files changed, 69 insertions, 0 deletions
diff --git a/lib/kernel/test/gen_tcp_api_SUITE_data/Makefile.src b/lib/kernel/test/gen_tcp_api_SUITE_data/Makefile.src new file mode 100644 index 0000000000..b6027de0d7 --- /dev/null +++ b/lib/kernel/test/gen_tcp_api_SUITE_data/Makefile.src @@ -0,0 +1,8 @@ + +NIF_LIBS = gen_tcp_api_SUITE@dll@ + +all: $(NIF_LIBS) + +@SHLIB_RULES@ + +$(NIF_LIBS): gen_tcp_api_SUITE.c diff --git a/lib/kernel/test/gen_tcp_api_SUITE_data/gen_tcp_api_SUITE.c b/lib/kernel/test/gen_tcp_api_SUITE_data/gen_tcp_api_SUITE.c new file mode 100644 index 0000000000..6be7838363 --- /dev/null +++ b/lib/kernel/test/gen_tcp_api_SUITE_data/gen_tcp_api_SUITE.c @@ -0,0 +1,61 @@ +/* + * %CopyrightBegin% + * + * Copyright Ericsson AB 2009-2013. All Rights Reserved. + * + * The contents of this file are subject to the Erlang Public License, + * Version 1.1, (the "License"); you may not use this file except in + * compliance with the License. You should have received a copy of the + * Erlang Public License along with this software. If not, it can be + * retrieved online at http://www.erlang.org/. + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + * the License for the specific language governing rights and limitations + * under the License. + * + * %CopyrightEnd% + */ +#include "erl_nif.h" + +#include <stdio.h> +#include <string.h> +#include <assert.h> +#include <limits.h> +#include <sys/socket.h> +#include <sys/types.h> + +#ifdef __WIN32__ +#include <winsock2.h> +#else + +#endif + +#define sock_open(af, type, proto) socket((af), (type), (proto)) + +static ERL_NIF_TERM getsockfd(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + int fd; + + fd = sock_open(AF_INET, SOCK_STREAM, 0); + return enif_make_int(env, fd); +} + +static ERL_NIF_TERM closesockfd(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + int fd; + + enif_get_int(env, argv[0], &fd); + + close(fd); + + return enif_make_int(env, fd); +} + +static ErlNifFunc nif_funcs[] = +{ + {"getsockfd", 0, getsockfd}, + {"closesockfd", 1, closesockfd} +}; + +ERL_NIF_INIT(gen_tcp_api_SUITE,nif_funcs,NULL,NULL,NULL,NULL) |