home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / net / iucv / af_iucv.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.2 KB  |  96 lines

  1. /*
  2.  * Copyright 2006 IBM Corporation
  3.  * IUCV protocol stack for Linux on zSeries
  4.  * Version 1.0
  5.  * Author(s): Jennifer Hunt <jenhunt@us.ibm.com>
  6.  *
  7.  */
  8.  
  9. #ifndef __AFIUCV_H
  10. #define __AFIUCV_H
  11.  
  12. #include <asm/types.h>
  13. #include <asm/byteorder.h>
  14. #include <linux/list.h>
  15. #include <linux/poll.h>
  16. #include <linux/socket.h>
  17.  
  18. #ifndef AF_IUCV
  19. #define AF_IUCV        32
  20. #define PF_IUCV        AF_IUCV
  21. #endif
  22.  
  23. /* Connection and socket states */
  24. enum {
  25.     IUCV_CONNECTED = 1,
  26.     IUCV_OPEN,
  27.     IUCV_BOUND,
  28.     IUCV_LISTEN,
  29.     IUCV_SEVERED,
  30.     IUCV_DISCONN,
  31.     IUCV_CLOSING,
  32.     IUCV_CLOSED
  33. };
  34.  
  35. #define IUCV_QUEUELEN_DEFAULT    65535
  36. #define IUCV_CONN_TIMEOUT    (HZ * 40)
  37. #define IUCV_DISCONN_TIMEOUT    (HZ * 2)
  38. #define IUCV_CONN_IDLE_TIMEOUT    (HZ * 60)
  39. #define IUCV_BUFSIZE_DEFAULT    32768
  40.  
  41. /* IUCV socket address */
  42. struct sockaddr_iucv {
  43.     sa_family_t    siucv_family;
  44.     unsigned short    siucv_port;        /* Reserved */
  45.     unsigned int    siucv_addr;        /* Reserved */
  46.     char        siucv_nodeid[8];    /* Reserved */
  47.     char        siucv_user_id[8];    /* Guest User Id */
  48.     char        siucv_name[8];        /* Application Name */
  49. };
  50.  
  51.  
  52. /* Common socket structures and functions */
  53. struct sock_msg_q {
  54.     struct iucv_path    *path;
  55.     struct iucv_message    msg;
  56.     struct list_head    list;
  57.     spinlock_t        lock;
  58. };
  59.  
  60. #define iucv_sk(__sk) ((struct iucv_sock *) __sk)
  61.  
  62. struct iucv_sock {
  63.     struct sock        sk;
  64.     char            src_user_id[8];
  65.     char            src_name[8];
  66.     char            dst_user_id[8];
  67.     char            dst_name[8];
  68.     struct list_head    accept_q;
  69.     spinlock_t        accept_q_lock;
  70.     struct sock        *parent;
  71.     struct iucv_path    *path;
  72.     struct sk_buff_head    send_skb_q;
  73.     struct sk_buff_head    backlog_skb_q;
  74.     struct sock_msg_q    message_q;
  75.     unsigned int        send_tag;
  76. };
  77.  
  78. struct iucv_sock_list {
  79.     struct hlist_head head;
  80.     rwlock_t      lock;
  81.     atomic_t      autobind_name;
  82. };
  83.  
  84. unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
  85.                 poll_table *wait);
  86. void iucv_sock_link(struct iucv_sock_list *l, struct sock *s);
  87. void iucv_sock_unlink(struct iucv_sock_list *l, struct sock *s);
  88. int  iucv_sock_wait_state(struct sock *sk, int state, int state2,
  89.               unsigned long timeo);
  90. int  iucv_sock_wait_cnt(struct sock *sk, unsigned long timeo);
  91. void iucv_accept_enqueue(struct sock *parent, struct sock *sk);
  92. void iucv_accept_unlink(struct sock *sk);
  93. struct sock *iucv_accept_dequeue(struct sock *parent, struct socket *newsock);
  94.  
  95. #endif /* __IUCV_H */
  96.