The Pedigree Project  0.1
mld6.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008-2014, Pedigree Developers
3  *
4  * Please see the CONTRIB file in the root of the source tree for a full
5  * list of contributors.
6  *
7  * Permission to use, copy, modify, and distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  */
19 
27 /*
28  * Copyright (c) 2010 Inico Technologies Ltd.
29  * All rights reserved.
30  *
31  * Redistribution and use in source and binary forms, with or without modification,
32  * are permitted provided that the following conditions are met:
33  *
34  * 1. Redistributions of source code must retain the above copyright notice,
35  * this list of conditions and the following disclaimer.
36  * 2. Redistributions in binary form must reproduce the above copyright notice,
37  * this list of conditions and the following disclaimer in the documentation
38  * and/or other materials provided with the distribution.
39  * 3. The name of the author may not be used to endorse or promote products
40  * derived from this software without specific prior written permission.
41  *
42  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
43  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
44  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
45  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
46  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
47  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
48  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
49  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
50  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
51  * OF SUCH DAMAGE.
52  *
53  * This file is part of the lwIP TCP/IP stack.
54  *
55  * Author: Ivan Delamer <delamer@inicotech.com>
56  *
57  *
58  * Please coordinate changes and requests with Ivan Delamer
59  * <delamer@inicotech.com>
60  */
61 
62 #ifndef LWIP_HDR_MLD6_H
63 #define LWIP_HDR_MLD6_H
64 
65 #include "lwip/opt.h"
66 
67 #if LWIP_IPV6_MLD && LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */
68 
69 #include "lwip/pbuf.h"
70 #include "lwip/netif.h"
71 
72 #ifdef __cplusplus
73 extern "C" {
74 #endif
75 
77 struct mld_group {
79  struct mld_group *next;
81  ip6_addr_t group_address;
83  u8_t last_reporter_flag;
85  u8_t group_state;
87  u16_t timer;
89  u8_t use;
90 };
91 
92 #define MLD6_TMR_INTERVAL 100 /* Milliseconds */
93 
94 err_t mld6_stop(struct netif *netif);
95 void mld6_report_groups(struct netif *netif);
96 void mld6_tmr(void);
97 struct mld_group *mld6_lookfor_group(struct netif *ifp, const ip6_addr_t *addr);
98 void mld6_input(struct pbuf *p, struct netif *inp);
99 err_t mld6_joingroup(const ip6_addr_t *srcaddr, const ip6_addr_t *groupaddr);
100 err_t mld6_joingroup_netif(struct netif *netif, const ip6_addr_t *groupaddr);
101 err_t mld6_leavegroup(const ip6_addr_t *srcaddr, const ip6_addr_t *groupaddr);
102 err_t mld6_leavegroup_netif(struct netif *netif, const ip6_addr_t *groupaddr);
103 
110 #define netif_mld6_data(netif) ((struct mld_group *)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_MLD6))
111 
112 #ifdef __cplusplus
113 }
114 #endif
115 
116 #endif /* LWIP_IPV6_MLD && LWIP_IPV6 */
117 
118 #endif /* LWIP_HDR_MLD6_H */
Definition: pbuf.h:161
Definition: netif.h:244
s8_t err_t
Definition: err.h:76