1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 1999 by Sun Microsystems, Inc.
* All rights reserved.
*/
/*
* Copyright (c) 1996-1999 by the University of Southern California.
* All rights reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation in source and binary forms for lawful
* purposes and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both
* the copyright notice and this permission notice appear in supporting
* documentation, and that any documentation, advertising materials,
* and other materials related to such distribution and use acknowledge
* that the software was developed by the University of Southern
* California and/or Information Sciences Institute.
* The name of the University of Southern California may not
* be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY REPRESENTATIONS
* ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. THIS SOFTWARE IS
* PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND
* NON-INFRINGEMENT.
*
* IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
* SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT,
* TORT, OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH,
* THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Other copyrights might apply to parts of this software and are so
* noted when applicable.
*/
#ifndef _NETINET_PIM_H
#define _NETINET_PIM_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Protocol Independent Multicast (PIM) definitions
*
* Written by Ahmed Helmy, USC/SGI, July 1996
* Modified by George Edmond Eddy (Rusty), ISI, February 1998
* Modified by Pavlin Ivanov Radoslavov, USC/ISI, May 1998
*
* $Id: pim.h,v 1.3 1999/08/31 03:03:08 pavlin Exp $
*/
/*
* PIM packet format.
*/
typedef struct pim {
#ifdef _BIT_FIELDS_LTOH
uint8_t pim_type:4, /* type of PIM message */
pim_vers:4; /* PIM version */
#else
uint8_t pim_vers:4, /* PIM version */
pim_type:4; /* type of PIM message */
#endif
uint8_t pim_reserved; /* Reserved */
uint16_t pim_cksum; /* IP-style checksum */
} pim_t;
#define PIM_VERSION 2
#define PIM_MINLEN 8 /* The header min. length is 8 */
/* Register message + inner IPheader */
#define PIM_REG_MINLEN (PIM_MINLEN + IP_SIMPLE_HDR_LENGTH)
/*
* From the PIM protocol spec (RFC 2362), the following PIM message types
* are defined. All of these, except PIM_REGISTER, are currently not defined
* in the USC/ISI distributed <netinet/pim.h> include file. So they are listed
* here commented out.
*
* #define PIM_HELLO 0x0
* #define PIM_REGISTER 0x1
* #define PIM_REGISTER_STOP 0x2
* #define PIM_JOIN_PRUNE 0x3
* #define PIM_BOOTSTRAP 0x4
* #define PIM_ASSERT 0x5
* #define PIM_GRAFT 0x6
* #define PIM_GRAFT_ACK 0x7
* #define PIM_CAND_RP_ADV 0x8
*
*/
#define PIM_REGISTER 0x1 /* PIM Register type is 1 */
/*
* First bit in reg_head (right after PIM header) is the Border bit.
*/
#define PIM_BORDER_REGISTER 0x80000000
/*
* Second bit in reg_head (right after PIM header) is the Null-Register bit
*/
#define PIM_NULL_REGISTER 0x40000000
#ifdef __cplusplus
}
#endif
#endif /* _NETINET_PIM_H */
|