~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/igmp.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *      Linux NET3:     Internet Group Management Protocol  [IGMP]
  3  *
  4  *      Authors:
  5  *              Alan Cox <Alan.Cox@linux.org>
  6  *
  7  *      Extended to talk the BSD extended IGMP protocol of mrouted 3.6
  8  *
  9  *
 10  *      This program is free software; you can redistribute it and/or
 11  *      modify it under the terms of the GNU General Public License
 12  *      as published by the Free Software Foundation; either version
 13  *      2 of the License, or (at your option) any later version.
 14  */
 15 
 16 #ifndef _LINUX_IGMP_H
 17 #define _LINUX_IGMP_H
 18 
 19 /*
 20  *      IGMP protocol structures
 21  */
 22 
 23 /*
 24  *      Header in on cable format
 25  */
 26 
 27 struct igmphdr
 28 {
 29         __u8 type;
 30         __u8 code;              /* For newer IGMP */
 31         __u16 csum;
 32         __u32 group;
 33 };
 34 
 35 #define IGMP_HOST_MEMBERSHIP_QUERY      0x11    /* From RFC1112 */
 36 #define IGMP_HOST_MEMBERSHIP_REPORT     0x12    /* Ditto */
 37 #define IGMP_DVMRP                      0x13    /* DVMRP routing */
 38 #define IGMP_PIM                        0x14    /* PIM routing */
 39 #define IGMP_TRACE                      0x15
 40 #define IGMP_HOST_NEW_MEMBERSHIP_REPORT 0x16    /* New version of 0x11 */
 41 #define IGMP_HOST_LEAVE_MESSAGE         0x17
 42 
 43 #define IGMP_MTRACE_RESP                0x1e
 44 #define IGMP_MTRACE                     0x1f
 45 
 46 
 47 /*
 48  *      Use the BSD names for these for compatibility
 49  */
 50 
 51 #define IGMP_DELAYING_MEMBER            0x01
 52 #define IGMP_IDLE_MEMBER                0x02
 53 #define IGMP_LAZY_MEMBER                0x03
 54 #define IGMP_SLEEPING_MEMBER            0x04
 55 #define IGMP_AWAKENING_MEMBER           0x05
 56 
 57 #define IGMP_MINLEN                     8
 58 
 59 #define IGMP_MAX_HOST_REPORT_DELAY      10      /* max delay for response to */
 60                                                 /* query (in seconds)   */
 61 
 62 #define IGMP_TIMER_SCALE                10      /* denotes that the igmphdr->timer field */
 63                                                 /* specifies time in 10th of seconds     */
 64 
 65 #define IGMP_AGE_THRESHOLD              400     /* If this host don't hear any IGMP V1  */
 66                                                 /* message in this period of time,      */
 67                                                 /* revert to IGMP v2 router.            */
 68 
 69 #define IGMP_ALL_HOSTS          htonl(0xE0000001L)
 70 #define IGMP_ALL_ROUTER         htonl(0xE0000002L)
 71 #define IGMP_LOCAL_GROUP        htonl(0xE0000000L)
 72 #define IGMP_LOCAL_GROUP_MASK   htonl(0xFFFFFF00L)
 73 
 74 /*
 75  * struct for keeping the multicast list in
 76  */
 77 
 78 #ifdef __KERNEL__
 79 
 80 /* ip_mc_socklist is real list now. Speed is not argument;
 81    this list never used in fast path code
 82  */
 83 
 84 struct ip_mc_socklist
 85 {
 86         struct ip_mc_socklist   *next;
 87         int                     count;
 88         struct ip_mreqn         multi;
 89 };
 90 
 91 struct ip_mc_list
 92 {
 93         struct in_device        *interface;
 94         unsigned long           multiaddr;
 95         struct ip_mc_list       *next;
 96         struct timer_list       timer;
 97         int                     users;
 98         atomic_t                refcnt;
 99         spinlock_t              lock;
100         char                    tm_running;
101         char                    reporter;
102         char                    unsolicit_count;
103         char                    loaded;
104 };
105 
106 extern int ip_check_mc(struct in_device *dev, u32 mc_addr);
107 extern int igmp_rcv(struct sk_buff *, unsigned short);
108 extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr);
109 extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr);
110 extern void ip_mc_drop_socket(struct sock *sk);
111 extern void ip_mr_init(void);
112 extern void ip_mc_init_dev(struct in_device *);
113 extern void ip_mc_destroy_dev(struct in_device *);
114 extern void ip_mc_up(struct in_device *);
115 extern void ip_mc_down(struct in_device *);
116 extern int ip_mc_dec_group(struct in_device *in_dev, u32 addr);
117 extern void ip_mc_inc_group(struct in_device *in_dev, u32 addr);
118 #endif
119 #endif
120 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.