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