Contiki 3.x
uip-mcast6-stats.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, University of Bristol - http://www.bris.ac.uk
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the copyright holder nor the names of its
14  * contributors may be used to endorse or promote products derived
15  * from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 /**
31  * \file
32  * Header file for IPv6 multicast forwarding stats maintenance
33  *
34  * \author
35  * George Oikonomou - <oikonomou@users.sourceforge.net>
36  */
37 #ifndef UIP_MCAST6_STATS_H_
38 #define UIP_MCAST6_STATS_H_
39 /*---------------------------------------------------------------------------*/
40 #include "contiki-conf.h"
41 
42 #include <stdint.h>
43 /*---------------------------------------------------------------------------*/
44 /* The platform can override the stats datatype */
45 #ifdef UIP_MCAST6_CONF_STATS_DATATYPE
46 #define UIP_MCAST6_STATS_DATATYPE UIP_MCAST6_CONF_STATS_DATATYPE
47 #else
48 #define UIP_MCAST6_STATS_DATATYPE uint16_t
49 #endif
50 /*---------------------------------------------------------------------------*/
51 #ifdef UIP_MCAST6_CONF_STATS
52 #define UIP_MCAST6_STATS UIP_MCAST6_CONF_STATS
53 #else
54 #define UIP_MCAST6_STATS 0
55 #endif
56 /*---------------------------------------------------------------------------*/
57 /* Stats datatype */
58 /*---------------------------------------------------------------------------*/
59 typedef struct uip_mcast6_stats {
60  UIP_MCAST6_STATS_DATATYPE mcast_in_unique;
61  UIP_MCAST6_STATS_DATATYPE mcast_in_all; /* At layer 3 */
62  UIP_MCAST6_STATS_DATATYPE mcast_in_ours; /* Unique and we are a group member */
63  UIP_MCAST6_STATS_DATATYPE mcast_fwd; /* Forwarded by us but we are not the seed */
64  UIP_MCAST6_STATS_DATATYPE mcast_out; /* We are the seed */
65  UIP_MCAST6_STATS_DATATYPE mcast_bad;
66  UIP_MCAST6_STATS_DATATYPE mcast_dropped;
67  void *engine_stats; /* Opaque pointer to an engine's additional stats */
68 } uip_mcast6_stats_t;
69 /*---------------------------------------------------------------------------*/
70 /* Access macros */
71 /*---------------------------------------------------------------------------*/
72 #if UIP_MCAST6_STATS
73 /* Don't access this variable directly, use the macros below */
74 extern uip_mcast6_stats_t uip_mcast6_stats;
75 
76 #define UIP_MCAST6_STATS_ADD(x) uip_mcast6_stats.x++
77 #define UIP_MCAST6_STATS_GET(x) uip_mcast6_stats.x
78 #define UIP_MCAST6_STATS_INIT(s) uip_mcast6_stats_init(s)
79 #else /* UIP_MCAST6_STATS */
80 #define UIP_MCAST6_STATS_ADD(x)
81 #define UIP_MCAST6_STATS_GET(x) 0
82 #define UIP_MCAST6_STATS_INIT(s)
83 #endif /* UIP_MCAST6_STATS */
84 /*---------------------------------------------------------------------------*/
85 /**
86  * \brief Initialise multicast stats
87  * \param stats A pointer to a struct holding an engine's additional statistics
88  */
89 void uip_mcast6_stats_init(void *stats);
90 /*---------------------------------------------------------------------------*/
91 #endif /* UIP_MCAST6_STATS_H_ */
void uip_mcast6_stats_init(void *stats)
Initialise multicast stats.