Annotation of embedaddon/pimd/include/netinet/pim.h, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>