OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [uclinux/] [uC-libc/] [include/] [linux/] [igmp.h] - Blame information for rev 1778

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
/*
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    /* CISCO trace */
40
#define IGMP_HOST_NEW_MEMBERSHIP_REPORT 0x16    /* New version of 0x11 */
41
#define IGMP_HOST_LEAVE_MESSAGE         0x17    /* An extra BSD seems to send */
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_OLD_ROUTER                 0x00
58
#define IGMP_NEW_ROUTER                 0x01
59
 
60
#define IGMP_MINLEN                     8
61
 
62
#define IGMP_MAX_HOST_REPORT_DELAY      10      /* max delay for response to */
63
                                                /* query (in seconds)   */
64
 
65
#define IGMP_TIMER_SCALE                10      /* denotes that the igmphdr->timer field */
66
                                                /* specifies time in 10th of seconds     */
67
 
68
#define IGMP_AGE_THRESHOLD              540     /* If this host don't hear any IGMP V1  */
69
                                                /* message in this period of time,      */
70
                                                /* revert to IGMP v2 router.            */
71
 
72
#define IGMP_ALL_HOSTS          htonl(0xE0000001L)
73
#define IGMP_ALL_ROUTER         htonl(0xE0000002L)
74
#define IGMP_LOCAL_GROUP        htonl(0xE0000000L)
75
#define IGMP_LOCAL_GROUP_MASK   htonl(0xFFFFFF00L)
76
 
77
/*
78
 * struct for keeping the multicast list in
79
 */
80
 
81
#ifdef __KERNEL__
82
struct ip_mc_socklist
83
{
84
        unsigned long multiaddr[IP_MAX_MEMBERSHIPS];    /* This is a speed trade off */
85
        struct device *multidev[IP_MAX_MEMBERSHIPS];
86
};
87
 
88
struct ip_mc_list
89
{
90
        struct device *interface;
91
        unsigned long multiaddr;
92
        struct ip_mc_list *next;
93
        struct timer_list timer;
94
        short tm_running;
95
        short reporter;
96
        int users;
97
};
98
 
99
struct ip_router_info
100
{
101
        struct device *dev;
102
        int    type;    /* type of router which is querier on this interface */
103
        int    time;    /* # of slow timeouts since last old query */
104
        struct timer_list timer;
105
        struct ip_router_info *next;
106
};
107
 
108
extern struct ip_mc_list *ip_mc_head;
109
 
110
 
111
extern int igmp_rcv(struct sk_buff *, struct device *, struct options *, __u32, unsigned short,
112
        __u32, int , struct inet_protocol *);
113
extern void ip_mc_drop_device(struct device *dev);
114
extern int ip_mc_join_group(struct sock *sk, struct device *dev, unsigned long addr);
115
extern int ip_mc_leave_group(struct sock *sk, struct device *dev,unsigned long addr);
116
extern void ip_mc_drop_socket(struct sock *sk);
117
extern void ip_mr_init(void);
118
#endif
119
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.