Contributors: 18
Author Tokens Token Proportion Commits Commit Proportion
Linus Torvalds (pre-git) 80 24.24% 11 24.44%
Pavel Emelyanov 63 19.09% 5 11.11%
Kuniyuki Iwashima 46 13.94% 7 15.56%
Eric Dumazet 30 9.09% 4 8.89%
Américo Wang 30 9.09% 2 4.44%
Linus Torvalds 15 4.55% 2 4.44%
Arnaldo Carvalho de Melo 13 3.94% 1 2.22%
Jiang Wang 11 3.33% 1 2.22%
Eric W. Biedermann 9 2.73% 2 4.44%
Catherine Zhang 9 2.73% 2 4.44%
Daniel Borkmann 8 2.42% 1 2.22%
dann frazier 7 2.12% 1 2.22%
Stephen Hemminger 2 0.61% 1 2.22%
David S. Miller 2 0.61% 1 2.22%
Cyrill V. Gorcunov 2 0.61% 1 2.22%
Kees Cook 1 0.30% 1 2.22%
Greg Kroah-Hartman 1 0.30% 1 2.22%
YU Bo 1 0.30% 1 2.22%
Total 330 45


/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AF_UNIX_H
#define __AF_UNIX_H

#include <linux/uidgid.h>

#define UNIX_HASH_MOD	(256 - 1)
#define UNIX_HASH_SIZE	(256 * 2)
#define UNIX_HASH_BITS	8

struct sock *unix_peer_get(struct sock *sk);

struct unix_skb_parms {
	struct pid		*pid;		/* skb credentials	*/
	kuid_t			uid;
	kgid_t			gid;
	struct scm_fp_list	*fp;		/* Passed files		*/
#ifdef CONFIG_SECURITY_NETWORK
	u32			secid;		/* Security ID		*/
#endif
	u32			consumed;
} __randomize_layout;

#define UNIXCB(skb)	(*(struct unix_skb_parms *)&((skb)->cb))

/* GC for SCM_RIGHTS */
extern unsigned int unix_tot_inflight;
void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver);
void unix_del_edges(struct scm_fp_list *fpl);
void unix_update_edges(struct unix_sock *receiver);
int unix_prepare_fpl(struct scm_fp_list *fpl);
void unix_destroy_fpl(struct scm_fp_list *fpl);
void unix_gc(void);
void wait_for_unix_gc(struct scm_fp_list *fpl);

/* SOCK_DIAG */
long unix_inq_len(struct sock *sk);
long unix_outq_len(struct sock *sk);

/* sysctl */
#ifdef CONFIG_SYSCTL
int unix_sysctl_register(struct net *net);
void unix_sysctl_unregister(struct net *net);
#else
static inline int unix_sysctl_register(struct net *net)
{
	return 0;
}

static inline void unix_sysctl_unregister(struct net *net)
{
}
#endif

/* BPF SOCKMAP */
int __unix_dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t size, int flags);
int __unix_stream_recvmsg(struct sock *sk, struct msghdr *msg, size_t size, int flags);

#ifdef CONFIG_BPF_SYSCALL
extern struct proto unix_dgram_proto;
extern struct proto unix_stream_proto;

int unix_dgram_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore);
int unix_stream_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore);
void __init unix_bpf_build_proto(void);
#else
static inline void __init unix_bpf_build_proto(void)
{
}
#endif

#endif