linux/include/net/af_unix.h
<<
>>
Prefs
   1#ifndef __LINUX_NET_AFUNIX_H
   2#define __LINUX_NET_AFUNIX_H
   3
   4#include <linux/socket.h>
   5#include <linux/un.h>
   6#include <linux/mutex.h>
   7#include <net/sock.h>
   8
   9extern void unix_inflight(struct file *fp);
  10extern void unix_notinflight(struct file *fp);
  11extern void unix_gc(void);
  12extern void wait_for_unix_gc(void);
  13
  14#define UNIX_HASH_SIZE  256
  15
  16extern unsigned int unix_tot_inflight;
  17
  18struct unix_address {
  19        atomic_t        refcnt;
  20        int             len;
  21        unsigned        hash;
  22        struct sockaddr_un name[0];
  23};
  24
  25struct unix_skb_parms {
  26        struct ucred            creds;          /* Skb credentials      */
  27        struct scm_fp_list      *fp;            /* Passed files         */
  28#ifdef CONFIG_SECURITY_NETWORK
  29        u32                     secid;          /* Security ID          */
  30#endif
  31};
  32
  33#define UNIXCB(skb)     (*(struct unix_skb_parms*)&((skb)->cb))
  34#define UNIXCREDS(skb)  (&UNIXCB((skb)).creds)
  35#define UNIXSID(skb)    (&UNIXCB((skb)).secid)
  36
  37#define unix_state_lock(s)      spin_lock(&unix_sk(s)->lock)
  38#define unix_state_unlock(s)    spin_unlock(&unix_sk(s)->lock)
  39#define unix_state_lock_nested(s) \
  40                                spin_lock_nested(&unix_sk(s)->lock, \
  41                                SINGLE_DEPTH_NESTING)
  42
  43#ifdef __KERNEL__
  44/* The AF_UNIX socket */
  45struct unix_sock {
  46        /* WARNING: sk has to be the first member */
  47        struct sock             sk;
  48        struct unix_address     *addr;
  49        struct dentry           *dentry;
  50        struct vfsmount         *mnt;
  51        struct mutex            readlock;
  52        struct sock             *peer;
  53        struct sock             *other;
  54        struct list_head        link;
  55        atomic_long_t           inflight;
  56        spinlock_t              lock;
  57        unsigned int            gc_candidate : 1;
  58        unsigned int            gc_maybe_cycle : 1;
  59        wait_queue_head_t       peer_wait;
  60};
  61#define unix_sk(__sk) ((struct unix_sock *)__sk)
  62
  63#ifdef CONFIG_SYSCTL
  64extern int unix_sysctl_register(struct net *net);
  65extern void unix_sysctl_unregister(struct net *net);
  66#else
  67static inline int unix_sysctl_register(struct net *net) { return 0; }
  68static inline void unix_sysctl_unregister(struct net *net) {}
  69#endif
  70#endif
  71#endif
  72