home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / net / udp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.8 KB  |  105 lines

  1. /*
  2.  * INET        An implementation of the TCP/IP protocol suite for the LINUX
  3.  *        operating system.  INET is implemented using the  BSD Socket
  4.  *        interface as the means of communication with the user level.
  5.  *
  6.  *        Definitions for the UDP module.
  7.  *
  8.  * Version:    @(#)udp.h    1.0.2    05/07/93
  9.  *
  10.  * Authors:    Ross Biro
  11.  *        Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  12.  *
  13.  * Fixes:
  14.  *        Alan Cox    : Turned on udp checksums. I don't want to
  15.  *                  chase 'memory corruption' bugs that aren't!
  16.  *
  17.  *        This program is free software; you can redistribute it and/or
  18.  *        modify it under the terms of the GNU General Public License
  19.  *        as published by the Free Software Foundation; either version
  20.  *        2 of the License, or (at your option) any later version.
  21.  */
  22. #ifndef _UDP_H
  23. #define _UDP_H
  24.  
  25. #include <linux/list.h>
  26. #include <net/inet_sock.h>
  27. #include <net/sock.h>
  28. #include <net/snmp.h>
  29. #include <linux/seq_file.h>
  30.  
  31. #define UDP_HTABLE_SIZE        128
  32.  
  33. /* udp.c: This needs to be shared by v4 and v6 because the lookup
  34.  *        and hashing code needs to work with different AF's yet
  35.  *        the port space is shared.
  36.  */
  37. extern struct hlist_head udp_hash[UDP_HTABLE_SIZE];
  38. extern rwlock_t udp_hash_lock;
  39.  
  40. extern int udp_port_rover;
  41.  
  42. static inline int udp_lport_inuse(u16 num)
  43. {
  44.     struct sock *sk;
  45.     struct hlist_node *node;
  46.  
  47.     sk_for_each(sk, node, &udp_hash[num & (UDP_HTABLE_SIZE - 1)])
  48.         if (inet_sk(sk)->num == num)
  49.             return 1;
  50.     return 0;
  51. }
  52.  
  53. /* Note: this must match 'valbool' in sock_setsockopt */
  54. #define UDP_CSUM_NOXMIT        1
  55.  
  56. /* Used by SunRPC/xprt layer. */
  57. #define UDP_CSUM_NORCV        2
  58.  
  59. /* Default, as per the RFC, is to always do csums. */
  60. #define UDP_CSUM_DEFAULT    0
  61.  
  62. extern struct proto udp_prot;
  63.  
  64. struct sk_buff;
  65.  
  66. extern void    udp_err(struct sk_buff *, u32);
  67.  
  68. extern int    udp_sendmsg(struct kiocb *iocb, struct sock *sk,
  69.                 struct msghdr *msg, size_t len);
  70.  
  71. extern int    udp_rcv(struct sk_buff *skb);
  72. extern int    udp_ioctl(struct sock *sk, int cmd, unsigned long arg);
  73. extern int    udp_disconnect(struct sock *sk, int flags);
  74. extern unsigned int udp_poll(struct file *file, struct socket *sock,
  75.                  poll_table *wait);
  76.  
  77. DECLARE_SNMP_STAT(struct udp_mib, udp_statistics);
  78. #define UDP_INC_STATS(field)        SNMP_INC_STATS(udp_statistics, field)
  79. #define UDP_INC_STATS_BH(field)        SNMP_INC_STATS_BH(udp_statistics, field)
  80. #define UDP_INC_STATS_USER(field)     SNMP_INC_STATS_USER(udp_statistics, field)
  81.  
  82. /* /proc */
  83. struct udp_seq_afinfo {
  84.     struct module        *owner;
  85.     char            *name;
  86.     sa_family_t        family;
  87.     int             (*seq_show) (struct seq_file *m, void *v);
  88.     struct file_operations    *seq_fops;
  89. };
  90.  
  91. struct udp_iter_state {
  92.     sa_family_t        family;
  93.     int            bucket;
  94.     struct seq_operations    seq_ops;
  95. };
  96.  
  97. #ifdef CONFIG_PROC_FS
  98. extern int udp_proc_register(struct udp_seq_afinfo *afinfo);
  99. extern void udp_proc_unregister(struct udp_seq_afinfo *afinfo);
  100.  
  101. extern int  udp4_proc_init(void);
  102. extern void udp4_proc_exit(void);
  103. #endif
  104. #endif    /* _UDP_H */
  105.