On 15/07/10 16:49, Emilio Pozuelo Monfort wrote: > Here it goes, with a good commit message:
Forgot to add the file before committing :( >From 1d24cce79fd6cc0b7618a716cc6c489585497445 Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort <poch...@gmail.com> Date: Wed, 14 Jul 2010 18:40:36 +0200 Subject: [PATCH] Implement getsockopt (fd, SOL_SOCKET, SO_TYPE, ...) * pflocal/socket.c (S_socket_getopt): Add SO_TYPE support for SOL_SOCKET sockets. --- pflocal/socket.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) diff --git a/pflocal/socket.c b/pflocal/socket.c index 06777ca..009e999 100644 --- a/pflocal/socket.c +++ b/pflocal/socket.c @@ -1,6 +1,6 @@ /* Socket-specific operations - Copyright (C) 1995, 2008 Free Software Foundation, Inc. + Copyright (C) 1995, 2008, 2010 Free Software Foundation, Inc. Written by Miles Bader <mi...@gnu.ai.mit.edu> @@ -410,14 +410,30 @@ S_socket_recv (struct sock_user *user, return err; } - -/* Stubs for currently unsupported rpcs. */ error_t S_socket_getopt (struct sock_user *user, int level, int opt, char **value, size_t *value_len) { + switch (level) + { + case SOL_SOCKET: + switch (opt) + { + case SO_TYPE: + if (value_len == NULL || value == NULL || *value == NULL) + return EINVAL; + *(int*)*value = user->sock->pipe_class->sock_type; + *value_len = sizeof (user->sock->pipe_class->sock_type); + return 0; + default: + break; + } + default: + break; + } + return EOPNOTSUPP; } -- 1.7.1