Merge branch 'core/topology' of git://git.kernel.org/pub/scm/linux/kernel/git/tip...
[linux-2.6] / include / linux / pim.h
1 #ifndef __LINUX_PIM_H
2 #define __LINUX_PIM_H
3
4 #include <asm/byteorder.h>
5
6 #ifndef __KERNEL__
7 struct pim {
8 #if defined(__LITTLE_ENDIAN_BITFIELD)
9         __u8    pim_type:4,             /* PIM message type */
10                 pim_ver:4;              /* PIM version */
11 #elif defined(__BIG_ENDIAN_BITFIELD)
12         __u8    pim_ver:4;              /* PIM version */
13                 pim_type:4;             /* PIM message type */
14 #endif
15         __u8    pim_rsv;                /* Reserved */
16         __be16  pim_cksum;              /* Checksum */
17 };
18
19 #define PIM_MINLEN              8
20 #endif
21
22 /* Message types - V1 */
23 #define PIM_V1_VERSION          __constant_htonl(0x10000000)
24 #define PIM_V1_REGISTER         1
25
26 /* Message types - V2 */
27 #define PIM_VERSION             2
28 #define PIM_REGISTER            1
29
30 #if defined(__KERNEL__)
31 #define PIM_NULL_REGISTER       __constant_htonl(0x40000000)
32
33 /* PIMv2 register message header layout (ietf-draft-idmr-pimvsm-v2-00.ps */
34 struct pimreghdr
35 {
36         __u8    type;
37         __u8    reserved;
38         __be16  csum;
39         __be32  flags;
40 };
41
42 struct sk_buff;
43 extern int pim_rcv_v1(struct sk_buff *);
44 #endif
45 #endif