/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos720 src/bos/kernext/inet/icmp6_var.h 1.9                            */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* Restricted Materials of IBM                                            */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 1997,2008              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)22  1.9  src/bos/kernext/inet/icmp6_var.h, sockinc, bos720 1/25/08 03:09:21" */

/*
 * Copyright (c) 1982, 1986, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)icmp_var.h	8.1 (Berkeley) 6/10/93
 */

#ifndef _NETINET_ICMP6_VAR_H_
#define _NETINET_ICMP6_VAR_H_

#define CACHE_LINE_SIZE 256
/*
 * Variables related to this implementation
 * of the IPv6 control message protocol.
 */
struct	icmp6stat {
/* statistics related to IPV6 icmp packets generated */
	u_long	icp6s_error;		/* # of calls to icmp6_error */
	u_long	icp6s_ratelim;		/* # beyond error rate limit */
	u_long	icp6s_oldicmp;		/* no error 'cuz old was icmp */
	u_long	icp6s_snd_unreach;	/* # of sent unreachables */
	u_long	icp6s_snd_pkttoobig;	/* # of sent packet too big */
	u_long	icp6s_snd_timxceed;	/* # of sent time exceeded */
	u_long	icp6s_snd_paramprob;	/* # of sent parameter problems */
	u_long	icp6s_snd_echoreq;	/* # of sent echo requests */
	u_long	icp6s_snd_echorep;	/* # of sent echo replies */
	u_long	icp6s_snd_mldqry;	/* # of sent group queries */
	u_long	icp6s_snd_mldrep;	/* # of sent group reports */
	u_long	icp6s_snd_mldterm;	/* # of sent group terminations */
	u_long	icp6s_snd_rtsol;	/* # of sent router solicitations */
	u_long	icp6s_snd_rtadv;	/* # of sent router advertisements */
	u_long	icp6s_snd_ndsol;	/* # of sent neighbor solicitations */
	u_long	icp6s_snd_ndadv;	/* # of sent neighbor advertisements */
	u_long  icp6s_snd_redirect;	/* # of sent redirects */
	u_long  icp6s_snd_rtrenum;	/* # of sent router renumberings */
        u_long  icp6s_snd_haadreq;      /* # of sent haad requests */
        u_long  icp6s_snd_haadreply;    /* # of sent haad replies */
        u_long  icp6s_snd_prefsol;      /* # of sent prefix solicitations */
        u_long  icp6s_snd_prefadv;      /* # of sent prefix advertisements */
/* statistics related to input messages processed */
	u_long	icp6s_badcode;		/* icmp6_code out of range */
	u_long	icp6s_tooshort;		/* packet < ICMP6_MINLEN */
	u_long	icp6s_checksum;		/* bad checksum */
	u_long	icp6s_badlen;		/* calculated bound mismatch */
	u_long	icp6s_reflect;		/* number of responses */
	u_long	icp6s_rcv_unreach;	/* # of rcvd unreachables */
	u_long	icp6s_rcv_pkttoobig;	/* # of rcvd packet too big */
	u_long	icp6s_rcv_timxceed;	/* # of rcvd time exceeded */
	u_long	icp6s_rcv_paramprob;	/* # of rcvd parameter problems */
	u_long	icp6s_rcv_echoreq;	/* # of rcvd echo requests */
	u_long	icp6s_rcv_echorep;	/* # of rcvd echo replies */
	u_long	icp6s_rcv_mldqry;	/* # of rcvd group queries */
	u_long	icp6s_rcv_mldrep;	/* # of rcvd group reports */
	u_long	icp6s_rcv_mldterm;	/* # of rcvd group terminations */
	u_long	icp6s_rcv_bad_mldqry;	/* # of rcvd bad group queries */
	u_long	icp6s_rcv_bad_mldrep;	/* # of rcvd bad group reports */
	u_long	icp6s_rcv_our_mldrep;	/* # of rcvd our groups' reports */
	u_long	icp6s_rcv_bad_mldterm;	/* # of rcvd bad group terminations */
	u_long	icp6s_rcv_rtsol;	/* # of rcvd router solicitations */
	u_long	icp6s_rcv_rtadv;	/* # of rcvd router advertisements */
	u_long	icp6s_rcv_ndsol;	/* # of rcvd neighbor solicitations */
	u_long	icp6s_rcv_ndadv;	/* # of rcvd neighbor advertisements */
	u_long	icp6s_rcv_redirect;	/* # of rcvd redirects */
	u_long	icp6s_rcv_badrtsol;	/* # of rcvd bad router sol. */
	u_long	icp6s_rcv_badrtadv;	/* # of rcvd bad router adv. */
	u_long	icp6s_rcv_badndsol;	/* # of rcvd bad neighbor sol. */
	u_long	icp6s_rcv_badndadv;	/* # of rcvd bad neighbor adv. */
	u_long	icp6s_rcv_badredirect;	/* # of rcvd bad redirects */
	u_long	icp6s_rcv_rtrenum;	/* # of rcvd router renumberings */
	u_long	icp6s_ndpqdrop;		/* # of held packets dropped waiting */
					/*    for ndp to finish */
	u_long	icp6s_nomobip6;		/* mobility not started */ 
	u_long	icp6s_rcv_haadreq;	/* # of rcvd HAAD requests */
	u_long	icp6s_rcv_haadreply;	/* # of rcvd HAAD replies */
	u_long	icp6s_rcv_prefsol;	/* # of rcvd prefix solicitations */
	u_long	icp6s_rcv_prefadv;	/* # of rcvd prefix advertisements */
	u_long	icp6s_rcv_badhaadreq;	/* # of rcvd bad HAAD requests */
	u_long	icp6s_rcv_badhaadreply;	/* # of rcvd bad HAAD replies */
	u_long	icp6s_rcv_badprefsol;	/* # of rcvd bad prefix sol. */
	u_long	icp6s_rcv_badprefadv;	/* # of rcvd bad prefix adv. */
};


/* distributed stat structures for IPv6 control message protocol. */

struct  dist_icmp6stat {
/* statistics related to IPV6 icmp packets generated */
        u_long  icp6s_error;            /* # of calls to icmp6_error */
        u_long  icp6s_ratelim;          /* # beyond error rate limit */
        u_long  icp6s_oldicmp;          /* no error 'cuz old was icmp */
        u_long  icp6s_snd_unreach;      /* # of sent unreachables */
        u_long  icp6s_snd_pkttoobig;    /* # of sent packet too big */
        u_long  icp6s_snd_timxceed;     /* # of sent time exceeded */
        u_long  icp6s_snd_paramprob;    /* # of sent parameter problems */
        u_long  icp6s_snd_echoreq;      /* # of sent echo requests */
        u_long  icp6s_snd_echorep;      /* # of sent echo replies */
        u_long  icp6s_snd_mldqry;       /* # of sent group queries */
        u_long  icp6s_snd_mldrep;       /* # of sent group reports */
        u_long  icp6s_snd_mldterm;      /* # of sent group terminations */
        u_long  icp6s_snd_rtsol;        /* # of sent router solicitations */
        u_long  icp6s_snd_rtadv;        /* # of sent router advertisements */
        u_long  icp6s_snd_ndsol;        /* # of sent neighbor solicitations */
        u_long  icp6s_snd_ndadv;        /* # of sent neighbor advertisements */
        u_long  icp6s_snd_redirect;     /* # of sent redirects */
        u_long  icp6s_snd_rtrenum;      /* # of sent router renumberings */
        u_long  icp6s_snd_haadreq;      /* # of sent haad requests */
        u_long  icp6s_snd_haadreply;    /* # of sent haad replies */
        u_long  icp6s_snd_prefsol;      /* # of sent prefix solicitations */
        u_long  icp6s_snd_prefadv;      /* # of sent prefix advertisements */
/* statistics related to input messages processed */
        u_long  icp6s_badcode;          /* icmp6_code out of range */
        u_long  icp6s_tooshort;         /* packet < ICMP6_MINLEN */
        u_long  icp6s_checksum;         /* bad checksum */
        u_long  icp6s_badlen;           /* calculated bound mismatch */
        u_long  icp6s_reflect;          /* number of responses */
        u_long  icp6s_rcv_unreach;      /* # of rcvd unreachables */
        u_long  icp6s_rcv_pkttoobig;    /* # of rcvd packet too big */
        u_long  icp6s_rcv_timxceed;     /* # of rcvd time exceeded */
        u_long  icp6s_rcv_paramprob;    /* # of rcvd parameter problems */
        u_long  icp6s_rcv_echoreq;      /* # of rcvd echo requests */
        u_long  icp6s_rcv_echorep;      /* # of rcvd echo replies */
        u_long  icp6s_rcv_mldqry;       /* # of rcvd group queries */
        u_long  icp6s_rcv_mldrep;       /* # of rcvd group reports */
        u_long  icp6s_rcv_mldterm;      /* # of rcvd group terminations */
        u_long  icp6s_rcv_bad_mldqry;   /* # of rcvd bad group queries */
        u_long  icp6s_rcv_bad_mldrep;   /* # of rcvd bad group reports */
        u_long  icp6s_rcv_our_mldrep;   /* # of rcvd our groups' reports */
        u_long  icp6s_rcv_bad_mldterm;  /* # of rcvd bad group terminations */
        u_long  icp6s_rcv_rtsol;        /* # of rcvd router solicitations */
        u_long  icp6s_rcv_rtadv;        /* # of rcvd router advertisements */
        u_long  icp6s_rcv_ndsol;        /* # of rcvd neighbor solicitations */
        u_long  icp6s_rcv_ndadv;        /* # of rcvd neighbor advertisements */
        u_long  icp6s_rcv_redirect;     /* # of rcvd redirects */
        u_long  icp6s_rcv_badrtsol;     /* # of rcvd bad router sol. */
        u_long  icp6s_rcv_badrtadv;     /* # of rcvd bad router adv. */
        u_long  icp6s_rcv_badndsol;     /* # of rcvd bad neighbor sol. */
        u_long  icp6s_rcv_badndadv;     /* # of rcvd bad neighbor adv. */
        u_long  icp6s_rcv_badredirect;  /* # of rcvd bad redirects */
        u_long  icp6s_rcv_rtrenum;      /* # of rcvd router renumberings */
        u_long  icp6s_ndpqdrop;         /* # of held packets dropped waiting */
                                        /*    for ndp to finish */
        u_long  icp6s_nomobip6;         /* mobility not started */ 
        u_long  icp6s_rcv_haadreq;      /* # of rcvd HAAD requests */
        u_long  icp6s_rcv_haadreply;    /* # of rcvd HAAD replies */
        u_long  icp6s_rcv_prefsol;      /* # of rcvd prefix solicitations */
        u_long  icp6s_rcv_prefadv;      /* # of rcvd prefix advertisements */
        u_long  icp6s_rcv_badhaadreq;   /* # of rcvd bad HAAD requests */
        u_long  icp6s_rcv_badhaadreply; /* # of rcvd bad HAAD replies */
        u_long  icp6s_rcv_badprefsol;   /* # of rcvd bad prefix sol. */
        u_long  icp6s_rcv_badprefadv;   /* # of rcvd bad prefix adv. */
        char    dummy[IP_CACHE_LINE_SIZE - sizeof(struct icmp6stat) % IP_CACHE_LINE_SIZE]; /*pad for cache line*/

};



#ifdef _KERNEL
extern struct	icmp6stat icmp6stat;
extern struct   dist_icmp6stat *dist_icmp6stat[];
#endif

#endif