From 5e7b3c6533aae1bedce65c1b2dfc28a34cfe8161 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 7 Oct 2019 10:48:23 -0500 Subject: posix_devctl - Add support for SOCKCLOSE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FACE Technical Standard, Edition 3.0 and later require the definition of the subcommand SOCKCLOSE in . Reference: ​https://www.opengroup.org/face closes #3856. --- cpukit/libcsupport/src/posix_devctl.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'cpukit/libcsupport/src') diff --git a/cpukit/libcsupport/src/posix_devctl.c b/cpukit/libcsupport/src/posix_devctl.c index 415b94e278..0646ee4356 100644 --- a/cpukit/libcsupport/src/posix_devctl.c +++ b/cpukit/libcsupport/src/posix_devctl.c @@ -1,5 +1,6 @@ /* - * Copyright (c) 2016 Joel Sherrill . All rights reserved. + * Copyright (c) 2016, 2020 Joel Sherrill . + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -33,6 +34,8 @@ #include #include +#include + int posix_devctl( int fd, int dcmd, @@ -68,5 +71,16 @@ int posix_devctl( *dev_info_ptr = 0; } + /* + * The FACE Technical Standard Edition 3.0 and newer requires the SOCKCLOSE + * ioctl command. This is because the Security Profile does not include + * close() and applications need a way to close sockets. Closing sockets is + * a minimum requirement so using close() in the implementation meets that + * requirement but also lets the application close other file types. + */ + if (dcmd == SOCKCLOSE ) { + return close(fd); + } + return ioctl(fd, dcmd, dev_data_ptr); } -- cgit v1.2.3