unix_pass_fd_fix.c revision 1.1.1.1
1/*	$NetBSD: unix_pass_fd_fix.c,v 1.1.1.1 2010/06/17 18:07:15 tron Exp $	*/
2
3/*++
4/* NAME
5/*	unix_pass_fd_fix 3
6/* SUMMARY
7/*	file descriptor passing bug workarounds
8/* SYNOPSIS
9/*	#include <iostuff.h>
10/*
11/*	void	set_unix_pass_fd_fix(workarounds)
12/*	const char *workarounds;
13/* DESCRIPTION
14/*	This module supports programmatic control over workarounds
15/*	for sending or receiving file descriptors over UNIX-domain
16/*	sockets.
17/*
18/*	set_unix_pass_fd_fix() takes a list of workarouds in external
19/*	form, and stores their internal representation. The result
20/*	is used by unix_send_fd() and unix_recv_fd().
21/*
22/*	Arguments:
23/* .IP workarounds
24/*	List of zero or more of the following, separated by comma
25/*	or whitespace.
26/* .RS
27/* .IP cmsg_len
28/*	Send the CMSG_LEN of the file descriptor, instead of
29/*	the total message buffer length.
30/* .RE
31/* SEE ALSO
32/*	unix_send_fd(3) send file descriptor
33/*	unix_recv_fd(3) receive file descriptor
34/* DIAGNOSTICS
35/*	Fatal errors: non-existent workaround.
36/* LICENSE
37/* .ad
38/* .fi
39/*	The Secure Mailer license must be distributed with this software.
40/* AUTHOR(S)
41/*	Wietse Venema
42/*	IBM T.J. Watson Research
43/*	P.O. Box 704
44/*	Yorktown Heights, NY 10598, USA
45/*--*/
46
47/* System library. */
48
49#include <sys_defs.h>
50
51/* Utility library. */
52
53#include <iostuff.h>
54#include <name_mask.h>
55
56int     unix_pass_fd_fix = 0;
57
58/* set_unix_pass_fd_fix - set workaround programmatically */
59
60void    set_unix_pass_fd_fix(const char *workarounds)
61{
62    const static NAME_MASK table[] = {
63	"cmsg_len", UNIX_PASS_FD_FIX_CMSG_LEN,
64	0,
65    };
66
67    unix_pass_fd_fix = name_mask("descriptor passing workarounds",
68				 table, workarounds);
69}
70