| /* GIO - GLib Input, Output and Streaming Library |
| * |
| * Copyright 2013 Red Hat, Inc. |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General |
| * Public License along with this library; if not, see <http://www.gnu.org/licenses/>. |
| */ |
| |
| #ifndef __G_CREDENTIALS_PRIVATE_H__ |
| #define __G_CREDENTIALS_PRIVATE_H__ |
| |
| #include "gio/gcredentials.h" |
| #include "gio/gnetworking.h" |
| |
| /* |
| * G_CREDENTIALS_SUPPORTED: |
| * |
| * Defined to 1 if GCredentials works. |
| */ |
| #undef G_CREDENTIALS_SUPPORTED |
| |
| /* |
| * G_CREDENTIALS_USE_LINUX_UCRED, etc.: |
| * |
| * Defined to 1 if GCredentials uses Linux `struct ucred`, etc. |
| */ |
| #undef G_CREDENTIALS_USE_LINUX_UCRED |
| #undef G_CREDENTIALS_USE_FREEBSD_CMSGCRED |
| #undef G_CREDENTIALS_USE_NETBSD_UNPCBID |
| #undef G_CREDENTIALS_USE_OPENBSD_SOCKPEERCRED |
| #undef G_CREDENTIALS_USE_SOLARIS_UCRED |
| #undef G_CREDENTIALS_USE_APPLE_XUCRED |
| |
| /* |
| * G_CREDENTIALS_NATIVE_TYPE: |
| * |
| * Defined to one of G_CREDENTIALS_TYPE_LINUX_UCRED, etc. |
| */ |
| #undef G_CREDENTIALS_NATIVE_TYPE |
| |
| /* |
| * G_CREDENTIALS_NATIVE_SIZE: |
| * |
| * Defined to the size of the %G_CREDENTIALS_NATIVE_TYPE |
| */ |
| #undef G_CREDENTIALS_NATIVE_SIZE |
| |
| /* |
| * G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED: |
| * |
| * Defined to 1 if we have a message-passing API in which credentials |
| * are attached to a particular message, such as `SCM_CREDENTIALS` on Linux |
| * or `SCM_CREDS` on FreeBSD. |
| */ |
| #undef G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED |
| |
| /* |
| * G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED: |
| * |
| * Defined to 1 if we have a `getsockopt()`-style API in which one end of |
| * a socket connection can directly query the credentials of the process |
| * that initiated the other end, such as `getsockopt SO_PEERCRED` on Linux |
| * or `getpeereid()` on multiple operating systems. |
| */ |
| #undef G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED |
| |
| /* |
| * G_CREDENTIALS_SPOOFING_SUPPORTED: |
| * |
| * Defined to 1 if privileged processes can spoof their credentials when |
| * using the message-passing API. |
| */ |
| #undef G_CREDENTIALS_SPOOFING_SUPPORTED |
| |
| /* |
| * G_CREDENTIALS_PREFER_MESSAGE_PASSING: |
| * |
| * Defined to 1 if the data structure transferred by the message-passing |
| * API is strictly more informative than the one transferred by the |
| * `getsockopt()`-style API, and hence should be preferred, even for |
| * protocols like D-Bus that are defined in terms of the credentials of |
| * the (process that opened the) socket, as opposed to the credentials |
| * of an individual message. |
| */ |
| #undef G_CREDENTIALS_PREFER_MESSAGE_PASSING |
| |
| /* |
| * G_CREDENTIALS_HAS_PID: |
| * |
| * Defined to 1 if the %G_CREDENTIALS_NATIVE_TYPE contains the process ID. |
| */ |
| #undef G_CREDENTIALS_HAS_PID |
| |
| #ifdef __linux__ |
| #define G_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_USE_LINUX_UCRED 1 |
| #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED |
| #define G_CREDENTIALS_NATIVE_SIZE (sizeof (struct ucred)) |
| #define G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED 1 |
| #define G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_SPOOFING_SUPPORTED 1 |
| #define G_CREDENTIALS_HAS_PID 1 |
| |
| #elif defined(__FreeBSD__) || \ |
| defined(__FreeBSD_kernel__) /* Debian GNU/kFreeBSD */ || \ |
| defined(__GNU__) /* GNU Hurd */ || \ |
| defined(__DragonFly__) /* DragonFly BSD */ |
| #define G_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_USE_FREEBSD_CMSGCRED 1 |
| #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED |
| #define G_CREDENTIALS_NATIVE_SIZE (sizeof (struct cmsgcred)) |
| #define G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED 1 |
| #define G_CREDENTIALS_SPOOFING_SUPPORTED 1 |
| /* GLib doesn't implement it yet, but FreeBSD's getsockopt()-style API |
| * is getpeereid(), which is not as informative as struct cmsgcred - |
| * it does not tell us the PID. As a result, libdbus prefers to use |
| * SCM_CREDS, and if we implement getpeereid() in future, we should |
| * do the same. */ |
| #define G_CREDENTIALS_PREFER_MESSAGE_PASSING 1 |
| #define G_CREDENTIALS_HAS_PID 1 |
| |
| #elif defined(__NetBSD__) |
| #define G_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_USE_NETBSD_UNPCBID 1 |
| #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_NETBSD_UNPCBID |
| #define G_CREDENTIALS_NATIVE_SIZE (sizeof (struct unpcbid)) |
| /* #undef G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED */ |
| #define G_CREDENTIALS_SPOOFING_SUPPORTED 1 |
| #define G_CREDENTIALS_HAS_PID 1 |
| |
| #elif defined(__OpenBSD__) |
| #define G_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_USE_OPENBSD_SOCKPEERCRED 1 |
| #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED |
| #define G_CREDENTIALS_NATIVE_SIZE (sizeof (struct sockpeercred)) |
| #define G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_SPOOFING_SUPPORTED 1 |
| #define G_CREDENTIALS_HAS_PID 1 |
| |
| #elif defined(__sun__) || defined(__illumos__) || defined (__OpenSolaris_kernel__) |
| #include <ucred.h> |
| #define G_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_USE_SOLARIS_UCRED 1 |
| #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_SOLARIS_UCRED |
| #define G_CREDENTIALS_NATIVE_SIZE (ucred_size ()) |
| #define G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED 1 |
| #define G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_HAS_PID 1 |
| |
| #elif defined(__APPLE__) |
| #include <sys/ucred.h> |
| #define G_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_USE_APPLE_XUCRED 1 |
| #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_APPLE_XUCRED |
| #define G_CREDENTIALS_NATIVE_SIZE (sizeof (struct xucred)) |
| #undef G_CREDENTIALS_UNIX_CREDENTIALS_MESSAGE_SUPPORTED |
| #define G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED 1 |
| #define G_CREDENTIALS_SPOOFING_SUPPORTED 1 |
| #define G_CREDENTIALS_HAS_PID 0 |
| |
| #endif |
| |
| #endif /* __G_CREDENTIALS_PRIVATE_H__ */ |