LCOV - code coverage report
Current view: top level - netinet - igmp_var.h (source / functions) Hit Total Coverage
Test: 6.4 Lines: 0 3 0.0 %
Date: 2018-10-19 03:25:38 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*      $OpenBSD: igmp_var.h,v 1.13 2017/04/14 20:46:31 bluhm Exp $     */
       2             : /*      $NetBSD: igmp_var.h,v 1.9 1996/02/13 23:41:31 christos Exp $    */
       3             : 
       4             : /*
       5             :  * Copyright (c) 1988 Stephen Deering.
       6             :  * Copyright (c) 1992, 1993
       7             :  *      The Regents of the University of California.  All rights reserved.
       8             :  *
       9             :  * This code is derived from software contributed to Berkeley by
      10             :  * Stephen Deering of Stanford University.
      11             :  *
      12             :  * Redistribution and use in source and binary forms, with or without
      13             :  * modification, are permitted provided that the following conditions
      14             :  * are met:
      15             :  * 1. Redistributions of source code must retain the above copyright
      16             :  *    notice, this list of conditions and the following disclaimer.
      17             :  * 2. Redistributions in binary form must reproduce the above copyright
      18             :  *    notice, this list of conditions and the following disclaimer in the
      19             :  *    documentation and/or other materials provided with the distribution.
      20             :  * 3. Neither the name of the University nor the names of its contributors
      21             :  *    may be used to endorse or promote products derived from this software
      22             :  *    without specific prior written permission.
      23             :  *
      24             :  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      25             :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      26             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      27             :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      28             :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      29             :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      30             :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      31             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      32             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      33             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      34             :  * SUCH DAMAGE.
      35             :  *
      36             :  *      @(#)igmp_var.h  8.1 (Berkeley) 7/19/93
      37             :  */
      38             : 
      39             : #ifndef _NETINET_IGMP_VAR_H_
      40             : #define _NETINET_IGMP_VAR_H_
      41             : 
      42             : /*
      43             :  * Internet Group Management Protocol (IGMP),
      44             :  * implementation-specific definitions.
      45             :  *
      46             :  * Written by Steve Deering, Stanford, May 1988.
      47             :  * Modified by Rosen Sharma, Stanford, Aug 1994.
      48             :  * Modified by Bill Fenner, Xerox PARC, Feb 1995.
      49             :  *
      50             :  * MULTICAST 1.3
      51             :  */
      52             : 
      53             : struct igmpstat {
      54             :         u_long  igps_rcv_total;         /* total IGMP messages received */
      55             :         u_long  igps_rcv_tooshort;      /* received with too few bytes */
      56             :         u_long  igps_rcv_badsum;        /* received with bad checksum */
      57             :         u_long  igps_rcv_queries;       /* received membership queries */
      58             :         u_long  igps_rcv_badqueries;    /* received invalid queries */
      59             :         u_long  igps_rcv_reports;       /* received membership reports */
      60             :         u_long  igps_rcv_badreports;    /* received invalid reports */
      61             :         u_long  igps_rcv_ourreports;    /* received reports for our groups */
      62             :         u_long  igps_snd_reports;       /* sent membership reports */
      63             : };
      64             : 
      65             : /*
      66             :  * Names for IGMP sysctl objects
      67             :  */
      68             : #define IGMPCTL_STATS           1       /* IGMP statistics */
      69             : #define IGMPCTL_MAXID           2
      70             : 
      71             : #define IGMPCTL_NAMES { \
      72             :         { 0, 0 }, \
      73             :         { "stats",    CTLTYPE_STRUCT } \
      74             : }
      75             : 
      76             : #define IGMPCTL_VARS { \
      77             :         NULL \
      78             : }
      79             : 
      80             : #ifdef _KERNEL
      81             : 
      82             : #include <sys/percpu.h>
      83             : 
      84             : enum igmpstat_counters {
      85             :         igps_rcv_total,         /* total IGMP messages received */
      86             :         igps_rcv_tooshort,      /* received with too few bytes */
      87             :         igps_rcv_badsum,        /* received with bad checksum */
      88             :         igps_rcv_queries,       /* received membership queries */
      89             :         igps_rcv_badqueries,    /* received invalid queries */
      90             :         igps_rcv_reports,       /* received membership reports */
      91             :         igps_rcv_badreports,    /* received invalid reports */
      92             :         igps_rcv_ourreports,    /* received reports for our groups */
      93             :         igps_snd_reports,       /* sent membership reports */
      94             :         igps_ncounters
      95             : };
      96             : 
      97             : extern struct cpumem *igmpcounters;
      98             : 
      99             : static inline void
     100           0 : igmpstat_inc(enum igmpstat_counters c)
     101             : {
     102           0 :         counters_inc(igmpcounters, c);
     103           0 : }
     104             : 
     105             : /*
     106             :  * Macro to compute a random timer value between 1 and (IGMP_MAX_REPORTING_
     107             :  * DELAY * countdown frequency).  We assume that the routine random()
     108             :  * is defined somewhere (and that it returns a positive number).
     109             :  */
     110             : #define IGMP_RANDOM_DELAY(X)    (arc4random_uniform(X) + 1)
     111             : 
     112             : void    igmp_init(void);
     113             : int     igmp_input(struct mbuf **, int *, int, int);
     114             : void    igmp_joingroup(struct in_multi *);
     115             : void    igmp_leavegroup(struct in_multi *);
     116             : void    igmp_fasttimo(void);
     117             : void    igmp_slowtimo(void);
     118             : int     igmp_sysctl(int *, u_int, void *, size_t *, void *, size_t);
     119             : #endif /* _KERNEL */
     120             : #endif /* _NETINET_IGMP_VAR_H_ */

Generated by: LCOV version 1.13