[BACK]Return to pim.h CVS log [TXT][DIR] Up to [local] / sys / netinet

Annotation of sys/netinet/pim.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: pim.h,v 1.2 2006/04/27 02:19:32 tedu Exp $    */
        !             2: /*     $NetBSD: pim.h,v 1.1 2004/09/04 23:32:29 manu Exp $     */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1996-2000
        !             6:  * University of Southern California/Information Sciences Institute.
        !             7:  * All rights reserved.
        !             8:  *
        !             9:  * Redistribution and use in source and binary forms, with or without
        !            10:  * modification, are permitted provided that the following conditions
        !            11:  * are met:
        !            12:  * 1. Redistributions of source code must retain the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer.
        !            14:  * 2. Redistributions in binary form must reproduce the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer in the
        !            16:  *    documentation and/or other materials provided with the distribution.
        !            17:  * 3. Neither the name of the project nor the names of its contributors
        !            18:  *    may be used to endorse or promote products derived from this software
        !            19:  *    without specific prior written permission.
        !            20:  *
        !            21:  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
        !            22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
        !            25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            31:  * SUCH DAMAGE.
        !            32:  *
        !            33:  * $FreeBSD: /repoman/r/ncvs/src/sys/netinet/pim.h,v 1.2 2004/03/08 07:45:32 hsu Exp $
        !            34:  */
        !            35:
        !            36: #ifndef _NETINET_PIM_H_
        !            37: #define _NETINET_PIM_H_
        !            38:
        !            39: /*
        !            40:  * Protocol Independent Multicast (PIM) definitions.
        !            41:  * RFC 2362, June 1998.
        !            42:  *
        !            43:  * Written by Ahmed Helmy, USC/SGI, July 1996.
        !            44:  * Modified by George Edmond Eddy (Rusty), ISI, February 1998.
        !            45:  * Modified by Pavlin Radoslavov, USC/ISI, May 1998, October 2000.
        !            46:  */
        !            47:
        !            48: #include <sys/types.h>
        !            49:
        !            50: #ifndef _PIM_VT
        !            51: #ifndef _BYTE_ORDER
        !            52: # error _BYTE_ORDER is not defined!
        !            53: #endif
        !            54: #if (_BYTE_ORDER != _BIG_ENDIAN) && (_BYTE_ORDER != _LITTLE_ENDIAN)
        !            55: # error _BYTE_ORDER must be defined to either _BIG_ENDIAN or _LITTLE_ENDIAN
        !            56: #endif
        !            57: #endif /* ! _PIM_VT */
        !            58:
        !            59: /*
        !            60:  * PIM packet header
        !            61:  */
        !            62: struct pim {
        !            63: #ifdef _PIM_VT
        !            64:        uint8_t         pim_vt;         /* PIM version and message type */
        !            65: #else /* ! _PIM_VT   */
        !            66: #if _BYTE_ORDER == _BIG_ENDIAN
        !            67:        u_int           pim_vers:4,     /* PIM protocol version         */
        !            68:                        pim_type:4;     /* PIM message type             */
        !            69: #endif
        !            70: #if _BYTE_ORDER == _LITTLE_ENDIAN
        !            71:        u_int           pim_type:4,     /* PIM message type             */
        !            72:                        pim_vers:4;     /* PIM protocol version         */
        !            73: #endif
        !            74: #endif /* ! _PIM_VT  */
        !            75:        uint8_t         pim_reserved;   /* Reserved                     */
        !            76:        uint16_t        pim_cksum;      /* IP-style checksum            */
        !            77: };
        !            78: /* KAME-related name backward compatibility */
        !            79: #define pim_ver pim_vers
        !            80: #define pim_rsv pim_reserved
        !            81:
        !            82: #ifdef _PIM_VT
        !            83: #define PIM_MAKE_VT(v, t)      (0xff & (((v) << 4) | (0x0f & (t))))
        !            84: #define PIM_VT_V(x)            (((x) >> 4) & 0x0f)
        !            85: #define PIM_VT_T(x)            ((x) & 0x0f)
        !            86: #endif /* _PIM_VT */
        !            87:
        !            88: #define PIM_VERSION            2
        !            89: #define PIM_MINLEN             8       /* PIM message min. length      */
        !            90: #define PIM_REG_MINLEN (PIM_MINLEN+20) /* PIM Register hdr + inner IPv4 hdr */
        !            91: #define PIM6_REG_MINLEN        (PIM_MINLEN+40) /* PIM Register hdr + inner IPv6 hdr */
        !            92:
        !            93: /*
        !            94:  * PIM message types
        !            95:  */
        !            96: #define PIM_HELLO              0x0     /* PIM-SM and PIM-DM            */
        !            97: #define PIM_REGISTER           0x1     /* PIM-SM only                  */
        !            98: #define PIM_REGISTER_STOP      0x2     /* PIM-SM only                  */
        !            99: #define PIM_JOIN_PRUNE         0x3     /* PIM-SM and PIM-DM            */
        !           100: #define PIM_BOOTSTRAP          0x4     /* PIM-SM only                  */
        !           101: #define PIM_ASSERT             0x5     /* PIM-SM and PIM-DM            */
        !           102: #define PIM_GRAFT              0x6     /* PIM-DM only                  */
        !           103: #define PIM_GRAFT_ACK          0x7     /* PIM-DM only                  */
        !           104: #define PIM_CAND_RP_ADV                0x8     /* PIM-SM only                  */
        !           105: #define PIM_ALL_DF_ELECTION    0xa     /* Bidir-PIM-SM only            */
        !           106:
        !           107: /*
        !           108:  * PIM-Register message flags
        !           109:  */
        !           110: #define PIM_BORDER_REGISTER 0x80000000U        /* The Border bit (host-order)  */
        !           111: #define PIM_NULL_REGISTER   0x40000000U        /* The Null-Register bit (host-order)*/
        !           112:
        !           113: /*
        !           114:  * All-PIM-Routers IPv4 and IPv6 multicast addresses
        !           115:  */
        !           116: #define INADDR_ALLPIM_ROUTERS_GROUP    (uint32_t)0xe000000dU  /* 224.0.0.13 */
        !           117: #define IN6ADDR_LINKLOCAL_ALLPIM_ROUTERS       "ff02::d"
        !           118: #define IN6ADDR_LINKLOCAL_ALLPIM_ROUTERS_INIT                          \
        !           119:        {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,             \
        !           120:            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d }}}
        !           121:
        !           122: #endif /* _NETINET_PIM_H_ */

CVSweb