Skip to content

Implements ancillary data on NetBSD. #8700

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions ext/sockets/conversions.c
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ static void from_zval_write_sa_family(const zval *arr_value, char *field, ser_co
memcpy(field, &ival, sizeof(ival));
}

#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT)
#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT) || defined(LOCAL_CREDS)
static void from_zval_write_pid_t(const zval *arr_value, char *field, ser_context *ctx)
{
zend_long lval;
Expand Down Expand Up @@ -522,7 +522,7 @@ static void to_zval_read_uint32(const char *data, zval *zv, res_context *ctx)
ZVAL_LONG(zv, (zend_long)ival);
}
#endif
#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT)
#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT) || defined(LOCAL_CREDS)
static void to_zval_read_pid_t(const char *data, zval *zv, res_context *ctx)
{
pid_t ival;
Expand Down Expand Up @@ -1302,13 +1302,18 @@ void to_zval_read_in6_pktinfo(const char *data, zval *zv, res_context *ctx)
#endif

/* CONVERSIONS for struct ucred */
#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT)
#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT) || defined(LOCAL_CREDS)
static const field_descriptor descriptors_ucred[] = {
#if defined(LOCAL_CREDS_PERSISTENT)
{"pid", sizeof("pid"), 1, offsetof(struct sockcred2, sc_pid), from_zval_write_pid_t, to_zval_read_pid_t},
{"uid", sizeof("uid"), 1, offsetof(struct sockcred2, sc_euid), from_zval_write_uid_t, to_zval_read_uid_t},
/* the type gid_t is the same as uid_t: */
{"gid", sizeof("gid"), 1, offsetof(struct sockcred2, sc_egid), from_zval_write_uid_t, to_zval_read_uid_t},
#elif defined(LOCAL_CREDS)
{"pid", sizeof("pid"), 1, offsetof(struct sockcred, sc_pid), from_zval_write_pid_t, to_zval_read_pid_t},
{"uid", sizeof("uid"), 1, offsetof(struct sockcred, sc_euid), from_zval_write_uid_t, to_zval_read_uid_t},
/* the type gid_t is the same as uid_t: */
{"gid", sizeof("gid"), 1, offsetof(struct sockcred, sc_egid), from_zval_write_uid_t, to_zval_read_uid_t},
#elif defined(ANC_CREDS_CMSGCRED)
{"pid", sizeof("pid"), 1, offsetof(struct cmsgcred, cmcred_pid), from_zval_write_pid_t, to_zval_read_pid_t},
{"uid", sizeof("uid"), 1, offsetof(struct cmsgcred, cmcred_uid), from_zval_write_uid_t, to_zval_read_uid_t},
Expand Down
4 changes: 2 additions & 2 deletions ext/sockets/conversions.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#ifndef PHP_WIN32
# include <netinet/in.h>
# include <sys/socket.h>
# ifdef __FreeBSD__
# if defined(__FreeBSD__) || defined(__NetBSD__)
# include <sys/un.h>
# endif
#else
Expand Down Expand Up @@ -54,7 +54,7 @@ void from_zval_write_in6_pktinfo(const zval *container, char *in6_pktinfo_c, ser
void to_zval_read_in6_pktinfo(const char *data, zval *zv, res_context *ctx);
#endif

#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT)
#if defined(SO_PASSCRED) || defined(LOCAL_CREDS_PERSISTENT) || defined(LOCAL_CREDS)
void from_zval_write_ucred(const zval *container, char *ucred_c, ser_context *ctx);
void to_zval_read_ucred(const char *data, zval *zv, res_context *ctx);
#endif
Expand Down
10 changes: 8 additions & 2 deletions ext/sockets/sendrecvmsg.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,12 @@ static void init_ancillary_registry(void)
#endif
#endif

#ifdef LOCAL_CREDS_PERSISTENT
#if defined(LOCAL_CREDS_PERSISTENT)
PUT_ENTRY(SOCKCRED2SIZE(1), 1, 0, from_zval_write_ucred,
to_zval_read_ucred, SOL_SOCKET, SCM_CREDS2);
#elif defined(LOCAL_CREDS)
PUT_ENTRY(SOCKCREDSIZE(1), 1, 0, from_zval_write_ucred,
to_zval_read_ucred, SOL_SOCKET, SCM_CREDS);
#endif

#ifdef SCM_RIGHTS
Expand Down Expand Up @@ -457,9 +460,12 @@ void php_socket_sendrecvmsg_init(INIT_FUNC_ARGS)
#endif
REGISTER_LONG_CONSTANT("SO_PASSCRED", SO_PASSCRED, CONST_CS | CONST_PERSISTENT);
#endif
#ifdef LOCAL_CREDS_PERSISTENT
#if defined(LOCAL_CREDS_PERSISTENT)
REGISTER_LONG_CONSTANT("SCM_CREDS2", SCM_CREDS2, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("LOCAL_CREDS_PERSISTENT", LOCAL_CREDS_PERSISTENT, CONST_CS | CONST_PERSISTENT);
#elif defined(LOCAL_CREDS)
REGISTER_LONG_CONSTANT("SCM_CREDS", SCM_CREDS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("LOCAL_CREDS", LOCAL_CREDS, CONST_CS | CONST_PERSISTENT);
#endif

#ifdef ZTS
Expand Down